Skip to main content

Module parser

Module parser 

Source
Expand description

Zero-copy parser for AION v2 file format

This module provides efficient, allocation-free parsing of AION v2 binary files using the zerocopy crate. It supports both in-memory and memory-mapped file access.

§Format Overview (RFC-0002)

┌─────────────────────────────────────┐
│  FILE HEADER (256 bytes)            │ ← Zero-copy parsed
├─────────────────────────────────────┤
│  ENCRYPTED RULES (variable)         │ ← Slice reference
├─────────────────────────────────────┤
│  VERSION CHAIN (152 bytes/entry)    │ ← Slice reference
├─────────────────────────────────────┤
│  SIGNATURES (112 bytes/entry)       │ ← Slice reference
├─────────────────────────────────────┤
│  AUDIT TRAIL (80+ bytes/entry)      │ ← Slice reference
├─────────────────────────────────────┤
│  STRING TABLE (variable)            │ ← Slice reference
├─────────────────────────────────────┤
│  FILE INTEGRITY HASH (32 bytes)     │ ← Slice reference
└─────────────────────────────────────┘

§Zero-Copy Benefits

  • No allocations: Direct byte slice references
  • Memory-mapped I/O: OS-level caching and lazy loading
  • Fast random access: Jump to any section instantly
  • Minimal overhead: ~100ns to parse header vs ~10µs with serde

§Usage

§In-Memory Parsing

use aion_context::parser::AionParser;

let data = std::fs::read("file.aion").map_err(|e| aion_context::AionError::FileReadError {
    path: "file.aion".into(),
    source: e,
})?;
let parser = AionParser::new(&data)?;

// Zero-copy header access
let header = parser.header();
println!("File version: {}", header.current_version());

// Zero-copy section access
let string_table_bytes = parser.string_table_bytes()?;

§Memory-Mapped Parsing

use aion_context::parser::MmapParser;

let parser = MmapParser::open("large_file.aion")?;

// OS handles memory management
let header = parser.header();
let versions = parser.version_chain_bytes()?;

Structs§

AionParser
Zero-copy parser for AION v2 files
FileHeader
File header structure (256 bytes, RFC-0002 Section 3.1)
MmapParser
Memory-mapped file parser for large files

Constants§

FORMAT_VERSION
Current file format version
HASH_SIZE
File integrity hash size (BLAKE3)
HEADER_SIZE
Header size in bytes (fixed)
MAGIC
Magic number for AION v2 files: “AION” (0x41494F4E)
SIGNATURE_ENTRY_SIZE
Signature entry size in bytes (fixed)
VERSION_ENTRY_SIZE
Version chain entry size in bytes (fixed)