- Inline-coerce env.box.new_i64x args to i64 handles (int passthrough, f64 via nyash.box.from_f64, i8* via nyash.box.from_i8_string). Removes closure that caused builder lifetime/borrow issues. - Add unit test for bitwise/shift ops (VM=48; LLVM emit ok; compile_and_execute returns 48). - Extend tools/llvm_smoke.sh with optional NYASH_LLVM_BITOPS_SMOKE gate; add apps/tests/ny-llvm-bitops (parser currently lacks &|^<<>> so E2E gated). - Update CURRENT_TASK.md to reflect P1 progress and test strategy. Build/test: - LLVM build: LLVM_SYS_180_PREFIX=/usr/lib/llvm-18 cargo build --release --features llvm - Unit: cargo test --no-run (env-dependent to run) - Smoke (optional): NYASH_LLVM_BITOPS_SMOKE=1 ./tools/llvm_smoke.sh
Nyash Test Programs
このディレクトリには、CI/CDやデバッグ用のテストプログラムが含まれています。
実用的なアプリケーションは親ディレクトリ(apps/)にあります。
テストプログラム一覧
LLVMバックエンドテスト
- ny-llvm-smoke/ - ArrayBox基本操作テスト
- ny-array-llvm-ret/ - ArrayBox戻り値テスト
- ny-echo-lite/ - 最小echo実装(I/Oテスト)
- ny-map-llvm-smoke/ - MapBoxプラグインテスト
- ny-vinvoke-smoke/ - 可変長引数(5引数)テスト
- ny-vinvoke-llvm-ret/ - 可変長引数戻り値テスト
- ny-vinvoke-llvm-ret-size/ - 固定長引数(size())テスト
実行方法
これらのテストは主に tools/llvm_smoke.sh から実行されます:
# 環境変数でテストを有効化
NYASH_LLVM_MAP_SMOKE=1 ./tools/llvm_smoke.sh
NYASH_LLVM_VINVOKE_RET_SMOKE=1 ./tools/llvm_smoke.sh
注意事項
- これらは最小限の機能テストであり、実用的なアプリケーションではありません
- CIでの自動テストを前提に設計されています
- エラー時の切り分けが容易になるよう、各テストは単一の機能に焦点を当てています