feat(selfhost): field-move skip Drop, #line maps, Array field mono

Bring selfhost C backend closer to bootstrap ownership and debug quality.

- Mark locals moved into struct fields / returns (no double Drop)
- Mangle Array/Set/Map/Channel field types so user structs fully emit
- Emit #line N from HIR line; BUX_DEBUG_FILE / BUX_NO_LINE controls
This commit is contained in:
2026-07-19 23:07:01 +03:00
parent cfb89dd72f
commit 94cc94f638
4 changed files with 148 additions and 28 deletions
+4 -3
View File
@@ -148,12 +148,13 @@ make bench-nexus # wrk throughput vs apps/nexus /api/health
```bash
./buxc build # -O0 -g, #line → .bux (gdb-friendly; bootstrap)
./buxc build --release # -O2 -DNDEBUG, no #line / -g
# Selfhost (buxc2) same --release / default -O0 -g; #line maps bootstrap-only for now
# Selfhost (buxc2): same --release / default -O0 -g; #line via HIR line numbers
export BUX_DEBUG_FILE=src/Main.bux # path embedded in #line (selfhost)
export BUX_NO_LINE=1 # disable selfhost #line maps
export BUX_CFLAGS="-fno-omit-frame-pointer" # optional extra cc flags
gdb --args ./build/myapp
# (gdb) break Main
# (gdb) run
# (gdb) list # shows Bux source via #line (bootstrap)
# (gdb) list # Bux source via #line
```