← Werkbank SPECIFICATION · .RL v0.4 v0.4.0 DOI: 10.5281/zenodo.23722094

Rul (.rl) v0.4 Binaire Specificatie — 128-Bit ISA & O(N) Verifier

Officiële binaire layoutspecificatie van Rul (.rl) v0.4: 64-byte RulHeader, 16-byte ArenaDescriptor, 16-byte ProofEntry, 128-bit NodeFrame over 29 opcodes en single-pass O(N) verificatieregels.

[0x01] CORE EQUATION

Artifact (.rl) = Algorithm + Schedule + Proof

Elk uitvoerbaar Rul-programma is een platte binaire .rl-image uitgelijnd op grenzen van 16 en 64 bytes voor directe zero-copy geheugenmapping (mmap). De kern-uitvoeringsengine bevat nul tekstuele lexers of AST-parsers.

1. Binair Eerst

Verliesvrije bidirectionele .rls <-> .rl conversie in ~8.8 µs aan de grens via src/transpiler.rs.

2. Topologische SSA-DAG

Elke instructienode i mag alleen verwijzen naar operanden strikt < i, wat beëindiging garandeert.

3. Scheiding Veiligheid + Intentie

Laag 1 bewijst geheugen-/bereikveiligheid in 5.78 ns/node; Laag 2 verifieert AssertContract & rul trace.

[0x02] SECTION 1 OF .RL

RulHeader (64 Bytes, Uitgelijnd op Cachelijn)

BYTE-OFFSETVELDTYPEBESCHRIJVING
0..8magic[u8; 8]Canonieke magische handtekening: b"RUL\x00\x01\x00\x00\x00"
8..16graph_hashu6464-bit FNV-1a integriteitshash over Arena-, Proof- en Node-secties
16..24capability_masku64Hardware I/O-sandboxmasker (0x00 = Pure Compute, 0x01 = NetRing, 0x02 = StorageDMA, 0x04 = GpuDispatch)
24..28arena_countu32Aantal 16-byte ArenaDescriptor-items
28..32proof_countu32Aantal 16-byte ProofEntry grenscertificaten
32..36node_countu32Aantal 128-bit (16-byte) NodeFrame-instructies
36..40output_nodeu32Op 0 gebaseerde index van de primaire uitvoer-SSA-node
40..64reserved[u8; 24]Met nullen gevulde opvulling die de header uitlijnt op een CPU-cachelijn van 64 bytes
[0x03] SECTIONS 2 & 3 OF .RL

ArenaDescriptor (16 Bytes) & ProofEntry (16 Bytes)

BYTE-OFFSETArenaDescriptorTYPEBESCHRIJVING
0..4arena_idu32Kolom-Arena-identificatie (0 .. arena_count - 1)
4..8element_countu32Homogene kolomlengte (Shape Length)
8type_laneu8Elementtype & SIMD-baanbreedte (bijv. 0x18 = f64x8)
9mutabilityu80 = Onveranderlijke Invoer | 1 = Lineaire Muteerbare Regio
10..12alignmentu16Vereiste byte-uitlijning (64 bytes voor AVX-512 / cachelijn)
12..16initial_versionu32Initiële AffineToken-versie (begint bij 1)
BYTE-OFFSETProofEntryTYPEBESCHRIJVING
0..2rule_kindu161 = SliceBounds (lo <= hi <= len) | 2 = GatherIndexInBounds (max_idx <= target_len)
2..4target_arenau16Doel-Arena-ID strikt gebonden aan operand origin_arena
4..8bound_lou32Niet-negatieve ondergrens van index
8..12bound_hiu32Bovengrens <= effective_target_len
12..16witness_nodeu32Getuige SSA-indexnode (in_b voor Gather)
[0x04] SECTION 4 OF .RL

128-Bit NodeFrame Layout (16 Bytes)

Algoritmestrook (Wat te berekenen: Opcode / Operanden) Schemastrook (Hoe uit te voeren: SIMD / MultiCore) Bewijsstrook (Veiligheid: Versieticket / Grenzen)
NODE #3 ($n3) node $n3 = Mul f64x8 fg=1 pol=simd proof=0 tok=pure a=$n0 b=$n0
16 BYTES = 128 BITS
8-BIT REGISTEROVERZICHT · BYTE 2 (b16..b23) 0x12
0 2^7
0 2^6
0 2^5
1 2^4
0 2^3
0 2^2
1 2^1
0 2^0
Veld: schedule_hint Type: u8
✓ O(N) Verifier-invariant Gecontroleerd bij het Laden (~5.78 ns) (fusion_group << 4) | exec_policy

Orthogonale hardware-schedule byte: het muteren van 0x11 (SimdStream) -> 0x12 (MultiCore) wijzigt de CPU-uitvoering zonder veiligheidsbewijzen aan te tasten.

Node #3: Elementgewijs 8-baans vectorkwadraat ($n0 * $n0) gefuseerd in L1-cacheregisters zonder tussenliggende heap-allocatie.
[0x05] 29-OPCODE ISA (v0.4.0)

Volledige Instructieset van 29 Opcodes

HEXOPCODECATEGORIESEMANTIEKBESCHRIJVING
0x01ArenaInputMemory & ArenaArenaDescriptor[in_a] -> ColumnLaad kolom-slice uit ArenaDescriptor[in_a] met ReadLease.
0x02ConstF64Memory & Arenain_a | (in_b << 32) -> Scalar f64Directe 64-bit IEEE-754 drijvende-komma scalaire constante.
0x03ArenaSliceMemory & ArenaSlice(in_a, ProofEntry[proof_idx]) -> ColumnZero-copy sub-slice van kolom in_a gecertificeerd door ProofEntry.
0x04ArenaMutateMemory & ArenaMutate(Arena[in_a], in_b) -> ver + 1Lineaire in-place mutatie die AffineToken consumeert (ver -> ver + 1).
0x10AddArithmetic & Mathout[i] = a[i] + b[i]Elementgewijze SIMD-optelling (VADDPD).
0x11SubArithmetic & Mathout[i] = a[i] - b[i]Elementgewijze SIMD-aftrekking (VSUBPD).
0x12MulArithmetic & Mathout[i] = a[i] * b[i]Elementgewijze SIMD-vermenigvuldiging (VMULPD).
0x13DivArithmetic & Mathout[i] = a[i] / b[i]Elementgewijze IEEE-754 SIMD-deling (VDIVPD).
0x14CmpGtPredicate & Maskmask[i] = a[i] > b[i]Branchless groter-dan predicaatmasker (VCMPPD).
0x15SelectZeroPredicate & Maskout[i] = mask[i] ? val[i] : 0.0Branchless geprediceerde selectie die gemaskeerde banen op nul zet (VANDPD).
0x16MinArithmetic & Mathout[i] = min(a[i], b[i])Branchless elementgewijs minimum (VMINPD).
0x17MaxArithmetic & Mathout[i] = max(a[i], b[i])Branchless elementgewijs maximum (VMAXPD).
0x18CmpLtPredicate & Maskmask[i] = a[i] < b[i]Branchless kleiner-dan predicaatmasker.
0x19CmpEqPredicate & Maskmask[i] = a[i] == b[i]Branchless gelijkheidspredicaatmasker.
0x1AAbsArithmetic & Mathout[i] = |a[i]|Branchless absolute waarde via wissen van IEEE-754 tekenbit.
0x1BSqrtArithmetic & Mathout[i] = sqrt(a[i])Hardware SIMD-vierkantswortel (VSQRTPD).
0x1CFloorArithmetic & Mathout[i] = floor(a[i])Branchless afronding richting -Oneindig (VROUNDPD).
0x1DCeilArithmetic & Mathout[i] = ceil(a[i])Branchless afronding richting +Oneindig (VROUNDPD).
0x1ELnArithmetic & Mathout[i] = ln(a[i])Elementgewijze natuurlijke logaritme-stencil.
0x1FExpArithmetic & Mathout[i] = exp(a[i])Elementgewijze natuurlijke exponentiële stencil.
0x20FilterCompactReduction & CompactionCompact(mask=in_a, vals=in_b)Stroomcompactie die overeenkomende elementen aaneengesloten verpakt.
0x21ReduceSumReduction & Compactionsum(in_a) -> Scalar f64Horizontale somreductie met 8 accumulatoren naar scalair.
0x22ReduceMaxReduction & Compactionmax(in_a) -> Scalar f64Horizontale maximumreductie naar scalair.
0x23GatherReduction & Compactiontarget[indices[i]] (proof_idx > 0)Gecertificeerde indirecte geïndexeerde gather ondersteund door ProofEntry.
0x24ReduceMinReduction & Compactionmin(in_a) -> Scalar f64Horizontale minimumreductie naar scalair.
0x25MaskAndPredicate & Maskmask[i] = a[i] && b[i]Bitgewijze booleaanse maskerconjunctie.
0x26MaskOrPredicate & Maskmask[i] = a[i] || b[i]Bitgewijze booleaanse maskerdisjunctie.
0x30RingEnqueueHardware & ContractEnqueue(in_a) [Requires CAP_NET_RING]Door capabilities beveiligde hardware-ringbufferuitvoer.
0x40AssertContractHardware & ContractAssert(!is_nan(in_a) && is_finite(in_a))Runtime-domeincontract dat eindige, niet-NaN uitvoer verifieert.
[0x06] STATIC VERIFICATION (~5.78 NS/NODE)

Vier Single-Pass O(N) Lineaire Verificatieregels

1. Topologische SSA-Regel

Elke node op index i moet voldoen aan in_a < i en in_b < i, wat cycli wiskundig voorkomt.

2. Lineair Eigendomsbehoud

ReadLease(a, ver) controleert live_version[a] == ver. AffineConsume(a, ver) controleert muteerbaarheid en verhoogt live_version[a] via checked_add(1).

3. Oorsprongsgebonden Verfijningsbewijs

ArenaSlice en Gather verifiëren ProofEntry.target_arena == origin_arena en bound_lo <= bound_hi <= effective_target_len.

4. Zero-Trust CapabilityMask

Hardware I/O-opcodes (0x30 RingEnqueue) vereisen het overeenkomstige bit in RulHeader.capability_mask of worden vóór uitvoering geweigerd.