Releases: ruoka/tester
Release list
v3.0.0
Breaking
- JSONL
versionis 2. Rebuild kindsown_pcm_*/pcm_stale/dependency_pcm_staleare nowown_bmi_*/bmi_stale/dependency_bmi_stale. Fieldpcm_pathisbmi_path. - Object-cache profile
cb-object-cache-v4. Keys:toolchain_root,compiler,compiler_signature,compiler_version,std_module(replacingllvm/cxx/cxx_sig/clang_ver/std_cppm). Old caches invalidate once on profile mismatch. cb test --helpprints CB usage and exits; it no longer forwards totest_runner.
Changed
- JUnit XML is CI-readable for GitHub Actions
test-summary:classnameispath:line,nameis the case title (notest_case ->/scenario ->noise), failed cases point at the assertion call site, nested BDD steps fold under the parent scenario with a step list in<system-out>, and suitefailures/errorscount cases. - Project BMI filenames keep dots (only
:→-) for Clang-fprebuilt-module-pathlookup. - Two-phase modular rebuilds enqueue
pcm→.oas a separate ready job after BMI publish. - Faster CB warm rediscovery (closer to Ninja no-op).
- Internal CB structure (Clang driver, cache stores, table-driven CLI,
cache_admin) with no new public flags or events beyond the above.
Toolchain
- Minimum: Clang 21 with libc++ modules (unchanged).
JSONL
- Envelope
version: 2 (was 1). - Schema:
docs/jsonl-schema.json.
See CHANGELOG.md for the full entry.
v2.2.0
CB scheduling, shared std cache, and import-fresh object recovery
- Edge-driven compile scheduling with bounded workers; two-phase importers can start when the provider BMI is ready
- Machine-local shared
std.pcm/std.ocache across clean trees (CB_STD_CACHE_DIR) - Two-phase modular
object_missingnow checks import freshness before the object-only shortcut - Docs: CB vs Ninja benchmark for v2.2 (macOS Clang 23 + Linux
.devcontainerClang 21)
See CHANGELOG.md and release-policy.md.
v2.1.2
tester v2.1.2
Patch release. Existing CB / tester usage keeps working.
Fixes
--modules=one-phaseobject recovery —object_missing/object_stalere-read the source with-fmodule-output=instead of compiling a (reduced) BMI into the object. Matchesbuild_std_module; two-phase PCM reuse is unchanged.
Docs
- README and release-policy now advertise v2.1.2 as the current supported release.
Requirements
- Minimum toolchain: Clang 21+ with libc++ modules (
std.cppm) - CMake path: CMake 4.x + Ninja
- JSONL schema version: 1
See CHANGELOG.md for the full notes.
v2.1.1
tester v2.1.1
Patch release on the modules-era line. Existing CB / tester usage keeps working; Make scripts that hard-coded the old build-<os>/ default should switch to build-make-<os>-<config>/ or set BUILD_DIR.
Fixes
- Modular
object_stale— rebuild project interfaces/partitions when their own PCM is newer than the.o(two-phase precompile succeeded, object step failed/skipped); reuse the PCM on object-only rebuilds - Make
DEBUG=1on macOS — keep-fno-pie/-no-pieLinux-only (arm64 rejects both)
Changes
- Distinct build trees — CB
build-<os>-<config>/, Makebuild-make-<os>-<config>/, CMakebuild-cmake-<os>-<config>/ - macOS links
-lc++abi/-lunwindfromLLVM_PREFIXon Make, CMake, and CB - CB skips top-level
build-*trees when scanning (CMake CompilerId collision) - CI — all three build lanes matrix
debugandrelease(same spelling)
Requirements
- Minimum toolchain: Clang 21+ with libc++ modules (
std.cppm) - CMake path: CMake 4.x + Ninja
- JSONL schema version: 1
See CHANGELOG.md for the full notes.
v2.1.0
tester v2.1.0
Minor release on the modules-era line. Existing CB / tester usage keeps working.
Highlights
cb --modules=<two-phase|one-phase>— choose module compilation scheme; object-cache profile field so switching invalidates BMIs correctly- CMake + Ninja build path —
CMakeLists.txtbuilds the same library andtest_runner;stdcompiled from${LLVM_PREFIX}/share/libc++/v1/std.cppm(same as Make/CB), avoiding Ubuntu's broken libc++ modules manifest lookup - CMake CI lane — Debug/Release, warning-free,
[self]+ standalone suite - CB uses
posix_spawn— Apple's libc serializesstd::system; parallel compiles on macOS no longer hit that mutex - Dev container on Debian 13 (trixie) — still Debian vs Ubuntu in CI on purpose; ships make, Ninja, and pinned CMake 4.1.2
- ARM Linux
[self]build fix — mixed-signedness cases usesigned charinstead ofchar{-1} - Parallel
[self]flake fix — stop mutating process-globaljobsin-process under--jobs>1
Requirements
- Minimum toolchain: Clang 21+ with libc++ modules (
std.cppm) - CMake path: CMake 4.x + Ninja
- JSONL schema version: 1
See CHANGELOG.md for the full notes.
v2.0.0
tester v2.0.0
First modules-era SemVer release. Prior v1.0.0 (GitHub pre-release) is historical and unsupported.
Public surface: import tester;, test_runner CLI, CB CLI/JSONL, Makefile embed path.
Minimum toolchain: Clang 21+ with libc++ modules (std.cppm).
Tagged at 5e2c68f (includes sequential + parallel --jobs CI gates, docs/release-policy.md, CHANGELOG [2.0.0], and the technical-review amendment closing the missing-SemVer finding).
v1.0.0
Summary A lightweight, macro-free testing framework built entirely with C++23 modules, combined with a powerful single-file C++ build system. This release focuses on stability, usability, and performance improvements for modern C++ projects.