libfyaml v1.0.0-beta2
v1.0.0-beta2 is the second beta for the libfyaml 1.0 line. It is a
correctness and portability release and adds no new API.
Highlights:
- Fixes for the fuzzing reports gh#317 to gh#409
- Allocation failure injection in the tests, and fixes for the error paths it found
- Support for FreeBSD, NetBSD, OpenBSD, illumos, MinGW-w64, 32-bit x86 and arm, riscv64 and big-endian ppc64
- A weekly CI run of all supported platforms
- A CMake based Nix derivation
Correctness Fixes
The fuzzing reports found memory leaks, double frees, use after free,
unbounded recursion and size hint errors in the scanner, parser, document
builder, YPath and reflection code. Each report has a test.
The tests can now fail each allocation in turn, and the error paths found this
way release their events, tokens, diagnostics and inputs correctly. ASAN builds
now stop on undefined behaviour and check float casts.
Platforms
libfyaml is now built and tested on Ubuntu 22.04, 24.04 and 26.04 (x86-64 and
arm64), Debian, Fedora, Arch, Rocky Linux 9, Alpine, Nix, macOS 15 and 26,
Windows (MSVC, clang, MinGW-w64, x64, arm64 and Win32), FreeBSD, NetBSD,
OpenBSD, illumos (OmniOS), Linux i386, armv7, riscv64 and big-endian ppc64.
See "Supported platforms" in the README.
Fixes found on these platforms include misaligned allocations on 32-bit arm
and with gcc 15, plain char being unsigned on arm, riscv and ppc, fixed
mappings and default base addresses for durable arenas on the BSDs and
illumos, and FY_ALIGNED_TO on MSVC.
fy_durable_arena_gc() fails with ENOSYS where there is no atomic directory
exchange, that is, anywhere but Linux and macOS.
Build and ABI
The linker interface version moves to 8:1:6: the interfaces are unchanged.
libfyaml.pc and the man page links now handle absolute install directories.
A default.nix in the source tree builds libfyaml with CMake.
Resources
- Full changelog: v1.0.0-beta1...v1.0.0-beta2
- Python binding docs: python-libfyaml/docs/API.md