Files
hakorune/lang/README.md

38 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.