libfyaml v1.0.0-alpha7
v1.0.0-alpha7 is a cache, emission, and Python packaging release for the 1.0
alpha line. It adds transparent parser cache support, switches generic emission
to the optimized event path by default, and improves Python wheel compatibility
through Stable ABI builds.
Modulo any show-stopper bugs found after release, this is expected to be the
last alpha before the 1.0 line moves into beta.
Highlights
- add transparent parser cache support in the parser,
fy-tool, and Python binding
- switch generic emission to the optimized generic event emitter by default
- build Python wheels against the Stable ABI (
abi3, cp310) and add ARM wheel coverage
- add keep-anchor parsing flags and Python keyword support
- fix invalid UTF-8 emission and preserve partial UTF-8 bytes for quoting
- improve C++ translation-unit compatibility across GCC, Clang, and MSVC
What Changed Since alpha6
Transparent Parse Cache
alpha7 introduces transparent parse cache support so repeated parsing
workflows can reuse parser state without changing the caller-facing model.
- add the transparent parser cache implementation
- expose transparent cache support in
fy-tool
- expose transparent parse functionality in the Python binding
- add cache documentation, benchmarks, and regression tests
Generic Emission
Generic emission gets a significant implementation update:
- add an optimized generic emission path
- switch optimized generic emission on by default
- add generic event-emitter tests
- rework token emission for reuse
- simplify generic indirect internals and export scalar-check helpers
Python Packaging
The Python binding packaging continues to tighten:
- build the extension against the Stable ABI (
abi3, cp310)
- add Ubuntu and Windows ARM binary wheels
- force extension builds to use PIC
- fix
Py_None refcount handling in document-state tag access
- convert binding error paths toward a consistent
goto err_out style
Correctness and Portability
This release also includes focused parser, emitter, and portability fixes:
- add keep-anchor parser flags and Python keyword support
- escape invalid UTF-8 in generic string emission
- preserve partial UTF-8 bytes when quoting scalars
- clone replayed stream-end tokens and cover token cleanup fuzz regressions
- make public atomic macros usable from C++ translation units on GCC, Clang, and MSVC
- add MSVC C++17 atomic fallback coverage
API Direction
The 1.0 direction is unchanged:
- core API for parser/emitter/document control
- generics for Python-like YAML/JSON value handling in C
- reflection for typed YAML <-> C struct serdes
alpha7 mainly improves repeated-parse performance workflows, generic emitter
behavior, and Python distribution compatibility.
Installation
Using CMake:
find_package(libfyaml 1.0 REQUIRED)
target_link_libraries(your_app PRIVATE libfyaml::libfyaml)
Using pkg-config:
pkg-config --cflags libfyaml
pkg-config --libs libfyaml
Resources
- README:
README.md
- Changelog:
CHANGELOG.md
- Generic guide:
doc/generics-guide.rst
- Reflection guide:
doc/reflection-guide.rst
- Examples overview:
examples/README.md
Full Changelog: v1.0.0-alpha6...v1.0.0-alpha7