10000 GitHub - joeymeere/jaguar: Fast, efficient binary serialization for resource-constrained environments.
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

joeymeere/jaguar

Repository files navigation

Jaguar

A lightweight binary serialization library designed for high-performance operations in resource-constrained environments like sBPF programs and embedded systems.

Installation

Run:

cargo add jaguar

Or add to your Cargo.toml:

[dependencies]
jaguar = "1.0.0"

Usage

With primitive types:

use jaguar::{JaguarSerializer, JaguarDeserializer};

let pubkey = [1u8; 32];

let mut ser = JaguarSerializer::new();
pubkey.serialize(&mut ser).unwrap();
let data = ser.finish();

let mut de = JaguarDeserializer::new(&data);
let decoded = <[u8; 32]>::deserialize(&mut de).unwrap();

With custom data structures:

use jaguar::{JaguarSerialize, JaguarDeserialize, JaguarSerializer, JaguarDeserializer};

#[derive(JaguarSerialize, JaguarDeserialize)]
struct MyData {
    authority: [u8; 32],
    amount: u64,
    bump: u8,
}

let mut ser = JaguarSerializer::new();
let instance = MyData { /* struct field values */ }.serialize(&mut ser).unwrap();

let mut de = JaguarDeserializer::new(&instance);
let value = MyData::deserialize(&de).unwrap();

Supported Types

  • Primitive integers (u8/i8, u16/i16, u64/i64, etc...)
  • Booleans
  • Floats (f32, f64)
  • Strings and byte slices
  • Arrays and vectors of supported types
  • Custom structs
  • Enums

Performance

Benchmarks on an M1 Mac Pro:

Serialization

  • SimpleStruct: ~60.04ns
  • ComplexStruct: ~1.121µs
  • Vec<SimpleStruct>: ~46.12µs
  • Vec<u8>: ~348.49ns,
  • Vec<i8>: ~19.31µs
  • Vec<u16>: ~22.01µs
  • Vec<i16>: ~20.50µs
  • Vec<u64>: ~22.14µs
  • Vec<i64>: ~20.55µs
  • Vec<bool>: ~4.07µs

Deserialization

  • SimpleStruct: ~46.7ns
  • ComplexStruct: ~1.153µs
  • Vec<SimpleStruct>: ~39.4µs
  • Vec<u8>: ~171ns,
  • Vec<i8>: ~11.36µs
  • Vec<u16>: ~9.71µs
  • Vec<i16>: ~12.09µs
  • Vec<u64>: ~9.82µs
  • Vec<i64>: ~11.92µs
  • Vec<bool>: ~4.07µs

Contributing

Contributions are welcome! Please read the Contributing Guide for details on the process for submitting pull requests.

License

This project is MIT licensed - see LICENSE for details.

About

Fast, efficient binary serialization for resource-constrained environments.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published
0