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.
This commit is contained in:
@@ -14,20 +14,21 @@ Bux is a fast, compiled, strongly-typed, multi-paradigm systems programming lang
|
||||
|
||||
---
|
||||
|
||||
## Language Design Goals (Bux vs Rust vs Nim vs Rux)
|
||||
## Language Design Goals (Bux vs Rust vs Nim vs Zig vs Rux)
|
||||
|
||||
| Dimension | Bux Target | Rust | Nim | Rux v0.2.0 |
|
||||
|-----------|-----------|------|-----|------------|
|
||||
| **Memory safety** | Gradual ownership (opt-in borrow checking) | Strict borrow checker | GC / manual | Raw pointers only |
|
||||
| **Error handling** | `Result<T,E>` + `?` propagation | `Result<T,E>` + `?` | Exceptions | Basic Result, no `?` |
|
||||
| **Concurrency** | Lightweight tasks + channels + `async`/`await` | `async`/`await` + threads | Async/await + threads | None |
|
||||
| **Metaprogramming** | Compile-time function execution (CTFE) + macros | Proc/decl macros | Static generics + macros | None |
|
||||
| **Generics** | Monomorphization + trait bounds | Monomorphization + trait bounds | Static generics | Limited |
|
||||
| **Backend** | C transpiler (bootstrap) → native x86-64 + LLVM | LLVM | C/JS/JS backend | Custom native only |
|
||||
| **Compile speed** | Fast (Nim-like goal: <1s for medium projects) | Slow (LLVM) | Fast | Fast (custom backend) |
|
||||
| **FFI** | Seamless C interop (zero-cost) | Good | Good (native) | Basic extern |
|
||||
| **Stdlib** | Batteries-included (collections, IO, net, sync) | Rich | Rich | Minimal |
|
||||
| **Tooling** | Built-in formatter, LSP, test runner, debugger | External tools | External tools | Minimal |
|
||||
| Dimension | Bux Target | Rust | Nim | Zig | Rux v0.2.0 |
|
||||
|-----------|-----------|------|-----|-----|------------|
|
||||
| **Memory safety** | Gradual ownership (opt-in borrow checking) | Strict borrow checker | GC / manual | Manual + comptime | Raw pointers only |
|
||||
| **Error handling** | `Result<T,E>` + `?` + `!` | `Result<T,E>` + `?` | Exceptions | Error unions + `try` | Basic Result, no `?` |
|
||||
| **Concurrency** | Lightweight tasks + channels + `async`/`await` | `async`/`await` + threads | Async/await + threads | Async I/O (io_uring) | None |
|
||||
| **Metaprogramming** | Compile-time function execution (CTFE) + macros | Proc/decl macros | Static generics + macros | `comptime` (best-in-class) | None |
|
||||
| **Generics** | Monomorphization + trait bounds | Monomorphization + trait bounds | Static generics | `comptime` generics | Limited |
|
||||
| **Backend** | C transpiler (bootstrap) → native x86-64 + LLVM | LLVM | C/JS/JS backend | LLVM + custom | Custom native only |
|
||||
| **Compile speed** | Fast (Nim-like goal: <1s for medium projects) | Slow (LLVM) | Fast | Very fast | Fast (custom backend) |
|
||||
| **FFI** | Seamless C interop (zero-cost) | Good | Good (native) | Excellent (best-in-class) | Basic extern |
|
||||
| **Stdlib** | Batteries-included (collections, IO, net, sync) | Rich | Rich | Minimal (allocators) | Minimal |
|
||||
| **Tooling** | Built-in formatter, LSP, test runner, debugger | External tools | External tools | `zig build` (excellent) | Minimal |
|
||||
| **Simplicity** | Rux-like clean syntax + modern ergonomics | Complex | Clean | Minimal, explicit | Clean, C-like |
|
||||
|
||||
---
|
||||
|
||||
@@ -150,7 +151,7 @@ Bux is a fast, compiled, strongly-typed, multi-paradigm systems programming lang
|
||||
|
||||
---
|
||||
|
||||
## Phase 6 — Standard Library 🔄 (In Progress)
|
||||
## Phase 6 — Standard Library 🔄 (Mostly Complete)
|
||||
|
||||
**Goal:** Enough stdlib to write the compiler in Bux.
|
||||
|
||||
@@ -158,18 +159,24 @@ Bux is a fast, compiled, strongly-typed, multi-paradigm systems programming lang
|
||||
|--------|--------|-------------|
|
||||
| `Std::Io` | ✅ | `Print`, `PrintLine`, `PrintInt`, `ReadLine` (wrap C stdio) |
|
||||
| `Std::Memory` | ✅ | `bux_alloc`, `bux_realloc`, `bux_free` (wrap `malloc`/`free`) |
|
||||
| `Std::String` | ✅ | `String_Len`, `String_Eq`, `String_Concat`, `String_Copy`, `String_StartsWith`; C wrappers in `runtime.c` |
|
||||
| `Std::Array` | ✅ | Fully generic `Array<T>` with `Array_New<T>`, `Array_Push<T>`, `Array_Get<T>`, `Array_Len<T>`, `Array_Free<T>`; uses `sizeof(T)` |
|
||||
| `Std::Map` | ✅ | Linear-probing hash map `String`→`int` with `Map_New`, `Map_Set`, `Map_Get`, `Map_Has`, `Map_Len`, `Map_Free` |
|
||||
| `Std::Math` | ⏳ | `Sqrt`, `Pow`, `Min`, `Max`, `Abs` |
|
||||
| `Std::String` | ✅ | Full API: `String_Len`, `String_Eq`, `String_Concat`, `String_Copy`, `String_StartsWith`, `String_EndsWith`, `String_Contains`, `String_Slice`, `String_Trim`, `String_TrimLeft`, `String_TrimRight`, `String_FromInt`, `String_ToInt`, `StringBuilder`; C wrappers in `runtime.c` |
|
||||
| `Std::Array` | ✅ | Fully generic `Array<T>` with `Array_New<T>`, `Array_Push<T>`, `Array_Get<T>`, `Array_Len<T>`, `Array_Free<T>`; generic struct methods with auto-addressing |
|
||||
| `Std::Map` | ✅ | Generic `Map<K,V>` with `Map_New`, `Map_Set`, `Map_Get`, `Map_Has`, `Map_Len`, `Map_Free`; value-type keys with strcmp |
|
||||
| `Std::Math` | ✅ | `Sqrt`, `Pow`, `Min`, `Max`, `Abs`, `MinF`, `MaxF`, `AbsF` (float64 + int64 variants, C runtime wrappers) |
|
||||
| `Std::Path` | ✅ | File exists, basic path operations |
|
||||
| `Std::Os` | ⏳ | `Args`, `Env`, `Exit`, `Cwd` |
|
||||
| `Std::Path` | ⏳ | Path joining, extension splitting |
|
||||
| `Std::Process` | ⏳ | Spawn subprocess, read stdout/stderr |
|
||||
| **`Std::Result`** | ✅ | Algebraic enums `Result<T,E>` and `Option<T>` with `NewOk`/`NewErr`/`NewSome`/`NewNone`; `?` try operator desugared in HIR |
|
||||
| **`Std::Iter`** | ⏳ | Iterator trait with `map`, `filter`, `fold`, `collect` |
|
||||
| **`Std::Fmt`** | ⏳ | String formatting: `"Hello, {}!"` interpolation |
|
||||
|
||||
**Deliverable:** Can write a non-trivial CLI tool entirely in Bux. ✅ `try_operator`, `result_option`, `map`, `strings` examples working.
|
||||
**Additional completed:**
|
||||
- ✅ Generic type inference: `Max(10, 20)` instead of `Max<int>(10, 20)` — compiler infers `T` from argument types
|
||||
- ✅ `extend Box<T>` syntax: parser support for generic impl blocks
|
||||
- ✅ String slicing, trimming, contains, StringBuilder (`strings2` example)
|
||||
- ✅ Generic `Map<K,V>` with value-type keys
|
||||
|
||||
**Deliverable:** Can write a non-trivial CLI tool entirely in Bux. ✅ 18 example programs working: `hello`, `fibonacci`, `factorial`, `structs`, `enums`, `methods`, `algebraic_enums`, `generics`, `generics_struct`, `generic_infer`, `generic_infer2`, `extend_generic`, `pattern_matching`, `strings`, `strings2`, `map`, `result_option`, `try_operator`.
|
||||
|
||||
---
|
||||
|
||||
@@ -269,41 +276,77 @@ Phase 7.5 — Driver (depends on all):
|
||||
|
||||
---
|
||||
|
||||
## Phase 7 — Self-Hosting: The Great Rewrite
|
||||
## Phase 7 — Self-Hosting: The Great Rewrite 🔄 (In Progress)
|
||||
|
||||
**Goal:** Bux compiler compiles itself. This is the **main milestone**.
|
||||
|
||||
**Pre-requisites (Phase 7.0):** StringMap, String split/join, String formatting, File I/O must be working.
|
||||
**All 14 modules ported** in `src_bux/` (4094 LOC total). Self-hosted project structure in `_selfhost/`.
|
||||
|
||||
| Task | Details | Deps |
|
||||
|------|---------|------|
|
||||
| `7.1` Port foundation | `token.bux`, `source_location.bux`, `types.bux`, `scope.bux`, `hir.bux` (~600 LOC) | StringMap |
|
||||
| `7.2` Port lexer | `lexer.bux` — state machine, UTF-8, error reporting (~570 LOC) | String split/compare |
|
||||
| `7.3` Port AST + parser | `ast.bux` + `parser.bux` — Pratt parser, algebraic enums (~1620 LOC) | Array<T>, match |
|
||||
| `7.4` Port sema | `sema.bux` — type checking, symbol resolution (~890 LOC) | StringMap, formatting |
|
||||
| `7.5` Port manifest | `manifest.bux` — TOML/bux.toml parser (~80 LOC) | File I/O, String split |
|
||||
| `7.6` Port HIR lowering | `hir_lower.bux` — tree transformation (~1230 LOC) | StringMap, HashSet |
|
||||
| `7.7` Port C backend | `c_backend.bux` — C code generator (~520 LOC) | String formatting |
|
||||
| `7.8` Port CLI | `cli.bux` + `main.bux` — command dispatch (~400 LOC) | File I/O, path ops |
|
||||
| `7.9` Dogfooding | Use `buxc` (Nim) to build `buxc2` (Bux). Then use `buxc2` to build `buxc3`. Compare bit-for-bit. | All of above |
|
||||
| `7.10` Fix bootstrap loop | Once `buxc2 == buxc3`, we are self-hosted. Freeze Nim version as reference. | 7.9 |
|
||||
| Task | Status | Details | LOC |
|
||||
|------|--------|---------|-----|
|
||||
| `7.1` Port foundation | ✅ | `token.bux`, `source_location.bux`, `types.bux`, `scope.bux`, `hir.bux` | ~771 |
|
||||
| `7.2` Port lexer | ✅ | `lexer.bux` — full state machine, UTF-8, error reporting | 697 |
|
||||
| `7.3` Port AST + parser | ✅ | `ast.bux` + `parser.bux` — Pratt parser, algebraic enums | ~1361 |
|
||||
| `7.4` Port sema | ✅ | `sema.bux` — type checking, symbol resolution | 395 |
|
||||
| `7.5` Port manifest | ✅ | `manifest.bux` — TOML/bux.toml parser | 86 |
|
||||
| `7.6` Port HIR lowering | ✅ | `hir_lower.bux` — tree transformation | 309 |
|
||||
| `7.7` Port C backend | ✅ | `c_backend.bux` — C code generator | 266 |
|
||||
| `7.8` Port CLI | ✅ | `cli.bux` + `main.bux` — command dispatch | ~181 |
|
||||
| `7.9` Dogfooding | ✅ | `buxc` (Nim) compiles `buxc2` (Bux) — **WORKING BINARY** (88KB ELF x86-64) | — |
|
||||
| `7.10` Fix bootstrap loop | ⏳ | Once `buxc2 == buxc3`, we are self-hosted. Freeze Nim version as reference. | — |
|
||||
|
||||
### Phase 7.9 — Completed 2026-05-31 🎉
|
||||
|
||||
**`buxc2` — Bux compiler written in Bux — builds and runs!**
|
||||
|
||||
```
|
||||
$ ./buxc2 version
|
||||
Bux Self-Hosting Compiler v0.2.0
|
||||
Pipeline modules:
|
||||
Lexer ✅ 695 lines
|
||||
Parser ✅ 1004 lines
|
||||
Sema ✅ 393 lines
|
||||
HirLower ✅ 307 lines
|
||||
CBackend ✅ 264 lines
|
||||
Total: 3830 lines of Bux
|
||||
```
|
||||
|
||||
**All bugs fixed to achieve Phase 7.9:**
|
||||
- ✅ Duplicate symbol — user funcs shadow stdlib funcs (`mergeDecls` in cli.nim)
|
||||
- ✅ Parser infinite loop — keywords allowed as field names + advance-on-error safeguard
|
||||
- ✅ `var` without initializer — optional `=` for var declarations (zero-init)
|
||||
- ✅ Multi-line `||`/`&&` — continuation expressions across newlines
|
||||
- ✅ Else-if chain newlines — newlines skipped between `}` and `else`
|
||||
- ✅ Forward declarations — func decl without body followed by definition (both orderings)
|
||||
- ✅ Extern func dedup — same extern declared in multiple files
|
||||
- ✅ Type kind naming — `types.bux` uses `ty*` prefix, `token.bux` uses `tk*`
|
||||
- ✅ Const emission — C backend emits `#define` for const declarations
|
||||
- ✅ `discard` keyword — added as language keyword, lowered to expression statement or no-op
|
||||
- ✅ C backend load optimization — `load(field_ptr(base, f))` → `base.f` (fixes lvalue errors)
|
||||
- ✅ StringMap → `*void` workaround in sema.bux
|
||||
- ✅ HirParam vs Param — field-by-field copy helper `Lcx_LowerParam`
|
||||
- ✅ HirFunc array — dereference on assignment (`*f` instead of `f`)
|
||||
- ✅ `ekReturn` removed — return is a statement, not expression
|
||||
- ✅ `pathStr.len` → `String_Len(pathStr)` — String has no `.len` field
|
||||
- ✅ String concatenation — `"*" + x` → `String_Concat("*", x)`
|
||||
- ✅ `ReadFile`/`WriteFile` → `bux_read_file`/`bux_write_file` (avoid symbol conflicts)
|
||||
|
||||
**Deliverable:** `make selfhost` succeeds; Bux compiler is written entirely in Bux.
|
||||
|
||||
---
|
||||
|
||||
## Phase 8 — Advanced Language Features (Week 27-34)
|
||||
## Phase 8 — Advanced Language Features 🔄 (In Progress)
|
||||
|
||||
**Goal:** Features that make Bux better than Rux and competitive with Rust/Nim.
|
||||
**Goal:** Features that make Bux better than Rux and competitive with Rust/Nim/Zig.
|
||||
|
||||
### 8.1 — Error Handling (Result/Option + `?` operator) ✅
|
||||
### 8.1 — Error Handling (Result/Option + `?` + `!` operators) ✅
|
||||
|
||||
| Task | Status | Details |
|
||||
|------|--------|---------|
|
||||
| `8.1.1` Result type | ✅ | `Result<T, E>` with `Ok(T)` and `Err(E)` constructors |
|
||||
| `8.1.2` Option type | ✅ | `Option<T>` with `Some(T)` and `None` constructors |
|
||||
| `8.1.3` `?` operator | ✅ | `expr?` desugars to: if `Err`/`None`, early-return from function |
|
||||
| `8.1.4` `!` suffix | ⏳ | `expr!` unwraps or panics (for prototyping) |
|
||||
| `8.1.4` `!` suffix | ✅ | `expr!` unwraps or panics (for prototyping) — parser, sema, HIR, C backend all implemented |
|
||||
|
||||
```bux
|
||||
func ReadFile(path: String) -> Result<String, IoError> {
|
||||
@@ -313,15 +356,15 @@ func ReadFile(path: String) -> Result<String, IoError> {
|
||||
}
|
||||
```
|
||||
|
||||
### 8.2 — Ownership & Borrowing (Gradual Safety)
|
||||
### 8.2 — Ownership & Borrowing (Gradual Safety) 🔄 (Syntax Only)
|
||||
|
||||
| Task | Details |
|
||||
|------|---------|
|
||||
| `8.2.1` `own` keyword | Explicit ownership transfer: `let x = own value` |
|
||||
| `8.2.2` `borrow` / `&` | Borrow references with lifetime tracking |
|
||||
| `8.2.3` `mut` references | `&mut T` for mutable borrows (exclusive) |
|
||||
| `8.2.4` Lifetime elision | Simple rules for common cases; explicit `'a` for complex |
|
||||
| `8.2.5` Opt-in checker | `@[Checked]` attribute enables borrow checking; default is permissive |
|
||||
| Task | Status | Details |
|
||||
|------|--------|---------|
|
||||
| `8.2.1` `own` keyword | 🔄 | Syntax parsed, semantic checking not yet implemented |
|
||||
| `8.2.2` `borrow` / `&` | 🔄 | `&T` reference syntax parsed, not yet semantically checked |
|
||||
| `8.2.3` `mut` references | ⏳ | `&mut T` for mutable borrows (exclusive) |
|
||||
| `8.2.4` Lifetime elision | ⏳ | Simple rules for common cases; explicit `'a` for complex |
|
||||
| `8.2.5` Opt-in checker | 🔄 | `@[Checked]` attribute syntax parsed, checker not implemented |
|
||||
|
||||
```bux
|
||||
// Opt-in safety — by default, Bux is permissive like Nim
|
||||
@@ -371,14 +414,14 @@ func Main() -> int {
|
||||
}
|
||||
```
|
||||
|
||||
### 8.4 — Compile-Time Function Execution (CTFE)
|
||||
### 8.4 — Compile-Time Function Execution (CTFE) 🔄 (Syntax Only)
|
||||
|
||||
| Task | Details |
|
||||
|------|---------|
|
||||
| `8.4.1` `const` functions | `const func` evaluable at compile time |
|
||||
| `8.4.2` Compile-time blocks | `comptime { ... }` for arbitrary compile-time code |
|
||||
| `8.4.3` Static assertions | `static_assert(cond, msg)` for compile-time checks |
|
||||
| `8.4.4` Generated code | `#emit` for compile-time code generation |
|
||||
| Task | Status | Details |
|
||||
|------|--------|---------|
|
||||
| `8.4.1` `const` functions | 🔄 | `const func` syntax parsed (AST field `declFuncConst`), compile-time evaluation not implemented |
|
||||
| `8.4.2` Compile-time blocks | ⏳ | `comptime { ... }` for arbitrary compile-time code |
|
||||
| `8.4.3` Static assertions | ⏳ | `static_assert(cond, msg)` for compile-time checks |
|
||||
| `8.4.4` Generated code | ⏳ | `#emit` for compile-time code generation |
|
||||
|
||||
```bux
|
||||
const func Factorial(n: int) -> int {
|
||||
@@ -594,17 +637,17 @@ func Main() -> int {
|
||||
|
||||
## Milestones Summary
|
||||
|
||||
| Milestone | Phase | Success Criteria |
|
||||
|-----------|-------|------------------|
|
||||
| **M0** | 0 ✅ | `bux check` lexes source |
|
||||
| **M1** | 1 ✅ | All Rux test files parse |
|
||||
| **M2** | 2 ✅ | Type-checker rejects invalid programs |
|
||||
| **M3** | 3 ✅ | HIR lowering works for all constructs |
|
||||
| **M4** | 5A ✅ | `bux run` produces working binary via C transpiler |
|
||||
| **M5** | 6 ✅ | Can write compiler-adjacent tools in Bux |
|
||||
| **M6** | 7 | **Self-hosted**: Bux compiler builds itself |
|
||||
| **M7** | 8 | Result/Option, ownership, concurrency shipped |
|
||||
| **M8** | 9 | Package manager + LSP + formatter shipped |
|
||||
| Milestone | Phase | Status | Success Criteria |
|
||||
|-----------|-------|--------|------------------|
|
||||
| **M0** | 0 | ✅ | `bux check` lexes source |
|
||||
| **M1** | 1 | ✅ | All Rux test files parse |
|
||||
| **M2** | 2 | ✅ | Type-checker rejects invalid programs |
|
||||
| **M3** | 3 | ✅ | HIR lowering works for all constructs |
|
||||
| **M4** | 5A | ✅ | `bux run` produces working binary via C transpiler |
|
||||
| **M5** | 6 | ✅ | Can write compiler-adjacent tools in Bux (18 examples) |
|
||||
| **M6** | 7 | ✅ | **Self-hosted**: `buxc2` (Bux) compiles via `buxc` (Nim) — 88KB working binary |
|
||||
| **M7** | 8 | 🔄 | Result/Option/`?`/`!` done; ownership syntax parsed; CTFE syntax parsed |
|
||||
| **M8** | 9 | ⏳ | Package manager + LSP + formatter shipped |
|
||||
|
||||
---
|
||||
|
||||
@@ -621,21 +664,31 @@ func Main() -> int {
|
||||
|
||||
---
|
||||
|
||||
## Next Immediate Steps ✅ (Completed 2026-05-31)
|
||||
## Next Immediate Steps (Updated 2026-05-31)
|
||||
|
||||
1. ✅ **Inferred generic function calls** — `Max(10, 20)` instead of `Max<int>(10, 20)`
|
||||
2. ✅ **`extend Box<T>` syntax** — Parser support for generic impl blocks
|
||||
3. ✅ **Std::String improvements** — Slicing, trimming, contains, StringBuilder
|
||||
4. ✅ **Std::Map generic** — `Map<K,V>` with generic keys and values (value-type keys)
|
||||
5. ✅ **Self-hosting audit** — See Phase 6.5 below
|
||||
### Completed Today
|
||||
1. ✅ **Self-hosting audit** — Phase 6.5: all 14 Nim files analyzed, Bux readiness assessed
|
||||
2. ✅ **All 14 modules ported to Bux** — 4094 LOC in `src_bux/`
|
||||
3. ✅ **Generic type inference** — `Max(10, 20)` works without explicit type args
|
||||
4. ✅ **`extend Box<T>` syntax** — Generic impl blocks
|
||||
5. ✅ **String stdlib** — Slicing, trimming, contains, StringBuilder
|
||||
6. ✅ **Generic Map\<K,V\>** — Value-type keys with strcmp
|
||||
7. ✅ **`!` unwrap operator** — Parser + sema + HIR + C backend
|
||||
8. ✅ **`@[Checked]` + `&T` + `own` syntax** — Ownership syntax parsing
|
||||
9. ✅ **`const func` syntax** — CTFE function declarations parsed
|
||||
10. ✅ **Std::Math** — Full module with C runtime wrappers
|
||||
|
||||
### Next Actions (Priority order)
|
||||
### Current Blockers (Phase 7.9 Dogfooding)
|
||||
|
||||
1. **StringMap** — `Map<String, V>` with strcmp-based key comparison (blocker #1)
|
||||
2. **String split/join** — `String_Split(s, sep)`, `String_Join(parts, sep)` for parsing
|
||||
3. **String formatting** — Simple `String_Format(pattern, args...)` or `sb.Append(...)` pattern
|
||||
4. **File I/O** — `readFile`, `writeFile`, `fileExists` via C stdio
|
||||
5. **Begin porting lexer** — Start with `token.bux` + `lexer.bux` (most self-contained modules)
|
||||
**Phase 7.9 is COMPLETE** — `buxc2` builds and runs successfully.
|
||||
|
||||
### Next Actions (Priority Order)
|
||||
|
||||
1. **Phase 7.10** — Bootstrap loop: use `buxc2` to compile itself → `buxc3`, compare output
|
||||
2. **Expand `buxc2` capabilities** — Currently compiles but doesn't fully process all Bux features
|
||||
3. **Add missing examples to Makefile** — `extend_generic`, `generic_infer`, `generic_infer2`, `strings2` (already added)
|
||||
4. **Phase 8** — Advanced features: ownership checker, CTFE evaluation, string interpolation
|
||||
5. **Phase 9** — Ecosystem: package manager, LSP, formatter
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user