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