ABI Value Layouts
abi/value-layouts.tsv is the required ABI v1 value-layout schema for runtime
values. The ABI v1 core layout promotion covers Option, Result, Map,
Bytes, and Error in lib/core. The ABI v1 runtime descriptor layout covers
the host and application value families that cross runtime, framework, actor,
Live, process, socket, and hardware evidence boundaries.
ABI 0.1 remains the executable and object marker. ABI v1 is the value-layout
family used by core runtime values. The schema keeps executable/object ABI
markers and value-layout versions separate so runtime, core library, backend,
and documentation work cannot drift.
Schema
Each row in abi/value-layouts.tsv contains:
value: public value family.abi_version: layout-family version. Current required rows use1.tag: canonical ABI v1 runtime tag.layout: payload or pointer shape.ownership: who may mutate, retain, or release the value.errors: stable validation failure family.current_status: how the value family is represented by current runtime and
core library code.
Required Rows
| Value | ABI v1 tag | Current status |
|---|---|---|
Unit |
0 |
implemented in ABI 0.1 as payload 0, tag 0. |
Bool |
1 |
implemented in ABI 0.1 by sharing tag 1 with I64. |
I64 |
2 |
implemented in ABI 0.1 by sharing tag 1 with Bool. |
Text |
3 |
implemented in ABI 0.1 as NUL-terminated UTF-8 text. |
List |
4 |
implemented in ABI 0.1 as cons nodes. |
Option |
5 |
implemented by lib/core/option.0x0 as (list 5 "some" value) or (list 5 "none"). |
Result |
6 |
implemented by lib/core/result.0x0 as (list 6 "ok" value) or (list 6 "err" error). |
Map |
7 |
implemented by lib/core/map.0x0 as (list 7 "map" entries). |
Bytes |
8 |
implemented by lib/core/bytes.0x0 as (list 8 "bytes" raw-list). |
Error |
9 |
implemented by lib/core/error.0x0 as (list 9 "error" code message cause context). |
Path |
10 |
implemented as (list 10 "path" text kind normalized) for validated filesystem and package paths. |
Handle |
11 |
implemented as (list 11 "handle" capability id state) for linear runtime-owned generic handles. |
Protocol |
12 |
implemented as (list 12 "protocol" name version state trace) for checked protocol/session state. |
Actor |
13 |
implemented as (list 13 "actor" node name message-type) for local typed actor references. |
RemoteActor |
14 |
implemented as (list 14 "remote-actor" node address capabilities) for distributed actor references. |
Live |
15 |
implemented as (list 15 "live" session route revision payload) for generic Live runtime state and frames. |
ProcessHandle |
16 |
implemented as (list 16 "process-handle" pid status stdio) for subprocess runtime ownership. |
SocketHandle |
17 |
implemented as (list 17 "socket-handle" endpoint mode state) for socket runtime ownership. |
RuntimeError |
18 |
implemented as (list 18 "runtime-error" code message capability context) for capability-aware runtime failures. |
HardwareEvidence |
19 |
implemented as (list 19 "hardware-evidence" target artifact digest proof) for hardware and assurance evidence. |
ABI v1 Core Layout Gate
make abi-v1-layout-check verifies the ABI v1 core layout promotion:
abi/value-layouts.tsvmarks promoted core value rows as
implemented-v1-core;
- core constructors emit the ABI v1 tagged layouts;
- public accessors read both ABI v1 values and v0.1 helper values;
- docs and compatibility matrix rows identify the supported layout version;
- runtime smoke fixtures prove new layouts and compatibility readers behave the
same through public helpers.
ABI v1 Runtime Descriptor Layout Gate
Runtime descriptor values are ABI v1 tagged-list families that carry a numeric
layout tag plus a public descriptor name. Existing source-facing names such as
ActorRef, LiveTemplateRender, process descriptors, socket descriptors, and
hardware proof records remain public payload names where their modules expose
them; the ABI schema owns the canonical family tag, ownership, and validation
failure family.
make abi-layout-check verifies that all runtime descriptor rows are present in
abi/value-layouts.tsv, use implemented-v1-runtime-descriptor, have unique
tags, and are documented here. Runtime capability, actor, distributed, Live,
process, socket, and hardware gates then validate behavior against those
families through their own focused checks.
Gate
make abi-layout-check validates the schema, required rows, docs, release
notes, compatibility matrix, roadmap progress, and ADR/RFC records without
building compiler artifacts.
make abi-v1-layout-check validates implemented core layout behavior and runs
the ABI v1 runtime smoke fixture.