#+STARTUP: indent showall -*- org -*- * 0.3.0 - <2012-08-13 Mon> This release is is heavily based on the work of Miloslav Trmač , many thanks for his contributions! ** API/ABI breaking changes *** The library was split into two variants There is now an LD_PRELOAD variant (libumberlog_preload.so), and a library applications can link to. The former has overrides for the syslog() family of functions, the latter does not. See the documentation on what other differences there are between the two! *** The LOG_UL_NODISCOVER flag was renamed to LOG_UL_NOIMPLICIT The term "discover" wasn't entirely clear, and did not correctly reflect what goes on anyway. For this reason, it was renamed to LOG_UL_NOIMPLICIT. *** New function: ul_set_log_flags() Instead of being able to set flags via (ul_)openlog(), all flags must be set from this version forward with ul_set_log_flags(). The LD_PRELOAD variant will ship with all flags enabled by default, so that automatically discovered fields can be added implicitly. *** Settings and caches are now per-process, not per-thread Settings formerly set via ul_openlog() and cached values were thread-local before, they are now per-process, to mimic the original syslog() family more closely. *** Further syslog() compatibility enhancements The ul_closelog() function does not clear the previously set flags, to be in line with how the original closelog() works. ** Features *** Performance improvements Significant performance improvements and internal code cleanups have been made, resulting in some cases over 20% speed ups. *** Support for a wider range of format strings On glibc-based platforms, the library now uses parse_printf_format(), to support a far wider range of format strings than the old code did. On other platforms, the old code is still used - but has received improvements too. ** Bugfixes *** Fixed a 1-byte heap overflow in ul_buffer_initialize *** Don't use \f in JSON, use \uNNNN instead Some parsers - notably json-c - do not recognise \f, so fall back to \uNNNN instead. *** Timestamp formatting has been fixed *** Log mask handling has also been fixed Previously, if the mask was not a pure priority mask, the library did not handle it appropriately. * 0.2.1 - <2012-05-02 Wed> ** Fixed JSON formatting for syslog() messages In version 0.2.0, when converting to formatting the JSON output ourselves, a bug creeped in that made the library emit invalid JSON when used as an LD_PRELOAD-ed library. This has been corrected. ** Facility and priority values are handled properly In all versions of the library the facility and priority handling was broken for all but the most trivial cases. This version fixes this issue aswell. ** Previous openlog() settings are cleared at closelog() time In all former versions of the library, openlog() collected a set of information that was then used by all other functions, even after closelog() was called. Closing the log should return us to the default state, so we now wrap closelog() too, and the library resets its settings to their default. ** Noticable performance increase The library was changed to try and do less memory allocations, and reuse memory instead of a malloc/free cycle. This results in a noticable performance increase under heavy load. * 0.2.0 - <2012-04-16 Mon> ** Remove the json-c dependency The library used very little from the features of json-c, as all we did was append key-value pairs, where both key and value were always strings. No nesting, no other funky stuff. It's easier to do this directly, without having to build a separate object and then serialize it into a string. For this reason, the json-c dependency was removed, and the library does the JSON formatting itself. However, json-c is still required for the test suite, but not otherwise. The result is a more compact JSON, and noticably increased speed. * 0.1.2 - <2012-04-08 Sun> ** Portability fixes Up until now, the library abused that passing va_list around without copying works on various architectures. On others, that does not. To remedy the issue, the library now parses format strings itself, and copies va_list. This makes it work on all architectures, independent on the internal implementation of va_list, and preserves both API and ABI. * 0.1.1 - <2012-04-02 Mon> ** Override __syslog_chk, even when compiled without fortification In the first release, the library only exported and overridden __syslog_chk function if it was compiled with fortification enabled. This resulted in the library not working as expected on systems where fortification was enabled (such as Debian and Fedora). This release corrects that issue, and even by default, with fortification disabled, the built library will work as expected on all supported systems. * 0.1.0 - <2012-03-26 Mon> Initial release.