Skip to content

v0.6.0

Choose a tag to compare

@DMsuDev DMsuDev released this 08 Sep 01:49
· 19 commits to main since this release
9450db9

🚀 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.

  1. VIGIL_LOG_ Prefix for Logging Macros: Convenience macros now explicitly use the VIGIL_LOG_ prefix.
  2. Standardized Severity Level Constants: Preprocessor constants changed from VIGIL_LOG_LEVEL_* to VIGIL_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: LogConfig now supports individual Async enabling and AsyncQueueSize overrides per logger instance.
  • Lazy Thread Pool Initialization: Global spdlog thread pool setup is now deferred via EnsureAsyncThreadPool.

🧪 Integration Testing & Quality

  • Consumer Integration Test Suite (VIGIL_CONSUMER_TESTS): Added ctest --build-and-test harnesses covering all supported integration patterns:

    • Direct vendoring via add_subdirectory().
    • External fetch via FetchContent.
    • System package consumption via find_package(Vigil CONFIG).
  • 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 fmt usage validation whenever installation targets are enabled.

🐛 Bug Fixes

  • Removed the conditional guard around vigil/assert.h in log_system.h to prevent Release build compilation errors.
  • Added missing debugger.h to the installed header set (VIGIL_INTERNAL_HEADERS).
  • Fixed all option() defaults being evaluated before project(), causing incorrect values when consumed as a subproject via add_subdirectory.

New Contributors


Full Changelog: v0.5.1...v0.6.0