Skip to content

[Codex] Advance Dart/Zig C++ emitter host generation - #7

Closed
yasufumi-nakata wants to merge 5 commits into
yaneurao:mainfrom
yasufumi-nakata:codex/pytra-tuple-unpack-hosts
Closed

[Codex] Advance Dart/Zig C++ emitter host generation#7
yasufumi-nakata wants to merge 5 commits into
yaneurao:mainfrom
yasufumi-nakata:codex/pytra-tuple-unpack-hosts

Conversation

@yasufumi-nakata

Copy link
Copy Markdown

概要

Dart / Zig で C++ emitter host 生成を次の段階まで進めました。P1-HOST-CPP-EMITTER-DART-S1P1-HOST-CPP-EMITTER-ZIG-S1 は Docker 隔離環境で exact command が通る状態にし、S2 は import 配置の不整合を越えた先のコンパイル・実行ブロッカーまで確認しています。

変更内容

  • Dart / Zig emitter で文レベルの TupleUnpack / MultiAssign を既存 tuple assignment renderer へ接続しました。
  • 共通 run_emit_cli に module-id path 出力を追加し、Dart / Zig host 出力を std/json.*toolchain/emit/common/cli_runner.* のような import path と一致する配置にしました。
  • emit_context に module ごとの root_rel_prefix_cli_all_module_ids を注入し、階層化された出力でも runtime / linked user module import を解決できるようにしました。
  • Dart emitter は import_bindings から linked user module / nested import の symbol alias を補完するようにしました。
  • Zig emitter は linked user module import と pytra.std.json module import を補完し、Zig 出力には root main.zig shim を追加して nested entry module をビルドしやすくしました。
  • Dart / Zig runtime copy の post emit 処理で標準 pathlib.Path へ戻し、runtime tree と Zig root shim を安定して出力するようにしました。
  • devcontainer に Dart SDK 3.11.5 と Zig 0.16.0 を追加し、verify-toolchain.sh でも確認対象にしました。
  • docs/ja/todo/dart.md / docs/ja/todo/zig.md に S1 完了と S2 の現在地を追記しました。

検証

  • PYTHONPATH=src python3 -m unittest tools.unittest.toolchain2.test_common_cli_runner tools.unittest.toolchain2.test_dart_emitter_smoke tools.unittest.toolchain2.test_zig_emitter_smoke
  • Docker 隔離環境で同じ unittest suite: Ran 10 tests ... OK
  • Docker 隔離環境で .devcontainer/scripts/verify-toolchain.sh: Dart / Zig を含め PASS
  • Docker 隔離環境で Dart host exact command: python3 src/pytra-cli.py -build src/toolchain/emit/cpp/cli.py --target dart -o work/selfhost/host-cpp/dart/ PASS(30 modules link / 25 files)
  • Docker 隔離環境で Zig host exact command: python3 src/pytra-cli.py -build src/toolchain/emit/cpp/cli.py --target zig -o work/selfhost/host-cpp/zig/ PASS(30 modules link / 30 files + root shim)

S2 の残ブロッカー

  • Dart host の dart run は import 不整合を越え、次は extern() / field() / dict / sorted() / __file__ / Dart Map の items()get_() など Python runtime helper 未接続で停止します。
  • Zig host の zig build-exe work/selfhost/host-cpp/zig/main.zig は import 不整合を越え、次は field() / dict / anytype 型式 / __file__ / _ 変数名 / shadowing・unused const など Zig emitter の未実装生成で停止します。
  • そのため .parity-results/emitter_host_dart.json / .parity-results/emitter_host_zig.json は PASS 結果としてはまだ更新していません。

# Conflicts:
#	docs/ja/plans/p2-top100-language-coverage.md
#	docs/ja/todo/dart.md
#	docs/ja/todo/lua.md
#	docs/ja/todo/php.md
#	docs/ja/todo/powershell.md
#	docs/ja/todo/ruby.md
#	docs/ja/todo/zig.md
#	src/pytra-cli.py
#	tools/unittest/tooling/test_pytra_cli2.py
@yasufumi-nakata

Copy link
Copy Markdown
Author

この PR の内容は #8 に統合・上位化しました。大元向け PR を一つにするため、本 PR は閉じます。以後のレビューは #8 でお願いいたします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant