PackageTrack
Sign in Get early access

ijson

A more memory efficient replacement for serde_json::Value

0.1.7 4.3M downloads/mo #4838 most downloaded on crates.io Diggsey/ijson

What this package is like to depend on

Last release 1 months ago

16 Jul 2026

Release timing varies

gaps range from 1 weeks to 3.2 years

Nearly every release is documented

notes for 7 of 7 stable releases

2 versions withdrawn

withdrawn after publishing

6 years old

9 releases · first in 2020

3 releases in the last 12 months

see the full history below

Release timeline

9 releases · Nov 2020 to Jul 2026
2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 9
  1. 0.1.7 16 Jul 2026
    Release notes

    What's Changed

    • Add FromIterator and serde_json conversions for IValue (#38) by @Diggsey in #39
    • Add IObject <-> serde_json::Map conversions by @Diggsey in #40
    • Add crates.io keywords and categories (#33) by @Diggsey in #41
    • Store short strings inline instead of interning them (#24) by @Diggsey in #42
    • Inline small values with a decimal number representation (#24) by @Diggsey in #43
    • Update README and changelog for the inline-value representation by @Diggsey in #44

    Full Changelog: 0.1.6...0.1.7

    Open source →
    Release notes
    • Add FromIterator<T: Into<IValue>> for IValue (collects into an array) and FromIterator<(K: Into<IString>, V: Into<IValue>)> for IValue (collects into an object), mirroring serde_json::Value.
    • Add From<serde_json::Value> for IValue and From<IValue> for serde_json::Value for smoother interoperability with serde_json.
    • Add From<serde_json::Map<String, serde_json::Value>> for IObject and the reverse, matching the existing HashMap/BTreeMap/IndexMap conversions.
    • Store small values — null, booleans, small numbers, and short strings — inline within the pointer-sized IValue, behind a widened 3-bit tag scheme. Small numbers are held as a mantissa * base^exp value (a base-2 binary float by default, so every inline number is exactly an f64), so most JSON numbers (integers, timestamps/ids, and short fractions such as 0.5 and 63.5) require no allocation or pointer indirection; only larger integers and out-of-range floats fall back to an 8-byte heap payload. Note: IString::as_str().as_ptr() is no longer stable across equal short strings, since they are no longer deduplicated to a shared allocation (value equality via == is unaffected).
    • Add an opt-in arbitrary_precision feature that stores numbers as their exact decimal value (mantissa * 10^exp inline, or a heap arbitrary-precision decimal) instead of rounding to f64. With it enabled, values such as 0.1 are kept exactly, and integers and decimals beyond f64's range and precision become representable; deserialization routes through the same parser as str::parse, so a value round-trips exactly.
    Open source →
  2. 0.1.6 18 Mar 2026
    Release notes

    Full Changelog: 0.1.5...0.1.6

    Open source →
    Release notes
    • Breaking: Remove Borrow<str> impl for IString by default. The impl violates the Borrow contract because IString hashes by pointer, not by contents, causing silent lookup failures in HashMap/HashSet when using &str keys. A broken-borrow-impl-compat feature flag is available as a temporary compatibility measure.
    Open source →
  3. 0.1.5 17 Mar 2026
    Release notes

    Full Changelog: 0.1.4...0.1.5

    • Fix soundness issue when OOM occurs
    • Implement Display for IString
    • Bump versions of dependencies (except for dashmap, which removed necessary functionality)
    Open source →
    Release notes
    • Fix potential undefined behavior on allocation failure.
    • Update dependencies.
    Open source →
  4. 0.1.4 03 Dec 2024
    Release notes

    What's Changed

    New Contributors

    Full Changelog: 0.1.3...0.1.4

    Open source →
    Release notes
    • Add optional indexmap feature to enable conversion between IObject and IndexMap.
    • Fix unsound offset calculation in internal Header layout.
    • Fix is_object typo in into_object.
    • Upgrade dashmap to 5.4.
    Open source →
  5. 0.1.3 03 Sep 2021
    Release notes
    • Add missing string de-serialization paths.
    • Update dependencies.
    Open source →
  6. 0.1.2 24 Aug 2021
    Release notes
    • Fix incorrect interning of empty string.
    Open source →
  7. 0.1.1 20 Apr 2021
    Release notes
    • Fix bounds on short integer storage.
    • Add CI and coverage measurement.
    Open source →
  8. 0.1.0 21 Nov 2020 withdrawn
    Release notes
    • Initial release: memory-efficient IValue replacement for serde_json::Value.
    • Interned strings (IString) and numbers (INumber).
    • Robin-hood hash table based IObject.
    • IArray type.
    • Full serde serialization/deserialization support.
    • From/Into conversions for common types.
    Open source →
  9. 0.0.1 19 Nov 2020 withdrawn

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive