Rhombus 1.0 リリースノート
Rhombus 1.0 リリースノート
Rhombus 1.0 がリリースされました。これは、従来の親しみやすい構文と Racket エコシステムの深い拡張性を組み合わせた、汎用的な関数型プログラミング言語です。Lisp スタイルのマクロの強力さと、現代的な非 S-expression ベースの言語の読みやすさの間のギャップを埋めるように設計されています。
コア設計目標と哲学
Rhombus は、高度な拡張性を維持しながら、レキシカルスコープ変数、クロージャ、オブジェクト、パターンマッチング、型パラメトリシティといったプログラミング概念の現代的な統合を提供することを目指しています。主な目標は、Lisp の括弧が多用される表記法に伴う急激な学習曲線を回避しつつ、開発者が特定のドメインに合わせて言語サポートをカスタマイズできるようにすることです。
Rhombus は Racket 上に構築されており、ファイルを開始する際に #lang rhombus と記述することで Racket モジュールとして使用できます。この関係は、Kotlin と Java、あるいは Elixir と Erlang の関係に似ています。Rhombus は raco コマンドラインスイートや DrRacket IDE を含む Racket のツールを活用しますが、標準的な Racket に対して大幅な改善を導入しています。これには以下が含まれます:
- Conventional Syntax: 読みやすいインデントベースの構文で、日常的な使用においてより親しみやすくなっています。
- Improved Data Structures: より優れた定義済みのデータ構造、特にリスト。
- Enhanced Language Features: 新しいクラスシステム、広範なパターンマッチング、および階層的な名前空間の構成。
- Advanced Type System: コントラクトと型の間のスペクトラム上に存在する、拡張可能な静的情報。
メタプログラミングと二国語構文 (Bicameral Syntax)
Rhombus は、S-expression の要件を排除しつつ、Racket のマクロシステムの強力さを維持しています。これは、従来のサーフェス構文と、メタプログラミングのための S-expression に相当する「shrubbery notation」をペアにする「二国語 (bicameral)」構文を通じて実現されます。
このアーキテクチャにより、Rhombus はマクロをコンパイル時のメタプログラミングとして扱う「オープンコンパイラ API」を実装できます。このアプローチは、DSL を汎用言語に直接統合することで、孤立したドメイン固有言語 (DSL) の陥る罠を回避します。
エリプス (…) オペレーター
Rhombus の最も特徴的な機能の一つは、エリプス(ellipsis)オペレーター (…) です。他の言語に見られる標準的な「splat」オペレーターとは異なり、Rhombus のエリプスは、コンパクトな繰り返しを可能にするマクロです。これは、ネストされたデータ構造に対して機能し、特定の文脈において map 操作を効果的に置き換えることができます。
"Rhombus は、マクロ識別子がバインディングコンテキスト(
=の左側)、式コンテキスト、またはその他のコンテキストに現れるかどうかに応じて、異なるマクロを定義できるようにします。"
パフォーマンスと実装
Rhombus のリストは RRB 木 (Relaxed Radix Balanced trees) を使用して実装されています。このデータ構造は、構造共有と関数的な更新を提供し、反復、挿入、削除、追加、および任意の読み取り操作に対して $O(\log n)$ の計算量を提供します。RRB 木はキャッシュ効率が非常に高く、通常 $\log_{16}$ または $\log_{32}$ をベースとして利用するため、オーバーヘッドの定数係数を最小限に抑えます。
実用的なアプリケーションとエコシステム
Rhombus は新しい言語であり、主流の言語のようなライブラリのボリュームはまだありませんが、意図としてはプロダクション環境での使用を想定しており、Racket コミュニティによってサポートされています。現在の実世界のアプリケーションには以下が含まれます:
- Pille: LLVM をバックエンドとして使用する Rhombus 上に構築された言語で、高度なメタプログラミングを示しています。
- Economancy: 日常的な関数型プログラミングを示す、テーブルトップゲームの実装です。
- rhombus-html-lib: HTML 5 仕様に従って AI によって実装された HTML 5 パーサーです。
- pict: ネットワークとセキュリティのコーススライドや、複雑な評価アニメーションに使用されるアニメーション画像ライブラリです。
- Shplait: ML の型システムと Rhombus の構文を組み合わせた教育用ツールです。
AI と言語設計の未来
Rhombus の開発者は、自律的なコーディングエージェントの台頭が、新しい言語や DSL の必要性を減らすわけではないと主張しています。Rhombus はドキュメントが充実しているため、AI エージェントはすでに慣用的법 (idiomatic Rhombus code) を書くことに習熟しています。作成者は、より良い DSL サポートを通じて議論のレベルを向上させることが、人間のプログラマーと AI エージェントの両方に利益をもたらし、彼らの間のコミュニケーションとコラボレーションを協力的(sic)に促進することを提案しています。