Skip to content

前期调研报告

Author:熊桐睿

0. 了解往年工作

汇总在此处。大部分项目都是 llm+fs 或 rust 重写。

开始调研时我始终认为应该要做一个真正有价值的工作,这样做起来才有动力,才能做得更好。比如无法带来性能提升的 rust 重写大部分是没有意义的。当然也要考虑到很多现实因素的影响。

1. wasm-gpu

LucentFlux/wasm-gpu: Runs WASM on the GPU 是一个将 wasm 编译到 naga,从而借助 wgpu 以 WebGPU 的方式在 GPU 上运行的项目。它的主要目标是让 WebAssembly 可以在 GPU 上运行,类似于 CUDA 的方式。

该项目开始于 3 年前,未完成,但目前已不再继续开发。

最终否决这个方向的原因是,wasm 要运行在 GPU 上的运行需求太小。这条路径并没有足够大的前景。

2. Improvements on VNC

VNC 是一个远程桌面协议,允许用户通过网络访问和控制远程计算机。它的工作原理是将远程计算机的屏幕图像压缩并传输到本地计算机,同时将本地计算机的输入事件(如鼠标点击和键盘输入)发送回远程计算机。

noVNC 是著名的 Web 端的 VNC 客户端。它使用 JavaScript 编写的 RFB 解码器,通过 websocket 与 VNC 服务器进行通信。

可行的改进是使用 Rust 等语言进行重写,以提高解码的效率。

最终否决这个方向的原因是,目前已经存在数个成熟的 Rust 等语言编写的 RFB 解码器,我们无需再写一个,剩下的工作只有简单的编译和调用。

3. Nova

我其实在去年 9 月左右就听说过 nova(因为在做 oxc 相关的工作),但此后没有关注过,直至调研时突然想起。它是一个使用 Rust 编写的 JS Engine,最大特点是 Data-oriented Design 带来的性能提升,和 Rust 生命周期和所有权机制带来的 gc 安全性。

JS Engine 在传统意义上属于应用程序的范畴。而在新兴的浏览器操作系统中,JS Engine 作为所有用户应用运行的基石,已经成为操作系统的组成部分,其重要性和底层程度已经不亚于其他一些系统组件,如图形驱动等。同时,广泛使用的 GNOME Shell 操作系统图形界面也是使用 JS 编写的,需要使用 JS Engine 来运行。

详细的调研内容可参阅 此处

我们和 Nova 作者进行了联系,他和其他社区成员非常热情,给我们提供了非常详细的指导。Nova 的代码质量非常高,前景也很好。

在调研期间,我出于尝试和学习的目的,为 Nova 提交了 2 个 PR:

并得到了作者非常积极的反馈和改进。整个合作过程非常愉快。

有趣的是,在放弃该选题的当天,Nova 作者恰巧宣布他得到了基金会赞助,开始全职开发 Nova。