feat: try/unwrap payload types, LSP format, macro paste, freestanding runtime
ci / build (ubuntu) (push) Has been cancelled
ci / unit + fmt (push) Has been cancelled
ci / examples (push) Has been cancelled
ci / goldens + tools (push) Has been cancelled
ci / apps (push) Has been cancelled
ci / selfhost smoke (push) Has been cancelled
ci / macos smoke (push) Has been cancelled
ci / windows smoke (push) Has been cancelled
ci / CI gate (push) Has been cancelled
selfhost-loop / bootstrap determinism (push) Has been cancelled

- Type `?`/`!` as Result/Option Ok payload (not always int); fix unwrap C types
- LSP 0.18 document formatting (bux fmt) + VS Code format-on-save
- Macro `:type` generics (Array_New<$t>) and operators-only tt paste
- Ship runtime_freestanding.c + BUX_RUNTIME=freestanding + smokes/examples
This commit is contained in:
2026-07-28 16:56:35 +03:00
parent db7ba1dff2
commit ec5984762b
22 changed files with 1332 additions and 68 deletions
+18 -6
View File
@@ -181,13 +181,25 @@ no-libc freestanding firmware.
| Thin runtime (no pthread/OpenSSL) | ✅ | `rt/runtime_minimal.c` |
| Static musl / distroless | ✅ | `make test-musl-static`, Dockerfiles |
| Linux multi-arch cross | ✅ | aarch64 + riscv64 smokes (SKIP without gcc) |
| True freestanding (`-ffreestanding`, no libc) | 🔬 spike | Needs custom alloc, panic, and I/O stubs |
| Cortex-M / qemu-system | 🔬 spike | Same; plus linker scripts and startup |
| True freestanding (`-ffreestanding`, no libc) | spike shipped | `rt/runtime_freestanding.c` + `BUX_RUNTIME=freestanding` |
| Cortex-M / qemu-system | 🔬 research | Needs linker scripts, startup, board UART — not in tree |
**Practical path today:** build with `BUX_RUNTIME=minimal --static --target …` for
Linux userspace on foreign ISAs; treat bare-metal as a research project that
starts from a custom `runtime_freestanding.c` (not shipped) and does **not**
import `Std::Net` / `Std::Task` / OpenSSL.
**Freestanding runtime** (`rt/runtime_freestanding.c`):
- No hosted libc: bump heap (default 256 KiB), freestanding string/arith helpers
- Weak hooks `bux_fs_write` / `bux_fs_halt` for board BSP or host overrides
- Net / Task / TLS / FS return failure stubs
- Optional `_start` when compiled with `-DBUX_FS_PROVIDE_START` (nostdlib experiments)
```bash
make test-freestanding # -ffreestanding -c + package build exit 42
BUX_RUNTIME=freestanding buxc build .
# Still uses host crt0 unless you pass -nostdlib / custom start via BUX_CFLAGS
```
**Practical path for cloud/cross:** `BUX_RUNTIME=minimal --static --target …` for
Linux userspace. Use `freestanding` only for no-libc research; do **not** import
`Std::Net` / `Std::Task` / OpenSSL on that path.
---