Skip to content

v0.6.0-WIP

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 06 Sep 00:53
· 32 commits to main since this release
82893b0

Warning

This is a work-in-progress prerelease and is not intended for production use.
APIs may change without notice. Pin to a stable release tag for production.

Changelog

All notable changes to this project will be documented in this file.

The format is based on Conventional Commits and this project adheres to Semantic Versioning.

[0.6.0-WIP] - 2026-09-07

💥 Breaking Changes

  • Rename public logging macros and preprocessor constants (01f6309)

    • Rename main convenience macros (e.g., VIGIL_INFO, VIGIL_WARN) to use the explicit VIGIL_LOG_* prefix.
    • Standardize preprocessor severity level constants from VIGIL_LOG_LEVEL_* to VIGIL_LEVEL_*.
    • Introduce a centralized VIGIL_LOG_IMPL dispatch macro leveraging if constexpr for compile-time filtering.

⚠️ The main logging macros (such as VIGIL_INFO, VIGIL_WARN, VIGIL_ERROR, etc.) now require the VIGIL_LOG_ prefix (e.g., VIGIL_LOG_INFO), and preprocessor severity constants have been renamed from VIGIL_LOG_LEVEL_* to VIGIL_LEVEL_*, breaking backward compatibility for API consumers.

🚀 Features

  • Add lazy file sinks and per-logger async configuration (49ad6e9)

    • Introduce LazyFileSink to defer physical file creation until the first log message is written
    • Extend LogConfig with optional Async and AsyncQueueSize overrides for individual loggers
    • Implement lazy initialization of the global spdlog thread pool via EnsureAsyncThreadPool
    • Standardize pointer allocations across the logging subsystem using custom SmartPointers utilities

🐛 Bug Fixes

  • Ensure assertion header is always included for release builds (3a67ce5)

    • Remove the #if defined(VIGIL_ENABLE_ASSERTS) conditional guard around #include "vigil/assert.h" in log_system.h
    • Prevent compilation errors in Release builds caused by missing assertion macros required by the logging system logic
  • Correct VIGIL_API placement and sink type consistency in LoggerImpl (a5f630a)

🚜 Refactor

  • Decouple SourceLocation from std::source_location alias in C++20 (54d2aef)

  • Encapsulate LoggerImpl members and add public accessors (4fa69b6)

    • Make m_Logger, m_ConsoleSink, and m_FileSink private inside LoggerImpl to improve data hiding
    • Expose controlled getter methods (SpdLogger(), FileSink(), ConsoleSink(), and Name())
    • Add AttachSink() method to LoggerImpl for white-box testing support

🛠️ Build System

  • Optimize CMake configuration structure and option management (84ed135)

    • Clean up option alignments and default values for scoped logging and build flags.
    • Reorganize module inclusion paths, target grouping, and output directory layouts.
  • Enhance compiler options and optimize dead-code stripping (2e4234a)

    • Add MSVC multi-processor compilation (/MP) flag to accelerate builds.
    • Implement cross-platform dead-code stripping via compile and link options for GCC, Clang, and MSVC.
    • Scope _FORTIFY_SOURCE=2 strictly to Release builds under GCC and Clang.
    • Restructure compiler options using generator expressions.
  • Correct C++ standard target for example executables to C++20 (7894d54)

🔧 Maintenance

  • Ensure complete test and example coverage in CI (dc01926)

  • Update git-cliff action version and adjust release name format (9839540)

  • Update workflow to trigger on workflow_dispatch and improve version handling (796ea20)

    • Improve cliff.toml configuration
  • Expand and improve test suite for assertions, async, hooks, and registry (22a64c0)

    • Add test for VIGIL_VERIFY, VIGIL_ASSERT, and related pointer/range validation macros
    • Introduce robust asynchronous logging tests verifying delivery guarantees and configuration overrides
    • Implement dedicated unit tests for all event hooks (OnMessage, OnLevelChange, OnFlush, OnShutdown)
    • Improve test helpers with UniqueLogPath() to guarantee test isolation and prevent file collisions

Full Changelog: v0.5.1...v0.6.0-WIP