- 4つ目の実行方式としてAOT(Ahead-of-Time)コンパイルを文書化 - MIR→WASM→.cwasm のコンパイルパイプラインを説明 - wasm-backend featureでのビルド方法を明記 - 現在の実装状況(完全なスタンドアロン実行ファイルはTODO)を記載 - CLAUDE.mdのWASM説明も3種類(Rust→WASM、Nyash→WASM、Nyash→AOT)に更新 - CURRENT_TASK.mdにPhase 10.9/10.10の完了項目を追加 ChatGPT5さんのAOT試行に対応した適切なドキュメント配置を実施 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
44 lines
1.3 KiB
Plaintext
44 lines
1.3 KiB
Plaintext
// JIT ANY Helpers Demo - JIT内部での統一的な型処理
|
|
// ANYヘルパーは nyash.any.length_h と nyash.any.is_empty_h として
|
|
// JITのHostCall経由で Array/String/Map を統一的に扱える!
|
|
|
|
box Helper {
|
|
birth() {}
|
|
|
|
// このメソッドがJITコンパイルされると、内部的にANYヘルパーが使われる
|
|
getInfo(obj) {
|
|
// JIT内部では nyash.any.length_h が呼ばれる
|
|
local len
|
|
len = obj.length() // Array/Stringなら動作
|
|
|
|
// JIT内部では nyash.any.is_empty_h が呼ばれる
|
|
local empty
|
|
empty = obj.isEmpty() // Array/Stringなら動作
|
|
|
|
return len
|
|
}
|
|
}
|
|
|
|
static box Main {
|
|
main() {
|
|
local H
|
|
H = new Helper()
|
|
|
|
// Array での使用
|
|
local arr
|
|
arr = new ArrayBox()
|
|
arr.push("cat")
|
|
arr.push("dog")
|
|
print("Array info: " + H.getInfo(arr)) // 2
|
|
|
|
// String での使用
|
|
local str
|
|
str = new StringBox("Hello")
|
|
print("String info: " + H.getInfo(str)) // 5
|
|
|
|
// 注意: MapBoxは現在のインタープリターではlength()未実装
|
|
// JITでは nyash.any.length_h が Map.size() にマップされる
|
|
|
|
return "Done"
|
|
}
|
|
} |