Synchronize v2.x With Changes from v1.x#3581
Merged
gabime merged 35 commits intogabime:v2.xfrom Apr 8, 2026
Merged
Conversation
added 30 commits
April 4, 2026 09:28
…sk checklist - Record merge-base and export v1-only commits (v2..v1) - Document failed merge attempt: v2 file tree diverges from v1 - Mark completed checklist items 0.x, 1.x, merge report draft (5.2) Made-with: Cursor
- z_formatter takes pattern_time_type; emit +00:00 when pattern uses UTC - Track port in tasks/commits-ported.txt and merge-report; update checklist Made-with: Cursor
…6d1c) - Replace GetTimeZoneInformation-based offset with v1.x mktime/_mkgmtime approach - Add tests/test_timezone.cpp and extend pattern_formatter tests; update os.h comment Made-with: Cursor
…SHA triage table - tasks/v1-triage-complete.md: 245 commits PORTED/PENDING/N/A for PRD 3A tracking - Merge report and task checklist updated Made-with: Cursor
- CMake: SPDLOG_MSVC_UTF8 + /utf-8 for real MSVC only - ansicolor: protected target_file_; fix set_color_mode_ lock nesting - os: drop redundant fileapi.h; spdlog::details::os::getenv via std::getenv - tests: stopwatch waits 500ms; includes/triage/commits-ported/merge-report updates - Reclassify superseded v1 SHAs (Sep, syslog, stopwatch ms, utf8 tests, etc.) Made-with: Cursor
- ringbuffer_sink: throw if n_items==0 (gabime#3436); test expects spdlog_ex - utf8_to_wstrbuf: assert compares int to static_cast<int>(target.size()) (gabime#3479) - Triage: PORTED ad725d3 getenv, 677a2d9 stopwatch, 3f7e502, a621552; SUPERSEDED a45c939, eeb22c1, 5673e9e, fe4f995, 287333e - tasks: 27 PORTED / 26 SUPERSEDED / 78 PENDING; merge-report + commits-ported Made-with: Cursor
Made-with: Cursor
- qt_color_sink: qsizetype for UTF-8 color range lengths; index colors_ with size_t - SUPERSEDED: 9c58257 — os_unix utc_minutes_offset already matches gabime#3366 - Counts 30/29/70; merge-report + commits-ported Made-with: Cursor
- CMake: option SPDLOG_NO_TZ_OFFSET; PUBLIC compile definition when ON - z_formatter: +??:?? when macro; else keep UTC +00:00 and local offset - utc_minutes_offset: stub on Unix/Windows when macro - test_pattern_formatter: %z UTC case matches placeholder when NO_TZ - SUPERSEDED 1032018 (ScopedPadder / %D already in v2) - Triage 31/30/68; merge-report + commits-ported Made-with: Cursor
Made-with: Cursor
Made-with: Cursor
…e batch - dup_filter_sink: filter_ const, const filter_duration (gabime#3515) - logger: should_flush uses flush_level() (gabime#3516) - daily_file_sink: new_filename locals (gabime#3516) - spdlog::should_log(level log_level) (gabime#3519) - example my_type value_ / ctor param (gabime#3521) - Triage: PORTED 1774e70 309204d f2a9dec 472945b; N/A d299603 5750598; SUPERSEDED 1ef8d3c 8cfd4a7; fix ba50805 row Made-with: Cursor
…685e69 - dist_sink already used std::move(sinks) - SUPERSEDED: no common-inl.h on v2; log_with_format_ avoids fmt copy path (gabime#3541) Made-with: Cursor
…51c5b9 - Document ambiguous format_to fix in README user-defined type example - SUPERSEDED: z_formatter warning, fmt11 const formatter, rotate_now + test Made-with: Cursor
…276069 - rotating_file_sink::rotate_now matches gabime#3281 (sync with sink_it_) - SUPERSEDED: CMake 3.10..3.21 (v2 uses 3.23); daily test fmt::format; fmt11 const row Made-with: Cursor
…abime#3038 - difference_type cast for formatted.end() - eol_len (ad0f31c) - SUPERSEDED: c1569a3 Catch2 v3.5.0, 73e2e02 wstr_to_utf8buf bounds Made-with: Cursor
…6da594 - WIN32 option SPDLOG_WCHAR_CONSOLE; SPDLOG_UTF8_TO_WCHAR_CONSOLE in private defs - wincolor print_range_: utf8_to_wstrbuf + WriteConsoleW when defined - N/A: async_msg flush_callback move-assign (no v1 shape on v2) Made-with: Cursor
Made-with: Cursor
Made-with: Cursor
…ependency(fmt 12) Made-with: Cursor
…completed 5A/3A Made-with: Cursor
Made-with: Cursor
added 2 commits
April 4, 2026 11:15
…aths Made-with: Cursor
Contributor
There was a problem hiding this comment.
Pull request overview
This PR ports a large set of v1.x fixes/features into v2.x to improve parity while keeping the v2.x structure, including fmt/CI/CMake alignment and multiple behavioral fixes across sinks, OS utilities, and tests.
Changes:
- Bump bundled fmt to 12.1.0 and update CMake packaging/CI accordingly.
- Improve timezone offset handling (
%z,SPDLOG_NO_TZ_OFFSET) and add dedicated timezone tests. - Port multiple runtime fixes/improvements (TCP timeouts, Windows console wide output option, file sink truncation, dup-filter behavior, locking fixes).
Reviewed changes
Copilot reviewed 45 out of 45 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/test_timezone.cpp | Adds cross-platform timezone offset tests with TZ RAII helper |
| tests/test_stopwatch.cpp | Makes stopwatch tests less flaky by increasing wait duration |
| tests/test_sink.h | Fixes iterator arithmetic type safety for EOL stripping |
| tests/test_ringbuffer_sink.cpp | Updates expectations for ringbuffer_sink(0) throwing |
| tests/test_pattern_formatter.cpp | Adds %z UTC behavior test and regex-based offset format check |
| tests/test_misc.cpp | Adds case-insensitive level_from_str test coverage |
| tests/test_file_logging.cpp | Adds test for basic_file_sink::truncate() |
| tests/test_dup_filter.cpp | Adds coverage for skipped-message level behavior |
| tests/test_custom_callbacks.cpp | Fixes iterator arithmetic type safety for EOL stripping |
| tests/includes.h | Undefines level-name macros to make tests robust to custom names |
| tests/CMakeLists.txt | Adds new timezone test source |
| src/spdlog.cpp | Renames should_log parameter for consistency |
| src/sinks/wincolor_sink.cpp | Optional UTF-8→wide console output path via WriteConsoleW |
| src/sinks/rotating_file_sink.cpp | Adds missing lock to rotate_now() |
| src/sinks/basic_file_sink.cpp | Implements basic_file_sink::truncate() |
| src/sinks/ansicolor_sink.cpp | Removes nested locking in set_color_mode_ to avoid deadlock |
| src/pattern_formatter.cpp | Fixes %z behavior for UTC / supports SPDLOG_NO_TZ_OFFSET |
| src/details/os_windows.cpp | Improves UTC offset calc; adjusts getenv handling; misc fixes |
| src/details/os_unix.cpp | Adds SPDLOG_NO_TZ_OFFSET behavior and std::getenv usage |
| src/common.cpp | Makes level_from_str case-insensitive |
| README.md | Documents bundled fmt 12.1.0 and disambiguates fmt::format_to |
| include/spdlog/spdlog.h | Renames should_log parameter for consistency |
| include/spdlog/sinks/udp_sink.h | Passes udp config by const reference |
| include/spdlog/sinks/tcp_sink.h | Adds timeout support and new ctor overload |
| include/spdlog/sinks/ringbuffer_sink.h | Throws on zero-sized ringbuffer sink |
| include/spdlog/sinks/qt_sinks.h | Fixes Qt API types and level indexing cast |
| include/spdlog/sinks/dup_filter_sink.h | Alters dup-filter constructors/behavior and adds sinks-vector ctor |
| include/spdlog/sinks/daily_file_sink.h | Avoids filename shadowing and removes duplicate doc line |
| include/spdlog/sinks/basic_file_sink.h | Declares new truncate() API |
| include/spdlog/sinks/ansicolor_sink.h | Makes target_file_ protected for subclasses |
| include/spdlog/logger.h | Uses flush_level() accessor in should_flush |
| include/spdlog/details/udp_client_unix.h | Uses safer cast pattern in sendto call |
| include/spdlog/details/tcp_client_windows.h | Adds connect timeout + socket timeouts |
| include/spdlog/details/tcp_client_unix.h | Adds connect timeout + socket timeouts + missing includes |
| include/spdlog/details/os.h | Updates utc offset doc comment to match new behavior |
| include/spdlog/details/null_mutex.h | Value-initializes null_atomic::value |
| include/spdlog/details/mpmc_blocking_q.h | Fixes misleading enqueue_nowait header comment |
| include/spdlog/details/circular_q.h | Makes header self-contained by including common.h |
| example/example.cpp | Fixes shadowing and clarifies example type formatting |
| CMakeLists.txt | Adds TSAN option, NO_TZ option, MSVC UTF-8 option, debug postfix cache, sanitizer wiring |
| cmake/spdlogConfig.cmake.in | Updates fmt dependency version requirement |
| cmake/fmtlib.cmake | Pins fmt 12.1.0, enables install target, MSVC warning suppression |
| .github/workflows/windows.yml | Updates actions/checkout version |
| .github/workflows/macos.yml | Updates actions/checkout version |
| .github/workflows/linux.yml | Updates actions/checkout version |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
82e7610 to
5970380
Compare
gabime
requested changes
Apr 7, 2026
Owner
|
@jan-moravec This is massive help. Thanks!. See my minor comments |
Author
Thank you, issues fixed in the latest commit |
Owner
|
Thanks @jan-moravec |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull request: v1.x feature parity on v2.x
There were many commits into
v1.xbranch that are missing fromv2.x. This PR is bringing some them.This PR is one afternoon work with massive help of AI. So feel free to throw it away if you don't like it, or use just some parts.
I unfortunatelly don't have the time to do manual proper per commit evaluation. Since it is porting many commits from one branch to another, I thought this was a good work for AI agents.
Purpose
This PR brings applicable v1.x fixes and behavior onto the v2.x line using a hybrid merge strategy: a direct merge of
origin/v1.xwas attempted and aborted due to branch file-tree divergence; work continued as manual / topical ports while preserving the v2.x public API. fmt is aligned withorigin/v1.x(bundled fmt 12.1.0) and related compiler-warning handling matches that baseline.What to review
cmake/fmtlib.cmake,cmake/spdlogConfig.cmake.in,CMakeLists.txt.github/workflows/*.yml(e.g.actions/checkout@v6).README.md(bundled fmt version, external fmt note).Testing
cmakeconfigure withSPDLOG_BUILD_TESTS=ON,ctestRelease (report cites Windows validation; confirm Linux / macOS / Windows on CI).Merge report: v2.x ↔ v1.x integration (draft)
A direct
git merge origin/v1.xinto the integration branch was attempted and aborted due to extensive conflicts, including many modify/delete cases: files removed or reorganized on v2.x were modified on v1.x after the merge-base. A one-shot textual merge is not automatable without a file-by-file strategy aligned with v2.x’s layout (preserve v2 public API and structure).Ports landed (manual / topical)
09a674b7%zwithpattern_time_type::utcmust print+00:00(not local offset).src/pattern_formatter.cpp—z_formattertakespattern_time_type; early return for UTC.b656d1ceutc_minutes_offset()viamktime/_mkgmtime; pattern tests + dedicated timezone tests.src/details/os_windows.cpp;tests/test_pattern_formatter.cpp;tests/test_timezone.cpp(new);tests/CMakeLists.txt;include/spdlog/details/os.h(doc comment).0f7562a0TZstrings with explicit DST rules intest_timezone(avoids musl / impl-defined behavior).tests/test_timezone.cppd2100d5d#include <fcntl.h>for Unix TCP client (v1 hadtcp_client.h; v2 usestcp_client_unix.h).include/spdlog/details/tcp_client_unix.h3c61b051actions/checkout@v6(Node deprecation)..github/workflows/linux.yml,macos.yml,windows.yml9fe79692SPDLOG_SANITIZE_THREADoption, mutual exclusion with address sanitizer, sanitizers applied tospdloglib target (#3237).CMakeLists.txt(options +spdlog_enable_*onspdlog);tests/CMakeLists.txtalready used helpers9ecdf5c8select);SO_RCVTIMEO/SO_SNDTIMEOwhentimeout_msis positive;tcp_sink_config::timeout_ms+ ctor overload.tcp_client_windows.h,tcp_client_unix.h,tcp_sink.h45b67eeedup_filter_sinkconstructor takingstd::vector<std::shared_ptr<sink>>.include/spdlog/sinks/dup_filter_sink.h847db337dup_filter_sink: drop ctornotification_level; “Skipped …” uses level of last duplicate (msg.log_level).include/spdlog/sinks/dup_filter_sink.h,tests/test_dup_filter.cpp8806ca65getenvunsupported — detect viaWINAPI_FAMILYvsWINAPI_FAMILY_DESKTOP_APP(not__cplusplus_winrtalone).src/details/os_windows.cppe3f5a4feFMT_LIB_EXPORTon spdlog when shared — v2 linksfmt::fmt; fmt CMake owns exports.e655dbb6#3408trimfmt.hincludes — v2 has nospdlog/fmt/fmt.h;common.hincludesfmt/base.h.548b2642_HAS_EXCEPTIONSwith no-exceptions — v2 has noSPDLOG_NO_EXCEPTIONSoption in CMake.ae1de0dcload_env_levels("VAR")— nospdlog/cfg/on v2.cdbd64e2qt_color_sink:QString::fromUtf8lengthqsizetype;colors_.atindexstatic_cast<size_t>(msg.log_level).include/spdlog/sinks/qt_sinks.h9c582574tm.tm_gmtoff— v2os_unix.cppalready has the#ifguard from #3366.6004e3d1SPDLOG_NO_TZ_OFFSET:%zprints+??:??;utc_minutes_offsetreturns 0; CMakePUBLICdefine.test_timezonealready guarded.CMakeLists.txt,src/pattern_formatter.cpp,src/details/os_unix.cpp,src/details/os_windows.cpp,tests/test_pattern_formatter.cpp10320184#3360padding truncate /%Dwidth — v2pattern_formatter.cppalready matches.5931a3d6windows_include.hbefore others) — v2src/details/os_windows.cpp; noos-inl.h.ba508057binary_examplemust not usevector<char>(80)with 80 pushes — v2example.cppbuilds buffer withpush_backin a loop.47b7e7c7qt_sinks.h,test_file_helper.cpp) — already on branch; v2test_errors.cppdiffers from v1.1ef8d3ceLICENSE— already points at rawfmtLICENSE.8cfd4a7ebench/latency.cpp__linux__— already correct.57505989tweakme.hcomment forSPDLOG_LEVEL_NAMES+string_view_literals— v2 has no tweakme; level strings live incommon.h.d299603econsttweaks — no v1registry-inl/ MDC block in v2pattern_formatter; see1774e700fordup_filter_sink.1774e700dup_filter_sink::filter_const +constfilter duration;pattern_formatter::get_time_was already const on v2.include/spdlog/sinks/dup_filter_sink.h309204d5logger::should_flushusesflush_level();daily_file_sinklocalsnew_filename(avoid shadowingfilename()).include/spdlog/logger.h,include/spdlog/sinks/daily_file_sink.hf2a9dec0spdlog::should_log(level log_level)parameter rename (#3519); v1 cfg/async renames not ported (nospdlog/cfgon v2).include/spdlog/spdlog.h,src/spdlog.cpp472945bamy_type:value_/ ctor param vs member shadow (#3521).example/example.cpp687226d9udp_sinkctor takesconst udp_sink_config &(#3520).dist_sinkalready usedstd::move(sinks).include/spdlog/sinks/udp_sink.hfc7e9c87common-inl.hadd<cctype>— v2 has nocommon-inl.h;level_from_strlives insrc/common.cppwith<cctype>.1685e694fmt::format_stringcopy — v2logger::log_with_format_holdsconst format_string_t &and callsfmt::vformat_to(no v1to_string_view(fmt)indirection).1245bf8efmt::format_toinREADME.mdsnippet (#3259).example.cppalready usedfmt::format_to.README.md2670f47dz_formatter/-Wordering withSPDLOG_NO_TZ_OFFSET—src/pattern_formatter.cppalready matches the v1 layout.d276069afmt::formatter::formatconst for fmt 11 —example/example.cppalreadyconst.951c5b99rotating_file_sink::rotate_now+ test —src/sinks/rotating_file_sink.cpp,tests/test_file_logging.cpprotating_file_logger4.24dde318rotating_file_sink::rotate_nowtakesstd::lock_guard<Mutex>beforerotate_()(#3281).src/sinks/rotating_file_sink.cppa2b42620cmake_minimum_requiredrange for FetchContent — v2 requires CMake 3.23.f355b3d5fmt::formatfor custom calculator —tests/test_daily_and_rotation_loggers.cppalready matches.65e388e8basic_file_sink::truncate()— lock +file_helper_.reopen(true)(#3280).include/spdlog/sinks/basic_file_sink.h,src/sinks/basic_file_sink.cpp,tests/test_file_logging.cppb7e0e2c2#3073source_loc::empty— v2 usesuint_least32_tline and null checks (source_loc.h).71925ca3FMT_DEPRECATED_*from bundled fmt shim — v2 has no v1spdlog/fmt/fmt.hblock.fa6605dctest_create_dircomment typo — already fixed.885b5473FMT_ENFORCE_COMPILE_STRING+ rotatingcalc_filename— v2 builds filename viaostringstream(rotating_file_sink.cpp).96c9a62btest_misc.cppusestest_sink_mt.1e6250e1fwrite_bytes/ non-locking fwrite —os_unix.cpp,os_windows.cpp,file_helper, CMake.d7155530SPDLOG_FWRITE_UNLOCKEDfrom symbol check — same CMake path as above.c1569a3dtests/CMakeLists.txtFetchContentGIT_TAG.73e2e02b#3038/#3044UTF-16→UTF-8 size checks —wstr_to_utf8bufinos_windows.cpp.ad0f31c0test_sink/ callback tests:iterator_traits::difference_typecast forend() - eol_len(#3315).tests/test_sink.h,tests/test_custom_callbacks.cppc3aed4b6SPDLOG_WCHAR_CONSOLE/SPDLOG_UTF8_TO_WCHAR_CONSOLE;print_range_usesutf8_to_wstrbuf+WriteConsoleW(#3092).CMakeLists.txt,src/sinks/wincolor_sink.cppb6da5944async_msgmove-assign flush callback — v2 has no v1async_msg/flush_callbackshape (#3232).566b2d14level_from_str(env / argv level names).src/common.cpp;tests/test_misc.cppdd3ca04aCMAKE_BUILD_TYPEonly when spdlog is the top-level CMake project.CMakeLists.txtd5af52d9format_string_tforwarding tolog_with_format_.32dd298denqueue_nowaitcomment in blocking queue header.include/spdlog/details/mpmc_blocking_q.h(file-level header; method comments already matched behavior).6c5d6329should_logdoc comment — v2.x already says “if logging is enabled”.2aa8b6c9file_helper::writenullfd_— already guarded in v2file_helper.cpp.0209b12cSPDLOG_LEVEL_NAMES/SPDLOG_SHORT_LEVEL_NAMESin tweakme.h.tests/includes.h33375433null_atomic::value(wasnull_atomic_inton v1).include/spdlog/details/null_mutex.h6b240a89sendto/reinterpret_castin UDP client.include/spdlog/details/udp_client_unix.h88a0e07aansicolor_sink::target_file_protected for subclasses (e.g. stdout/stderr split).include/spdlog/sinks/ansicolor_sink.h7a950e02d343d413ebfa90699edab1b5/utf-8: cache optionSPDLOG_MSVC_UTF8(default ON) and apply only when$<CXX_COMPILER_ID:MSVC>.CMakeLists.txt2c76e610pattern_formatter.cppalready uses"Sep".f1d748e5#include <fileapi.h>whenwindows.halready provides APIs (older SDK compatibility).src/details/os_windows.cpp(v1 hados-inl.h)7cbf2a69ansicolor_sink: publicset_color_modelocks; internalset_color_mode_must not re-lock (v1 #3323).src/sinks/ansicolor_sink.cpp— removed nestedlock_guardinset_color_mode_(avoids deadlock).e593f669-Wextra-semi/ stray;after}— v2bench,example,callback_sink,msvc_sinkalready clean.ad725d34std::getenvinspdlog::details::os::getenv(MSVC: suppress C4996; UWP: empty).src/details/os_windows.cpp,src/details/os_unix.cpp677a2d93tests/test_stopwatch.cppa45c9390stopwatch::elapsed_ms()— already on v2.eeb22c13syslog_sinkvirtualsyslog_prio_from_level— already on v2.5673e9e5fe4f9952os_windows.cpp/test_misc.cpp.3f7e5028assertsign-compare inutf8_to_wstrbuf(intvssize_t).src/details/os_windows.cppa6215527ringbuffer_sink(0)throws; test expectsspdlog_ex(v2 usesdrainAPI, not v1last_formatted).include/spdlog/sinks/ringbuffer_sink.h,tests/test_ringbuffer_sink.cpp287333eefinalfrom color sinks — v2 headers differ from v1 patch context.4397dac5SPDLOG_DEBUG_POSTFIXCMake cache (override debug library name suffix).CMakeLists.txt— default-${MAJOR}.${MINOR}d(same as previous v2 hardcode).c49c7cf9CMakeLists.txtchange as4397dac5.ae525b75circular_q.h(includecommon.h).include/spdlog/details/circular_q.h2d5179basyslog_prio_from_levelvisibility — v2 alreadyprotected/virtual.8b331e2cTID— v2 usesmsg.thread_id.479a5ac3pthread_threadid_npavailability — v2os_unix.cppalready has the guarded block.f24f7fa2#include <mutex>forbase_sink— v2src/sinks/base_sink.cppalready includes it.2169a6f6lock_guardvsunique_lockinmpmc_blocking_q— v2 already useslock_guardwhere applicable.271f0f3bmax_filesdoc note — v2 headers already document; duplicate line removed indaily_file_sink.h.8979f7fbpath_exists/ UTF-8 — v2 usesstd::filesystem::existsinos_filesystem.cpp.a3a0c9d6-Wsuggest-override— v2base_sink.husesfinal override.5ebfc927/Zc:__cplusplus//MPonly for real MSVC — v2 already gates onCMAKE_CXX_COMPILER_ID STREQUAL "MSVC".94a8e87c#3079create_diron drive-letter paths — v2 usesstd::filesystem::create_directories.7cb90d1aSPDLOG_NO_EXCEPTIONS— v2 CMake has no such option yet.d387fdf9CMAKE_CXX_EXTENSIONS— already enabled forMINGWinCMakeLists.txt.4052bc06819eb27c23587b0dregistry::get/registry-inl.h— v2.x uses a global logger API; no v1-style registry.134f9194registry.hon v2.3403f278set_default_loggerregistry behavior — v2set_global_logger/ v2 public API surface.b6eeb736e5865186ddce4215tweakme.hin fmt headers — v2 has notweakme.h.5532231b37b84769string_viewaccessors / revert — no v1-style registry on v2.3b4c775bset_default_logger— registry-only.c9ce17abINSTALL.md— file not present on v2.2969dde4d8e0ad46under bundled fmt alignment.6766f873AnalyzeTemporaryDtorsfrom.clang-tidy— v2 config never had it.9e36a158…b3688ba1,22b0f4fc,1bea38ed) — style-only; no per-commit functional port.7c02e204,238c9ffa,2122eb21,8e561337,ac432c36,48bcf39a,486b5555,6fa36017,79524ddd) — v2 versioning is separate.508d20f0.git-blame-ignore-revs— optional.0c4fb032SPDLOG_CONSTEXPR_FUNC/FMT_CONSTEXPR— v2 macro model differs (fmt / constexpr baseline).f4afd81ccommon.hedit.d3730937a5cfbf36FMT_UNICODECMake + revert — triage under fmt baseline.15f53968null_sinkfinal— alreadyfinalin v2.51a0decadaily_file_sinkcomment line — already addressed on integration branch.66ac83e7a34e08c7.gitignoreentries — v2.gitignorealready ignores/.vs,/out/build,/CMakeSettings.json.ci.yml, Windows CI WIP, Coverity) — v2 uses.github/workflows.CMakeLists— no behavior port.943fcbd727cb4c763edc8036c5061bb9LICENSEtext update — reconcile at release if needed.Triage-only batch (v1 async / fmt delta vs v2)
fe79bfcc6725584eec661f98a19c76a462302019async_logger/thread_pool; v2 usesasync_sink+mpmc_blocking_q(tests/test_async.cppdiffers).16e0d2e763d18842d8e0ad461e7d7e07cmake/fmtlib.cmake).faa0a7a985bdab0c276ee5f57f8060d596a8f625to_string_view/ external fmt fixes — v2logger::log_with_format_+ no v1common.hto_string_view(fmt)chain (1685e694triage).3c23c27d7f8060d5; no separate port.Triage close-out (MDC / bundled fmt)
9fe79692(TSAN CMake) is listed in Ports landed above.d03eb40c…c1fbafdcmdc.h, examples, TLS fix) — v2 tree has no MDC public API.7e022c430d31acae4418909aea3e747e878ad2e32c1eafc83f03542dFMT_INSTALL ON(fmt 12 subproject default) + MSVC/wd4834onfmt— matchesorigin/v1.xbundledFMT_VERSION120100.Full SHA list: Previously tracked as
tasks/v1-triage-complete.md(removed from repo withtasks/).Validation:
ctestRelease on Windows — all unit tests passed after these ports.Bundled fmt 12.1.0 (aligned with
origin/v1.x)cmake/fmtlib.cmakeURL+SHA256);FMT_INSTALL ON(fmt 12 defaults install OFF as subproject — required forinstall(EXPORT spdlogTargets)); MSVC/wd4834on targetfmt(C4834 inlocale_refvs stock 12.1.0 tarball).cmake/spdlogConfig.cmake.infind_dependency(fmt 12 CONFIG)forSPDLOG_FMT_EXTERNALconsumers.Validation:
cmake -DSPDLOG_BUILD_TESTS=ON -DSPDLOG_BUILD_WARNINGS=ON,ctestRelease — passed (Windows, MSVC).