fkYAML version 0.3.12
Summary
This release adds some basic_node APIs to get/set node attributes for more secure backwards compatibilities in future releases. Because of that, some existing APIs have been deprecated (see the list down below). It's recommended for users to replace deprecated API usages with new APIs.
Furthermore, relatively large refactoring has been made for better performance and more flexible node attribute configurations (just preparation for now, but will be added within a few coming releases). As a result, deserialization performance has increased. See the Benchmarking section in README.md for details.
Last but not least, several bugs have also been resolved in deserialization, and active C++ standard is now correctly detected at compile time when using MSVC compilers where __cplusplus
macro doesn't hold a correct value by default.
What's Changed
✨ New Features
- Add node_type/yaml_version_type enum class APIs by @fktn-k in #388
- In this PR, the following APIs has been deprecated. Although they still work as before except for compile-time deprecation warnings, it's highly recommended to replace their usages with new APIs since they are planned to be removed in v0.4.0. See the Deprecation notes in each deprecated API reference page for migration guides.
fkyaml::basic_node::node_t
- Replace with:
fkyaml::node_type
- Replace with:
fkyaml::basic_node::basic_node(const fkyaml::basic_node::node_t)
- Replace with:
fkyaml::basic_node::basic_node(const fkyaml::node_type)
- Replace with:
fkyaml::basic_node::node_t fkyaml::basic_node::type()
- Replace with:
fkyaml::basic_node::get_type()
- Replace with:
fkyaml::basic_node::yaml_version_t
- Replace with:
fkyaml::yaml_version_type
- Replace with:
fkyaml::basic_node::yaml_version_t fkyaml::basic_node::get_yaml_version()
void fkyaml::basic_node::set_yaml_version(const fkyaml::basic_node::yaml_version_t)
- In this PR, the following APIs has been deprecated. Although they still work as before except for compile-time deprecation warnings, it's highly recommended to replace their usages with new APIs since they are planned to be removed in v0.4.0. See the Deprecation notes in each deprecated API reference page for migration guides.
⚡ Improvements
- Improve UTF encoding detection by @fktn-k in #386
- Refactor node attributes management by @fktn-k in #389
- Refactor lexical analysis by @fktn-k in #390
- Improve conversion from scalars to native types by @fktn-k in #391
- Reduce string copies in parse by @fktn-k in #394
- Use likely/unlikely if available by @fktn-k in #395
🐛 Bug Fixes
- Fix detecting invalid contents of block scalar headers by @fktn-k in #387
- Use _MSVC_LANG macro when compiled with MSVC for C++ standard detection by @fktn-k in #392(#392)
- Parse +.inf as the positive float infinity by @fktn-k in #393
Full Changelog: v0.3.11...v0.3.12