diff options
| author | 2026-10-12 08:46:23 +0330 | |
|---|---|---|
| committer | 2026-10-12 08:46:23 +0330 | |
| commit | ecc350ca5c2eb50be8309c5f14f8bf0d87db9a02 (patch) | |
| tree | 70e0af76a1b13affff7c6cc8aac7b3e6ef960478 /docs/design/handoff.md | |
a
Diffstat (limited to 'docs/design/handoff.md')
| -rw-r--r-- | docs/design/handoff.md | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/docs/design/handoff.md b/docs/design/handoff.md new file mode 100644 index 0000000..0b08048 --- /dev/null +++ b/docs/design/handoff.md @@ -0,0 +1,20 @@ +# implementation notes + +this note summarizes implemented language and tooling features that were previously tracked across design documents. feature details live in the project readme and examples. + +## language and library + +- struct methods and static functions support typed parameters and return types. the existing untyped form remains available. +- `src/lib/std.zc` groups helpers in structs of static functions, called with `Group.name(args)`. `Text`, `Bytes`, `Host`, `Arena` and `Buf` provide string, byte, host, arena and buffer helpers. linux `syscall` is host-only and bypasses vm checks. +- tagged enums support payload members, constructors that return owned enum pointers, and `case member(fields)` bindings in ordinary `switch` statements. omitted members produce a warning when there is no `default`. +- struct values can cross native calls on x86-64 sysv and linux arm64 aapcs64 for the interpreter, o3, llvm and jit paths described in the readme. apple arm64 remains unchecked. + +## language server + +the language server runs the compiler in check mode, so diagnostics and semantic highlighting use the same parser and symbol tables as compilation. hover supports declarations, parameters, locals, built-ins and documented keywords. it does not follow declarations reached through `include` yet. + +## optimization + +o3 remains the explicit way to request native regions; automatic tiering was dropped. llvm inlining and global copy propagation are implemented. see [tiering](tiering.md) for the rationale and [struct-by-value](struct-by-value.md) for native aggregate limits. + +the runtime memory map is generated from a preset. fixed code and compiler tables have finite capacity; the heap grows within the configured machine memory. see the project readme's memory map section for the current build controls. |
