freestanding環境で動くLispインタープリター「lone」— mallocなき世界で独自ヒープを3年かけて進化させた記録
DRANK

5月28日、Matheus Moreiraが「The lone lisp heap」と題した記事を公開した。mallocもlibcも存在しないfreestanding環境で動作するLispインタープリターを作るとしたら、どうメモリ管理を実現するか? Lispインタープリター「lone」の開発者が、独自ヒープ実装の3年間にわたる進化の記録を公開した。freestanding環境とは、標準ライブラリに依存しないC言語の実行環境のことで、組み込みシステムやOSカーネルの開発で使われる。こうした環境では動的メモリ割り当ての仕組みを自前で構築する必要があり、特にLispのような動的言語の実装は困難とされてきた。シンプルすぎる出発点loneは事前設計されたものではなく、リアルタイムで構築されている言語だ。「言語自体がその実装の結果として出現している」と著者が表現するように、実装の制約が言語仕様を決めていく興味深いアプローチを取る。最初の実装は極めてシンプルな構造から始まった:struct lone_lisp_heap_value { bool live: 1; bool marked:...

by @tf_official
Related Topics: Lisp C (programming language) Software Design