summaryrefslogtreecommitdiffstats
path: root/NEWS
blob: b8c0e1a3c65ca63d0729ec0d1fa449370d88da59 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#+STARTUP: indent showall                       -*- org -*-

* 0.3.0 - <2012-08-13 Mon>

This release is is heavily based on the work of Miloslav Trmač
<mitr@redhat.com>, 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.