Files
hakorune/docs/archive/roadmap/phases/phase-10.6/PYTHON_NATIVE_PLAN.txt
nyash-codex 811dfebf98 fix(joinir): Phase 241-EX - Remove hardcoded 'sum' check from Pattern3
Remove legacy hardcoded 'sum' carrier validation that was blocking
array_filter patterns with different accumulator names (e.g., 'out').

Before: Pattern3 required carrier named 'sum' to exist
After: Pattern3 uses carrier_info generically (any carrier name works)

Test results:
- phase49_joinir_array_filter_smoke: PASS 
- phase49_joinir_array_filter_fallback: PASS 
- phase49_joinir_array_filter_ab_comparison: PASS 
- Full suite: 909/909 PASS, 0 FAIL

Also: Archive old roadmap documentation (67k lines moved to docs/archive/)

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-11 00:48:42 +09:00

80 lines
4.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Phase 10.6 → Pythonネイティブ接続プラン整理版 / txt
目的: 10.6で整えたThread-Safety/Schedulerの最小足場の上に、PythonプラグインPyRuntimeBox/PyObjectBoxをネイティブEXEAOTまで安定接続する。
====================
1) 到達イメージDoD
====================
- Linux/Windows で以下が安定動作:
- AOT: `examples/aot_py_min_chain.hako` → `Result: 4`math.sqrt(16)
- VM: `examples/py_min_chain_vm.hako` → 4.0 表示NYASH_PY_AUTODECODE=1
- returns_result 系サンプルimportR/getattrR/callRで Ok/Err が期待通りに表示
- AOTビルドの配布体験が明確:
- `tools/build_aot.{sh,ps1}` で .o → EXE、`nyash.toml`/plugins 解決、Windowsでは PATH/PYTHONHOME 調整
- 配布ガイド(依存コピー/環境変数/動作確認手順)が `docs/guides/build/aot_quickstart.md` に追記済み
====================
2) 方針(変えない原則)
====================
- Plugin-First / Handle-First / TLV 統一String/Integerはプリミティブ、Bufferはbytes(tag=7)、他はHandle(tag=8))。
- Strict: 実行はVM、JITはAOT生成専用フォールバック禁止
- by-name経路: 受け手箱名未確定時は `nyash_plugin_invoke_name_{getattr,call}_i64` で実行時解決。
====================
3) 実装タスクM1→M5
====================
M1: AOT最小ルートの安定完了確認/微修正)
- nyrt シムBufferBox→bytes(tag=7) 対応、3引数目以降をレガシーVM引数からTLV追補暫定N引数
- Windows探索EXE起動時に PATH へ exe/`plugins/` を追加、`PYTHONHOME` が未設定なら `exe\python` を採用相対はexe基準に正規化
- ドキュメントAOTクイックスタートにWindows注意点を追記
M2: TLV/FFIカバレッジ拡大最小
- kwargs/辞書のパスcallKwRをbytes(tag=7) or string(tag=6, JSON)で暫定対応(将来 BID-1拡張
- N引数の一般化invoke3→invokeN 設計、実装は段階導入。先行はレガシー補完で可)
- returns_result の統一処理VM既存→AOTでも同等に扱う
M3: Lowerer/Policy の整流
- Handle-First統一の確認Python特化の型伝搬は撤去済み戻りはHandle or プリミティブのみ参照)
- birth引数の一般化TLVメモに沿い、Integer/Stringはプリミティブ、他はHandle
- by-name の適用範囲と導線(`getattr`/`call` はby-name固定、importはmethod_id直参照
M4: 配布導線とサンプル
- スクリプト整備:`tools/build_python_aot.sh` の統合(`build_aot.sh` に一本化 or ラッパー)
- サンプル最小化returns_resultOk/Err、例外伝搬Error文字列、bytes引数、context共有per-runtime globals
- ガイド整理:`docs/guides/build/aot_quickstart.md` に「Pythonネイティブ」節を追加動作要件・環境変数
M5: 観測/CI軽量
- スモークVMチェーン / AOTチェーンの比較Result行を `tools/smoke_aot_vs_vm.sh` に追加Python系は最小のみ
- ログ:`NYASH_JIT_EVENTS*`/`NYASH_JIT_NATIVE_F64`/`NYASH_PY_AUTODECODE` による差分観測
====================
4) リスク/制約
====================
- CPython依存の配布WindowsのDLL探索PATH/PYTHONHOMEは最小整備。完全同梱embeddedは後段で検討。
- KW/辞書のTLV表現暫定はbytes/stringでブリッジ。正式BIDタグは将来導入後方互換のためJSON連携を許容
- ネイティブN引数v0はレガシーVM引数からのTLV補完でしのぎ、invokeNは次期導入。
====================
5) タイムライン(目安)
====================
- M1安定: 0.5日(確認/微修正)
- M2TLV拡充: 12日kwargsは暫定・bytes/JSON
- M3Lowerer整流: 0.51日
- M4配布/サンプル): 1日
- M5観測/CI: 0.5日
====================
6) 成果物Artifacts
====================
- 例: `examples/aot_py_min_chain.hako`, `examples/py_min_chain_vm.hako`(既存)
- ツール: `tools/build_aot.{sh,ps1}`Python節、`tools/smoke_aot_vs_vm.sh`Python最小
- Docs: `docs/guides/build/aot_quickstart.md`Python節、`docs/reference/abi/ffi_calling_convention_min.md`bytes/N引数注記
====================
7) 参照
====================
- 10.5c: Handle-First/PluginInvoke 設計by-name シム)
- 10.5d/e: AOT統合/最終仕上げnyrt/Windows探索/TLV拡張
- 10.6: Thread-Safety/Scheduler並列化前の足場