我在现有的 Nim 实现基础上添加了rust 实现。那个实现比我想的要难得多,可能是因为我是新手。但一旦实现,就成功了!
以下是我对这个项目的更多思考。
对构建过程复杂性的担忧
交叉编译是解决这个问题的关键。我深入研究了这个话题。虽然我没有对 Darwin 进行研究,这是社区中非常重要的一部分,但我没有 Mac!这两个项目都是从 Linux 构建Windows 安装程序和 Linux 字节码。还提供了一个 Docker 文件和构建脚本来以平台无关、可重复的方式执行此操作。
- 如果选择重写,我会建议在 Mac 上构建,执行提供的 Docker 构建,这样可以从同一个机器上覆盖所有三个平台。
- 对于 Mac 构建,两个项目的代码都不需要修改(尽管我无法完全确定)
- 如果我们只想做 Windows,我们仍然可以从 Windows、Linux、使用 Docker 的 Linux 或使用 Docker 的 Mac 上进行。
因此,针对这个问题:一个可用的 Docker 就是一切所需的设置,接着调用提供的 docker_build 脚本就完成所有构建、打包,甚至构建 Windows 安装程序。
Nim 与 Rust 的比较
两个项目都有相同的功能
Nim
- 使用愉快 -> 优点
- 容易学习、阅读和编写 -> 优点
- 发现 ZIP 文件实现中的 bug(我用它来规避 TDEP-120) -> 已经解决,但不是很好
- 社区规模小 -> 缺点
- 轻松交叉编译 -> 好的
- 不是负责任的选择 -> 错的
- 简洁 -> 好的
- 对 VS 代码的支持很好 -> 好的
Rust
- 约束与纪律 -> 两者都有利也有弊
- 非常稳定 -> 好的
- 更难编写 -> 不好
- 易于阅读 -> 我想是吧
- 很难与之共事 -> 差
- 轻松交叉编译 -> 好的
- 负责任的选择 -> 好
- 对 VS 代码的支持很好 -> 好的
- Emacs 支持极佳 -> 除了我之外,谁会在意呢?
尽管 Rust 更负责任,但我不得不回转到 Nim 实现,做一些修正,而在 Rust 之后的 Nim 实现就像呼吸新鲜空气一样。
Rust 版本显然没有 Nim 版本测试得那么彻底。
当然,我会继续维护这个包装器以及这两次重写,但这就是我在这个项目上停止积极工作的地方。