danos/library/kernel
Daniel Samson 1ff0991452
library: the envelope — one packet shape for every protocol
A protocol is now defined through envelope.Define rather than beside it.
Every packet begins with the same 16-byte prefix: a Header of {operation,
target} for a request or event, a Status for a reply. The header is folded
into each protocol's own layout, never stacked on top of it — Define walks
a spec's types and refuses one that carries a Header or Status field, so
the rule cannot be missed by reading. Operations number from 16, leaving
describe, enumerate, subscribe and unsubscribe reserved and answerable the
same way everywhere; describe the envelope answers itself, and an unknown
verb is -ENOSYS without a provider writing a line.

The size floor becomes something protocols can compile against: 256 bytes
for a call, 64 for a push, matching the kernel's own limits, checked at the
Define call with the prefix counted in. A protocol that outgrows either
fails the build with the reason and the remedy — shrink, or move the bulk
to shared memory, because packets never fragment. Events carry the header
too and number in their own space, so appending an operation can never
renumber a shipped event.

Beside it, the client half of the model: a Channel is what opening a
/protocol name yields, wrapping the endpoint capability so a program holds
a conversation rather than a handle. Nothing speaks through either yet —
the vfs protocol gains NodeKind.protocol and the convention that an open
reply may carry a capability, and that is the whole runtime change.

Suite 107/107, unchanged: P1 converts nothing.
2026-07-31 21:48:03 +01:00
..
memory iommu: DMA-region capabilities — per-grant reachability, protocol flag-day 2026-07-26 18:31:27 +01:00
build.zig library: the envelope — one packet shape for every protocol 2026-07-31 21:48:03 +01:00
build.zig.zon build: phase 1 — library domains become packages 2026-07-26 22:53:53 +01:00
channel.zig library: the envelope — one packet shape for every protocol 2026-07-31 21:48:03 +01:00
file-system.zig library: the envelope — one packet shape for every protocol 2026-07-31 21:48:03 +01:00
ipc.zig iommu: DMA-region capabilities — per-grant reachability, protocol flag-day 2026-07-26 18:31:27 +01:00
logging.zig reorg: split the runtime into library/kernel concern modules (C1) 2026-07-22 22:53:13 +01:00
process.zig reorg: split the runtime into library/kernel concern modules (C1) 2026-07-22 22:53:13 +01:00
root.zig C5: delete the runtime.zig and system.zig compatibility shims 2026-07-22 23:32:05 +01:00
service.zig reorg: split the runtime into library/kernel concern modules (C1) 2026-07-22 22:53:13 +01:00
start.zig reorg: split the runtime into library/kernel concern modules (C1) 2026-07-22 22:53:13 +01:00
system-call.zig reorg: rename library/runtime -> library/kernel (groundwork) 2026-07-22 22:27:39 +01:00
thread.zig reorg: split the runtime into library/kernel concern modules (C1) 2026-07-22 22:53:13 +01:00
time.zig reorg: split the runtime into library/kernel concern modules (C1) 2026-07-22 22:53:13 +01:00
user.ld reorg: rename library/runtime -> library/kernel (groundwork) 2026-07-22 22:27:39 +01:00