Releases: itsfoxstudio/pgm-extra-rs
v1.3.0 - Zero-Copy Serialization Support (rkyv)
About
Added zero-copy serialization support via rkyv.
Highlights
- Zero-copy deserialization — Access archived data directly without copying
- Full type coverage — All index types and collections support rkyv
- Cache-aware serialization — Hot cache is correctly skipped and rebuilt on deserialize
Features
- rkyv — Zero-copy serialization/deserialization with rkyv
Usage
[dependencies]
pgm-extra = { version = "1.2.3", features = ["rkyv"] }let set: pgm_extra::Set<u64> = (0..1000).collect();
let bytes = rkyv::to_bytes::<rkyv::rancor::Error>(&set).expect("Unable to serialize into bytes.");
let archived = rkyv::access::<rkyv::Archived<Set<u64>>, rkyv::rancor::Error>(&bytes).expect("Unable to zero-copy deserialize.");
let restored: Set<u64> = rkyv::deserialize(archived).expect("Unable to deserialize back to original type.");Links
License
MIT © 2025 Fox Studio (Oskar Cieslik)
v1.2.2 - Initial Public Release
This is the first public release of pgm-extra, a high-performance Rust implementation of the PGM-index.
About
A learned index structure based on the PGM-index paper by Ferragina & Vinciguerra. Includes drop-in replacements for BTreeSet and BTreeMap.
Highlights
• 1.7x faster queries than BTreeSet on 1M random keys
• 3x less memory overhead compared to standard B-trees
• O(log n / log ε) query time with O(n / ε) space
Features
• Index Types: Static (multi-level recursive), OneLevel (simple), Dynamic (mutable with auto-rebuild)
• Collections: Set and Map as drop-in replacements for BTreeSet / BTreeMap
• Generic: Works with all integer types (signed and unsigned)
• no_std support: Usable on embedded / WASM targets
• Optional features:
• parallel — Parallel index construction via Rayon
• simd — SIMD-accelerated linear search
• serde — Serialization / deserialization support
Installation
[dependencies]
pgm-extra = "1.2.2"Links
• Documentation
• crates.io
License
MIT © 2025 Fox Studio (Oskar Cieslik)