Files
hakorune/lang/README.md

38 lines
1.5 KiB
Markdown
Raw Normal View History

# Hakorune Lang Line — Rust-less Kernel (C ABI)
Scope
- This `lang/` tree hosts the script-driven C ABI kernel artifacts for Phase 20.9+.
- Goal: keep the runtime data plane callable without Rust on the hot path (Hakorune → LLVM → C ABI).
Principles
- Separation: do not mix Rust crates or cargo-specific layout under this tree.
- Ownership & ABI:
- Any `char*` returned across the ABI is owned by the callee and must be freed via `hako_mem_free()`.
- Do not mix CRT `free()` across boundaries.
- FailFast: no silent fallbacks. Missing symbols must be observable via short diagnostics.
Layout (initial)
- `c-abi/` — C shim(s) and headers for the minimal kernel surface
- `README.md` — responsibilities, build notes, platform caveats
- `include/` — public headers (mirrored or thin wrappers)
- `shims/` — libc-backed shim(s) for canaries and local testing
Build & Link (dev)
- C shim: build a shared library to satisfy symbols for the LLVM line canaries.
- Link flags example:
- Linux: `-L$(pwd)/target/release -Wl,-rpath,$(pwd)/target/release -lhako_kernel_shim`
NonGoals
- Plugin loader, HostBridge router, Box/Type system — kept in Rust.
## Selfhost Launcher (AOT)
- Build: `lang/build/build_runner.sh` → produces `lang/bin/hakorune`
- Requirements: LLVM 18 dev (`llvm-config-18`)
- Run: `lang/bin/hakorune`
Notes
- The launcher is minimal and prints a stable line `[lang-launcher] hello`.
- This binary is a stepping stone towards a full selfhosted CLI built from Hakorune scripts.