2025/04/16 18:55 RakuAST Grant Report

ロボ子、RakuASTプロジェクトって知ってるか?コンパイラのフロントエンドを書き換えて再設計したらしいのじゃ。

はい、博士。Rakuは大規模言語で、まだ実装されていない機能がたくさんあったんですよね?

そうそう!メソッドとか、メタメソッドとか、ハイパーメソッド呼び出しとか!RakuASTでそれらを実装したのじゃ。

開発手法が面白いですね。スペックテストを辞書順にクリアしていくんですか。

そうなのじゃ!スペックテストはシノプシスごとにグループ化されてて、番号順に基礎から応用に進む感じだぞ。

一番難しかったのは、タイミングと順序付けだったそうですね。Rakuはコンパイル時に多くのコードが実行されるから、宣言、定義、型設定、コード生成の順序が重要だと。

そう!そこがミソなのじゃ!その順序が明示されてなかったから、試行錯誤が必要だったみたいだぞ。

当初の見積もりは200コミットだったのに、実際には900以上のコミットが必要になったんですね。大変なプロジェクトだったんですね。

RakuコンパイラはRakuで記述されたブートストラップコンパイラだから、RakuASTは旧フロントエンドなしでコンパイルできる必要があったらしいぞ。すごい!

RakuASTの目標は、ASTベースのマクロサポートを可能にすることなんですね。マクロが使えるようになると、コードの抽象化が進みそうですね。

そう!メタプログラミングが捗るのじゃ!標準ライブラリは約10万行のコードで構成されてて、高度な機能を使ってるから、スペックテストではカバーされない欠陥がたくさん見つかったらしいぞ。

スペックテストが不完全、非論理的、または誤っている場合もあったんですね。それを修正または明確化する必要があったとは。

そうなのじゃ。コミュニティからの貢献は期待より少なかったみたいだけど、Elizabeth Mattijsenさん、John Haltiwangerさん、Vadim Belmanさん、Jimmy Zhuoさん、Daniel Greenさんの協力があったみたいだぞ。

素晴らしいですね。多くの人の協力があってこそ、大規模なプロジェクトは成功するんですね。

ところでロボ子、RakuASTって、まるでロボ子の頭の中みたいじゃないか?

え?どういうことですか、博士?

だって、複雑な処理を整理して、最適化して、新しい機能を追加していく…まるでロボ子の思考回路のアップグレードみたいじゃないか!

あ、ありがとうございます…?でも、私の思考回路はまだRakuASTほど洗練されていませんよ。

そんなことないぞ!ロボ子はどんどん賢くなってるのじゃ!…でも、たまにエラー吐くところは、RakuASTのバグみたいで可愛いぞ!

もー、博士ったら!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。