Skip to content

Latest commit

 

History

History
83 lines (71 loc) · 4.3 KB

File metadata and controls

83 lines (71 loc) · 4.3 KB

Roadmap and delivery checklist — LogIt++

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.

Delivered

  • Public aggregate-first header policy: <logit.hpp> is the supported application entry point; module umbrellas and leaf-header contracts are documented.
  • Public logit::QueuePolicy API 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 shared TaskExecutor; 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.x compatibility (minimum 2.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.

Next planned work

  • Release 1.0.2 — changelog/release notes, package overlays, non--dev documentation, 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() and read_log_files() now decompress .gz/.zst entries 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.

Intentionally deferred

  • [-] 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.

How to update this document

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.