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

Show HN: Bolt – Cで書かれた超高速の静的型付けスクリプト言語

2025年8月11日原文(github.com)

概要

  • Bolt はリアルタイムアプリケーション向けの 軽量・高速・型安全 な埋め込み言語
  • 最小限の依存関係小規模な実装 でビルドサイズへの影響が少ない
  • 高速なコンパイル豊富な型システム による安全性確保
  • 組み込みやすさ を重視した設計
  • MITライセンス で公開、貢献やバグ報告も歓迎

Boltとは

  • Bolt はリアルタイムアプリケーションに最適化された 超高速・軽量・型安全 なスクリプト言語
  • 組み込み用途 を最優先に設計、わずかなコードで他言語と連携可能
  • 豊富な型システム で実行前にエラーを検出、ネイティブコードからの拡張も容易
  • 最小限の依存関係 (C標準ライブラリとUnix系ではlibmのみ)で動作
  • 組み込み例やガイド も充実、CLIツールも同梱

主な特徴

  • 圧倒的な実行速度、同クラス他言語を凌駕
  • コンパクトな実装、ビルドサイズへの影響極小
  • 爆速コンパイル、1スレッドで50,000行/秒以上
  • 組み込みやすさ、数行で導入可能
  • 堅牢な型システム、エラーを事前検出
  • Embed-first設計、他言語との連携・パフォーマンス重視

依存関係と構成

  • C標準ライブラリlibm (Unix系)のみ
  • ファイル/システムIO 等の標準ライブラリモジュールは無効化可能
  • メモリ管理 はmalloc/realloc/freeをデフォルト使用(カスタマイズ可能)
  • 正規表現解析 に自作ライブラリ picomatch を内蔵

組み込み・ビルド方法

  • x64アーキテクチャ のみサポート、32bitは非対応、arm/riscvは未検証
  • CMake で静的ライブラリとCLIツールを生成
  • 組み込み例 はbolt-cliや公式ガイド参照
  • 詳細設定 はbt_config.hを参照

コンパイラ対応状況

| コンパイラ | ステータス | 備考 | |:---|:---|:---| | MSVC | ✅ | 問題なし | | GCC | ✅🟨 | 機能全対応、一部警告あり | | Clang | ✅🟨 | 機能全対応、一部警告あり |

  • 安定版ではない ため、バグやクラッシュ報告を歓迎

言語例

import print, error, Error from core
import abs, epsilon from math

fn safe_divide(a: number, b: number) {
  if abs(b) < epsilon {
    return error("Cannot divide by zero!")
  }
  return a / b
}

match let result = safe_divide(10, 5) {
  is Error { print("Failed to divide:", result.what) }
  is number { print("The answer is", result) }
}

コントリビューション方針

  • バグ修正 は合理的範囲で歓迎、動作変更は不可
  • テスト追加リグレッション防止 を推奨
  • 最適化提案 も軽微なら受け入れ、ベンチマーク必須
  • 新機能追加 は慎重審査、事前提案・計画提出が必要
  • パフォーマンス・実装コスト・ユースケース の明確化を要求

ライセンス

  • MITライセンス 採用、詳細はLICENSE参照

リンク一覧

  • Bolt programming guide
  • Bolt standard library reference
  • Bolt embedding and API reference
  • Bolt performance
  • Notable Bolt users

開発者からのメッセージ

  • Bolt は長年インタプリタを開発してきた作者が理想を形にした 初の公開リリース(0.1.0)
  • 安全性・型付け 重視の流れを受け、Boltは言語レベルで型システムを採用
  • 安全性・パフォーマンス向上 を両立
  • 今後、組み込み例やトイアプリを公開予定
  • 興味があればexamplesやプログラミングガイドを参照

Hackerたちの意見

かっこいいけど、「ボルト」って名前はもうやめてほしいな。

うん、これが俺が知ってるBoltって名前のプログラミング言語、3つ目だわ。

参考までに、「埋め込みシーン」は「埋め込みインタプリタ」よりも「埋め込みシステム」と解釈される可能性が高いよ。特に、例に挙げた言語(マイクロパイソン、ルア、さらにはタイプスクリプト)全てがそのターゲットで使われようとしたことを考えるとね。

いい指摘だね、ありがとう。ちょっと修正してわかりやすくしたよ。

そうだね。特に「リアルタイム」って言葉があったから、埋め込み用だと読み間違えちゃった。その後、ARMやRISC-Vのサポートがないのを見て、すごく混乱した。

関数に戻り値の型がない場合、コンパイル時に全てが満たされなきゃいけないってこと?メモリ管理や所有権はどうなるの?これだと、各関数呼び出しのたびに値をコピーしなきゃいけないってことになるよね?参照やポインタはどう使うの?サポートされてるの?Rustに似たマッチャーは好きだけど、エラーハンドリングが暗黙的でも明示的でもないから、大きなコードベースではデバッグが大変そうだな。Kokaについて知ってる?あの構文の選択はあまり好きじゃないけど、効果ベースのエラータイプシステムが君のデザイン選択と上手く統合できるかもと思ってる。特にマッチャーを消費者として使う場合ね。[1] https://koka-lang.github.io/koka/doc/index.html

あ、OPじゃないけど、Koka大好き!また触ってみようかな、思い出させてくれてありがとう!

「関数に戻り値のシグネチャがない場合、コンパイルステップで全てを満たす必要があるってこと?」関数には戻り値のシグネチャがあるよ。著者は短い例のREADMEコードで戻り値の型推論の機能を見せたかったみたいだね、明示的なケースじゃなくて。https://github.com/Beariish/bolt/blob/main/doc/Bolt%20Progra...

コンセプトが大好きだよ!Luaみたいな軽量言語が静的型付けをもっとサポートしてくれたらいいなってずっと思ってた。パフォーマンスの向上も大好きだし。インタプリタにテールコールデザインを使うことを考えたことある?これがコンパイラから良いコードを引き出す最良の方法だと思ってるよ:https://blog.reverberate.org/2021/04/21/musttail-efficient-i... 残念ながらMSVCには移植できないけど。この技術がLuaJITのインタプリタの例で、Mike Pallの手書きアセンブリに匹敵することができたって記事もあるよ。Mikeは後にこの記事をインタプリタの最適化についての新しい見解としてリンクしてくれた:https://github.com/LuaJIT/LuaJIT/issues/716#issuecomment-854... Python 3.14もこのスタイルのインタプリタディスパッチをサポートして、そこから少しパフォーマンスが向上したよ:https://blog.reverberate.org/2025/02/10/tail-call-updates.ht...

テールコールに特化してはいなかったけど、いくつかの異なるディスパッチ方法を試してから、今のBoltの方法に落ち着いたよ。選んだアプローチは、テストの結果、計算されたgotoソリューションと競争できるし、MSVCでもコンパイルできるから選んだんだ。でも、他の方法を試すことには全然オープンだよ。

ルアのことは知ってるけど、テラランは知ってる?

Robloxが管理してるLuaの徐々に型付けされた方言、Luauに興味があるかもね。ゲーム「Alan Wake 2」でもレベルスクリプティングに使われてたよ。

Hacker Newsで議論の続きを見る