This file is the maintained roadmap, not a changelog. It deliberately separates
delivered capabilities from planned work and from ideas that are intentionally
delegated to user-defined ILogger implementations.
Legend:
[x]delivered and covered by code/docs/tests;[~]available, but opt-in or platform-limited;[ ]planned work;[-]intentionally deferred, with no current commitment to implement it in the core library.
- Public aggregate-first header policy:
<logit.hpp>is the supported application entry point; module umbrellas and leaf-header contracts are documented. - Public
logit::QueuePolicyAPI and queue policy macros. - Immutable copy-on-write logger registry snapshots on the production hot path, with atomic logger state and the existing execution mutex retained for formatter/backend safety.
- [~] Dedicated per-backend worker threads via
Config::use_dedicated_executor=true. The default remains the sharedTaskExecutor; unsupported platform backends keep their documented limitations. - Queue capacity, overflow policies, drop counters, resize behavior, and flush/shutdown coverage.
- MDC/NDC context, structured records, stored-log readers/subscribers, and runtime log-level controls.
- TimeShield
2.0.xcompatibility (minimum2.0.0) and dependency-target reuse for build-tree and installed-package consumers. - Benchmark methodology and regression infrastructure: prepared-record hot
path A/B, public
LOGIT_INFO(...)smoke benchmark, queue/CSV validation, delayed-sink flush regression, and CI coverage. - Doxygen generation, GitHub Pages publication, header/layout smoke tests, and the comparison guide for spdlog, Quill, Boost.Log, glog, and IceCream-Cpp.
- Release 1.0.2 — changelog/release notes, package overlays, non-
-devdocumentation, annotated tag, GitHub Release, and published Pages site are complete. - Binary logging research — a framed, versioned record format and bounded reader prototype with compatibility/corruption rules are documented in ADR 0008. No production backend or persistence contract is committed yet.
- Transparent compressed-file reads —
read_log_file()andread_log_files()now decompress.gz/.zstentries when the corresponding feature is enabled; disabled-feature and malformed-input paths remain failures and are covered by tests. - Configuration loading — design a versioned JSON/properties mapping to the existing backend configuration. Treat file watching/hot reload as a follow-up, not part of the first configuration API.
- Extended filtering — evaluate source/file, message, tag/MDC, and range filters; define their cost and ordering before adding public API.
- Benchmark follow-up — formatted and passthrough public-macro scenarios, a versioned fixture contract with compiler/toolchain/commit/queue/flush metadata, and a 1/4/16/32-producer matrix are now covered. Keep publication numbers tied to a fixed machine and toolchain.
- Concurrency fast-path research — explicit formatter/backend capability hooks, serialized fallback, lifecycle regression coverage, and a 1/4/16/32 producer A/B benchmark are documented in ADR 0006. Built-in backends remain serialized until their complete contracts are audited.
- [-] Database/SQLite appender — currently better implemented as a custom
ILogger; revisit if a common portable schema and maintenance owner emerge. - [-] Telnet/TCP appender — application-specific transport and access policy; implement as a custom backend unless a supported protocol is agreed.
- [-] Main-thread GUI appender — event-loop integration is framework and platform specific; revisit when LogIt++ ships a GUI viewer.
Move an item to [x] only when the implementation, tests, and user-facing
documentation agree. Use an ADR in docs/adr for architectural
decisions or compatibility changes; keep this file focused on status and next
steps. Record measurements with their environment instead of turning one local
run into a universal performance claim.
Last reviewed: 2026-09-19.