AI開発はアセンブラとRustどっちが速い?LLVMのC++問題と純Rust製Cranelift
作成日:

AI開発はアセンブラとRustどっちが速い?LLVMのC++問題と純Rust製Cranelift


論旨

AI エージェントに高速なプログラムを書かせる時代になると、「人間には難しすぎるアセンブラ(アセンブリ言語)でも、最上位 AI に直接書かせれば Rust より速い最強のソフトができるのでは?」「そもそも安全な Rust でも、裏側のコンパイラ基盤(LLVM)が C++ 製ならバグが混じるのでは?」という本質的な疑問に突き当たります。

結論からお伝えすると、Gemini 4 Argon High のような最上位推論 AI を使う場合でも、アセンブラ直書きは遅く危険な悪手であり、『AI に Rust を書かせ、普段の開発ビルドは純 Rust 製の Cranelift で高速化し、完成品だけ LLVM で極限最適化する二刀流』 が現代における最も速く安全な最適解です。本記事では、その物理的・数学的な根拠と Mac で 3 分で試せる導入手順を解説します。

合わせて読みたい深まる関連情報
対象となる方
  • 「AI にコードを書かせるならアセンブラと Rust のどちらが速いのか」 を CPU 構造と LLM の仕組みから正確に理解したい方

  • 安全なはずの Rust の裏側で動く 「2,000 万行の C++ 製 LLVM のバグリスク」 と、形式検証ツールによる防御の現実を知りたい方

  • 手元の Mac 環境に 100% 純 Rust 製の次世代コード生成器 『Cranelift』 を導入し、毎日のデバッグビルド待ち時間を 20〜40% 短縮したい方

手書きアセンブラとRustはどっちが本当に速いのか

まず大前提として、「人間や AI が手書きしたアセンブラ」と「Rust で書いてコンパイルした機械語」のどちらが速いのかを整理しましょう。理論上の限界値と実務での実測値には、明確な逆転現象が存在します。

比較軸 手書きアセンブラ(アセンブリ言語) Rust(rustc + LLVM 最適化)
理論上の最高速度 最速(CPU 命令とレジスタを 100% 直接制御可能) アセンブラの理論上限と同等、またはごくわずかに劣る
実務での実測速度 書き手の力量に極端に依存し かえって遅くなりがち 極めて高速(熟練職人を超える最適化を自動適用)
メモリ安全性 皆無(1 行のミスで無音のままメモリを破壊) 極めて高い(所有権と型検査で翻訳時にバグを拒否)
保守性と移植性 CPU 世代や OS が変わるたびに書き直しが必要 同じソースから Apple Silicon / x86_64 双方へ最適出力

職人のSIMD手書きが勝つごく一部の極限領域

理論上の天井だけで見れば、CPU の命令セットを 1 命令単位で直接指定できるアセンブラが最速です。実際に現在でも、世界トップクラスの職人が書くアセンブラがコンパイラを上回る限定的な領域があります。

代表的なのが、動画エンコード・デコードライブラリの 『FFmpeg』 や AV1 デコーダの 『dav1d』、あるいは暗号計算や OS カーネルのブートローダー(起動直後のハードウェア初期化・コンテキストスイッチ処理)です。これらの現場では、1 回の命令で複数のデータを一括計算する SIMD 命令(x86_64 の AVX2 / AVX-512 や Arm の NEON など) のレジスタ配置を職人が手作業で極限まで詰め込み、コンパイラの自動ベクトル化をしのぐ速度を叩き出しています。

なお Rust でも、そうした「全体の 0.1% にあたる超極限ループ」だけはどうしても手書きしたい場合、プログラム全体をアセンブラにする必要はありません。標準の core::arch モジュール(SIMD 組み込み関数)や公式のインラインアセンブリ(asm! マクロ)を使って、必要な数行だけを安全境界で囲んで局所注入できる仕組みが整っています。

実務でRustとLLVMが人間を超える3つの理由

しかし、一般的なアプリケーションや CLI ツール、データベース処理などの 99.9% の実務領域では、手書きアセンブラよりも Rust で書いてコンパイラに最適化させた方が圧倒的に速くなります。理由は現代の CPU と Rust の言語設計にあります。

⚡ 実務で手書きアセンブラより『Rust+LLVM』が速くなる3つの根拠
  1. 現代の CPU 内部が人智を超えるほど複雑だから : 現在の CPU は書かれた順番通りに命令を実行していません。内部で命令の順序を動的に入れ替える アウト・オブ・オーダー実行、条件分岐の先回りをする 分岐予測、複数の演算器を並列稼働させる スーパースカラとパイプライン処理、さらに L1〜L3 キャッシュの階層待ち時間が複雑に絡み合っています。数千行の規模でこれら全ての物理タイミングを計算して最速の命令順を手書きするのは、人間には事実上不可能です。

  2. ゼロコスト抽象化で読みやすいコードが無駄ゼロの機械語になるから : Rust のイテレータやジェネリクス(汎用型)は、人間や AI にとって論理を整理しやすい高度な書き方でありながら、コンパイル時に中間層のオーバーヘッドが完全に削ぎ落とされ、手書きのループと同等以上の機械語へ展開されます。

  3. 所有権による「別名参照(エイリアシング)制限」が C 言語以上の最適化を解禁するから : C 言語やアセンブラでは、2 つのポインタが同じメモリ番地を指している可能性を否定できないため、安全のために毎回メモリから値を読み直す無駄が生じがちです。一方 Rust は「書き換え可能な参照(&mut T)は同時に 1 つしか存在しない」ことをコンパイラが保証するため、裏側の LLVM に noalias(重複なし)属性を渡してレジスタ保持や SIMD 並列化を限界まで攻められます。


最上位AIでもアセンブラ直書きが遅く危険になる理由

ここで多くの方が思いつくのが、「人間には CPU パイプラインの計算が無理でも、Gemini 4 Argon High のような深い推論(Thinking)を持つ最上位 AI なら、最初からアセンブラを直接書かせた方が爆速になるのでは?」 という仮説です。

質問するおじさん

たしかに!人間が手書きすると頭がパンクするアセンブラでも、今の賢い AI に「Mac 用の最速アセンブラで書いてくれ」って頼めば、コンパイラを通すより速いプログラムが一発で出てくる気がするんじゃが、どうなんじゃろ?

解説ナビゲーター

すごく魅力的な発想なのですが、実は最上位の推論 AI を使ったとしても、アセンブラの直書きは「遅くなる上に、気づけない致命的バグを招く悪手」になってしまうんです。AI の脳の仕組みとコンパイラの役割の違いを見ると理由がはっきり分かりますよ!

確率予測機と物理CPUシミュレータの決定的な差

最大の理由は、大規模言語モデル(LLM)がどれほど進化しても、その本質は 「文脈から次に来る確からしいトークン(文字列)を確率的に推論するエンジン」 であり、「特定 CPU シリコン内部のキャッシュ待機ナノ秒や実行ポート競合を厳密計算する物理シミュレータではない」 という点にあります。

Gemini 4 Argon High の深い思考力が真価を発揮するのは、「100 万回ループしていた無駄な探索を、データ構造を工夫して 100 回の計算で済ませる」といった アルゴリズム設計と論理構築 です。一方で、決定論的なグラフ理論と CPU ごとのコストテーブルを使って数万通りの命令配置パズルを解く作業は、専用に作られたコンパイラ最適化器(LLVM 等)の方が桁違いに正確で高速です。

型検査ゼロの無音破壊とコンテキスト浪費の罠

さらに実務で致命的になるのが、「安全装置の欠如」 と 「思考枠(コンテキスト)の浪費」 です。

  • 安全装置ゼロによるサイレントメモリ破壊 : アセンブラには型チェックも所有権検査もありません。AI が数千行のアセンブラを生成する中で、わずか 1 カ所でもスタックポインタの戻し忘れや呼び出し規約(ABI)のレジスタ退避ミスを犯すと、アセンブラ自体はエラーなしで通過し、実行中に裏でデータを無音破壊する最悪のバグになります。対して Rust なら、世界一厳しい門番である rustc(ボローチェッカー)が 1 ミリの矛盾も許さず弾き返し、Argon High は推論フェーズで所有権ルールを事前シミュレーションして一発で通過させられます。

  • レジスタ管理による AI の思考リソース浪費 : Rust ならわずか 10 行で明快に書ける処理が、アセンブラではレジスタの退避・復帰やアドレス計算だけで数百行に膨れ上がります。AI の貴重な推論トークンが「どのレジスタが空いているか」という瑣末な帳尻合わせに奪われ、肝心の全体アーキテクチャやエッジケース対策の精度が落ちてしまうのです。

人間とArgonとコンパイラによる最強の三権分立

したがって、現代の AI 開発で最も高い性能と安全性を引き出す答えは、AI に機械語の真似事をさせることではなく、それぞれの得意領域を分離した 「三権分立」 にあります。

AI×Rust開発における『最強の三権分立』アーキテクチャ
第1層:立法(人間)
目的定義・入出力仕様・境界値テストの策定

何を作るか、ゼロや異常値・権限境界をどう扱うかという「仕様と検収基準」を定義します。実装の細かい記法暗記からは解放されます。

第2層:行政(Gemini 4 Argon High)
計算量削減アルゴリズム設計と安全なRust実装

深い推論(Thinking)を用いて計算オーダー自体を減らす最適なデータ構造を設計し、所有権・ライフタイムを事前検証した Rust コードを組み立てます。

第3層:司法&物理執行(rustc + Cranelift / LLVM)
100%のメモリ安全証明とCPU極限機械語への決定論的変換

rustc がメモリ安全性とデータ競合ゼロを数学的に検問し、通過した中間表現だけをバックエンドが対象 CPU 向けの最速機械語へ変換します。

人間は仕様と検収、AIは高次アルゴリズムとRust論理、コンパイラは数学的型証明と物理CPU最適化を分担します。

巨大C++製LLVMのバグ問題と純Rust化への壁

ここまで読むと、鋭い方ならもう 1 つの重大な疑問が浮かぶはずです。

質問するおばさん

ちょっと待ってください!いくら表側のコードを安全な Rust で書いても、それを機械語に翻訳している裏側の『LLVM』自体は、人間が書いた巨大な C++ のプログラムですよね?もし LLVM 自体に C++ のバグがあったら、せっかくの安全性が台無しになりませんか?

解説ナビゲーター

まさにそこが現代のコンピュータ科学における最大の急所なんです!実際に LLVM は約 2,000 万行以上の C++ で書かれており、毎年新しいバグが見つかり続けています。なぜそれでも今すぐ壊れないのか、そしてどうやって根本解決しようとしているのかを見ていきましょう。

年間数千件のバグ報告と形式検証ツールAlive2

事実を隠さずに言えば、LLVM は 約 2,000 万行を超える巨大な C++ コードベース であり、Apple の M シリーズや Intel・AMD の新世代 CPU 命令が毎年追加されるたびに、年間数千件規模の不具合報告(最適化のやりすぎでプログラムの意味を変えてしまう Miscompilation:誤翻訳バグ を含む)が上がり続けています。

Google の Project Naptime(Big Sleep)のように AI で脆弱性を探す取り組みや、米国 DARPA の TRACTOR 計画のように C / C++ 資産を Rust へ自動移行する研究も進んでいますが、2,000 万行全体の複雑な依存グラフを AI だけで一度に完全掌握することはまだ困難です。

それでも現在、私たちが Rust+LLVM でビルドした実務ツールが極めて高い信頼性を保っているのには、以下の 3 重の安全網 があるからです。

🛡️ 2,000万行のC++製LLVMが実務で信頼性を保てる3つの理由
  1. 確率ではなく「決定論的アルゴリズム」で動くから : 毎回確率で出力が揺れる AI とは異なり、コンパイラは同じ入力に対して常に 100% 同じ機械語を出力します。一度テストを通過した処理ルートが勝手に変質することはありません。

  2. SMT ソルバーによる自動形式検証ツール『Alive2』が監視しているから : 現在の LLVM 開発は人間の目視レビューだけを信用していません。『Csmith』などの自動テスト生成器(ファザー)が 24 時間何億通りもの異常コードを流し込むとともに、『Alive2』 という数学的形式検証ツールが SMT ソルバー(定理証明エンジン)を用い、「LLVM の最適化変換前と変換後で、あらゆる入力ビットに対して数学的に 100% 意味が一致するか」 を自動証明して誤翻訳バグを摘発しています。

  3. バグの 99% 以上は極端なエッジケースに集中しているから : 誤翻訳バグの大半は出たばかりの特殊な CPU 命令や極端に複雑な最適化の組み合わせで発生します。一般的な Rust コードが通る標準的な翻訳ルートは、世界中の何億台ものサーバーや端末で 20 年近く叩かれ続けて枯れています。

既存LLVMを直接Rustへ書き換えられない事情

では、なぜ世界中のエンジニアは「既存の LLVM の C++ コードをそのまま Rust へ書き換える」ことをしないのでしょうか。そこには歴史的・構造的な 3 つの壁 があります。

1 つ目は 「ブートストラップ(鶏と卵)問題」 です。現在の公式 Rust コンパイラ自身が機械語を作るのに LLVM を使っているため、もし LLVM を Rust で書き直すと「その Rust 製コンパイラを最初にビルドするためのコンパイラはどこから持ってくるのか」という循環依存の解決が必要になります。

2 つ目は 「巨大テック企業の C++ プラグイン資産」 です。Apple、Google、Intel、NVIDIA、AMD といった世界中の半導体・OS メーカーが、自社チップ専用の最適化パスを LLVM の C++ API 向けに何百万行も書いて繋いでいるため、土台の言語を突然変えると世界中の開発ラインが止まってしまいます。

3 つ目は 「設計思想の世代差」 です。20 年以上前に設計された LLVM 内部は、C++ の生ポインタが複雑に絡み合うグラフ構造を前提としています。これを機械的にそのまま Rust へ直訳しても、所有権ルールに適合せず unsafe ブロックだらけの読みづらいコードになってしまい、Rust 本来の恩恵が得られないのです。


純Rust製Craneliftの革新とMac導入手順

「古い C++ 設計の LLVM を無理に直訳するのではなく、最初から 100% 純粋な Rust と 数学的形式検証 を前提にした新しいコード生成エンジンをゼロから作ろう!」――この壮大な挑戦から生まれ、すでに実用段階へ入っているのが 『Cranelift(クレーンリフト)』 と、それを Rust コンパイラに統合する公式プロジェクト rustc_codegen_cranelift です。

宣言型言語ISLEで数学的証明を組み込んだ設計

Cranelift は元々 WebAssembly 実行環境(Wasmtime 等)の高速・安全な JIT コンパイラ基盤として Bytecode Alliance 主導で開発され、現在は Rust 公式の Nightly ツールチェーンに標準コンポーネントとして組み込まれています。

比較項目 従来の LLVM バックエンド 次世代の純 Rust 製 Cranelift
実装言語 C++(約 2,000 万行超の巨大資産) 100% 純 Rust(C++ 依存を完全排除)
メモリ安全性 人間の注意力+外部サニタイザー頼み Rust コンパイラ自身が構造的に保証
数学的正しさの検証 後付けの外部ツール(Alive2 等)で検査 専用宣言型言語 『ISLE』 を最初から内蔵
コンパイル(翻訳)速度 重厚で遅め(全段階の最適化が重い) 非常に高速(開発ビルドを約 20〜40% 短縮)
生成される機械語の速度 100 点(20 年の蓄積による極限最適化) 80〜90 点(日常ツールでは体感差ほぼなし)

Cranelift の真の凄さは、単に Rust で書かれていることだけではありません。中間表現から機械語へ変換する命令選択ルールを、C++ の手続きコードではなく 『ISLE(Instruction Selection / Lowering Expressions)』 という専用の宣言型ドメイン固有言語で記述し、そこから安全な Rust コードを自動生成する構造を採っています。

最初から変換ルールが宣言的な数式モデルとして書かれているため、「変換前後でプログラムの意味が変わらないか」を形式検証(数学的証明)にかけやすく、C++ 製 LLVM のアキレス腱だった「最適化のやりすぎによる誤翻訳バグ」を構造的に防げる設計になっているのです。

所要3分で試せるMacターミナル導入とワンライナー

手元の Mac(Apple Silicon の M1〜M4 系および Intel x86_64 の両方に対応)に rustup が入っていれば、普段の安定版(Stable)環境を一切汚さず、ターミナルから わずか 2 つのコマンド(所要 2〜3 分) で Cranelift バックエンドを追加できます。

# Step 1: Rust の Nightly(最新開発版)ツールチェーンを導入
rustup toolchain install nightly

# Step 2: 公式配布されている純Rust製 Cranelift コンポーネントを追加
rustup component add rustc-codegen-cranelift-preview --toolchain nightly

導入が終わったら、手元にある既存の Rust プロジェクトのディレクトリへ移動し、ソースコードも設定ファイルも 1 文字も書き換えずに「1 回だけ Cranelift でビルド速度を試すワンライナー」 を実行してみましょう。

# Cargo.toml 等を一切変更せず、今回1回だけ Cranelift で開発ビルドを実行するコマンド
CARGO_PROFILE_DEV_CODEGEN_BACKEND=cranelift cargo +nightly build -Zcodegen-backend

事前に cargo clean を実行してから通常の time cargo build と上記のワンライナーの所要秒数を比べてみてください。依存クレートのリンク前後に走る重たい機械語生成フェーズがスッと軽くなり、特に AI と対話しながら何度もビルド&テストを回す開発サイクルで 約 20〜40% の待ち時間短縮 を体感できます。

開発はCraneliftで本番はLLVMの二刀流設定

上の比較表の通り、純粋な最終バイナリの実行速度(最後の 1〜2 割の極限チューニング)では、現時点ではまだ 20 年の蓄積を持つ LLVM に一日の長があります。そこで Rust 公式チームも推奨している最も賢い実務運用が、「普段の開発・テスト(dev)は爆速かつ純 Rust の Cranelift を使い、完成品書き出し(release)だけ LLVM を使うハイブリッド二刀流」 です。

プロジェクトを Nightly で運用する場合、プロジェクト直下に .cargo/config.toml を作成して以下のように記述すると、普段の cargo +nightly build(および cargo +nightly test)だけが自動で Cranelift になります。

# .cargo/config.toml(Nightly ツールチェーン使用時のハイブリッド設定)
[unstable]
codegen-backend = true

[profile.dev]
codegen-backend = "cranelift"

# ※ [profile.release] はあえて指定しないことで、本番用の
#    `cargo +nightly build --release` 実行時は自動的に既定の LLVM が使われます。

# ※ 万が一、特殊なインラインアセンブリ等を多用する一部の外部クレートだけ
#    Cranelift 未対応エラーが出た場合は、そのクレートだけ個別に LLVM へ逃がせます:
# [profile.dev.package.対象クレート名]
# codegen-backend = "llvm"
⚠️ 実務でつまずかないための境界条件・2つの注意点
  1. Stable(安定版)コマンドとの共存ルール : .cargo/config.toml に [unstable] セクションを書いた状態で、+nightly を付けずに通常の Stable 版 cargo build を叩くと「unstable feature は nightly 専用です」と弾かれる場合があります。普段は Stable を使いつつ必要な時だけ Cranelift を呼び出したい場合は、設定ファイルを書き換えずに ~/.zshrc 等へ先ほどの環境変数付きワンライナーを alias cg-build='CARGO_PROFILE_DEV_CODEGEN_BACKEND=cranelift cargo +nightly build -Zcodegen-backend' として登録しておく方法が最もクリーンで安全です。

  2. 一部の特殊な巻き戻し(unwind)や外部クレートの制限 : Cranelift は急速に完成度を高めていますが、C++ 互換の複雑な例外巻き戻し(一部の特殊な panic! 復帰処理)や、極端なプラットフォーム固有インラインアセンブリを使うクレートで未対応が残っているケースがわずかにあります。その場合もプロジェクト全体をあきらめる必要はなく、上記コメントのように [profile.dev.package.<クレート名>] で該当パッケージだけ llvm を指定すれば綺麗に共存できます。

ノルウェージャンフォレストキャット

普段のテスト中は純 Rust の Cranelift さんでサクサク待ち時間ゼロにして、本番に出す最後の 1 回だけ熟練の LLVM さんに仕上げてもらうなんて、まさにいいとこ取りの二刀流でちね!

質問するおじさん

しかも今のうちに自分たちのアプリやツールを 100% Rust で作っておけば、将来 Cranelift の最適化が LLVM に完全に追いついたとき、設定を 1 行変えるだけで「上から下まで C++ バグ完全ゼロの純 Rust 環境」へそのまま引っ越せるわけじゃな。こりゃ夢があるわい!


まとめ:AIと純Rust基盤で待ち時間ゼロの開発へ

今回の技術検証の結論をまとめます。

  • 手書きアセンブラ vs Rust の結論 : 現代の複雑な CPU(アウト・オブ・オーダー実行やパイプライン)においては、ごく一部の SIMD 職人領域を除き、所有権の noalias 保証を活かせる Rust+コンパイラ最適化 の方が実務で圧倒的に速く安全です。

  • 最上位 AI でもアセンブラ直書きを避けるべき理由 : Gemini 4 Argon High の推論力は「計算量を減らすアルゴリズム設計」に使ってこそ輝き、型検査のないアセンブラ生成に使うとサイレント破壊とコンテキスト浪費を招きます。

  • 2,000 万行 C++ 製 LLVM を超える二刀流戦略 : 開発中のデバッグビルドには形式検証言語 ISLE を備えた 100% 純 Rust 製『Cranelift』 を使って待ち時間を 20〜40% 削り、最終リリースビルドだけ 『LLVM』 で極限最適化するハイブリッド運用が、今すぐ Mac で実践できる最良の選択肢です。

なお、Rust の並列コンパイルや複数サブエージェントを同時に走らせる AI 開発では、メモリ容量がそのまま体感速度に直結します。たとえば 64GB ユニファイドメモリ搭載の Apple シリコン Mac mini(約 25 万〜30 万円前後)は一見高価に見えますが、5 年間(1,825 日)毎日開発や自動化コンパイルの母艦として稼働させれば 1 日あたり約 137〜165 円前後(缶コーヒー 1 本分:モデル試算・推論) でスワップ待ちゼロの快適環境が手に入ります。また、AI が書いた所有権やライフタイムの設計意図を人間側で正確に検収するための辞書として、名著 『プログラミングRust 第2版』 を手元に 1 冊置いておくと(5 年利用で 1 日あたり約 3 円:推論)、設計レビューの解像度が一段上がります。

Apple Mac mini(M4 Pro 等 Appleシリコン Pro系チップ・64GBユニファイドメモリ構成)

Apple Mac mini(M4 Pro 等 Appleシリコン Pro系チップ・64GBユニファイドメモリ構成)

オライリー・ジャパン『プログラミングRust 第2版』

オライリー・ジャパン『プログラミングRust 第2版』

お手元の Mac にある Rust プロジェクトへ安全に Cranelift の二刀流環境を導入したい方は、必ず 『Gemini 4 Argon』または同等以上の最上位推論モデル を選択し、以下のプロンプトをコピー&ペーストして事前調査から任せてみてください。

🤖 手元のRustプロジェクトに安全なCranelift二刀流を導入させるプロンプト

※ Cargo のツールチェーン整合性や依存クレートの互換性を正確に判定させるため、必ず 『Gemini 4 Argon』または同等以上の最上位推論モデル を選んで実行してください。

以下の記事URLに記載されている「AI×Rust開発の三権分立」「純Rust製コード生成バックエンド Cranelift(rustc_codegen_cranelift)の特性と制限事項」「Stable環境を汚さないワンライナー実験とハイブリッド設定」をすべて精読してください。

https://lab.chihouzakki.com/blog/review/ai-rust-vs-assembly-llvm-cranelift-build-speedup-guide/

【あなたへの依頼(設定変更前の事前調査と計測プラン提示)】
いきなり Cargo.toml や .cargo/config.toml を直接書き換えず、まず私の Mac の Rust ツールチェーン状況(rustup toolchain list 等)と現在のプロジェクトの依存クレート構成を調査し、以下の3点を日本語で分かりやすく提案してください。

1. 【互換性チェック】:現在の依存クレートの中に、インラインアセンブリや特殊な unwind 処理など Cranelift で個別除外(llvm指定)が必要になりそうなパッケージがあるかどうかの診断。
2. 【環境を汚さない速度比較プラン】:ファイルを書き換えずにワンライナーで通常の LLVM ビルドと Cranelift ビルドの所要時間を計測・比較する具体的な手順。
3. 【運用スタイルの選択】:私の普段のビルド運用(Stable 中心か Nightly 併用か)に合わせて、シェルエイリアス方式と .cargo/config.toml 方式のどちらを採用すべきかの推奨案(合意後に設定を適用してください)。

AI の深い論理推論と、数学的に鍛え抜かれた純 Rust コンパイラ基盤を組み合わせて、バグの不安もビルドの待ち時間もない心地よい開発環境を作っていきましょう!

高速にビルドが完了したMacの画面を頼もしそうに見つめるノルウェージャンフォレストキャット

▲ 厳しい型チェックも機械語変換も純Rustエンジンに任せて、ビルド待ちの間に猫様とひと休み