就像每个刚学会编程的同学一样,我也曾冒出过“来写个编译器吧”的念头。于是我盯上了这个教程:详细的描述,漂亮的源码,一看就是教程中的极品!一切都是那么完美…

除了它使用 OCaml 写的

从各种意义上说 OCaml 都是一门很特别的语言,简洁的语法,强大的 match 功能,还有函数式编程,特别适合用来开发编译器。但是它的生态实在说不上完备,让我产生了“学这个不值”的想法。

此时我听见了恶魔的低语:“用 Rust 重写一个吧”

事实上在当时我并不会 Rust(现在也不算掌握),于是我一边翻着 Rust 的文档一边着手开发 Bolt 语言的 Rust 编译器。但是我显然高估了写编译器这件事的趣味性,在完成 AST 解析和与之配套的大量单元测试后,我开始有些厌倦了,再加上工作也变得更加繁忙,最终我将这个项目搁置,成为又一个静静躺在 github 的 private 项目。

会产生使用 Rust 的想法是因为当时在各个编程社区都有狂热的 Rust 用户在向所有人推荐这门以安全性著称的语言。这在当时似乎是一种风向,以至于成为一个 meme:“RIIR”(Rewrite It In Rust)

RIIR

有人整理收集了大量的劝人使用 Rust 做重构的请求,发布了一个项目

https://github.com/ansuz/RIIR

riir-github

其中既有安利成功的也有被人嫌弃的。列出一些有趣的例子,他们

  • 每个都有过人之处.
  • 每个都有他们独门绝招.
  • 斗志和耐性更是技惊四座.
  • 秘密武器更给你意外的惊喜口牙

安利成功

首先看一些愿意使用 Rust 重构项目的,这些项目对安全性的要求更高,比如 windows 系统

win-rust

考虑到 window 面临的更大的安全性挑战,这么做是合理的,不过微软也表示完全用 Rust 重写短期内不是很现实。

当然也有人在推进 Rust linux/Unix,比如 Redox 系统

redox-rust

以及 Rust for linux 等等

linux-rust

操作系统层面的 RIIR 接受度似乎比较高,毕竟关乎安全性,算是比较合拍的请求了

操作系统以外,也有人着手 Chromium Rust

chrome-rust

反追踪用的 Tor project 也有 Rust 版本

tor-rust

安利失败

相比上面的项目,下面的这些例子则不太受待见了

游戏引擎 Godot 收到了 RIIR 请求,不过反响比较微妙😅

godot-rust

ElasticSearch 也收到了,他们应该也不太喜欢…

08-rust

09-rust

F-Droid 也不太希望重构 75k 的代码量,话说你们的话术怎么一样啊

fdroid-rust

由于 xz 中发现了后门,所以有人建议用 Rust 来避免后门…

xz-rust

还有一些小众的项目也逃不掉,Rust-Roll! (还挺自豪的…)

rickroll-rust

其他

还有一些纯粹是玩梗的,比如

Rust启动!

oo

oo-rust

穿越时空的杰弗逊似乎也有些想法

us-cons-rust

就算是 RIIR 项目本身,也逃不掉

riir-rust

结尾

好像从半年前就抽不太出时间写 post 了,下一篇也不知道会是什么时候。

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

CC BY-SA 4.0