XSを探求する:'ユニバーサル' プログラミング言語の野望と論争

プログラミング言語の世界は、しばしばパワー、ポータビリティ、セットアップの容易さの間でトレードオフが求められます。そこで登場するのが XS です。これは「どこでも、いつでも、誰でも」使えるユニバーサルツールを自称する新しい言語です。単一のスタティックリンクバイナリで完全な開発エコシステムを提供すると大胆に主張し、ツールチェーンのインストールやクロスプラットフォーム互換性の摩擦を排除しようとしています。

技術的観点から見ると、XS は野心的なプロジェクトです。コンパイラ、言語サーバー、デバッガ、フォーマッタ、リンター、テストランナー、プロファイラ、パッケージマネージャをすべて 2.9 MB の小さなバイナリに詰め込んでいます。この「オールインワン」アプローチにより、同じソースコードが Linux、macOS、Windows、WASI、iOS、Android、ESP32、Raspberry Pi など、幅広い環境で変更なしに実行できるよう設計されています。

技術アーキテクチャとパフォーマンス

XS は柔軟性と速度のバランスを取るために多層実行戦略を採用しています。ユースケースに応じて、開発者は以下のバックエンドから選択できます。

  • Tree-walk Interpreter (--interp): 主に REPL と AST レベルのプラグインデバッグに使用されます。
  • Bytecode VM (Default): ほとんどのプログラムに対する標準的な実行パスです。
  • Register-allocating JIT (--jit): x86-64 と aarch64 に最適化され、サポートされていない opcode は VM にフォールバックします。
  • C Transpiler (--emit c): 既存コンパイラとの最大互換性を実現するため、自己完結型の C ソースコードを生成します。
  • JavaScript Transpiler (--emit js): Node.js またはブラウザをターゲットにします。
  • WASM Runtime (xs.wasm): 仮想ファイルシステムを含むブラウザベースのコンパイラ版で、XS プログラムをブラウザ内だけで評価できます。

生のパフォーマンスに関して、XS は競争力のある結果を主張しています。fib(30) ベンチマークでは、JIT バージョンが 31 ms、Node 20(62 ms)や CPython 3.13(71 ms)を上回り、VM バージョンは 138 ms でした。

コミュニティの懐疑と「AIスロップ」論争

印象的な機能リストにもかかわらず、Hacker News での受け止めは鋭い批判でした。争点の中心は言語の能力ではなく、その起源に対する疑念です。経験豊富な開発者の中には、プロジェクトが「AIスロップ」―人間の監督が最小限の LLM によって生成されたコードとドキュメント―である可能性を指摘する声もあります。

批評家は複数の赤信号を挙げています。

  1. Documentation Style: ユーザーは、ドキュメントが「代数的効果」や「セマンティックアナライザ」などの高度な言語設計用語を使用しつつ、言語固有の動機や設計哲学に関する実質的な説明が欠如していると指摘しました。
  2. Code Provenance: 一部のユーザーは、VM の設計が Crafting Interpreters プロジェクトの clox インタプリタと非常に似通っていることに気付き、ゼロから設計されたのではなく AI エージェントによって流用された可能性があると示唆しました。
  3. Inconsistent Implementation: 技術レビューアは型システムに問題があると指摘し、ソースコード中のコメント "recursive type: bind anyways" のような記述が、人間による厳密なエンジニアリングが欠如していることを示すと論じました。
  4. Commit History: git 履歴や特定のコミットメッセージ(特にヘルパー関数で削除されたコード行数を正確に記述したもの)が "obvious LLM context spew" と形容されました。

デザイン批評

AI 生成への懸念を超えて、言語の設計選択自体も議論を呼んでいます。一部のユーザーは「tasteful」な構文決定やアクター/ナーサリーデザインの導入を称賛する一方で、他のユーザーはそれほど感銘を受けていませんでした。

ある開発者はミュータビリティの扱いを批判し、次のように述べています:

"let は不変(再代入はランタイムエラー)、var は可変、const は実行時に let と同一だが意図を示す。これだけで必要な情報はすべて得られる。"

他の開発者は「ユニバーサル」な主張の実用性に疑問を投げかけました。ある批評家は、Linux 上のプロフェッショナル開発者のニーズは学生や ESP32 を対象とする開発者のニーズとは大きく異なり、ある環境に最適化された言語がすべての環境で最適になることはできないと指摘しました。

結論

XS はツールチェーン統合の興味深い実験です。リントから JIT コンパイルまでほぼすべてのモダン OS で扱える 3 MB バイナリというビジョンは、開発者体験(DX)にとって魅力的です。しかし、このプロジェクトは AI 時代におけるソフトウェアリリースの現状に対する警鐘でもあります。"promised features" と "design transparency" のギャップが大きくなると、コミュニティは好奇心から懐疑へと自然に移行します。

Sources