Skip to main content

Rapid YAML - a library to parse and emit YAML, and do it fast

Project description

Rapid YAML

MIT Licensed release Documentation Status

PyPI Gitter

Codecov

Or ryml, for short. ryml is a C++ library to parse and emit YAML, and do it fast, on everything from x64 to bare-metal chips without operating system. (If you are looking to use your programs with a YAML tree as a configuration tree with override facilities, take a look at c4conf).

ryml parses both read-only and in-situ source buffers; the resulting data nodes hold only views to sub-ranges of the source buffer. No string copies or duplications are done, and no virtual functions are used. The data tree is a flat index-based structure stored in a single array. Serialization happens only at your direct request, after parsing / before emitting. Internally, the data tree representation stores only string views and has no knowledge of types, but of course, every node can have a YAML type tag. ryml makes it easy and fast to read and modify the data tree.

ryml is available as a single header file, or it can be used as a simple library with cmake -- both separately (ie build->install->find_package()) or together with your project (ie with add_subdirectory()). (See below for examples).

ryml can use custom global and per-tree memory allocators and error handler callbacks, and is exception-agnostic. ryml provides a default implementation for the allocator (using std::malloc()) and error handlers (using using either exceptions, longjmp() or std::abort()), but you can opt out and provide your own memory allocation and eg, exception-throwing callbacks.

ryml does not depend on the STL, ie, it does not use any std container as part of its data structures), but it can serialize and deserialize these containers into the data tree, with the use of optional headers. ryml ships with c4core, a small C++ utilities multiplatform library.

ryml is written in C++11, and compiles cleanly with:

  • Visual Studio 2015 and later
  • clang++ 3.9 and later
  • g++ 4.8 and later
  • Intel Compiler

ryml's API documentation is available at ReadTheDocs.

ryml is extensively unit-tested in Linux, Windows and MacOS. The tests cover x64, x86, wasm (emscripten), arm, aarch64, ppc64le and s390x architectures, and include analysing ryml with:

  • valgrind
  • clang-tidy
  • gcc/clang sanitizers:
    • memory
    • address
    • undefined behavior

ryml also runs in bare-metal, and RISC-V architectures. Both of these are pending implementation of CI actions for continuous validation, but ryml has been proven to work there.

ryml is available in Python, and can very easily be compiled to JavaScript through emscripten (see below).

See also the changelog and the roadmap.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

rapidyaml-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (224.3 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

rapidyaml-0.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (229.9 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

rapidyaml-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (224.4 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

rapidyaml-0.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (230.1 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

rapidyaml-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (224.3 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

rapidyaml-0.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (230.1 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

rapidyaml-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (224.3 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

rapidyaml-0.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (229.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

rapidyaml-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (224.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

rapidyaml-0.7.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (229.5 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

rapidyaml-0.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (224.3 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

rapidyaml-0.7.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (228.9 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

rapidyaml-0.7.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (224.3 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

rapidyaml-0.7.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (228.9 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

File details

Details for the file rapidyaml-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rapidyaml-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 82f3bb5cf52b70208721fc5419aad78be1146460194507ae44b671c86a5583fc
MD5 981d0ea8984934bcf6379aa8164b6c63
BLAKE2b-256 17e5f5bba51ef5a1cede96738de3baad8df9dbf90ef4e652541339ed7a6942f2

See more details on using hashes here.

File details

Details for the file rapidyaml-0.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rapidyaml-0.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 247e568a0d6020460568acd5b5c9264fae9fcf5236018a60218156752b03608b
MD5 9feb7a3f59a183c1bfcda0448bfd2879
BLAKE2b-256 92cef411c042ab17236dcc4bd7f75834c0887d6719492dec549e3ed271c6a7fe

See more details on using hashes here.

File details

Details for the file rapidyaml-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rapidyaml-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7ed8a9343a93a4e50d810eb7de82d29c262f476b54e1d99b64ab09b592e4eb92
MD5 8211e4d21c5be55018615dca7120f138
BLAKE2b-256 aa724e44af32ea6ca848efe77c6d3e7e476a4aed05bc9e269a69974ebd46618d

See more details on using hashes here.

File details

Details for the file rapidyaml-0.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rapidyaml-0.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 4d1904dfac3b0a154a368bab07ab148fbba8feaa90f7a59b586e69afa596a7d5
MD5 0d283139860a1b29a390e7dc4548e348
BLAKE2b-256 fa5b19b28c378ab4eef4b9161c64c943a06452f9639b6aea2fac2245778e49fb

See more details on using hashes here.

File details

Details for the file rapidyaml-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rapidyaml-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 30b400222b8f86792b37766a2d87bc1a8984010ea0b94417d322b4ea3f40a6ee
MD5 0a5d0375a57d87a22629268ea147d719
BLAKE2b-256 704464919b0104c07d219e430256c651665955083861912dc852bf5f46aaf119

See more details on using hashes here.

File details

Details for the file rapidyaml-0.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rapidyaml-0.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 f1cc7e22fea7cdeed3bb87cd6fe2c737162cf693622738a19f6ae8366dbde50f
MD5 f3a83297ecb3d3333b6ef064a75a17e8
BLAKE2b-256 3b159b72fa9bc6298bd4b7000e74efaed09a9e340a05a3c47049c46c449d47c5

See more details on using hashes here.

File details

Details for the file rapidyaml-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rapidyaml-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a2ee83da9ef25af5d37fa521bdc0d8e2496ab23bbe1aea15e3017778572b364a
MD5 94ae4945adf01c241908a078e040d557
BLAKE2b-256 5edf8fed41d87a7e9f197e00ffb6afca4b869b2dc02d0314a48c8ba535fe7a40

See more details on using hashes here.

File details

Details for the file rapidyaml-0.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rapidyaml-0.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 d9cc0db0ea35389843a24c1d51524efc1ea1b99c42227878ca8cc540453908e4
MD5 d7ff7ace404312d16fc71242d15ff91a
BLAKE2b-256 7f44a226a8bb0a30dca78ef9b9cec9caad5d2035eb2b42307eadf731e3dd28c9

See more details on using hashes here.

File details

Details for the file rapidyaml-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rapidyaml-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1df8ffa6675c532bdea3e8fe8c5d8c06f17fa363529561d647205868d50482b8
MD5 c0b60cd4854881a20477a16519aad77c
BLAKE2b-256 31315e7e81655bc010b5a0d8477eeb40aea3e5830e24f40688751cf2d815ea65

See more details on using hashes here.

File details

Details for the file rapidyaml-0.7.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rapidyaml-0.7.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 fe88406aedd089700fd397602a94728bedda7262b488c2826e4fe6f1c8e89677
MD5 b6a1ec6c1a73094835fb4ec2dbbfba34
BLAKE2b-256 13ef2e59e81c1f55dece5c6a2e7194692c16cce7938d8fe0fd004a64e4c6678c

See more details on using hashes here.

File details

Details for the file rapidyaml-0.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rapidyaml-0.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fd42e8ca11af1ac14481c2ef86b134bc61d4344f7d02e644ac5eb13e64489b9a
MD5 b6a41487b878f594e0e35448b09e6c86
BLAKE2b-256 7d0f72e557a2ceee6445b0b75853b36cf4bc5205e9c10a87c882fc5aabb0d9c7

See more details on using hashes here.

File details

Details for the file rapidyaml-0.7.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rapidyaml-0.7.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7354dadfe62c697d4309b448c1e238aa291aa07a414bac9debfc74903294fe00
MD5 0d3ebddff3b5e7c6837bcd926deba794
BLAKE2b-256 c1cd606abb965ea33e4382a682003ea0879b3f790699ea5e6b75d528c41cd0e1

See more details on using hashes here.

File details

Details for the file rapidyaml-0.7.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rapidyaml-0.7.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1111bab50793d9ee8d50f0f3941b117e1e50490f7ee1f23878a770d7590c08b8
MD5 c063b1dc1b7d01bdd17079c2797f735e
BLAKE2b-256 8f46b1e4451d76038caa8f5ac846805b96e6e40da398a590eeeaadb1929032ed

See more details on using hashes here.

File details

Details for the file rapidyaml-0.7.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for rapidyaml-0.7.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 aa9b3fd59fb78541cec7eab2f8ec0156249d2865c3f3870e715fa5f59b902f34
MD5 0b7a012aa0c9e633a5419162d543590f
BLAKE2b-256 2808dae580ff4e1bd1b8b0d60fb66868599ccd4f7683dfe755e52a0c3451befa

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page