Major changes: - Update all MIR13 references to MIR14 throughout paper-a-mir13-ir-design/ - Add evolution history: 27 → 13 → 14 instructions (UnaryOp restoration) - Create new paper-d-ssa-construction/ for SSA implementation struggles - Add PAPER_INDEX.md consolidating ChatGPT5's 3-paper analysis MIR14 updates: - README.md: Add instruction evolution timeline - abstract.md: Emphasize practical balance over pure minimalism - main-paper*.md: Update titles and core concepts - MIR13_CORE13_SPEC.md: Add UnaryOp to instruction list - chapters/01-introduction.md: Reframe as "14-Instruction Balance" - RENAME_NOTE.md: Document folder naming consideration SSA paper structure: - README.md: Paper overview and positioning - current-struggles.md: Raw implementation challenges - technical-details.md: BuilderCursor, Sealed SSA, type normalization - abstract.md: English/Japanese abstracts LoopForm experiments continue in parallel (minor adjustments to detection). 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
3.0 KiB
Abstract
Practical SSA Construction for a Box-Oriented Language
Building Static Single Assignment (SSA) form for dynamically-typed languages presents unique challenges, particularly when the language philosophy mandates that "Everything is Box." This paper presents our practical experience constructing SSA form for Nyash, a Box-oriented language targeting LLVM IR.
We identify three main challenges: (1) PHI node placement in complex control flow with mixed handle/pointer types, (2) maintaining correct insertion points across nested scopes and loops, and (3) ensuring dominance properties while supporting dynamic Box operations.
Our contributions include:
- BuilderCursor: A structured approach to LLVM builder position management that prevents post-terminator insertions
- Sealed SSA with snapshots: Block-end value snapshots for reliable PHI wiring in gradually-constructed CFGs
- Type normalization strategy: Unified i64 handle representation with on-demand pointer conversions
We evaluate our approach on real-world Nyash programs, including a self-hosting compiler component (dep_tree_min_string.nyash). While achieving functional SSA construction, we identify remaining challenges and propose LoopForm IR as a future direction for simplifying control flow representation.
This work provides practical insights for language implementers facing similar challenges when bridging high-level Box abstractions to low-level SSA form.
和文要旨
動的型付け言語、特に「Everything is Box」を哲学とする言語において、静的単一代入(SSA)形式を構築することは独特の課題を提示する。本稿では、LLVM IRを対象とするBox指向言語Nyashにおける、SSA形式構築の実践的経験を報告する。
主要な課題として、(1)ハンドル/ポインタ混在型での複雑な制御フローにおけるPHIノード配置、(2)ネストしたスコープとループにまたがる挿入位置の維持、(3)動的Box操作をサポートしながらのdominance特性の保証、の3点を特定した。
本稿の貢献は以下の通りである:
- BuilderCursor:終端後挿入を防ぐ構造化されたLLVMビルダー位置管理
- スナップショット付きSealed SSA:段階的に構築されるCFGでの確実なPHI配線のためのブロック終端値スナップショット
- 型正規化戦略:オンデマンドポインタ変換を伴う統一的i64ハンドル表現
実世界のNyashプログラム(セルフホスティングコンパイラコンポーネントdep_tree_min_string.nyashを含む)で評価を行った。機能的なSSA構築を達成する一方で、残存する課題を特定し、制御フロー表現を簡素化する将来の方向性としてLoopForm IRを提案する。
本研究は、高レベルBox抽象を低レベルSSA形式に橋渡しする際に同様の課題に直面する言語実装者に、実践的な洞察を提供する。