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 by QUILL_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 to std::string to take a deep copy
    • 🚚 The queue capacity has been moved from config to Tweakme.h.
    • 👍 Multiple formats patterns support for stdout and stderr 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