quill v1.3.0 Release Notes
Release Date: 2020-05-13 // almost 4 years ago-
🆕 New Features
- Added option
QUILL_NO_EXCEPTIONS
to disable exceptions, std::abort() is called instead of an exception. (#16) - 👷 Exceptions thrown in the backend worker thread, will now call a user provided error handler callback to handle the error. (#21)
- Compile time checks for unsafe to copy user defined types. Non trivial user defined types must be explicitly tagged as
safe to copy with the use of
QUILL_COPY_LOGGABLE;
. Otherwise they have to be formatted and passed as a string to the logger by the user. The old unsafe mode is still usable by#define QUILL_MODE_UNSAFE
(#20) - 👉 Added
QUILL_USE_BOUNDED_QUEUE
. In this mode no new queues get allocated but instead log messages get lost. Number of lost messages is reported to stderr. - 📇 Minor hot path optimisation. The pointer to the metadata for each log message is no logger copied to the queue but passed as a template argument instead.
- ➕ Added a latency benchmark, easily extendable for any logger
👌 Improvements/Fixes
QUILL_RDTSC_CLOCK
option is replaced byQUILL_CHRONO_CLOCK
which is by OFF by default.- 👌 Improve compiler error message when trying to log a non copy constructible user defined type
- 🛠 Fix buffer reallocation bug on TimestampFormatter. In previous versions any timestamp format set to 'set_pattern' expanding to a string longer than 32 bytes would cause a crash. (#24)
- 🌲 The backend logging thread will now copy all messages from the SPSC queue to a local priority queue. This keeps the SPSC less empty avoiding a potential allocation on the hot path.
std::string_view
is now promoted tostd::string
to take a deep copy- 🚚 The queue capacity has been moved from
config
toTweakme.h
. - 👍 Multiple formats patterns support for
stdout
andstderr
handlers. See example_stdout_multiple_formatters.cpp - 👷
quill::start()
will now block until the backend worker has started. - ⬆️ Upgraded bundled libfmt to
6.2.1
- Added option