feat(llvm): Comprehensive LLVM backend improvements by ChatGPT

Major enhancements to LLVM code generation and type handling:

1. String Operations:
   - Added StringBox length fast-path (length/len methods)
   - Converts i8* to handle when needed for len_h call
   - Consistent handle-based string operations

2. Array/Map Fast-paths:
   - ArrayBox: get/set/push/length operations
   - MapBox: get/set/has/size with handle-based keys
   - Optimized paths for common collection operations

3. Field Access:
   - getField/setField implementation with handle conversion
   - Proper i64 handle to pointer conversions

4. NewBox Improvements:
   - StringBox/IntegerBox pass-through optimizations
   - Fallback to env.box.new when type_id unavailable
   - Support for dynamic box creation

5. Documentation:
   - Added ARCHITECTURE.md for overall design
   - Added EXTERNCALL.md for external call specs
   - Added LOWERING_LLVM.md for LLVM lowering rules
   - Added PLUGIN_ABI.md for plugin interface

6. Type System:
   - Added UserBox type registration in nyash_box.toml
   - Consistent handle (i64) representation across system

Results: More robust LLVM code generation with proper type handling

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Selfhosting Dev
2025-09-11 22:30:26 +09:00
parent 82cd2affbc
commit 89e6fbf010
9 changed files with 453 additions and 74 deletions

View File

@ -20,3 +20,9 @@ This changelog tracks highlevel milestones while Core MIR and Phase 12 evolve
Notes
- Core13 is canonical minimal kernel. Historical Core15 notes remain under `docs/development/roadmap/` for reference.
- Phase 12.7B desugaring is gated by `NYASH_SYNTAX_SUGAR_LEVEL`; tokenizer additions are nonbreaking.
## 20250911 (Phase 15)
- llvm: BoxCall arm cleanup — unreachable legacy block removed; arm now delegates solely to `instructions::lower_boxcall`.
- llvm/docs: Documented LLVM lowering rules (StringBox i8* fast path, ExternCall ptr/handle selection, minimal fallback policy for string concat).
- docs: Added ARCHITECTURE.md, LOWERING_LLVM.md, EXTERNCALL.md, PLUGIN_ABI.md.
- nyrt: resolved plugin module duplication; build green.
- builder: suppressed StringBox birth (constructed in LLVM path).