Rapid YAML - a library to parse and emit YAML, and do it fast
Project description
Rapid YAML
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
File details
Details for the file rapidyaml-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: rapidyaml-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 224.3 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 82f3bb5cf52b70208721fc5419aad78be1146460194507ae44b671c86a5583fc |
|
MD5 | 981d0ea8984934bcf6379aa8164b6c63 |
|
BLAKE2b-256 | 17e5f5bba51ef5a1cede96738de3baad8df9dbf90ef4e652541339ed7a6942f2 |
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
- Download URL: rapidyaml-0.7.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 229.9 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 247e568a0d6020460568acd5b5c9264fae9fcf5236018a60218156752b03608b |
|
MD5 | 9feb7a3f59a183c1bfcda0448bfd2879 |
|
BLAKE2b-256 | 92cef411c042ab17236dcc4bd7f75834c0887d6719492dec549e3ed271c6a7fe |
File details
Details for the file rapidyaml-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: rapidyaml-0.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 224.4 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7ed8a9343a93a4e50d810eb7de82d29c262f476b54e1d99b64ab09b592e4eb92 |
|
MD5 | 8211e4d21c5be55018615dca7120f138 |
|
BLAKE2b-256 | aa724e44af32ea6ca848efe77c6d3e7e476a4aed05bc9e269a69974ebd46618d |
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
- Download URL: rapidyaml-0.7.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 230.1 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d1904dfac3b0a154a368bab07ab148fbba8feaa90f7a59b586e69afa596a7d5 |
|
MD5 | 0d283139860a1b29a390e7dc4548e348 |
|
BLAKE2b-256 | fa5b19b28c378ab4eef4b9161c64c943a06452f9639b6aea2fac2245778e49fb |
File details
Details for the file rapidyaml-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: rapidyaml-0.7.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 224.3 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 30b400222b8f86792b37766a2d87bc1a8984010ea0b94417d322b4ea3f40a6ee |
|
MD5 | 0a5d0375a57d87a22629268ea147d719 |
|
BLAKE2b-256 | 704464919b0104c07d219e430256c651665955083861912dc852bf5f46aaf119 |
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
- Download URL: rapidyaml-0.7.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 230.1 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f1cc7e22fea7cdeed3bb87cd6fe2c737162cf693622738a19f6ae8366dbde50f |
|
MD5 | f3a83297ecb3d3333b6ef064a75a17e8 |
|
BLAKE2b-256 | 3b159b72fa9bc6298bd4b7000e74efaed09a9e340a05a3c47049c46c449d47c5 |
File details
Details for the file rapidyaml-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: rapidyaml-0.7.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 224.3 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2ee83da9ef25af5d37fa521bdc0d8e2496ab23bbe1aea15e3017778572b364a |
|
MD5 | 94ae4945adf01c241908a078e040d557 |
|
BLAKE2b-256 | 5edf8fed41d87a7e9f197e00ffb6afca4b869b2dc02d0314a48c8ba535fe7a40 |
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
- Download URL: rapidyaml-0.7.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 229.9 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9cc0db0ea35389843a24c1d51524efc1ea1b99c42227878ca8cc540453908e4 |
|
MD5 | d7ff7ace404312d16fc71242d15ff91a |
|
BLAKE2b-256 | 7f44a226a8bb0a30dca78ef9b9cec9caad5d2035eb2b42307eadf731e3dd28c9 |
File details
Details for the file rapidyaml-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: rapidyaml-0.7.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 224.4 kB
- Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1df8ffa6675c532bdea3e8fe8c5d8c06f17fa363529561d647205868d50482b8 |
|
MD5 | c0b60cd4854881a20477a16519aad77c |
|
BLAKE2b-256 | 31315e7e81655bc010b5a0d8477eeb40aea3e5830e24f40688751cf2d815ea65 |
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
- Download URL: rapidyaml-0.7.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 229.5 kB
- Tags: CPython 3.8, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fe88406aedd089700fd397602a94728bedda7262b488c2826e4fe6f1c8e89677 |
|
MD5 | b6a1ec6c1a73094835fb4ec2dbbfba34 |
|
BLAKE2b-256 | 13ef2e59e81c1f55dece5c6a2e7194692c16cce7938d8fe0fd004a64e4c6678c |
File details
Details for the file rapidyaml-0.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: rapidyaml-0.7.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 224.3 kB
- Tags: CPython 3.7m, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd42e8ca11af1ac14481c2ef86b134bc61d4344f7d02e644ac5eb13e64489b9a |
|
MD5 | b6a41487b878f594e0e35448b09e6c86 |
|
BLAKE2b-256 | 7d0f72e557a2ceee6445b0b75853b36cf4bc5205e9c10a87c882fc5aabb0d9c7 |
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
- Download URL: rapidyaml-0.7.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 228.9 kB
- Tags: CPython 3.7m, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7354dadfe62c697d4309b448c1e238aa291aa07a414bac9debfc74903294fe00 |
|
MD5 | 0d3ebddff3b5e7c6837bcd926deba794 |
|
BLAKE2b-256 | c1cd606abb965ea33e4382a682003ea0879b3f790699ea5e6b75d528c41cd0e1 |
File details
Details for the file rapidyaml-0.7.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: rapidyaml-0.7.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 224.3 kB
- Tags: CPython 3.6m, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1111bab50793d9ee8d50f0f3941b117e1e50490f7ee1f23878a770d7590c08b8 |
|
MD5 | c063b1dc1b7d01bdd17079c2797f735e |
|
BLAKE2b-256 | 8f46b1e4451d76038caa8f5ac846805b96e6e40da398a590eeeaadb1929032ed |
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
- Download URL: rapidyaml-0.7.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 228.9 kB
- Tags: CPython 3.6m, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.9.19
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | aa9b3fd59fb78541cec7eab2f8ec0156249d2865c3f3870e715fa5f59b902f34 |
|
MD5 | 0b7a012aa0c9e633a5419162d543590f |
|
BLAKE2b-256 | 2808dae580ff4e1bd1b8b0d60fb66868599ccd4f7683dfe755e52a0c3451befa |