跳转到主要内容

Rapid YAML - 一个用于解析和生成YAML的库,并且速度快

项目描述

Rapid YAML

MIT Licensed release Documentation Status

PyPI Gitter

Codecov

或者简称ryml。ryml是一个用于解析和生成YAML的C++库,速度快,可以在从x64到无操作系统的裸机芯片上运行。 (如果您想在程序中使用YAML树作为配置树并具有覆盖功能,请查看 c4conf).

ryml可以解析只读和原位源缓冲区;结果的数据节点仅包含源缓冲区的子范围的视图。没有进行字符串复制或重复,也没有使用虚拟函数。数据树是一个基于索引的扁平结构,存储在一个数组中。序列化仅在您的直接请求下发生,在解析/生成之前。内部,数据树表示形式仅存储字符串视图,不了解类型,但每个节点都可以有YAML类型标签。ryml使得读取和修改数据树变得简单快捷。

ryml 可作为单个头文件使用,或通过 cmake 作为简单的库使用 — 无论是单独使用(例如:构建→安装→find_package())还是与您的项目一起使用(例如:使用 add_subdirectory())。(以下为示例。)

ryml 可以使用自定义的全局和每树内存分配器和错误处理回调,并且对异常不敏感。ryml 为分配器(使用 std::malloc())和错误处理程序(使用异常、longjmp()std::abort())提供了默认实现,但您可以取消选择并提供自己的内存分配和例如异常抛出回调。

ryml 不依赖于 STL,即它不将其任何标准容器用作其数据结构的一部分),但可以使用可选头文件将这些容器序列化和反序列化到数据树中。ryml 附带 c4core,这是一个小型 C++ 实用程序多平台库。

ryml 使用 C++11 编写,并且可以与以下编译器干净地编译:

  • Visual Studio 2015 及更高版本
  • clang++ 3.9 及更高版本
  • g++ 4.8 及更高版本
  • Intel 编译器

ryml 的 API 文档可在 ReadTheDocs 上找到。

ryml 在 Linux、Windows 和 MacOS 上进行了广泛的单元测试,并可在 GitHub Actions 上使用。测试涵盖了 x64、x86、wasm(emscripten)、arm、aarch64、ppc64le 和 s390x 架构,并包括使用以下内容分析 ryml:

  • valgrind
  • clang-tidy
  • gcc/clang sanitizers
    • 内存
    • 地址
    • 未定义行为

ryml 还在 裸机 上运行,并在 RISC-V 架构 上运行。这两者都尚未实现 CI 动作以进行持续验证,但 ryml 已在这些环境中得到验证。

ryml 在 Python 中可用,并且可以通过 emscripten 非常容易地编译到 JavaScript(以下为示例)。

有关详细信息,请参阅 变更日志路线图

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

此版本没有提供源分布文件。请参阅有关 生成分布存档 的教程。

构建分布

rapidyaml-0.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (224.3 KB 查看哈希值

上传时间 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 查看哈希值

上传于 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 查看哈希值)

上传于 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 查看哈希值)

上传于 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 查看哈希值)

上传于 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 查看哈希值)

上传于 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 查看哈希值)

上传于 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 查看哈希值)

上传于 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 查看哈希值)

上传于 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 查看哈希值)

上传于 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 查看哈希值)

上传于 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 查看哈希)

上传于 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 查看哈希)

上传于 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 查看哈希)

上传于 CPython 3.6m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

由以下支持