我在现有的 Nim 实现 中添加了 Rust 实现。那一个要比我想象的要复杂,可能是因为我是新手。但一旦运行起来,它确实可以工作!
关于这项工作的更多思考。
关于构建过程复杂性的担忧
交叉编译是解决这个问题的关键。我深入研究了这个问题。尽管我没有做 Darwin,这对于这个社区来说是一个重要的问题,但我没有苹果电脑!两个项目都是从 Linux 构建了 Windows 安装程序和 Linux 可执行文件。还提供了一份 docker 文件和构建脚本,以实现跨平台、可重复的方式完成这些工作。
- 如果选择重写,我建议在苹果电脑上建立,然后执行提供的 docker 构建,这样就可以从同一台机器覆盖三个平台。
- 对于苹果电脑构建,两个项目中的代码都不应该发生变化(尽管我无法确定)
- 如果我们只想做 Windows,我们仍然可以从 Windows、Linux、带有 docker 的 Linux 或带有 docker 的苹果电脑中进行。
为了解决这个问题:一个工作的 docker 就是需要的所有设置,然后调用提供的 docker_build 脚本进行所有构建、打包,甚至构建 Windows 安装程序。
Nim 与 Rust 的比较
两个项目都有相同的功能
Nim
- 使用愉快 -> 良好
- 易学、易读、易写 -> 良好
- 在 zip 文件实现中找到了一个问题(我用来绕过 TDEP-120) -> 绕过但不好
- 社区小 -> 不好
- 易于交叉编译 -> 良好
- 不是负责任的选择 -> 坏
- 简洁 -> 好
- VS code 支持良好 -> 好
Rust
- 束缚与纪律 -> 既有好处也有坏处
- 十分坚固 -> 好
- 较难编写 -> 不好
- 易读 -> 看起来不错
- 工作困难 -> 坏
- 易于交叉编译 -> 良好
- 负责任的选择 -> 好
- VS code 支持良好 -> 好
- emacs 支持出色 -> 虽然与我无关但纵使我也不在乎
尽管 Rust 更负责任,但我不得不回退到 Nim 实现以进行一些修复,而且在使用 Rust 之后的 Nim 在我看来就像是重新呼吸新鲜空气。
Rust 版本显然没有得到像 Nim 版本那样广泛的测试。
当然,我会继续维护和更新这个包装器和这 2 个重写,但这就是我在这件事上停止主动工作的地方。