世界を動かす技術を、日本語で。

ロムバス言語 1.0

概要

  • Rhombus 1.0 が正式リリース
  • 新言語設計の目的 と特徴を解説
  • FAQ でよくある疑問に回答
  • 実例プログラム や活用事例を紹介
  • 主要貢献者 もリストアップ

Rhombus 1.0 リリース情報

  • Rhombus version 1.0 の公開
    • ダウンロード: https://rhombus-lang.org/download.html
    • 詳細情報: https://rhombus-lang.org/
  • 主要貢献者
    • Mashfi Ishtiaque Ahmad, Taylor Allred, Nia Angle, Wing Hei Chan, Stephen De Gabrielle, Robert Bruce Findler, Jacqueline Firth, Matthew Flatt, Oliver Flatt, Kiran Gopinathan, Ben Greenman, Siddhartha Kasivajhula, Alex Knauth, Jay McCarthy, Lucas Myers, Alec Mills, Sam Phillips, Sorawee Porncharoenwase, Jens Axel Søgaard, Sam Tobin-Hochstadt

Rhombusの設計目的

  • 現代的なプログラミング言語設計 の集大成
    • レキシカルスコープ、クロージャ、オブジェクト、パターンマッチ、型パラメトリシティ対応
  • 言語拡張性ドメイン特化 の両立
    • 汎用性とタスク特化のバランス
  • Lisp伝統のマクロ の表現力と流動性を継承
    • ただし、 親しみやすい構文 を採用
  • Racket の機能と拡張性を一般ユーザー向けに再設計
    • 一貫性アクセシビリティ 重視

よくある質問(FAQ)

  • Rhombusの特徴
    • 汎用・関数型・拡張性・高性能・豊富なドキュメント・実用的ライブラリ
    • 動的言語だが、静的な抽象化や型の強制も可能
  • 他言語との違い
    • 独自の繰り返し記法(…)、機能的データ構造、高い拡張性
  • 速度
    • ベンチマークあり(詳細は公式サイト参照)
  • 開発環境
    • DrRacket推奨だが、VSCodeやEmacsにも対応
  • Racketとの関係
    • Racket上に構築され、DrRacketやracoなどRacketのツール群を利用
    • ElixirとErlang、KotlinとJavaの関係に類似
    • #lang rhombus でRhombusモジュール化
  • 構文の違い
    • S式ベースでない新構文(homoiconicityは限定的)
    • shrubbery notationによる二重構文体系
  • マクロ・DSL・メタプログラミング
    • マクロを使わなくても強力なベース言語
    • メタプログラミングを重視し、汎用言語と統合
    • DSLやツール支援、ドキュメント生成にも有効
  • 学術・研究・教育用か
    • 学術的背景ありだが、 本番運用も想定
    • 豊富なライブラリは今後拡充予定
    • Racket同様の安定性とサポートを目指す
  • AI時代の新言語・DSLの必要性
    • AIコーディングの普及でも新言語の需要は依然あり
    • 人間・AI双方の生産性向上を目指す
    • DSLサポート強化がRhombusの使命

Rhombus実例プログラム・活用事例

  • 公式サイトのサンプル
    • https://rhombus-lang.org/ のカルーセル参照
  • Pille
    • LLVMバックエンドを持つRhombus製新言語
    • 言語構築・メタプログラミング例
  • Economancy
    • テーブルトップゲーム
    • 審判・プレイヤープログラム・簡易GUIをRhombusで実装
    • 関数型プログラミングの実践例
  • rhombus-html-lib
    • HTML5仕様に準拠したAI実装のHTMLパーサ
    • Java風・命令型、改良の余地あり
  • ネットワーク・セキュリティ用スライド
    • pictライブラリを使ったアニメーション付きスライド
    • 古いコードだが大規模事例
  • pict-demo
    • pictとメタプログラミングの例
    • ICFP’26論文ドラフト用アーティファクト
    • 評価ステップのアニメーション実装
  • Shplait
    • ML型システムとRhombus構文の教育用言語
    • Utah大学の言語コースで利用
  • rhombus-draw-lib
    • racket/drawラッパー
    • Racketライブラリの再利用例

まとめ

  • Rhombus は、 現代的機能拡張性実用性 を兼ね備えた新しいプログラミング言語
  • Racketエコシステム との連携、 マクロDSLメタプログラミング の強力なサポート
  • 教育・研究用途 だけでなく、 本番利用 にも対応
  • 豊富な活用事例 と今後の発展可能性

Hackerたちの意見

Rhombusは、* 誰でも使いやすく、日常的な目的に適した読みやすいインデント構文を持っていて、* 幅広いユーザーがアクセスできるオープンコンパイラAPIでユニークにカスタマイズ可能に設計されています。

Racketはすでに、日常的な目的に対して使いやすいです。

新しい言語に重要なホワイトスペースを追加するのは悪い選択のように感じる。ひどくはないけど、振り返ってみるとPythonにとっては悪い判断だったと思う。

関連情報。他にも? 2026年夏のRhombus絵画コンペティション - https://news.ycombinator.com/item?id=48546270 - 2026年6月(コメント2件) Rhombus言語 - https://news.ycombinator.com/item?id=43394881 - 2025年3月(コメント158件) Rhombus: Racketを基にした従来の構文を持つマクロ拡張可能な言語 - https://news.ycombinator.com/item?id=41151439 - 2024年8月(コメント97件) Rhombus(プログラミング言語)の現状 - https://news.ycombinator.com/item?id=30314109 - 2022年2月(コメント17件)

これにはあまり関わっていなかった。やっぱりs式が好きだな。とにかく、最初の懸念はs式なしで良いマクロを作る方法だった。RacketCon 2023でMatthew Flattの素敵な動画があるよ。最初の6分20秒は内部の話だから、リンクに追加した380秒のところに飛ばしてね: https://www.youtube.com/watch?v=OLgEL4esYU0&t=380s 彼は一般的なアイデアを説明するのにさらに6分かけて、いくつかの願いを語った後、12分のところでRhombusのマクロを定義して、たった2分でその願いを実現するんだ(その後にいくつかの改善もあるけど)。

Rhombusという小さなライブラリを書いたよ。お気に入りの機能はオペレーターかな。ぜひチェックしてみて。ほかの言語のスプラットオペレーターとは違って、最初はそんな感じだけど、もっと一般的なんだ。ネストされたデータ構造でも使えるし、map操作の代わりにもなる。の一番のポイントは、組み込みのものじゃなくて、ただのマクロだってこと!Rhombusは、マクロ識別子がバインディングコンテキスト(=の左側)、式コンテキスト、または他のコンテキストに現れるかどうかによって、異なるマクロを定義できるんだ。確か、自分のコンテキストも定義できたはず。RhombusはRacketの最高のマクロシステムを取り入れて、どうにかしてそれを改善する方法を見つけている。これは、いろんな言語の詳細なメタプログラミング機能を調べて比較した後に言ってるよ。Rhombusはとても素敵な言語だ。最後に、Rhombusの主要なデータ型であるリストはRRBツリーで実装されている。RRBツリーは構造的共有、関数型更新をサポートしていて、O(log n)で反復、挿入、削除、追加、任意の読み取り操作ができる。これにかかる定数因子は小さくて、たぶんlog_16かlog_32くらいだと思う。キャッシュに優しいように設計されてる。超クールなデータ構造だね。

これは、いろんな言語の詳細なメタプログラミング機能を調べて比較した後に言ってるよ。これにすごく興味があるんだけど、あなたの研究アプローチはどうだったの?各言語のドキュメント以外でおすすめのリソースはある?

やっとrrbツリーをメインのデータ構造として使う人が現れた!C#で実装したけど、Listとのパフォーマンスのトレードオフは思ったより小さかったよ。https://github.com/bjoli/RrbList/tree/main/src/Collections

「私のお気に入りはオペレーターだと思う。ぜひチェックしてみて。」 その熱意には感謝だけど、三つの点はググるのがめっちゃ難しいよ。リンクを教えてくれる?

それはめっちゃ neat なんだけど、今のところは全然理解できない。モナドは理解できたから、きっと時間の問題だと思う!

私のお気に入りは 演算子かな。ぜひチェックしてみて。最初は他の言語のスプラット演算子みたいに感じるけど、実際はもっと一般的なんだ。ネストされたデータ構造にも対応していて、map 操作の代わりにもなる。Common Lisp の destructuring-bind に似てるかも?

2027年のカロライナコードカンファレンス(ポリグロットとサイバーセキュリティ)でこのテーマについて話が聞きたいな。スピーカー募集は1月に始まるよ。 https://carolina.codes

Hacker Newsで議論の続きを見る