You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Add channel arg to IOBuffer ops for key disambiguation
`IOBuffer` gains a per-channel dimension. Each of `io_get_info`,
`io_set_info`, `io_read`, `io_write` takes a leading `channel : G`.
The same key on different channels resolves to distinct `(idx, len)`,
and each channel owns its own data arena.
Data model: `data : HashMap G (Array G)` (per-channel arenas),
`map : HashMap (G × Array G) IOKeyInfo` (channel-keyed info map).
Idx in `IOKeyInfo` is an offset into the channel's arena.
All four ops thread the channel through every IR stage
(Source/Typed/Simple/Concrete/Bytecode), every pass
(Check/Match/Simple/Concretize/Lower/Layout), every evaluator
(BytecodeEval/SourceEval/Interpret), the parser (`Meta.lean`), and
the Rust executor + FFI wire format.
In-repo Aiur sources migrated to pass an explicit channel: existing
IxVM kernel/blake3/sha256/ingress/claim code stays on channel 0;
`ClaimHarness.addEntries` and `buildSerdeIOBuffer` seed channel-0
entries. The `read_write_io` test now exercises channel
disambiguation across channels 0/1/2: reads identical key `[0]` on
two channels with distinct arenas, writes the concatenation to a
third.
`lake test -- aiur-cross`, `lake test -- aiur`, and
`lake test -- --ignored ixvm` all pass. `cargo clippy --all-targets`
is clean.
* Use channels to separate consts/blobs/hints in IxVM
Replaces the suffix-byte hack (`addr ++ [0]` for blobs, `addr ++ [1]`
for hints) with dedicated IOBuffer channels. The key is always the
bare 32-G blake3 hash now.
- channel 0: constants
- channel 1: blobs
- channel 2: reducibility hints
`read_byte_stream` gains a leading `channel` argument so callers can
read from the arena they queried with `io_get_info`. The blob-vs-
constant detection in `load_with_deps` still relies on the empty
marker on channel 0 for blob addrs (so a single channel-0 query
distinguishes the two cases).
Also drops the dead `len == 0` fallback in `load_constant_hint`:
IOBuffer aborts on missing keys, so the harness must seed channel 2
for every defn — there is no absence-handling path to take.
0 commit comments