返回首页
24小时热榜
KiCad,一个PCB电子设计自动化(EDA)套件,现在可以在浏览器中使用,您可以通过链接尝试,里面有一个演示项目,或者您可以上传自己的项目。推荐使用Firefox,Chrome也不错,Safari则“可以使用”。
我们是Emergence Engineering,一家来自匈牙利的开发公司,主要专注于富文本编辑器和冲突自由数据类型(CRDT)。PCBJam最初是我(Viktor,首席技术官,前电气工程师)的个人爱好项目,但随着时间的推移,我投入了越来越多的精力,产品的构思逐渐成型。在过去几个月里,我们开始更加专注于这个项目,这也是我们第一次接近最小可行产品(MVP)的成果。
这个项目充满乐趣,带来了大量的学习和改进:
- 我认为一定有办法在网页上模拟PCB画布的OpenGL代码。确实有很多方法,但都存在许多bug。结果发现,如果添加合适的中间调试步骤,编写与KiCad的图形抽象层兼容的WebGL代码更快。我(与Claude一起)实现了这些功能,并在每一步与原生版本进行了比较,然后应用程序第一次加载时就正常工作了。在此之前,我花了几周时间追踪奇怪的模拟bug。
- 有一个旧的wxWidgets网络移植作为起点,这对我们帮助很大,但将其提升到KiCad所需的水平是一个漫长(且仍在进行中)的任务。感谢ahilss!
- 在网页上使用Pthreads:通过Emscripten,可以移植多线程应用程序(用于设计规则检查(DRC)、软件3D渲染器)。许多Emscripten特性(Asyncify、Pthreads、本地异常)之间存在冲突,但这是可行的。
- 使用本地异常的Asyncify:Asyncify(用于使WASM代码暂停然后调用JS,模拟阻塞的C++调用,通过直接重写WASM)与本地异常不兼容,即使在最新的Binaryen版本中,它也无法在catch块内暂停。如果您编写一个新的Binaryen传递,它就可以,这样可以使包的体积缩小30-40%,应用程序加载时间从10秒缩短到1秒。
- 优化包大小是一项有趣的挑战。我们刚刚将Open CASCADE移动到一个单独的懒加载WASM模块,从180MB减少到130MB(24MB brotli),仍然使用-O1。-O2/-Oz等将比看起来更复杂。
每天还有大量类似的问题。
几个月前,我的pcbnew几乎无法加载,运行缓慢,稍有不慎就会崩溃,而现在整个应用程序已经可以正常工作。虽然仍然存在一些bug,但现在感觉已经非常接近原生应用。
我们积累了很多知识和代码,想要通过博客文章分享,主线合并我们的更改到Binaryen/KiCad/wxWidgets,但我想先专注于发布。我们的wxWidgets移植与核心非常接近,KiCad大约有150个核心文件被修改(主要是构建脚本,也有一些代码更改)。目标是尽可能保持与主线的一致性,并最终合并。
我们肯定会提供一个免费版本,以及大约每月30美元的付费版本,适用于更大或封闭的项目,未来还会有可选的付费AI集成、自托管、企业功能以及原生和移动版本。
我们的目标是在KiCad的基础上构建一个产品(协作、AI集成、共享、集成),有点像当年红帽对Linux的做法。我们正在全力以赴使其功能完善,预计在一个月左右推出第一个版本。
当然,我们站在那些创造了KiCad和wxWidgets的人的肩膀上,希望尽可能回馈和贡献。如果您有好的建议,请告诉我。我发布过几个中等成功的开源项目,但从未作为贡献者参与过。所有前端代码都是GPL(必须如此),如果您愿意,可以运行这个项目。
您可以在以下链接找到源代码: [https://github.com/emergence-engineering/pcbjam](https://github.com/emergence-engineering/pcbjam)。
我们公司的官网是:[https://emergence-engineering.com/](https://emergence-engineering.com/)。
我们的糟糕着陆页是:[https://www.pcbjam.com/](https://www.pcbjam.com/)。