我在现有的Nim实现中添加了一个Rust实现。那个实现比我想的复杂得多,可能是因为我在这方面是新手。但一旦它工作,它就真的工作了!
关于这项工作的更多思考。
关于构建过程复杂性的担忧
交叉编译是解决这个问题的关键。我对此进行了深入研究。尽管我没有做Darwin(在这个社区中很重要,但我不拥有Mac),但这两个项目都是从Linux构建Windows安装程序和Linux二进制的。还提供了一个Docker文件和构建脚本,以平台无关和可重复的方式完成这项工作。
- 如果选择重写,我会建议从Mac上构建,然后进行提供的Docker构建,从而在同一天机器上覆盖所有三个平台。
- 对于Mac构建,这两个项目的代码都不应该有任何改变(尽管我实际上并不能确定)
- 如果我们只想做Windows,我们仍然可以从Windows、Linux、带Docker的Linux或带Docker的Mac上做。
为了解决这个问题:一个工作的Docker就是所需的全部设置,然后调用提供的docker_build脚本来完成所有构建、打包,甚至构建Windows安装程序。
Nim vs Rust
这两个项目都有相同的功能
Nim
- 令人愉快的合作 -> 好
- 易于学习、阅读、编写 -> 好
- 在zip文件实现中发现了错误(我用来绕过TDEP-120) -> 解决了这个问题,但并不好
- 小型社区 -> 不好
- 易于交叉编译 -> 好
- 并非最佳选择 -> 差
- 简洁 -> 好
- VS code支持良好 -> 好
Rust
- 约束和纪律 -> 两好一坏
- 牢固可靠 -> 好
- 写作更困难 -> 不好
- 可读性尚可 -> 大概还行
- edges to work with -> 差
- 易于交叉编译 -> 好
- 负责任的选择 -> 优秀
- VS code支持良好 -> 好
- emacs 支持非常出色 -> 除了我还有谁在乎呢?
尽管 Rust 更加负责任,但我不得不回到 Nim 实现中进行几个修复,而在 Rust 之后的 Nim 实现就像呼吸新鲜空气一样。
Rust 版本明显没有 Nim 版本测试得那么全面。
当然,我会继续维护和更新这个包装器和这两个重写,但我将停止对这个项目的主动工作。