ADR-0003: Handle-Based Native ABI
Status
Accepted
Context
The OS must support multiple compatibility environments without bloating the native kernel ABI. A small, orthogonal API surface simplifies security review and long-term maintenance.
Decision
The native syscall ABI is handle-based and object-oriented:
- kernel resources are represented as typed objects
- user space references them through handles carrying explicit rights masks
- foreign ABI behavior is translated above this interface
The native kernel ABI shall not attempt to expose Linux, Win32, or Darwin syscalls directly.
Consequences
Positive:
- cleaner rights enforcement
- easier policy mediation at object boundaries
- compatibility layers can evolve independently of native ABI shape
Negative:
- compatibility runtimes must do non-trivial semantic translation
- some foreign descriptor or handle conventions may be awkward to map
Implementation notes
- initial object set should include process, thread, address space, channel, event, timer, memory object, and device endpoint
- handle transfer through IPC must preserve rights semantics