我在现有的Nim 实现中添加了一个Rust 实现。这比我想的要复杂得多,可能是因为我是一个新手。但一旦它工作,它确实工作了!
关于这项工作的一些更多思考。
对构建过程复杂性的担忧
交叉编译是解决这个问题的关键。我对此进行了深入研究。虽然我并没有进行 Darwin(本社区的一个重要项目),因为我没有苹果电脑!这两个项目都在 Linux 上创建了 windows 安装器和 Linux 二进制文件。还提供了一个 Dockerfile 和构建脚本来实现跨平台、可重复的方式。
- 如果您选择重写,我建议从 Mac 上构建,并进行提供的 Docker 构建,从而从同一台机器上涵盖所有三个平台。
- 对于 mac 构建,对两个项目中的代码没有变更(尽管我并不完全确定)
- 如果我们只想做 windows,我们仍然可以从 windows、linux、使用 Docker 的 linux 或使用 Docker 的 mac 中进行。
为了解决这个问题:一个工作的 Docker 是所需的全部设置,然后调用提供的 docker_build 脚本即可完成所有构建、打包,甚至构建 windows 安装器。
Nim 与 Rust
这两个项目都有相同的功能
Nim
- 与其合作是一种乐趣 -> 优点
- 容易学习、阅读、写作 -> 优点
- 在 zip 文件实现中发现了 bug(我用来绕过 TDEP-120) -> 绕过去了,但不理想
- 社区规模小 -> 不好
- 容易交叉编译 -> 优点
- 并不是一个明智的选择 -> 缺点
- 简洁 -> 优点
- VS code 支持良好 -> 优点
Rust
- 束缚与纪律 -> 两好一坏
- 非常坚固 -> 优点
- 更难编写 -> 不好
- 可读性良好 -> 达到预期
- 合作起来令人痛苦 -> 缺点
- 容易交叉编译 -> 优点
- 是一个明智的选择 -> 优点
- VS code 支持良好 -> 优点
—— Emacs 的支持非常好 —— 谁在乎,除了我?
虽然 Rust 责任感更强,但我还得回到 Nim 的实现中做一些修复,而且这就像是呼吸新鲜空气一样,在 Rust 之后。
与 Nim 版本相比,Rust 版本显然没有经过那么广泛的测试。
我当然会继续维护这个包装器和这两个重写,使其保持更新,但我会在这里停止对这项工作的积极投入。