From 653eac9741c7728f2a87435b981737894149e002 Mon Sep 17 00:00:00 2001 From: Joao Paulo Magalhaes Date: Tue, 30 Sep 2025 20:25:00 +0100 Subject: [PATCH] v0.10.0 --- CMakeLists.txt | 2 +- changelog/0.10.0.md | 35 +++++++++++++++++++++++++++ changelog/current.md | 35 --------------------------- doc/Doxyfile | 2 +- doc/conf.py | 2 +- doc/doxy_main.md | 2 +- doc/index.rst | 2 +- doc/sphinx_is_it_rapid.rst | 18 +++++++------- doc/sphinx_other_languages.rst | 4 +-- doc/sphinx_quicklinks.rst | 6 ++--- doc/sphinx_try_quickstart.rst | 2 +- doc/sphinx_using.rst | 24 +++++++++--------- samples/quickstart.cpp | 2 +- src/c4/yml/version.hpp | 4 +-- tbump.toml | 2 +- test/test_install/CMakeLists.txt | 2 +- test/test_singleheader/CMakeLists.txt | 2 +- 17 files changed, 73 insertions(+), 73 deletions(-) create mode 100644 changelog/0.10.0.md diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f65d4b2..c981e30b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ project(ryml LANGUAGES CXX) include(./compat.cmake) -c4_project(VERSION 0.9.0 STANDALONE +c4_project(VERSION 0.10.0 STANDALONE AUTHOR "Joao Paulo Magalhaes ") diff --git a/changelog/0.10.0.md b/changelog/0.10.0.md new file mode 100644 index 00000000..440466af --- /dev/null +++ b/changelog/0.10.0.md @@ -0,0 +1,35 @@ +### Extra event handlers + +[PR#536](https://github.com/biojppm/rapidyaml/pull/536) adds a new major extra feature: a parser event handler that creates a compact representation of the YAML tree in a buffer of integers containing masks (to represent events) and offset+length (to represent strings in the source buffer). + +This handler is meant for use by other programming languages, and it supports container keys (unlike the ryml tree). You can find this handler among the other headers in the [new `src_extra` folder](https://github.com/biojppm/rapidyaml/tree/master/src_extra). + + +### Changes + +- In [PR#536](https://github.com/biojppm/rapidyaml/pull/536) the location functions were moved from `ParserEngine` to `Tree` and `ConstNodeRef`. The parser engine is now fully agnostic vis-a-vis the type of the event-handler. (The location functions in the parser engine were a legacy of the initial implementation of the parser which was meant to create only ryml trees). +- The tool ryml-yaml-events was updated to also dump integer events (and its command line options were changed to enable the different choices). + + +### Fixes + +- Fix [#524](https://github.com/biojppm/rapidyaml/issues/524) ([PR#525](https://github.com/biojppm/rapidyaml/pull/525)): problem parsing nested map value in complex map. Kudos to @MatthewSteel! +- [PR#542](https://github.com/biojppm/rapidyaml/pull/542): `\x` Unicode sequences were not decoded. Thanks to @mutativesystems! +- [PR#541](https://github.com/biojppm/rapidyaml/pull/541): `std::is_trivial` deprecated in c++26. Thanks to @P3RK4N! +- Fix [#529](https://github.com/biojppm/rapidyaml/issues/529) ([PR#530](https://github.com/biojppm/rapidyaml/pull/530)): double-quoted `"<<"` was mistaken for an inheriting reference. +- [PR#543](https://github.com/biojppm/rapidyaml/pull/543): improvements to experimental style API: + - Add getters to `NodeType`, `Tree`, `NodeRef`, and `ConstNodeRef`: + - `.key_style()`: get the style flags in a node's key + - `.val_style()`: get the style flags in a node's val + - `.container_style()`: get the style flags in a node's container + - Add style modifiers to `NodeType`, `Tree`, `NodeRef`, and `ConstNodeRef`: + - `.clear_style(bool recurse)` + - `.set_style_conditionally(bool recurse)` +- Fix argument handling in ryml-parse-emit. + + +### Thanks + +- @MatthewSteel +- @mutativesystems +- @P3RK4N diff --git a/changelog/current.md b/changelog/current.md index 440466af..e69de29b 100644 --- a/changelog/current.md +++ b/changelog/current.md @@ -1,35 +0,0 @@ -### Extra event handlers - -[PR#536](https://github.com/biojppm/rapidyaml/pull/536) adds a new major extra feature: a parser event handler that creates a compact representation of the YAML tree in a buffer of integers containing masks (to represent events) and offset+length (to represent strings in the source buffer). - -This handler is meant for use by other programming languages, and it supports container keys (unlike the ryml tree). You can find this handler among the other headers in the [new `src_extra` folder](https://github.com/biojppm/rapidyaml/tree/master/src_extra). - - -### Changes - -- In [PR#536](https://github.com/biojppm/rapidyaml/pull/536) the location functions were moved from `ParserEngine` to `Tree` and `ConstNodeRef`. The parser engine is now fully agnostic vis-a-vis the type of the event-handler. (The location functions in the parser engine were a legacy of the initial implementation of the parser which was meant to create only ryml trees). -- The tool ryml-yaml-events was updated to also dump integer events (and its command line options were changed to enable the different choices). - - -### Fixes - -- Fix [#524](https://github.com/biojppm/rapidyaml/issues/524) ([PR#525](https://github.com/biojppm/rapidyaml/pull/525)): problem parsing nested map value in complex map. Kudos to @MatthewSteel! -- [PR#542](https://github.com/biojppm/rapidyaml/pull/542): `\x` Unicode sequences were not decoded. Thanks to @mutativesystems! -- [PR#541](https://github.com/biojppm/rapidyaml/pull/541): `std::is_trivial` deprecated in c++26. Thanks to @P3RK4N! -- Fix [#529](https://github.com/biojppm/rapidyaml/issues/529) ([PR#530](https://github.com/biojppm/rapidyaml/pull/530)): double-quoted `"<<"` was mistaken for an inheriting reference. -- [PR#543](https://github.com/biojppm/rapidyaml/pull/543): improvements to experimental style API: - - Add getters to `NodeType`, `Tree`, `NodeRef`, and `ConstNodeRef`: - - `.key_style()`: get the style flags in a node's key - - `.val_style()`: get the style flags in a node's val - - `.container_style()`: get the style flags in a node's container - - Add style modifiers to `NodeType`, `Tree`, `NodeRef`, and `ConstNodeRef`: - - `.clear_style(bool recurse)` - - `.set_style_conditionally(bool recurse)` -- Fix argument handling in ryml-parse-emit. - - -### Thanks - -- @MatthewSteel -- @mutativesystems -- @P3RK4N diff --git a/doc/Doxyfile b/doc/Doxyfile index 8d407e8b..1370f5bd 100644 --- a/doc/Doxyfile +++ b/doc/Doxyfile @@ -48,7 +48,7 @@ PROJECT_NAME = rapidyaml # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 0.9.0 +PROJECT_NUMBER = 0.10.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/doc/conf.py b/doc/conf.py index 8b176bf1..5f4a6314 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -10,7 +10,7 @@ import os project = 'rapidyaml' copyright = '2018-2024 Joao Paulo Magalhaes ' author = 'Joao Paulo Magalhaes ' -release = '0.9.0' +release = '0.10.0' # -- General configuration --------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration diff --git a/doc/doxy_main.md b/doc/doxy_main.md index 554216e7..c6fbca4a 100644 --- a/doc/doxy_main.md +++ b/doc/doxy_main.md @@ -1,6 +1,6 @@ # rapidyaml -* Begin by looking at the [project's README](https://github.com/biojppm/rapidyaml/blob/v0.9.0/README.md) +* Begin by looking at the [project's README](https://github.com/biojppm/rapidyaml/blob/v0.10.0/README.md) * [Documentation page](https://rapidyaml.readthedocs.org) * Next, skim the docs for the @ref doc_quickstart sample. * Good! Now the main ryml topics: diff --git a/doc/index.rst b/doc/index.rst index da26dd9a..080db214 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -72,7 +72,7 @@ API teaser Here's a short teaser from the API quickstart overview (`see on doxygen `_ / `see full code on github -`_): +`_): .. code-block:: c++ diff --git a/doc/sphinx_is_it_rapid.rst b/doc/sphinx_is_it_rapid.rst index d9044e5f..0f5f5c47 100644 --- a/doc/sphinx_is_it_rapid.rst +++ b/doc/sphinx_is_it_rapid.rst @@ -25,11 +25,11 @@ faster. nicely as claimed here, we would definitely like to see it! Please open an issue, or submit a pull request adding the file to `bm/cases - `__, or + `__, or just send us the files. `Here’s a parsing benchmark -`__. Using +`__. Using different approaches within ryml (in-situ/read-only vs. with/without reuse), a YAML / JSON buffer is repeatedly parsed, and compared against other libraries. @@ -40,7 +40,7 @@ Comparison with yaml-cpp The first result set is for Windows, and is using a `appveyor.yml config file -`__. A +`__. A comparison of these results is summarized on the table below: =========================== ===== ======= ========== @@ -52,11 +52,11 @@ appveyor / vs2017 / Debug 6.4 0.0844 76x / 1.3% The next set of results is taken in Linux, comparing g++ 8.2 and clang++ 7.0.1 in parsing a YAML buffer from a `travis.yml config file -`__ +`__ or a JSON buffer from a `compile_commands.json file -`__. You +`__. You can `see the full results here -`__. Summarizing: +`__. Summarizing: ========================== ===== ======= ======== Read rates (MB/s) ryml yamlcpp compared @@ -89,9 +89,9 @@ So how does ryml compare against other JSON readers? Well, it may not be the fastest, but it's definitely ahead of the pack! The benchmark is the `same as above -`__, +`__, and it is reading the `compile_commands.json -`__, +`__, The ``_arena`` suffix notes parsing a read-only buffer (so buffer copies are performed), while the ``_inplace`` suffix means that the source buffer can be parsed in place. The ``_reuse`` means the data @@ -131,7 +131,7 @@ Performance emitting -------------------- `Emitting benchmarks -`__ +`__ also show similar speedups from the existing libraries, also anecdotally reported by some users `(eg, here’s a user reporting 25x speedup from yaml-cpp) diff --git a/doc/sphinx_other_languages.rst b/doc/sphinx_other_languages.rst index 6dc4a8fc..ebe09e08 100644 --- a/doc/sphinx_other_languages.rst +++ b/doc/sphinx_other_languages.rst @@ -70,11 +70,11 @@ are string views into the source buffer, and not typed. With that said, it is really fast, and once you have the tree, you can still walk over the tree to create the native python structure. Have a look at this `test file -`__ +`__ to see how the python API works, and to judge whether it may be useful to your case. -As for performance, in a `timeit benchmark `__ comparing against +As for performance, in a `timeit benchmark `__ comparing against `PyYaml `__ and `ruamel.yaml `__, ryml parses quicker by generally 100x and up to 400x: diff --git a/doc/sphinx_quicklinks.rst b/doc/sphinx_quicklinks.rst index f1ea9422..f6b9ffbb 100644 --- a/doc/sphinx_quicklinks.rst +++ b/doc/sphinx_quicklinks.rst @@ -15,11 +15,11 @@ Quick links * `Kanban board `_ -* Latest release: `0.9.0 `_ +* Latest release: `0.10.0 `_ - * `Release page [0.9.0] `_ + * `Release page [0.10.0] `_ - * `README [0.9.0] `_ + * `README [0.10.0] `_ * Since latest release (master branch): diff --git a/doc/sphinx_try_quickstart.rst b/doc/sphinx_try_quickstart.rst index 109559ea..d2ad5bfe 100644 --- a/doc/sphinx_try_quickstart.rst +++ b/doc/sphinx_try_quickstart.rst @@ -11,7 +11,7 @@ include(FetchContent) FetchContent_Declare(ryml GIT_REPOSITORY https://github.com/biojppm/rapidyaml.git - GIT_TAG v0.9.0 + GIT_TAG v0.10.0 GIT_SHALLOW FALSE # ensure submodules are checked out ) FetchContent_MakeAvailable(ryml) diff --git a/doc/sphinx_using.rst b/doc/sphinx_using.rst index f8af2c24..34ee014f 100644 --- a/doc/sphinx_using.rst +++ b/doc/sphinx_using.rst @@ -19,7 +19,7 @@ Quickstart build samples These samples show different ways of getting ryml into your application. All the samples use `the same quickstart executable -source `__, but are built in different ways, +source `__, but are built in different ways, showing several alternatives to integrate ryml into your project. We also encourage you to refer to the `quickstart docs `__, which extensively covers @@ -41,27 +41,27 @@ more about each sample: +----------------------------------------------------------------------------------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ | Sample name | ryml is part of build? | cmake file | commands | +==========================================================================================================+==================================+===================================================================================================================+==================================================================================================================+ -| `singleheader `_ | | **yes** | `CMakeLists.txt `_ | `run.sh `_ | +| `singleheader `_ | | **yes** | `CMakeLists.txt `_ | `run.sh `_ | | | | ryml brought as a single | | | | | | header, not as a library | | | +----------------------------------------------------------------------------------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ -| `singleheaderlib `_ | | **yes** | `CMakeLists.txt `_ | | `run_shared.sh `_ | -| | | ryml brought as library | | | `run_static.sh `_ | +| `singleheaderlib `_ | | **yes** | `CMakeLists.txt `_ | | `run_shared.sh `_ | +| | | ryml brought as library | | | `run_static.sh `_ | | | | but from the single header | | | +----------------------------------------------------------------------------------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ -| `singleheader-ints `_ | | **yes** | `CMakeLists.txt `_ | `run.sh `_ | +| `singleheader-ints `_ | | **yes** | `CMakeLists.txt `_ | `run.sh `_ | | | | ryml brought as a single | | | | | | header, not as a library | | | +----------------------------------------------------------------------------------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ -| `singleheaderlib-ints `_ | | **yes** | `CMakeLists.txt `_ | | `run_shared.sh `_ | -| | | ryml brought as library | | | `run_static.sh `_ | +| `singleheaderlib-ints `_ | | **yes** | `CMakeLists.txt `_ | | `run_shared.sh `_ | +| | | ryml brought as library | | | `run_static.sh `_ | | | | but from the single header | | | +----------------------------------------------------------------------------------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ -| `add_subdirectory `_ | **yes** | `CMakeLists.txt `_ | `run.sh `_ | +| `add_subdirectory `_ | **yes** | `CMakeLists.txt `_ | `run.sh `_ | +----------------------------------------------------------------------------------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ -| `fetch_content `_ | **yes** | `CMakeLists.txt `_ | `run.sh `_ | +| `fetch_content `_ | **yes** | `CMakeLists.txt `_ | `run.sh `_ | +----------------------------------------------------------------------------------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ -| `find_package `_ | | **no** | `CMakeLists.txt `_ | `run.sh `_ | +| `find_package `_ | | **no** | `CMakeLists.txt `_ | `run.sh `_ | | | | needs prior install or package | | | +----------------------------------------------------------------------------------------------------------+----------------------------------+-------------------------------------------------------------------------------------------------------------------+------------------------------------------------------------------------------------------------------------------+ @@ -71,7 +71,7 @@ As a single-header ryml is provided chiefly as a cmake library project, but it can also be used as a single header file, and there is a `tool to amalgamate -`__ +`__ the code into a single header file. The amalgamated header file is provided with each release, but you can also generate a customized file suiting your particular needs (or commit): @@ -212,7 +212,7 @@ that c4core is a submodule of the current repo. However, it is still possible to use a c4core version different from the one in the repo (of course, only if there are no incompatibilities between the versions). You can find out how to achieve this by looking at the -`custom_c4core sample `__. +`custom_c4core sample `__. CMake build settings for ryml diff --git a/samples/quickstart.cpp b/samples/quickstart.cpp index cd24bb9d..e8739ad8 100644 --- a/samples/quickstart.cpp +++ b/samples/quickstart.cpp @@ -171,7 +171,7 @@ namespace sample { * include(FetchContent) * FetchContent_Declare(ryml * GIT_REPOSITORY https://github.com/biojppm/rapidyaml.git - * GIT_TAG v0.9.0 + * GIT_TAG v0.10.0 * GIT_SHALLOW FALSE # ensure submodules are checked out * ) * FetchContent_MakeAvailable(ryml) diff --git a/src/c4/yml/version.hpp b/src/c4/yml/version.hpp index b15c5be9..a6c3df31 100644 --- a/src/c4/yml/version.hpp +++ b/src/c4/yml/version.hpp @@ -3,9 +3,9 @@ /** @file version.hpp */ -#define RYML_VERSION "0.9.0" +#define RYML_VERSION "0.10.0" #define RYML_VERSION_MAJOR 0 -#define RYML_VERSION_MINOR 9 +#define RYML_VERSION_MINOR 10 #define RYML_VERSION_PATCH 0 #include diff --git a/tbump.toml b/tbump.toml index eef89a39..c0316ab9 100644 --- a/tbump.toml +++ b/tbump.toml @@ -5,7 +5,7 @@ github_url = "https://github.com/biojppm/rapidyaml/" [version] -current = "0.9.0" +current = "0.10.0" # Example of a semver regexp. # Make sure this matches current_version before diff --git a/test/test_install/CMakeLists.txt b/test/test_install/CMakeLists.txt index 4bce3c5c..9c39eb92 100644 --- a/test/test_install/CMakeLists.txt +++ b/test/test_install/CMakeLists.txt @@ -4,7 +4,7 @@ project(ryml HOMEPAGE_URL "https://github.com/biojppm/rapidyaml" LANGUAGES CXX) include(../../ext/c4core/cmake/c4Project.cmake) -c4_project(VERSION 0.9.0 +c4_project(VERSION 0.10.0 AUTHOR "Joao Paulo Magalhaes ") diff --git a/test/test_singleheader/CMakeLists.txt b/test/test_singleheader/CMakeLists.txt index 850fc8f6..9fece159 100644 --- a/test/test_singleheader/CMakeLists.txt +++ b/test/test_singleheader/CMakeLists.txt @@ -4,7 +4,7 @@ project(ryml HOMEPAGE_URL "https://github.com/biojppm/rapidyaml" LANGUAGES CXX) include(../../ext/c4core/cmake/c4Project.cmake) -c4_project(VERSION 0.9.0 +c4_project(VERSION 0.10.0 AUTHOR "Joao Paulo Magalhaes ") # amalgamate ryml to get the single header