#core/binary

    Binary serialization utilities.

    #Types

    • BinaryWriter: Sequential binary writer with auto-growing buffer
    • BinaryReader: Sequential binary reader with position tracking

    #BinaryWriter Methods

    • write_u32(value): Write 32-bit unsigned (little-endian)
    • write_i32(value): Write 32-bit signed (little-endian)
    • write_u64(value): Write 64-bit unsigned (little-endian)
    • write_i64(value): Write 64-bit signed (little-endian)
    • write_f32(value): Write 32-bit float (IEEE 754)
    • write_f64(value): Write 64-bit float (IEEE 754)
    • write_bytes(bytes): Write raw bytes
    • to_bytes(): Get final buffer

    #BinaryReader Methods

    • read_u32(): Read 32-bit unsigned
    • read_i32(): Read 32-bit signed
    • read_u64(): Read 64-bit unsigned
    • read_i64(): Read 64-bit signed
    • read_f32(): Read 32-bit float
    • read_f64(): Read 64-bit float
    • read_bytes(n): Read n bytes
    • position(): Get current read position

    #Utilities

    • crc32(data): Compute CRC32 checksum
    • read_u32_le(data, offset): Read u32 at offset
    • write_u32_le(data, offset, value): Write u32 at offset

    BinaryReader

    pub struct BinaryReader {
    data : Bytes
    offset : Int
    }

    Binary reader for deserialization

    BinaryReader::has_more

    fn BinaryReader::has_more(self : BinaryReader) -> Bool

    Check if there are more bytes to read

    BinaryReader::new

    fn BinaryReader::new(data : Bytes) -> BinaryReader

    Create a new binary reader

    BinaryReader::peek_byte

    fn BinaryReader::peek_byte(self : BinaryReader) -> Byte

    Read the byte at the current position without advancing the cursor. Used by version-aware decoders that need to disambiguate two on-disk layouts that share a version tag but differ in their entry encoding.

    BinaryReader::position

    fn BinaryReader::position(self : BinaryReader) -> Int

    Get current read position

    BinaryReader::read_byte

    fn BinaryReader::read_byte(self : BinaryReader) -> Byte

    Read a single byte

    BinaryReader::read_bytes

    fn BinaryReader::read_bytes(self : BinaryReader, len : Int) -> Bytes

    Read len bytes. Aborts if not enough data remaining.

    BinaryReader::read_f32

    fn BinaryReader::read_f32(self : BinaryReader) -> Float

    Read a f32 value (little-endian)

    BinaryReader::read_f64

    fn BinaryReader::read_f64(self : BinaryReader) -> Double

    Read a f64 value

    BinaryReader::read_i32

    fn BinaryReader::read_i32(self : BinaryReader) -> Int

    Read an i32 value (little-endian)

    BinaryReader::read_i64

    fn BinaryReader::read_i64(self : BinaryReader) -> Int64

    Read an i64 value (little-endian)

    BinaryReader::read_u32

    fn BinaryReader::read_u32(self : BinaryReader) -> UInt

    Read a u32 value (little-endian)

    BinaryReader::read_u64

    fn BinaryReader::read_u64(self : BinaryReader) -> UInt64

    Read a u64 value (little-endian)

    BinaryReader::remaining

    fn BinaryReader::remaining(self : BinaryReader) -> Int

    Get remaining bytes count

    BinaryReader::skip

    fn BinaryReader::skip(self : BinaryReader, n : Int) -> Unit

    Skip n bytes. Aborts if not enough data remaining.

    BinaryWriter

    pub struct BinaryWriter {
    buf : FixedArray[Byte]
    len : Int
    }

    Binary writer for serialization - single buffer with grow-on-demand

    BinaryWriter::concat

    fn BinaryWriter::concat(self : BinaryWriter) -> Bytes

    Get result as Bytes (zero-copy slice)

    BinaryWriter::new

    fn BinaryWriter::new(capacity? : Int) -> BinaryWriter

    Create a new binary writer with initial capacity

    BinaryWriter::push_byte

    fn BinaryWriter::push_byte(self : BinaryWriter, value : Byte) -> Unit

    Push a single byte

    BinaryWriter::push_bytes

    fn BinaryWriter::push_bytes(self : BinaryWriter, data : Bytes) -> Unit

    Push raw bytes

    BinaryWriter::push_f32

    fn BinaryWriter::push_f32(self : BinaryWriter, value : Float) -> Unit

    Push a f32 value (little-endian)

    BinaryWriter::push_f64

    fn BinaryWriter::push_f64(self : BinaryWriter, value : Double) -> Unit

    Push a f64 value

    BinaryWriter::push_i32

    fn BinaryWriter::push_i32(self : BinaryWriter, value : Int) -> Unit

    Push an i32 value (little-endian)

    BinaryWriter::push_i64

    fn BinaryWriter::push_i64(self : BinaryWriter, value : Int64) -> Unit

    Push an i64 value (little-endian)

    BinaryWriter::push_u32

    fn BinaryWriter::push_u32(self : BinaryWriter, value : UInt) -> Unit

    Push a u32 value (little-endian)

    BinaryWriter::push_u64

    fn BinaryWriter::push_u64(self : BinaryWriter, value : UInt64) -> Unit

    Push a u64 value (little-endian)

    bytes_equal

    fn bytes_equal(a : Bytes, b : Bytes) -> Bool

    Byte-level equality comparison.

    crc32

    fn crc32(data : Bytes) -> UInt

    Compute CRC32 checksum of data

    crc32_fast

    fn crc32_fast(data : Bytes) -> UInt

    Compute CRC32 using lookup table (faster for larger data)

    crc32_verify

    fn crc32_verify(data : Bytes, expected : UInt) -> Bool

    Verify CRC32 checksum