Releases: ChristianPanov/lwlog
Releases · ChristianPanov/lwlog
Release list
Version 1.5.0
This release closes several important issues, making the library now stable for extended usage
What's Added
- Closed main issues
- Additional bug fixes
- Performance improvements
- Documentation updates
- General refactoring
Version 1.4.0
This release brings a sharp focus on performance optimization, memory efficiency, and precision in high-frequency logging. Ideal for low-latency and environments where dynamic memory allocations could be problematic.
Major Changes
-
Static Buffer for String Manipulations
- What’s New:
- Introduces a static pre-allocated memory buffer for string manipulations to minimize dynamic memory allocations.
- Promotes memory reuse and improves performance for high-frequency logging scenarios.
- Why It Matters:
- Reduces the overhead associated with creating and destroying temporary strings during log formatting.
- Particularly beneficial for applications requiring low-latency logging or operating in resource-constrained environments.
- What’s New:
-
Faster Floating-Point and Integer String Conversions
- What’s New:
- Custom-built algorithms for converting floating-point and integer values to strings.
- Optimized to outperform std::to_string with more efficient operations.
- Why It Matters:
- Achieves significantly faster number-to-string conversions, which are a critical part of many log messages.
- Provides more consistent and predictable performance across different platforms.
- What’s New:
-
Improved String Manipulation Algorithms
- What’s New:
- Enhanced algorithms for searching and replacing substrings in patterns.
- Reduces computational overhead, especially for patterns with frequent or repetitive placeholders.
- Why It Matters:
- Faster string replacements lead to reduced latency in log generation, improving overall logging performance.
- Handles larger log patterns and more complex formatting with ease.
- What’s New:
-
Thread Affinity for Asynchronous Logger
- What’s New:
- The asynchronous logger can now be configured to bind its background threads to specific CPU cores.
- Why It Matters:
- Reduces context switching and improves cache efficiency for background log processing.
- Boosts throughput in high-concurrency environments by isolating logging threads from other workloads.
- What’s New:
Additional Changes
- Bug fixes.
- Performance tuning across the core logging pipeline.
- Updated and expanded documentation.
Special Thanks
Huge thanks to @EliasRonefors and @soobnoid, who provided feedback, reported critical issues, and suggested changes that made this release stable.
Version 1.3.1
What's Added
- Buf fixes
- Performance improvements
- Documentation Updates
Version 1.3.0
Third major backwards compatible release
What's Added
- Topic system implemented
- CI pipeline improvements, now project goes through static analysis with sonar, cppcheck, and clang-tidy on each push
- A lot of warnings and static analysis issues fixed
- Improved performance
- Improved datetime handling
- Improved CMake configuration
- General refactoring done
Version 1.2.0
Second major backwards compatible release
What's Added
- General rework and restructuring of the codebase
- Performance and binary size optimizations
- Asynchronous logging and the appropriate configurations that can be applied to it
- Improved datetime handling
- Log message post formatting with fmt/std::format/custom formatting
- Documentation overhaul
Version 1.0.0
First official release version
What's Added
- Forward(default, linear) and deferred(non-linear) logging mechanisms
- Verbosity levels
- Various log sinks
- Console (stdout, stderr)
- File
- Custom sinks (it's extremely easy to add your own custom sinks)
- Support for both compile-time and runtime sink configuration
- Custom sink configuration - each sink can have a unique log pattern and verbosity level
- Log formatting according to a custom user-defined pattern
- Source metainformation attributes
- Custom attributes
- Global logger registry