mir-ion 1.0.51

Fast, Expressive, and Easy to use Ion, JSON, Msgpack Serialization Library with optional SIMD Optimization.


To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

Dub version Dub downloads License codecov Build Status CircleCI Ion Test Status

Mir Ion

This library seeks to implement the Ion file format. We aim to support both versions of Ion (text & binary Ion), as well as providing an implementation of the format that is performant and easy-to-use.

Mir Ion serialization engine supports

Mir Ion supports JSON de/serialization out of the box. On the other hand, you may want to use another our JSON library -- Asdf. It uses the same serialization User Defined Attributes.

Benchmarks

kostya/benchmarks

ARM64

Twitter data set

Test data from nativejson-benchmark

-------------------------------------------------
Binary Ion parsing      4.32 GB/s (estimated)
     is equivalent of   11.482 GB/s for JSON

Binary Ion writing      0.517 GB/s
     is equivalent of   1.375 GB/s for JSON

JSON    -> binary Ion   0.564 GB/s

MsgPack -> binary Ion   0.707 GB/s
     is equivalent of   1.109 GB/s for JSON


Ion is 0.96% smaller then minimized JSON
   and 0.69% smaller then MsgPack
- - - - - - - - - - - - - - - - - - - - - - - - -
processed file: benchmark/twitter.json
number of iterations: 2000
os: 64bit osx
-------------------------------------------------

Kostya data et

Test data from kostya/benchmarks.

-------------------------------------------------
Binary Ion writing      0.216 GB/s
     is equivalent of   0.916 GB/s for JSON

JSON    -> binary Ion   0.331 GB/s

MsgPack -> binary Ion   0.275 GB/s
     is equivalent of   0.978 GB/s for JSON


Ion is 1.34% smaller then minimized JSON
   and 0.19% smaller then MsgPack
- - - - - - - - - - - - - - - - - - - - - - - - -
processed file: /tmp/1.json
number of iterations: 10
os: 64bit osx
-------------------------------------------------

Documentation

You can find the documentation for this library here. Additionally, for examples of the Ion format, you can check the Ion Cookbook

Exceptions

Mir Ion internals are @nogc and almost all are preallocated. If DIP1008 is enabled, then the parsing exception will contains additional information about error location in the file and last occured key.

Feature Status

  • [x] Binary Ion Value parsing and skip-scan iteration.
  • [x] Binary Ion conversions to D types.
  • [x] Binary Ion conversions from D types.
  • [x] Fast hash table for Ion Symbol Tables
  • [x] Fast CTFE Symbol Table for deserialization
  • [x] Ion Symbol Tables
  • [x] JSON to Ion
  • [x] Ion to JSON
  • [x] Text Ion to Ion
  • [x] Ion to Text Ion
  • [x] Serialization API
  • [x] Deserialization API
  • [x] Precise decimal to floating conversion (except subnormals)
  • [x] Precise floating to decimal conversion.
  • [x] Local Symbol Tables
  • [ ] Shared Symbol Tables
  • [x] Chunked JSON reader
  • [x] Chunked binary Ion Value Stream reader
  • [x] MessagePack parsing
  • [x] Ion to MessagePack
Authors:
  • Ilya Yaroshenko
  • Yannick Koechlin
Dependencies:
mir-cpuid, mir-algorithm
Versions:
2.3.1 2024-Apr-19
2.3.0 2024-Apr-19
2.2.1 2023-Sep-15
2.2.0 2023-Aug-02
2.1.9 2023-Jul-29
Show all 209 versions
Download Stats:
  • 25 downloads today

  • 160 downloads this week

  • 375 downloads this month

  • 254963 downloads total

Score:
2.9
Short URL:
mir-ion.dub.pm