Skip to content

Releases: fktn-k/fkYAML

fkYAML version 0.3.14

16 Nov 15:10
Compare
Choose a tag to compare

Summary

This release adds the new header file fkyaml_fwd.hpp which provides the library's namespace macros and forward declarations of the library's API classes. With the file, you can reduce the compile time cost of including the full library header if some source files do not actually use the library features.
Furthermore, conversions of YAML nodes into arbitrary types have been much improved and a lot more STL container and scalar types have been supported for that purpose. See the API documentation page for more details.
Other changes are related to minor bug fixes in YAML scalar parsing and maintenance fixes for CI.

What's Changed

✨ New Features

⚡ Improvements

  • Support more STL types in from_node (#421, @fktn-k)
  • Clarify type restrictions of get_value() & get_value_ref() APIs (#424, @fktn-k)
    • get_value calls with unsupported types (reference, pointer and C-style array types) now emits an explicit error message.
  • Use std::unreachable() or similar compiler specific extensions for dead but necessary code (#425, @fktn-k)
    • Exclude detail::unreachable() from coverage target (#426, @fktn-k)

🐛 Bug Fixes

🤖 CI

  • Update GA workflow jobs for ubuntu24.04 (#415, @fktn-k)
  • GA workflow jobs with more AppleClang versions on macOS (#416, @fktn-k)
  • Fix somehow shadowed clang-tidy warnings (#418, @fktn-k)
  • Fix duplicate include error if clang-tidy helper file already exists (#423, @fktn-k)

Full Changelog

v0.3.13...v0.3.14

fkYAML version 0.3.13

14 Oct 07:37
Compare
Choose a tag to compare

Summary

This release includes performance improvements in parsing YAML documents and many bug fixes in both serialization and deserialization functions.
In addition, benchmarking has been improved to facilitate comparison with existing YAML libraries by adding variations in data file content.
No changes are required for migration.

What's Changed

⚡ Improvements

  • Refine benchmarking (#397, @fktn-k)
    • replaced data files for benchmarking for better comparison against existing YAML libraries
  • Optimized scalar parsing (#409, @fktn-k)
    • increased parse speed by about 5MiB/s

🐛 Bug Fixes

  • Accept % as first scalar character (#399, @fktn-k)
  • Fix compile warnings/errors when benchmarker app is compiled with msvc (#401, @fktn-k)
  • Updated natvis file (#402, @fktn-k)
    • fixed broken natvis file contents
  • Fix URI validation for tag shorthands (#403, @fktn-k)
  • Fix float scalar serialization when a float is actually an integer (#407, @fktn-k)
  • Fix infinite loops after parsing final empty block scalar (#410, @fktn-k)
  • Fix wrong parse result from single scalar document (#411, @fktn-k)

📝 Documentation

Full Changelog: v0.3.12...v0.3.13

fkYAML version 0.3.12

21 Sep 08:31
Compare
Choose a tag to compare

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

⚡ Improvements

🐛 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

fkYAML version 0.3.11

24 Aug 03:51
Compare
Choose a tag to compare

Summary

This release fixes bugs in the deserialization feature including input handling.
Furthermore, CI workflow errors when a PR from fork repository tries to acquire write permission/secrets access are also resolved, which was introduced when code formatting & coverage report sharing were made executed during the GitHub Actions workflows running for PR reviews.

What's Changed

🐛 Bug Fixes

  • Allow the document end marker omitted by @fktn-k in #374
  • #375 Fix newline code normalization in UTF-8 encoded file input by @fktn-k in #376, reported by @sndth in #375
  • Fix wrong parse result from a block sequence as a nested block mapping value by @fktn-k in #377
  • Throw exception when loading a nonexistent stream by @sndth in #379, reported by @sndth in #378
  • Fix error on parsing a floating point value which ends with a dot by @fktn-k in #382, reported by @realysy in #380

🤖 CI

  • Fix workflow errors on PRs from fork repos by @fktn-k in #383
  • Fix conditional branching for pull_request_target events by @fktn-k in #384

Full Changelog: v0.3.10...v0.3.11

fkYAML version 0.3.10

18 Aug 07:27
Compare
Choose a tag to compare

Summary

This release adds the new support for deserializing/serializing multiple YAML documents by adding new APIs (fkyaml::node::deserialize_docs() and fkyaml::node::serialize_docs() respectively). You can still call the existing APIs for deserializing/serializing a single YAML document. See the linked API document pages for details.
In addition, from this version on, Intel icpx compiler is supported and used in the CI processes. Some compiler flags are added in building the unit testing app, but no compiler specific swiches are required for the library itself.
Moreover, because the GitHub Actions runner image for macOS11 has been deprecated, the CI jobs which uses the runner image and some compiler support which depend on the runner image have been removed.
For other changes like bug fixes, see descriptions in each related issues and PRs.

What's Changed

✨ New Features

  • Support Intel icpx compiler by @fktn-k in #360
  • Support parssing multiple YAML documents by @fktn-k in #362
  • Support serializing multiple YAML docs by @fktn-k in #363

🐛 Bug Fixes

🤖 CI

Full Changelog: v0.3.9...v0.3.10

fkYAML version 0.3.9

12 Jun 14:05
Compare
Choose a tag to compare

Summary

This release adds the benchmarking tool for fkYAML and other C++ libraries for YAML.
The tool is quite experimental and will be modified and expanded in future releases.
See the benchmarking section of the README.md file for the current benchmarking scores.
Moreover, several bugs in deserialization and Windows builds have been fixed.

What's Changed

✨ New Features

⚡ Improvements

🐛 Bug Fixes

Full Changelog: v0.3.8...v0.3.9

fkYAML version 0.3.8

01 Jun 02:49
Compare
Choose a tag to compare

Summary

This release contains the new support of multiline scalars in the deserialization feature.
As described in the PR #344, the support is limited to single/double quoted styles and multiline scalar keys are being permitted as opposed to the YAML specification.
The above limitations will, of course, be resolved in future releases.
Furthermore, a number of bugs in the deserialization feature have been resolved as shown in the Bug Fixes section down below.
Last but not least, gcc14 and clang18 have been added to the supported compilers list and are now used in the GitHub Actions workflows for testing.

What's Changed

✨ New Features

  • support flow line folding for single/double quoted scalars by @fktn-k in #344

⚡ Improvements

  • Normalize newline codes in the input buffer by @fktn-k in #343

🐛 Bug Fixes

  • Fix parse error on flow containers containing child flow containers by @fktn-k in #345
  • Fix parse error on flow container keys by @fktn-k in #346
  • Fix wrong parse result from mappings containing the non-first block sequence by @fktn-k in #348 reported by @adjbcbc in #347
  • Detect errors on missing flow value separators by @fktn-k in #350
  • Fix parse error on empty flow containers by @fktn-k in #351 reported by @adjbcbc in #347

🤖 CI

  • added gcc14 & clang18 to the compiler version list for testing by @fktn-k in #349

Full Changelog: v0.3.7...v0.3.8

fkYAML version 0.3.7

16 May 15:24
Compare
Choose a tag to compare

Summary

This release includes refactoring of YAML escaping and improvement of the way of managing anchor/alias nodes.
Furthermore, several bugs found in the deserializer are resolved.

For contributors, the results of executing clang-format and amalgamation in the GitHub Actions workflows are now automatically applied to the source files.
You can, of course, still run those tools locally but that's not required from this release on.
For more details, see the CONTRIBUTING.md file.

What's Changed

⚡ Improvements

  • Separate YAML escaping/unescaping functionalities by @fktn-k in #337
  • Improve anchor alias node management by @fktn-k in #340

🐛 Bug Fixes

  • Fix false error on anchor names containing colons (:) by @fktn-k in #335
  • Escape backslash(\) + 0x09 to a horizontal tab (\t) by @fktn-k in #336
  • Fixed error on node properties for child block sequences by @fktn-k in #338
  • Fix the C6262 warning on Windows by @fktn-k in #339

🤖 CI

  • Run and apply the result of clang-format & amalagamation in GA workflows by @fktn-k in #341

Full Changelog: v0.3.6...v0.3.7

fkYAML version 0.3.6

02 May 08:13
Compare
Choose a tag to compare

Summary

This release includes enhancements to the deserializer, improving both performance and readability.
Furthermore, it resolves several issues identified in the deserializer and improves conformance to the YAML specification.

What's Changed

⚡ Improvements

🐛 Bug Fixes

  • Fixed parser crashes on a sequence right after the directives end marker by @fktn-k in #327
  • Allow backslashes in plain/single-quoted scalars by @fktn-k in #329
  • Fixed parse error on root block sequence with child block sequences by @fktn-k in #330
  • Fix parse error on block sequences with child flow style container nodes by @fktn-k in #332
  • Fixed parse error on block sequences with child block mappings split by a newline code by @fktn-k in #333

🧑‍🤝‍🧑 Community

  • Fixed no such file/directory error when running Bash scripts on Windows by @fktn-k in #328

Full Changelog: v0.3.5...v0.3.6

fkYAML version 0.3.5

27 Apr 14:35
Compare
Choose a tag to compare

Summary

This release adds the new support for serialization of YAML container key nodes either with or without tags and/or anchors.
In addition, Win32 builds are now tested during the GitHub Actions workflows.
Moreover, the performance and efficiency of Unicode handlings have been improved by refactoring the deserialization feature.

For contributors, fkYAML now depends on the Clang-Format Python distribution as the source code formatter and provides Bash/Batch scripts for running the Clang-Format and amalgamation.
For more information, see the latest CONTRIBUTING.md file.

What's Changed

✨ New Features

⚡ Improvements

🐛 Bug Fixes

  • Fix parse error on the first node which isn't a block mapping by @fktn-k in #322
  • Force LF newline codes in the amalgamated file by @fktn-k in #324

🤖 CI

  • Add workflows items to test Win32 builds by @fktn-k in #323

🧑‍🤝‍🧑 Community

  • Use Clang-Format python distribution by @fktn-k in #316
  • Set the unit test app as the Visual Studio startup project by @fktn-k in #321
  • Add Bash & Batch scripts to run clang-format & amalgamation by @fktn-k in #325

Full Changelog: v0.3.4...v0.3.5