Files
hakorune/docs/examples/http_result_patterns.md
Moe Charm fffbac9aac feat: MIR TypeOp/WeakRef/Barrier PoC implementation
- Add TypeOpKind, WeakRefOp, BarrierOp enums for unified instructions
- Implement TypeOp instruction combining TypeCheck/Cast
- Implement WeakRef instruction combining WeakNew/WeakLoad
- Implement Barrier instruction combining BarrierRead/BarrierWrite
- Update VM to handle new unified instructions
- Update MIR printer for new instruction formats
- Add feature flags mir_typeop_poc and mir_refbarrier_unify_poc
- Maintain backward compatibility with legacy instructions

This is Phase 8.5 MIR instruction diet PoC implementation.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-23 19:27:02 +09:00

1.7 KiB
Raw Blame History

HTTP Result Patterns (VM×Plugins)

目的: NetプラグインHTTPの戻り値モデルをVM視点で明確化します。E2Eの実行方法と、典型ケースでのResultの形をまとめます。

実行方法(代表)

tools/run_vm_stats.sh local_tests/vm_stats_http_ok.nyash vm_stats_ok.json
tools/run_vm_stats.sh local_tests/vm_stats_http_err.nyash vm_stats_err.json
tools/run_vm_stats.sh local_tests/vm_stats_http_404.nyash vm_stats_404.json
tools/run_vm_stats.sh local_tests/vm_stats_http_500.nyash vm_stats_500.json

戻り値モデル

  • unreachable接続不可/タイムアウト等): Result.Err(ErrorBox)
    • ErrorBoxには原因メッセージ例: "connection refused", "timeout")が入ります。
  • HTTPステータス 404/500 等: Result.Ok(Response)
    • response.status が 404/500 を保持し、ボディやヘッダーは response.body, response.headers に格納されます。

使い分けの意図

  • ネットワーク層の到達不能transportは「例外的」な失敗としてErr。
  • アプリ層のHTTPステータスは「通常の結果」としてOkに包む分岐の簡潔化・情報保持

Tips

  • デバッグ
    • NYASH_NET_LOG=1 NYASH_NET_LOG_FILE=net_plugin.log でNetプラグインの内部ログを記録。
    • NYASH_DEBUG_PLUGIN=1 で VM→Plugin のTLV先頭情報をダンプ。
  • 計測
    • --vm-stats/--vm-stats-json で命令プロファイルを取得し、BoxCallやNewBoxのホット度を把握。

関連ドキュメント

  • docs/reference/architecture/mir-to-vm-mapping.mdResult/Handleの取り扱い
  • docs/VM_README.mdVM統計・既知の制約