为什么 Discourse 没有用 Rust 重写?

Discourse 内存安全的。Ruby 是一种内存安全语言;所有垃圾回收语言都是如此。在这方面与 Rust 的主要区别在于安全检查的执行时间;Rust 在编译时执行,Ruby 在运行时执行。

Rust 只解决少数几类错误,主要是 C++ 缺乏垃圾回收所导致的错误。当然,他们找到了在保持指针理论上可能实现的性能优势的同时做到这一点的方法,这很,但这绝不能防止您作为用户会看到的那些错误。例如,如果我使用 < 而不是 <=,并因此导致了差一错误,Rust 也救不了我。如果我忘记在操作完成后生成一个成功消息,Rust 也救不了我。

真正能防止错误的是 Discourse 已经部署的测试驱动开发。很少有项目可以直接从 master 部署并期望它们是稳定的,但 Discourse 就是其中之一。

“现代平台”如雨后春笋般涌现,前后端都使用 JavaScript。Ruby 在流行度上仅落后 Rust 两位(Kotlin 居于两者之间),所以它目前并不是一种罕见的语言。当然,10 年后情况可能会有所不同,但即使重写成 Rust,10 年后也会变成技术债务。

很难传达这句话有多么天真,这就是为什么每个人都在嘲笑这个想法。我见过我的开发人员花了 3 年时间重构代码,他们才刚刚准备好从 wxWidgets/ShuttleGUI 移植到 Qt/QML——就背景而言,这是从 C++ 到 C++ 的迁移,只是使用了不同的 UI 工具包。在确保行为完全相同的同时转换代码是非常困难的。12-16 天可能只是在任何人开始之前所需的规划时间。

15 个赞