🐍 Python統合をAOTレベルまで完成(eval方式でunsupported=0達成)

- PyRuntimeBox.eval() で完全AOT対応(FloatBox返却)
- NYASH_PY_AUTODECODE=1 によるプリミティブ型自動変換
- ConsoleBox経由の出力もAOT対応
- 多数のPythonテストサンプル追加
- 論文「1ヶ月でインタープリターからネイティブまで」執筆開始

課題:
- import/getattr/callはプラグイン側の実装待ち
- importとevalの文脈共有は未対応

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Moe Charm
2025-08-30 07:47:21 +09:00
parent 0976326a6e
commit db265d7f29
41 changed files with 1899 additions and 14 deletions

View File

@ -1,22 +1,20 @@
// Python plugin demo: import math, getattr sqrt, call(9), str()
// Build plugin:
// (cd plugins/nyash-python-plugin && cargo build --release)
// Python math.sqrt demo via plugin (autodecode on)
// @env NYASH_PLUGIN_ONLY=1
// @env NYASH_PY_AUTODECODE=1
// @env NYASH_DEBUG_PLUGIN=1
// Build:
// cargo build --release && (cd plugins/nyash-python-plugin && cargo build --release)
// Run:
// NYASH_CLI_VERBOSE=1 ./target/release/nyash --backend vm examples/py_math_sqrt_demo.nyash
// ./target/release/nyash --backend vm examples/py_math_sqrt_demo.nyash
static box Main {
init { console }
main() {
me.console = new ConsoleBox()
local py, m, f, r
local py, math, sqrt, r
py = new PyRuntimeBox()
m = py.import("math")
f = m.getattr("sqrt")
r = f.call(9)
print("sqrt(9) = " + r.str())
math = py.import("math")
sqrt = math.getattr("sqrt")
r = sqrt.call(9)
me.console.println(r) // expects 3.0
return 0
}
}