2026 年の Raku — 20 年前に始まった言語が、いま土台を入れ替えている
2026 年 9 月、Rakudo は 6 年がかりで進めてきたコンパイラ基盤の刷新(RakuAST)を既定に切り替える。そして 6.e が来る。「盛り上がっている」とも「終わっている」とも書かずに、2026 年の Raku を正確に書くとどうなるか。連載の最終話として、13 の型と 5 つの問いに戻る。
この記事の事実確認は 2026 年 9 月 18 日時点。 最終話は「現在」を扱うので、最も速く古くなる。 版・スケジュール・状況は rakudo.org と Rakudo Weekly News で確認してほしい。 この注記自体が、この回の主題の一部である。
土台を入れ替えている最中
2026 年、Raku で最も大きな出来事は新機能ではない。コンパイラの土台の入れ替えである。
名前は RakuAST。
Rakudo のコンパイラの、構文解析からコード生成までの前段を作り直したもので、 新しい grammar を持ち、Raku のプログラムを明示的な AST(抽象構文木)として表す層を持つ。
従来の Rakudo は、パース中にコンパイラの中間表現を直接組み立てていた。 RakuAST はその間に一段挟む。
⚠️ 呼び方が揺れる。 公式アナウンスでも「新しい backend」と書かれることがあるが、 機能的にはコンパイラのフロントエンドの刷新である。 記事で書くときは「新しいコンパイラ基盤」のように役割で書くのが安全だ。
なぜ作ったのか
Jonathan Worthington が 2020 年に着手した。The Perl Foundation の支援を受けた助成プロジェクトである。
第 6 話と第 11 話に出てきた名前だ。6model を作り、MoarVM を作り、Cro を作った人物である。 Raku の技術基盤は、かなりの部分がこの人の仕事で説明できる。
動機はこうだった。
- 中間表現が暗黙的で、最適化を入れる場所が無かった
- 構文木をオブジェクトとして扱えないため、マクロや構文の内省が実装できない
- コンパイラの構造が理解しにくく、貢献の障壁になっていた
つまり「速くする」より先に、「手を入れられる形にする」ための工事である。
ここに、連載を通じて言いたかったことの 1 つがある。
最適化を入れる前に、最適化を入れる場所を作る工事が要ることがある。
そしてその工事に 6 年かかった。成果物が「前と同じように動く」ことを目標とする 6 年である。 第 8 話で書いた「15 年」と同じ種類の時間だ。外から見て進捗が見えにくい。
2026 年のスケジュール
| 時期 | 内容 |
|---|---|
| 2026.09(9 月 26 日予定) | RakuAST が既定になる。旧基盤は RAKUDO_LEGACY=1 で使える |
| 6.e リリース時(2026 年内予定) | 旧基盤を完全に削除 |
段階の切り方に見覚えがあるはずだ。第 10 話の Path-to-Raku.md と同じ型である。
既定を切り替える → 旧を環境変数で残す → 版の区切りで削除。
互換性を切って 15 年を失った経験は、このコミュニティに破壊的変更の作法として残っている。
何が変わり、何が変わらないか
変わらない — 利用者から見た Raku の言語仕様は変わらない。 既存のコードはそのまま動くことが目標で、エコシステムのモジュールに対する大規模なテストが行われている。
変わる — slang(文法拡張)は手直しが要る。 第 11 話で書いたとおり、Raku はユーザが文法を拡張できる。 その文法の構造が変わるため、旧 grammar に依存した拡張はそのままでは動かない。
文法を開くと決めた言語は、文法を変えるときに二重のコストを払う。 第 11 話の最後に書いた代償が、いま実際に請求されている。
マクロについて — ここは間違えやすい
RakuAST はマクロ実装の前提となる基盤である。 しかし マクロは 6.e には入らない(2026 年 9 月時点の見通し)。
「RakuAST が来るからマクロが使える」と書くと誤りになる。 正確には 「マクロを実装できる土台ができた。マクロ自体はこれから」。
2026 年の Raku を、正確に書く
この連載の書き方の規則 2 条にこう書いた。
「盛り上がっている」とも「終わっている」とも書かない。どちらも評価であって事実ではない。
では事実は何か。表にする。
| 項目 | 2026 年 9 月時点の状態 |
|---|---|
| 言語バージョン | 6.d が既定。6.e は年内予定、未リリース |
| 処理系 | Rakudo。2026.08 が Release #196 |
| コンパイラ基盤 | 2026.09 で RakuAST が既定に |
| VM | MoarVM が事実上唯一 |
| 実装の数 | 3。Rakudo に加え、2026 年に mutsu(Rust)と Raku++(C++17)が現れた |
| ガバナンス | Raku Steering Council |
| エコシステム | zef(fez / rea)、raku.land。規模は小さいが継続 |
| 専用 IDE | Comma は開発終了 |
| Perl(5 系) | 5.44(2026-07-15)。Perl 7 は未リリース |
この表から言えることを 5 行にまとめる。これがこの連載の答えである。
- 月次リリースが 196 回続いている。 継続の最も強い証拠だ
- 6 年がかりのコンパイラ基盤刷新が完了しつつある。 保守ではなく前進している
- 規模は小さい。 専用 IDE は失われ、モジュール数は少ない
- 言語仕様は次の版へ向かっている。 止まっていない
- 10 年ぶりに、Rakudo 以外の実装が動いている。 次の節で扱う
この 5 行を並べて書くのが、2026 年の Raku についての正確な記述である。 どれか 1 行だけを引けば、盛り上がっているようにも終わっているようにも書ける。 だから並べる。
10 年ぶりに、Rakudo 以外の実装が動いている
この連載を書いている最中に知ったことなので、正直に順序どおり書く。 第 7 話で「2 つ目の実装が去った損失」と書いた。その直後に、2 つ現れていた。
| 実装 | 作者 | 言語 | 方式 | 開始 |
|---|---|---|---|---|
| mutsu | tokuhirom | Rust | バイトコード VM | 2026-02 |
| Raku++(rakupp) | ash | C++17(外部依存なし) | 手書きの字句・構文解析 + 木渡り評価器 | 2026-07 |
どちらも Rakudo のフォークではなく、ゼロから書かれている。 そして両方とも Artistic-2.0、つまり Perl / Raku と同じライセンスを選んでいる。
適合度は roast で測られている
| roast ファイル完全通過(1,464 中) | 個別テスト | |
|---|---|---|
| mutsu | 1,433(97.9%) | — |
| Raku++ | 676(46%) | 200,843 / 約 219,610(91%) |
この表が成立すること自体が、第 7 話の主題の帰結である。
「Raku に準拠している」が主張ではなく数字になるのは、 仕様を散文からテストスイートへ移したからだ。 もし仕様が Synopsis のままだったら、この 2 つのプロジェクトは 「どれくらい Raku なのか」を自分で申告するしかなかった。
エコシステムの測り方も正直
両者とも「roast を通る」だけでは足りないことを分かっていて、 実際のモジュールが動くかを別に測っている。
- mutsu: 1,624 distribution のうち 41.2% が「rakudo が通す全テストファイル」を通す
- Raku++: 2,529 のうち 1,006 が自身のテストを通す。 ただし同じマシンで Rakudo を走らせると 1,791 しか到達可能でない (残り 738 は libgsl・fontconfig・ネットワークが無くて誰も通せない)。 だから 1,006 は「到達可能の 56%」である
分母を先に測ってから比率を出している。数字の作法として正しい。
開発の速度
mutsu は 2026 年 2 月に始まり、7 か月半で 12,266 コミット・PR 8,700 本超に達している。 1 日あたり約 55 コミットだ。
ブランチ名を見ると claude/raku-line-profiler-design-... のような形が並んでいて、
大規模な AI 支援開発であることが分かる。ただし雑ではない。
直近のコミットにはこういうものが並ぶ。
docs(adr): record ADR-0106's gates as measured after Slice 2
docs(adr): record the three corrections ADR-0106 Slice 2 forced
ADR で設計を残し、スライスで刻み、ゲートを実測で記録し、 「実装が強いた訂正」を文書として残している。
第 5 話でこう書いた。
実装は、読んで分かる誤りとは別の種類の誤りを出す。
mutsu はその訂正を捨てずに記録している。Pugs が roast を始めたのと、形が似ている。
grammar が、初めて外へ出ようとしている
Raku++ は売り文句としてこう書いている。
Raku の grammar は
.rakuファイルのままで、任意のホスト言語がそれを駆動できる — それに相当するものは他のどれも持っていない
C API を 1 つ用意し、C++ / Go / JavaScript / Python / Rust / Wolfram へのバインディングを出している。 つまり「Raku の grammar だけを他の言語から使う」ことを狙っている。
この回の最後で「grammar は Raku の形のままでは広まっていない」と書くが、 広める試みは、いま始まったところである。
正直な但し書き
- どちらも production ready ではないと本人たちが明言している
- mutsu の既知の穴: 未宣言変数をコンパイル時に弾かない、例外型が限定的、 パッケージマネージャが未成熟、RakuAST 未実装
- 数字は毎日動く。 mutsu の README には「適合度は毎日良くなっている」と書かれている
⚠️ ここに挙げた数字はすべて 2026 年 9 月 18 日に各リポジトリで確認したもの。 引用するなら測り直すこと。この連載の規則 1 条のとおりである。
連載の論としてどうなるか
第 7 話の懸念は、部分的に解消された。
単一実装のとき、実装のバグは「言語の仕様」として定着しうる。 実装が 3 つになると、食い違いが「仕様の穴か、実装のバグか」として可視化される。
そして第 6 話の型がここで効く。
1 人目の利用者では、汎用のふりを見抜けない。
roast は 10 年以上、Rakudo という 1 人の利用者しか持たなかった。 roast がどれだけ仕様を捉えているかは、これから検証される。
では、Raku は何に向いているのか
「小さいが継続している」は状態の記述であって、使う理由ではない。 2026 年に Raku を選ぶ理由があるとすれば何かを、測り直して書く。
以下の数字はすべて 2026 年 9 月 18 日、macOS / Rakudo Star 2026.08 で測った。 再現コマンドを併記する。数字は腐るので、引用するときは自分で測り直してほしい。
通底している 1 つの判断
Raku の強みは個別の機能というより、全部が同じ判断から出ている。
素直に書いたときの答えが正しいことに、性能と規模を払う。
多くの言語は逆を選んだ。安い答えを既定にして、正しい答えは要るときに取りに行かせる。 Raku は正しい答えを既定にした。実測で見る。
実測 1 — 文字列
入力を全言語で明示的に分解形(e + U+0308)に揃えて比較した。
raku -e 'my $s = "noe\c[COMBINING DIAERESIS]l"; say $s.chars, " / ", $s.flip'
python3 -c 's = "noe\u0308l"; print(len(s), "/", s[::-1])'
perl -CS -e 'my $s = "noe\x{0308}l"; print length($s), " / ", scalar reverse($s), "\n"'
| 言語 | 長さ | 反転 | 家族絵文字 👨👩👧👦 の長さ |
|---|---|---|---|
| Raku | 4 | lëon | 1 |
| Swift | 4 | lëon | 1 |
| Python 3 | 5 | l̈eon ← 濁点が l に移った |
7 |
| Perl 5 | 5 | l̈eon ← 同上 | 7 |
文字列を反転しただけで発音記号が別の文字に移るのが、コードポイント単位の言語の既定の挙動である。
ただし Raku だけの特権ではない。 Swift も書記素クラスタ単位だ。 Raku が違うのは、これが正規表現と grammar にそのまま繋がる点である(第 11 話)。
実測 2 — 数値
raku -e 'say 0.1 + 0.2 == 0.3; say (0.1 + 0.2).WHAT, " ", (0.1 + 0.2).nude'
python3 -c 'print(0.1 + 0.2 == 0.3, 0.1 + 0.2)'
| 言語 | 0.1 + 0.2 == 0.3 |
実際の値 |
|---|---|---|
| Raku | True | Rat の 3/10(厳密) |
| Python 3 | False | 0.30000000000000004 |
小数リテラルが既定で有理数。Fraction や Rational を持つ言語は多いが、
リテラルが既定でそれになる言語はほぼ無い。
明確に強い 4 領域
| 領域 | なぜ | 代替案との差 |
|---|---|---|
| パーサ / DSL / 独自フォーマット読み | grammar が言語機能(第 11 話) | ANTLR / yacc はビルド段が要る。Parsec / nom はホスト言語の関数として書く |
| 複雑な Unicode テキスト処理 | 書記素単位 + それが正規表現に繋がる | Swift は書記素だが正規表現の表現力が違う。他は自前で正規化の面倒を見る |
| 正確さが速さより重要な数値計算 | 有理数が既定、整数は任意精度 | 明示的に取りに行く必要がある |
| 多数のイベント源を 1 か所で束ねる並行処理 | react / whenever が構文 |
Go の select は channel 限定。RxJS はライブラリ |
この 4 つに共通するのは、**「正しい答えが高くつく領域」**だということだ。 Raku が強いのは、そこで高い方を既定にしたからである。
正直な弱点
同じ環境で測った。
for i in 1 2 3 4 5; do raku -e 'say 1' >/dev/null; done # 5 回平均を取る
| 言語 | 起動時間(5 回平均) |
|---|---|
| Raku | 138.8 ms |
| Python 3 | 38.4 ms |
| Perl 5 | 13.9 ms |
Perl の 10 倍である。 ワンライナーやシェルスクリプト代わりには不利で、 長時間走るプロセスなら相対的に問題にならない。 これは言語仕様ではなく実装の性質で、MoarVM の起動と組み込みライブラリのロードが理由だ。
加えて、この回の表に書いたとおり — 専用 IDE は開発終了、 モジュール数は CPAN とも RubyGems とも比較にならない。 (実装の数については、次の節で訂正する。)
まとめ
「Raku を使うべき」と言える場面は少ない。 2026 年に新規プロジェクトの言語として勧めるのは、エコシステムと人材の観点から難しい。
言えるのはこちらである。
パーサを書く、複雑な Unicode を扱う、数値の正確さが要る — このどれかが仕事の中心にあるなら、Raku は「他の言語でやるより明らかに楽」な選択肢になる。
そしてもう 1 つ、実務ではない価値がある。 言語設計の見本市としては群を抜いている。 型・MOP・並行・文法拡張・数値タワーの実例が 1 つの言語に全部入っていて、 しかも設計判断がすべて公開されている。この連載が 12 話ぶん書けたのは、そのおかげだ。
5 つの問いに戻る
第 0 回(連載の地図)で、5 つの問いを立てた。答え合わせをする。
1. なぜ互換性を切ったのか
Perl 5 の根本的な制約 — シジルの規則、bless ベースの OO、@_ による引数渡し —
は、後方互換性のため変えられなかった。そして後方互換性が重かったのは、CPAN があったからだ(第 2 話)。
成功した言語は、その成功の形に固定される。
変えたい。しかし変えられない。ならば別の言語を作るしかない。
2. なぜ 15 年かかったのか
4 つある(第 8 話で総括した)。
設計が壮大すぎた(第 4 話)/実装基盤の賭けを外した(第 6 話)/ 仕様が動き続けた(第 5・7 話)/専任の担い手が薄かった。
怠慢でも混乱でもない。 そして MoarVM に移ってからは 2 年半で出ている。
3. なぜ名前を変えたのか
「Perl 6」という名前が、検証されていない主張を 19 年運び続けたから(第 9 話)。
三方が損をしていた。Perl 5 は「終わった言語」に見え、 Perl 6 は「未完成の Perl」に見え、Perl 5 はバージョン番号を進められなかった。
そして 2015 年に完成したからこそ、2019 年に改名できた。
4. Perl 5 は何をしていたのか
待っていなかった。 Moose が出て、5.10 が出て、年次リリース体制になり、
シグネチャが安定化し、class が入った。2026 年 7 月に 5.44 が出ている。
この 15 年で最も損をしたのは、Perl 6 ではなく Perl 5 だったかもしれない。 存在しない後継に、15 年間追い立てられ続けたからだ。
5. 今どうなっているのか
上の 4 行のとおり。小さいが、継続していて、前進している。
この連載で出た 13 の型
技術の話としてこの連載を読むなら、残るのはこれだと思う。 どれも Perl / Raku に固有ではない。
| # | 型 | 話 |
|---|---|---|
| 1 | 言語の根本的な制約は、機能を足しても解けない。実装を作り直すことになる | 1 |
| 2 | 成功した言語は、その成功の形に固定される。資産が大きいほど変更コストが上がる | 2 |
| 3 | 公募が返してくるのは、解ではなく問題である | 3 |
| 4 | 足す対象を、機能から規則へ引き上げる | 4 |
| 5 | 実装は、読んで分かる誤りとは別の種類の誤りを出す | 5 |
| 6 | 1 人目の利用者では、汎用のふりを見抜けない | 6 |
| 7 | バックエンドが N 本あることと、N 本が検証されていることは別である | 6 |
| 8 | 散文は全部について曖昧に語り、テストは一部について厳密に語る | 7 |
| 9 | リリースとは機能の追加ではなく、変えないという約束の開始である | 8 |
| 10 | 名前は、付けた瞬間の主張を凍結する | 9 |
| 11 | 改名は「名前が埋まっている場所を全部数える作業」である | 10 |
| 12 | 記法の長さは、頻度への割り当てである | 11 |
| 13 | 構文拡張のしやすさは、元の構文の小ささと引き換えである | 11 |
そして最後に、もう 1 つ足したい。この回を書いていて分かったことだ。
現在について書くことは、いつ調べたかを書くことである。
この記事の冒頭に「事実確認は 2026 年 9 月 18 日時点」と書いた。 書いたのは、それが誠実だからというより、書かないと使えないからだ。
「Raku の最新版は」と書かれた記事は、日付が無ければ判断できない。 古いのか、新しいのか、どちらとも言えないのか。 日付の無い「現在」は、読む人にとって情報ではない。
この連載が扱った 40 年は、そのことの巨大な実例でもあった。 2000 年に「Perl 6 は数年で出る」と書かれた記事は、 書かれた時点では正しかった。 第 9 話で名前について書いたのと同じ構造だ。
名前は、付けた瞬間の主張を凍結する。
記事も同じである。だから日付を書く。
終わりに — 最初の 3 行に戻る
この連載は、3 行の結論から始まった。
- Raku は Perl 6 の新しい名前である。 2019 年 10 月に改名した。同じ言語だ。
- Perl 6 は Perl 5 の次のバージョンではなかった。 互換性のない別言語として設計され、そう育った。
- Perl(5 系)は今も現役である。 2026 年 7 月に Perl 5.44 が出ている。終わっていない。
12 話を経た今、この 3 行は同じままだ。変わったのは、なぜそうなのかが分かっていることである。
そして最後に 1 つだけ、事実として書き添えておきたい。
2026 年 11 月、東京で、Larry Wall と Matz が同じ場所で話す。 Perl を作った人と、Ruby を作った人である。
この連載で扱った 40 年は、Perl が何を試し、何を諦め、何を諦めなかったかの記録だった。 その試みの多くは、他の言語に流れていった。CPAN はすべてのパッケージリポジトリの祖先になり、 正規表現は業界標準になり、Moose のオブジェクトモデルは Perl 5 に戻り、 そして grammar は — Raku の形のままでは、まだ広まっていない。
文法を拡張できる言語は他にもある(第 11 話で層ごとに並べた)。 Racket はその層で Raku より強い。しかし 正規表現の延長として書けて、クラスとして継承できる文法は、まだ Raku にしかない。
Raku にしかないものが、まだ Raku にある。 それが 2026 年の現在地である。
この連載を最後まで読んでくれた方に感謝します。 事実の誤り・更新の指摘は歓迎します。