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

Coveralls 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.9.0.post2-cp313-cp313-macosx_11_0_arm64.whl (5.0 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

rapidyaml-0.9.0.post2-cp313-cp313-macosx_10_13_universal2.whl (5.0 MB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

rapidyaml-0.9.0.post2-cp312-cp312-macosx_11_0_arm64.whl (5.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rapidyaml-0.9.0.post2-cp312-cp312-macosx_10_13_universal2.whl (5.0 MB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

rapidyaml-0.9.0.post2-cp311-cp311-macosx_11_0_arm64.whl (4.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rapidyaml-0.9.0.post2-cp311-cp311-macosx_10_9_universal2.whl (4.9 MB view details)

Uploaded CPython 3.11macOS 10.9+ universal2 (ARM64, x86-64)

rapidyaml-0.9.0.post2-cp310-cp310-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rapidyaml-0.9.0.post2-cp310-cp310-macosx_10_9_universal2.whl (3.9 MB view details)

Uploaded CPython 3.10macOS 10.9+ universal2 (ARM64, x86-64)

rapidyaml-0.9.0.post2-cp39-cp39-macosx_11_0_arm64.whl (2.9 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

rapidyaml-0.9.0.post2-cp39-cp39-macosx_10_9_universal2.whl (2.9 MB view details)

Uploaded CPython 3.9macOS 10.9+ universal2 (ARM64, x86-64)

File details

Details for the file rapidyaml-0.9.0.post2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapidyaml-0.9.0.post2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 229aed9b89bd0c5b09dfb9c9a734104a018d3a74feb3968014dcbdc7cb77456d
MD5 e0a53970ad77954bcd18bdc279e12aca
BLAKE2b-256 9b62b94ce9b164413103d67061f676187a189158a42cddf70c3676f097b98985

See more details on using hashes here.

File details

Details for the file rapidyaml-0.9.0.post2-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for rapidyaml-0.9.0.post2-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 0ee200cce87f14744d072e136a8c832a04d6f9d3dbae11d96d62e48e2ed189f4
MD5 dfbbb9d68437047eedf40e70731cdbc0
BLAKE2b-256 1831e9b803f029cf275021670f6e7a371326bfcdbfeb907a89e0fe389818fe55

See more details on using hashes here.

File details

Details for the file rapidyaml-0.9.0.post2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapidyaml-0.9.0.post2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 13a9b95c7462f2371b27d79b2d1cdb63ca3c30e73eb1d3e7948f80922d4fca6a
MD5 84968e94c2267f4320d3bb496eec000b
BLAKE2b-256 8a5bd34a9eb1caf3da5ee77d8bab0ce6a8c325fff1f3c51df44c78b089913f21

See more details on using hashes here.

File details

Details for the file rapidyaml-0.9.0.post2-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for rapidyaml-0.9.0.post2-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 a75de2cc3f4b789b58b7b0f84ebe20d2c4d583525183057945d47436aca1d0c2
MD5 957b6f180a55992de48efc22bd477741
BLAKE2b-256 a58a2acc894505daa90ffd4636b70ce758f636400322967a548192c9836155b8

See more details on using hashes here.

File details

Details for the file rapidyaml-0.9.0.post2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapidyaml-0.9.0.post2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 45e2286713a5d34cfefa04666428f8c42720ce02bfdd58b5cd0b7261ef76f74a
MD5 635f587fba309c0bc85532391a5bdf1d
BLAKE2b-256 bff9759ac13438cf925781f810cfb342a53e7f7a5ea9deb1536cffd075742865

See more details on using hashes here.

File details

Details for the file rapidyaml-0.9.0.post2-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for rapidyaml-0.9.0.post2-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 e30e4b39c82fc61273d2f970a94a4232bb05af069886323f31972b40e160cba8
MD5 c9edc9d061867483c0faa87e07902f01
BLAKE2b-256 960e48cbff22736d8b29373a20e67a0e242ba0d00e6c85e0485cb402cf70e504

See more details on using hashes here.

File details

Details for the file rapidyaml-0.9.0.post2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapidyaml-0.9.0.post2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a895ef916c06246de78a024035af35c99c31d18b312434538e5e5d3616338ce8
MD5 91e5b2f54f7a40f13d039cbdddfe31b6
BLAKE2b-256 a98c092e73b73dc8fb8c630e099ca492247d909f72993238bd477b74b53d94ba

See more details on using hashes here.

File details

Details for the file rapidyaml-0.9.0.post2-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for rapidyaml-0.9.0.post2-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 1c261a52ef4a01a47efdde6eb33a4b5aadc72cd56b6e45cc54a2c988b4d2ad4d
MD5 ce6a8be45d65d911b8a1f07a97f0631a
BLAKE2b-256 b3dc77ad286f0ef62cb9a7ec243397b9c8de4b7e34078ddba1ef5b7eb804e296

See more details on using hashes here.

File details

Details for the file rapidyaml-0.9.0.post2-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapidyaml-0.9.0.post2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c61140429a0ec18013c7c43819295895e907cd772af51dfb4547fef11dbd67af
MD5 d6c054c0cf5d9d8e5c596cf544155174
BLAKE2b-256 3f492af988982994e3f8784bd00c50bf942943bdf9c7b1de61a8493102885490

See more details on using hashes here.

File details

Details for the file rapidyaml-0.9.0.post2-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for rapidyaml-0.9.0.post2-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 bc4a058f4f27b7a4a8220f44674ea8a698d91e145660a798a4f2664ce396d4e2
MD5 214c5dca5ee1933d64888afeeb2c8b95
BLAKE2b-256 25f8501498006b20a56a6ddb7e00a2893a4422692ab719565a2ec70cf0435623

See more details on using hashes here.

Supported by

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