dimgigov
|
ec4e748584
|
fix(qbe): use extraData instead of child3 for hIf else-branch
Block lowering overwrites child3 for statement chaining.
Else block is stored in extraData by hir_lower (matches c_backend).
Fixes QBE parse error 'last block misses jump' in if-without-else chains.
|
2026-06-02 18:07:35 +03:00 |
|
dimgigov
|
2b911410cb
|
feat: self-hosting progress - Nim backend, parser fixes, 64 struct fields, 13/14 modules check
|
2026-06-01 23:42:25 +03:00 |
|
dimgigov
|
48ee40e7c5
|
feat: struct init in all phases, 9/14 modules pass check
|
2026-05-31 20:21:20 +03:00 |
|
dimgigov
|
cb256397bd
|
Phase 7.9: Self-hosted compiler buxc2 builds and runs! 🎉
buxc (Nim bootstrap) successfully compiles buxc2 (Bux self-hosted compiler)
into a working 88KB ELF x86-64 binary.
Compiler fixes (Nim):
- duplicate symbol: user funcs shadow stdlib funcs via mergeDecls()
- forward declarations: func without body + definition (both orderings)
- extern func dedup: same extern in multiple files
- discard keyword: new language keyword, lowered to expr stmt or no-op
- parser: keywords as field names + advance-on-error safeguard
- parser: var without initializer (zero-init)
- parser: multi-line || && continuation expressions
- parser: else-if chain newline handling
- C backend: const declarations emitted as #define
- C backend: load(field_ptr) → base.field optimization (fixes lvalue errors)
Source fixes (src_bux/*.bux):
- types.bux: tk* → ty* prefix for type kind constants (avoid token conflict)
- sema.bux: remaining tk* → ty* references, StringMap → *void workaround
- hir_lower.bux: ekReturn removed, Lcx_LowerParam helper, *f dereference
- c_backend.bux: &mod.funcs[i] for pointer passing
- cli.bux: ReadFile/WriteFile → bux_read_file/bux_write_file wrappers
- parser.bux: pathStr.len → String_Len(pathStr)
- types.bux: "*" + x → String_Concat("*", x)
Build system:
- Makefile: added 4 missing examples + selfhost target
- PLAN.md: updated with actual project state, Phase 7.9 marked complete
All 18 examples pass, all unit tests pass.
|
2026-05-31 16:34:36 +03:00 |
|
dimgigov
|
de6e89e3df
|
Phase 7.9: multi-file build, module braces, struct init multi-line, else-if fix
|
2026-05-31 14:25:57 +03:00 |
|
dimgigov
|
f4de065160
|
fix: module syntax — changed src_bux/*.bux from module X; to module X { ... }
|
2026-05-31 14:14:42 +03:00 |
|
dimgigov
|
6ee6b3b529
|
Phase 7: Self-hosting compiler — all 13 modules ported to Bux (3981 LOC)
|
2026-05-31 13:29:14 +03:00 |
|