GNU Mes
GNUシステムをブートストラップするためのSchemeインタプリタとC言語のコンパイラ
Schemeインタプリタは〜5,000LOCのシンプルなC言語で、CコンパイラはSchemeで書かれており、これらは相互にセルフホストされている
https://www.gnu.org/software/mes/
コード量の多いソフトウェアは単純に理解しにくい。人間の短期記憶能力には限界があるので、コード量が多いと長期記憶にコミットされるまで理解できないからだ
https://twitter.com/EzoeRyou/status/1327270597504630785
なぜそんなものがあるのかというと、GNU、あるいはGNU/Linuxシステムの信頼性のためだ。ソースコードがあるから信頼できる? そのソースコードをコンパイルする最初のコンパイラーのバイナリはどうして信頼できるのか?
そもそもGCCを信頼できるのか? GCCのコード量はとても多く、そのコードを一個の人間がすべて精査することは困難だ。
https://twitter.com/EzoeRyou/status/1327273008621264903
そこでGNU Mesの出番だ。GNU Mesは最終的に5000行のCコードさえ理解すればいい。そのコードで実装されたSchemeインタープリターで動くCコンパイラはそれぞれセルフホスト可能で、最終的にすこしだけパッチされたTinyCをコンパイルできる。
https://twitter.com/EzoeRyou/status/1327273012282810369
そのTinyCはglibc-2.2.5, binutils-2.20.1, gcc-2.95.3をコンパイルできる。これによりより上位バージョンのGCCをコンパイルでき、ブートストラップの信頼性が担保できる
https://twitter.com/EzoeRyou/status/1327273014199689218
関連
小さなバイナリブロブからGCC13をコンパイルするまでの手順書
ビルド成果物、バイナリの真正を保証する
https://github.com/fosslinux/live-bootstrap/blob/master/parts.rst
#Scheme