Title: fortify-headers 3.0.1
Date: 2026-01-05 17:30

There is a new minor release of [fortify-headers](https://git.2f30.org/fortify-headers/),
namely 3.0.1. Minor releases means no new features, only bug fixes.

The C language doesn't really have the notion of namespaces: all symbols,
except those marked as `static` are exposed. To mitigate the possibility of
collisions, it's a good practise to prefix exported symbols with an
library-specific identifier, like `xml` for libxml2 (eg. `xmlReadFile`), 
`SSL` for OpenSSL (eg. `SSL_library_init`) and so on. [Symbols starting with an
underscore followed by either an upper-case letter or another underscore are
implementation-reserved](https://en.cppreference.com/w/c/language/identifier.html).
I was a bit cocky, and assumed that since fortify-headers is kind of part of
the implementation, I could name macros `__format`, `__warning_if`, `__access`,
… Unfortunately, this lead to a collision with LLVM's libcxx, as it defines
a `__format` macro in its C++ locale header (`/usr/include/c++/v1/locale`).
This [was found](https://github.com/jvoisin/fortify-headers/issues/76) by
[Haelwenn (lanodan) Monnier](https://hacktivis.me/), when he tried to make use
of fortify-headers on Gentoo. The fix is quite straightforward: make use of a
fortify-headers specific prefix, resulting in `__fortify_format`,
`__fortify_warning_if`, `__fortify_access`.

The release is available on [github](https://github.com/jvoisin/fortify-headers/releases/tag/3.0.1),
and the tag has been pushed on [2f30](https://git.2f30.org/fortify-headers/refs.html)
as well.

