Show HN: 浏览器中的KiCad

Hacker News Top 产品

摘要

KiCad,开源PCB EDA套件,现已通过Emergence Engineering的PCBJam在浏览器中可用,利用WebAssembly、WebGL和多线程仿真实现接近原生的性能。

KiCad,一款PCB EDA套件,现在可以在浏览器中运行,您可以通过链接尝试,有一个演示项目,也可以使用您自己的项目。Firefox最佳,Chrome良好,Safari“能用”。 <p>我们是Emergence Engineering,一家来自匈牙利的开发工作室,主要专注于富文本编辑器和CRDT。PCBJam最初是我(Viktor,CTO,前电气工程师)的爱好项目,但随着时间的推移,我投入了越来越多的精力,一个产品雏形在我脑海中逐渐成形。最近几个月,我们开始更加专注于这个项目,这是第一个接近MVP的成果。 <p>这个项目充满了乐趣、学习和层层改进: <p>- 我曾以为一定有办法在网页上模拟PCB画布的OpenGL代码。确实有很多方法,但都漏洞百出。事实证明,如果添加适当的中间调试步骤,直接编写与KiCad图形抽象层兼容的WebGL代码反而更快。我(与Claude一起)实现了这些功能,并每一步都与原生版本进行比较,然后应用首次加载就正常工作了。在此之前,我花了数周时间追踪奇怪的模拟错误。 <p>- 有一个旧的wxWidgets网页移植版本作为起点,帮助很大。将其提升到KiCad所需的水平是一项漫长(且仍在进行)的任务。感谢ahilss! <p>- 网页上的Pthreads:借助Emscripten可以移植多线程应用(用于DRC、软件3D渲染器)。Emscripten的许多特性(Asyncify、Pthreads、原生异常)相互冲突,但仍然可行。 <p>- Asyncify与原生异常:Asyncify(用于使WASM代码暂停并调用JS领域,通过直接重写WASM来模拟阻塞的C++调用)与原生异常不兼容,即使在最新的Binaryen版本中,它也无法在catch分支内暂停。如果你编写一个新的Binaryen pass,就可以实现,从而使bundle体积减少30-40%,应用加载时间从10秒缩短到1秒。 <p>- 优化bundle体积是一个有趣的游戏。我们刚刚将Open CASCADE移到一个单独的懒加载WASM模块中,从180MB降到130MB(brotli压缩后24MB),仍然使用-O1。而-O2 / -Oz等工作比看起来更复杂。 <p>每天都会遇到大量类似上述的问题。 <p>几个月前,我还有一个几乎无法加载、卡顿的pcbnew,稍有不慎就会崩溃。现在我们拥有了完整的应用功能。应该承认仍然有不少bug,但现在感觉已经相当接近原生体验了。 <p>我们积累了大量知识和代码,想以博客文章的形式发布,并将我们的修改并入Binaryen/KiCad/wxWidgets主线,但我想先专注于发布。我们的wxWidgets移植非常接近核心,KiCad大约有150个核心文件被修改(主要是构建脚本,也有一些代码改动)。目标是尽可能接近主线,并最终合并。 <p>我们肯定会有免费套餐,对于较大/闭源项目收费约30美元/月,未来还将提供可选的付费AI集成、自托管、企业功能以及原生和移动版本。 <p>目标是在KiCad之上构建一个产品(协作、AI集成、共享、集成),有点像当年Red Hat对Linux所做的那样。我们正在埋头努力使其功能完善,并计划在大约一个月内推出第一个版本。 <p>当然,我们站在了KiCad和wxWidgets创造者的肩膀上,我们希望尽可能回馈和贡献。如果你有如何做到这一点的最佳想法,请告诉我。我发布过几个还算成功的开源项目,但我从未成为贡献者。所有前端代码都是GPL(必须如此),如果你想的话,可以运行这个项目。 <p>You can find the sources at: <a href="https://github.com/emergence-engineering/pcbjam" rel="nofollow">https://github.com/emergence-engineering/pcbjam</a>. <p>Our company site is at: <a href="https://emergence-engineering.com/" rel="nofollow">https://emergence-engineering.com/</a> <p>Our crappy LP is at: <a href="https://www.pcbjam.com/" rel="nofollow">https://www.pcbjam.com/</a>
查看原文

相似文章

浏览器中的LibreCAD

Hacker News Top

一位开发者借助大型语言模型,将开源2D CAD应用LibreCAD移植到浏览器中运行,使用了WebAssembly和Qt的WebAssembly支持。

CADAM

Product Hunt

CADAM 是一个类似于 Tinkercad 的 AI 驱动 CAD 工具,已在 Product Hunt 上发布。

我将 Kubernetes 移植到了浏览器中

Hacker News Top

来自 ngrok 的 Sam Rose 演示了如何通过 WebAssembly 将 Kubernetes 移植到浏览器中完全运行,让开发者能够模拟本地集群,而无需远程服务器或复杂设置。