v0.6.0
🚀 Vigil v0.6.0
This release introduces deferred log file creation, granular per-logger asynchronous settings, a comprehensive consumer integration test suite, and build system optimizations across supported compilers.
⚠️ Important: This release contains Breaking Changes to public macro names and preprocessor severity constants. Please review the migration guide below.
💥 Breaking Changes & Migration Guide
Public logging macros and preprocessor constants have been renamed to standardize the API surface and prevent symbol collisions.
VIGIL_LOG_Prefix for Logging Macros: Convenience macros now explicitly use theVIGIL_LOG_prefix.- Standardized Severity Level Constants: Preprocessor constants changed from
VIGIL_LOG_LEVEL_*toVIGIL_LEVEL_*.
🔄 Migration Mapping
| Legacy API (<= v0.5.x) | New API (v0.6.0) |
|---|---|
VIGIL_INFO(...) |
VIGIL_LOG_INFO(...) |
VIGIL_WARN(...) |
VIGIL_LOG_WARN(...) |
VIGIL_ERROR(...) |
VIGIL_LOG_ERROR(...) |
VIGIL_TRACE(...) |
VIGIL_LOG_TRACE(...) |
VIGIL_LOG_LEVEL_INFO |
VIGIL_LEVEL_INFO |
VIGIL_LOG_LEVEL_WARN |
VIGIL_LEVEL_WARN |
✨ What's New & Improvements
🚀 Key Features
- Lazy File Sinks (
LazyFileSink): Defers physical log file creation on disk until the first log message is dispatched, preventing empty log files. - Per-Logger Async Configuration:
LogConfignow supports individualAsyncenabling andAsyncQueueSizeoverrides per logger instance. - Lazy Thread Pool Initialization: Global
spdlogthread pool setup is now deferred viaEnsureAsyncThreadPool.
🧪 Integration Testing & Quality
-
Consumer Integration Test Suite (
VIGIL_CONSUMER_TESTS): Addedctest --build-and-testharnesses covering all supported integration patterns:- Direct vendoring via
add_subdirectory(). - External fetch via
FetchContent. - System package consumption via
find_package(Vigil CONFIG).
- Direct vendoring via
-
Expanded Coverage: Dedicated unit tests for assertions (
VIGIL_VERIFY,VIGIL_ASSERT), lifecycle hooks (OnMessage,OnLevelChange,OnFlush,OnShutdown), and isolated test paths.
🛠️ Build System (CMake)
- Accelerated Builds: Enabled MSVC multi-processor compilation (
/MP). - Dead-Code Stripping: Configured cross-platform link/compile flags for dead-code elimination under GCC, Clang, and MSVC.
- Dependency Flow: Enforced system
fmtusage validation whenever installation targets are enabled.
🐛 Bug Fixes
- Removed the conditional guard around
vigil/assert.hinlog_system.hto preventReleasebuild compilation errors. - Added missing
debugger.hto the installed header set (VIGIL_INTERNAL_HEADERS). - Fixed all
option()defaults being evaluated beforeproject(), causing incorrect values when consumed as a subproject viaadd_subdirectory.
New Contributors
- @dependabot[bot] made their first contribution in #4
Full Changelog: v0.5.1...v0.6.0