25作者: io_eric4 个月前原帖
我通常用 C++ 开发网页游戏,但使用 Emscripten 总让我觉得有些过于复杂,因为我并不需要完整的 POSIX 模拟或庞大的标准库,只是为了在画布上渲染一些东西并处理基本的用户界面。 我想解决的主要问题是 JS/WASM 的互操作瓶颈。与其为每个调用使用标准的粘合代码,我将所有内容迁移到一个共享内存架构,使用命令和事件缓冲区。 它的工作原理是,我将所有的指令批量处理在 WASM 中,然后只向 JS 发送一个“刷新”信号。JS 端随后一次性直接从共享内存中读取所有内容。这种方式效率更高,我进行了一次基准测试,在画布上渲染 10,000 个矩形,结果差异显著:Emscripten 的帧率大约为 40 FPS,而我的设置达到了 100 FPS。 但是在 C++ 中编写 DOM 逻辑是非常痛苦的,所以我构建了 Coi。它是一种基于组件的语言,在编译时静态分析变化,以实现 O(1) 的反应性。与传统框架不同,它没有虚拟 DOM 的开销;编译器将状态变化直接映射到命令缓冲区中的特定句柄。 我最近对比了 Coi 和 React、Vue 在一个 1,000 行表格上的性能:在行创建、行更新和元素交换方面,Coi 表现最佳,因为它完全避免了“差异”步骤,并最小化了桥接跨越。它的包大小也是三者中最小的。 这个架构最酷的地方之一是标准库的工作方式。如果我想支持一个新的浏览器 API(比如 Web Audio 或新的 Canvas 功能),我只需将定义添加到我的 WebCC 模式文件中。当我重新编译 Coi 编译器时,该语言会自动获得一个新的标准库函数来访问该 API,完全不需要手动封装。 我对这个项目的进展感到非常自豪。它结合了自定义 WASM 堆栈的性能和一种让我觉得写起来很舒服的语法(至少对我来说是这样 :P)。此外,由于中间步骤是 C++,我还在考虑让它在服务器端工作,这样就可以在整个堆栈中共享组件。 示例(Coi 代码): ```coi component Counter(string label, mut int& value) { def add(int i) : void { value += i; } style { .counter { display: flex; gap: 12px; align-items: center; } button { padding: 8px 16px; cursor: pointer; } } view { <div class="counter"> <span>{label}: {value}</span> <button onclick={add(1)}>+</button> <button onclick={add(-1)}>-</button> </div> } } component App { mut int score = 0; style { .app { padding: 24px; font-family: system-ui; } h1 { color: #1a73e8; } .win { color: #34a853; font-weight: bold; } } view { <div class="app"> <h1>Score: {score}</h1> <Counter label="Player" &value={score} /> <if score >= 10> <p class="win">You win!</p> </if> </div> } } app { root = App; title = "My Counter App"; description = "A simple counter built with Coi"; lang = "en"; } ``` 在线演示: [https://io-eric.github.io/coi](https://io-eric.github.io/coi) Coi(语言): [https://github.com/io-eric/coi](https://github.com/io-eric/coi) WebCC: [https://github.com/io-eric/webcc](https://github.com/io-eric/webcc) 我很想听听你的想法。虽然它仍然远未完成,但作为一个副项目,我对此感到非常兴奋 :)
54作者: bleosh4 个月前原帖
在硅谷作为开发者工作了大约10年后,我到了一个阶段,感觉对这个领域已经失去了兴趣。无论我在工作中做什么,几乎都无法激励自己去关心,而我对周围同事的行为感到很烦躁。我曾经换过几家公司,想着可能是环境的问题,或者是公司正在做的事情不吸引我等,但无论去到哪里,过一段时间后总会感到同样的厌倦,这让我觉得是时候转向其他事情了。 有没有人从单纯的工程师转型到其他领域,并找到了更多的快乐?我愿意离开这个领域,虽然可能收入会减少。
3作者: sshh124 个月前原帖
介绍模态代理 SDK(非官方) - 将代理 SDK 移植到模态沙箱中运行。<p>示例:<a href="https:&#x2F;&#x2F;github.com&#x2F;sshh12&#x2F;modal-claude-agent-sdk-python&#x2F;tree&#x2F;main&#x2F;examples" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;sshh12&#x2F;modal-claude-agent-sdk-python&#x2F;tree...</a>
2作者: twalichiewicz4 个月前原帖
嗨,HN,<p>这是一个简单的周末项目:网球,但通过打字来进行。试试看吧!