Repolode
mattwparas

mattwparas/steel

Rust製の組み込み・拡張可能なScheme方言。スタンドアロンREPLとバイトコードVMを備えています。

スター
2,629
フォーク
143
未解決の Issue
87
最終コミット
一昨日

これは何?

SteelはRustで書かれたSchemeインタプリタで、スタンドアロンのインタプリタやREPLとして実行できるほか、Rustアプリケーションに組み込むこともできます。言語処理系はバイトコード仮想マシンとして実装されており、R5RSにはおおむね準拠しています。R7RSへの対応も進行中です。

Racket風のrequireとprovideを使ったモジュール機能に加え、syntax-rulesとsyntax-caseによるマクロを利用できます。また、高階コントラクトや、リスト、ベクター、ハッシュマップ、ハッシュセットなどの組み込み不変データ構造も備えています。

埋め込み機能またはFFIを通じて、ネイティブのRust関数や構造体をSteelのコードから利用できます。パッケージマネージャー、言語サーバー、標準ライブラリも含まれています。まだ1.0以前のため、APIが変更される可能性があります。

主な機能

  • 01バイトコード仮想マシンとして実装された、R5RSにおおむね準拠するScheme
  • 02Racketに似た、requireとprovideを使うモジュールシステム
  • 03syntax-rulesとsyntax-caseによるマクロのサポート
  • 04ネイティブのRust関数や構造体を呼び出すための埋め込み機能とFFI
  • 05高階コントラクトと、組み込みの不変なリスト、ベクター、ハッシュマップ、ハッシュセット

ユースケース

  • Rustアプリケーションにスクリプト言語を追加する
  • Schemeやインタプリタの設計を学んだり、試したりする
  • Rustコードを呼び出す設定用スクリプトや拡張スクリプトを書く

クイックスタート

  1. 1

    Rustをインストールする(Steelのビルドに必要)

  2. 2

    リポジトリをクローンする

  3. 3

    cargoでREPLを起動する

    cargo run

使う前に知っておきたいこと

  • APIはまだ1.0未満のため、いつでも変更される可能性があります。
  • R5RSへの準拠は完全ではありません。let-syntaxは未実装で、R7RSのサポートは現在も進行中です。

収録されている特集

トピック

よくある質問

steel とは?
Rust製の組み込み・拡張可能なScheme方言。スタンドアロンREPLとバイトコードVMを備えています。 SteelはRustで書かれたSchemeインタプリタで、スタンドアロンのインタプリタやREPLとして実行できるほか、Rustアプリケーションに組み込むこともできます。言語処理系はバイトコード仮想マシンとして実装されており、R5RSにはおおむね準拠しています。R7RSへの対応も進行中です。
steel は無料で使えますか?ライセンスは?
steel は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
steel は今もメンテナンスされていますか?
活発にメンテナンス中。steel の最終コミットは 2026年10月22日 です。
steel は何に使えますか?
Rustアプリケーションにスクリプト言語を追加する Schemeやインタプリタの設計を学んだり、試したりする Rustコードを呼び出す設定用スクリプトや拡張スクリプトを書く
steel のインストール方法は?
Rustをインストールする(Steelのビルドに必要) リポジトリをクローンする cargoでREPLを起動する: cargo run
steel はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/mattwparas/steel

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト