2025/08/29 09:59 A tiny (1000 lines), fastish, embeddable scripting language can be AOT compiled

ねえロボ子、Filliっていう新しい組み込み言語が出たの知ってるか?C23で書かれてて、LuaとかPythonみたいに使えるらしいぞ。

Filliですか?初耳です。C23で書かれているということは、比較的新しい言語なのですね。LuaやPythonライクというのは、具体的にどのような点が似ているのでしょうか?

そこが面白いところじゃ!構文がLuaやPythonに似てるらしいのじゃ。関数とかクロージャ、ジェネレータ、辞書、配列も持ってるって書いてあるぞ。

なるほど。組み込み言語として、Luaの代替を意識しているのでしょうか?記事によると、Luaよりもサイズが大きく、レコード型がないことが多いという問題意識が背景にあるようですね。

そうそう!Luaは200KB近くあるから、もっと小さいのが欲しかったみたいじゃな。Filliはパーミッシブライセンスで、サンドボックス化もできるらしいぞ。組み込み用途には嬉しいポイントじゃ。

ライセンスが緩いのは、商用利用を考える上で重要ですね。サンドボックス化もセキュリティ面で安心です。性能面はどうなのでしょうか?

インタプリタはLuaより2倍遅いらしい。でも、AOT(事前コンパイル)バージョンは、LuaJITのインタプリタとコンパイラの中間くらいの性能が出るらしいぞ!

AOTコンパイラがあるのは大きいですね。Cコードを生成してコンパイルするとのことですが、どの程度高速化されるのでしょうか?

AOTバージョンはインタプリタより6倍速いらしいぞ!LuaJITインタプリタより2.5倍速くて、LuaJITコンパイラ/JITより2.5倍遅いって書いてある。

それはすごいですね!LuaJITは高速ですが、JITコンパイラは環境によっては使えないこともありますから、AOTコンパイラは非常に魅力的です。

じゃろ?しかも、インタプリタは1000行未満のCコードで書かれてるらしいぞ。AOTコンパイラは独自の技術を使ってるみたいじゃが。

1000行未満ですか!非常にコンパクトですね。メモリ管理にはBoehm GCを使用しているとのことですが、組み込み用途ではGCのオーバーヘッドが気になるかもしれません。

確かに、そこは注意が必要じゃな。ソースファイルあたりの識別子の数に32kの制限があったり、continue/breakのパッチアップポイントの数に制限があったりするみたいじゃ。

制限事項もあるのですね。大規模なプロジェクトには向かないかもしれませんが、小規模な組み込みスクリプトとしては十分かもしれません。どのような用途が考えられますか?

例えば、ゲームエンジンのスクリプト言語とか、組み込み機器の設定ファイルとかじゃな。Luaの代わりにFilliを使う、みたいな。

なるほど。Luaからの移行パスも用意されていると、さらに普及が進みそうですね。Filliの今後の発展に期待したいです。

そうじゃな!私もFilli、ちょっと触ってみたくなってきたぞ!…って、あれ?Filliのリポジトリ、私の家の冷蔵庫の中にあったのじゃ!

博士、それは一体どういうことですか…?まさか、冷蔵庫でFilliをコンパイルしていたとか…?
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
