はじめに / セットアップ / CLI / 対応ブロック一覧 / アーキテクチャ
このページは、
xyo-rust
を変更するときに確認する場所と、生成物・ドキュメント更新の扱いをまとめた開発者向けメモです。
ビルド環境が整っているかを確認します。
rustc --version
llvm-config --version
clang --version
cargo test
CLI の読み込み経路だけを手早く確認したい場合は、同梱サンプルを使います。
cargo run -- stats examples/script.sb3
cargo run -- json examples/script.sb3
IR 生成や JIT 実行を確認したい場合は、対象の
.sb3
が
対応ブロック一覧
の IR 対応範囲に収まっているかを先に確認してください。
examples/script.sb3
は読み込み確認用のサンプルで、IR 未対応の制御ブロックも含みます。
cargo run -- compile <ir-supported-project.sb3> --output out.ll
cargo run -- run <ir-supported-project.sb3>
| 変更内容 | 主なファイル |
|---|---|
| CLI サブコマンド |
src/cli.rs
,
src/main.rs
,
docs/markdown/cli.md
|
.sb3
読み込み・エラー表示
|
src/sb3.rs
,
docs/markdown/getting-started.md
,
docs/markdown/cli.md
|
| Scratch JSON 型 |
src/types/
|
| opcode のパース |
src/parser/
,
docs/markdown/blocks.md
|
| LLVM IR 生成 |
src/compiler/
,
docs/markdown/blocks.md
,
docs/markdown/architecture.md
|
| JIT 実行 |
src/jit/
,
docs/markdown/architecture.md
|
| C bitcode ヘルパー |
bitcodes/c/
,
build.rs
,
docs/markdown/architecture.md
|
新しい opcode の対応を追加する場合は、次の順で確認します。
-
src/types/mod.rsのBlockOpCodesに opcode が定義されているか確認する -
src/parser/blocks/<category>.rsでStmtまたはExprへ変換する -
必要なら
src/parser/types.rsに AST バリアントを追加する -
IR 生成まで対応する場合は
src/compiler/blocks/とgenerate_expr_ir側を更新する -
docs/markdown/blocks.mdの Parser / IR 対応状況を更新する -
ユーザーから見える挙動が変わる場合は
README.md、docs/markdown/cli.md、docs/markdown/architecture.mdも更新する
Parser で通ることと
run
で最後まで通ることは別です。Parser だけ対応した opcode は、
blocks.md
では IR 未対応として明示してください。
cargo build
は
build.rs
を通じて
bitcodes/c/
配下のトップレベル
.c
ファイルから LLVM bitcode と LLVM IR を生成します。
| 生成物 | 扱い |
|---|---|
target/
|
Cargo のビルド出力。Git 管理しない |
bitcodes/bc/
|
build.rs
が生成する bitcode。Git 管理しない
|
bitcodes/ll/
|
build.rs
が生成する LLVM IR。Git 管理しない
|
out.ll
|
compile
の既定出力。必要に応じて手元で確認する
|
docs/build/
|
Taiga が生成する公開サイト。Git 管理しない |
docs/site/content/*.xml
|
Taiga 用のサイトソース。通常は
docs/markdown/*.md
を編集する
|
通常のドキュメント更新は
docs/markdown/*.md
を編集します。GitHub Pages では
.github/workflows/pages.yml
が Taiga バイナリを取得し、
docs/markdown
からサイトを生成します。
ローカルで確認する場合は
docs/
ディレクトリに Taiga バイナリを置いてから実行します。
cd docs
./taiga markdown-dir ./markdown
rm -rf build
./taiga site
公開サイト用の生成結果は
docs/build/
に出力されます。
- Scratch VM と同等のイベントループはまだありません
-
runは JIT 経路の検証コマンドで、未実装 opcode や未実装式に当たると停止することがあります -
compileは LLVM IR を保存しますが、実行可能ファイルの生成までは行いません - リスト、サウンド再生、ブロードキャスト、クローン、描画の完全な実行は未実装です
前のページ: アーキテクチャ
