Skip to content

v0.4.1

Choose a tag to compare

@DMsuDev DMsuDev released this 24 Aug 00:26
· 77 commits to main since this release
v0.4.1
19b51d8

Vigil v0.4.1

This release fixes a critical assertion formatting bug for C++17 builds, corrects expression stringification in VERIFY, and introduces a unified warning control system alongside cleaner CMake integration.

Key Highlights:

  • C++17 Stability: Fixes a compilation issue with fmt::format caused by empty variadic macro expansions.
  • Portable Warning API: Introduces internal macros to handle compiler diagnostic pragmas across MSVC, Clang, and GCC without cluttering headers with raw #pragma directives.
  • Build System Improvements: Adopts CMake 3.24+ native COMPILE_WARNING_AS_ERROR properties and removes unnecessary DLL symbol exports on header-only/RAII types.

🐛 Bug Fixes

  • Resolve C++17 variadic pack and VERIFY stringify issues in Assert.h (d5e24dc)
    • In C++17, VIGIL_ASSERT expanded into ill-formed fmt::format() calls when passed an empty __VA_ARGS__ pack in certain fmt versions.
    • VIGIL_VERIFY chained through VIGIL_ASSERT, causing VIGIL_STRINGIFY to output double-parenthesized expressions like (expr) instead of expr.
    • Added VIGIL_INTERNAL_ASSERT_IMPL_NO_MSG for C++17 no-message paths to invoke assertion failure reporting directly.
    • C++20 behavior remains unaffected as __VA_OPT__ handles empty packs cleanly.
  • Improve early return logging in DemoEarlyReturn function (352200e)

🚜 Refactor

  • Remove VIGIL_API export macro from ScopedLogger (d9a3d13)
    • Prevents MSVC C4251 warnings caused by exporting STL members across DLL boundaries. ScopedLogger is fully inline/RAII and does not require DLL export annotations.
  • Add portable warning control macros in compiler_attributes.h (4adb8db)
    • Replaces raw #pragma blocks with a unified suppression API (VIGIL_PRAGMA_PUSH_WARNING, VIGIL_DISABLE_WARNING_*, etc.), migrating log_level.h as the first consumer.
  • Remove compiler-specific diagnostic pragmas from logger_impl.h (f4c9614)

🛠️ Build System

  • Fix warning policy propagation and adopt native warning-as-error (6242fd9)
    • Replaces hardcoded compiler flags (/WX, -Werror) with CMake 3.24+ COMPILE_WARNING_AS_ERROR properties.
    • Enables -Wdocumentation diagnostics for Clang toolchains.

Full Changelog: v0.4.0...v0.4.1