Skip to content

Releases: ruoka/tester

v3.0.0

Choose a tag to compare

@ruoka ruoka released this 04 Aug 00:29
b2ab677

Breaking

  • JSONL version is 2. Rebuild kinds own_pcm_* / pcm_stale / dependency_pcm_stale are now own_bmi_* / bmi_stale / dependency_bmi_stale. Field pcm_path is bmi_path.
  • Object-cache profile cb-object-cache-v4. Keys: toolchain_root, compiler, compiler_signature, compiler_version, std_module (replacing llvm / cxx / cxx_sig / clang_ver / std_cppm). Old caches invalidate once on profile mismatch.
  • cb test --help prints CB usage and exits; it no longer forwards to test_runner.

Changed

  • JUnit XML is CI-readable for GitHub Actions test-summary: classname is path:line, name is the case title (no test_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 suite failures/errors count cases.
  • Project BMI filenames keep dots (only : → -) for Clang -fprebuilt-module-path lookup.
  • Two-phase modular rebuilds enqueue pcm→.o as 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

See CHANGELOG.md for the full entry.

v2.2.0

Choose a tag to compare

@ruoka ruoka released this 02 Aug 11:45

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.o cache across clean trees (CB_STD_CACHE_DIR)
  • Two-phase modular object_missing now checks import freshness before the object-only shortcut
  • Docs: CB vs Ninja benchmark for v2.2 (macOS Clang 23 + Linux .devcontainer Clang 21)

See CHANGELOG.md and release-policy.md.

v2.1.2

Choose a tag to compare

@cursor cursor released this 02 Aug 01:34

tester v2.1.2

Patch release. Existing CB / tester usage keeps working.

Fixes

  • --modules=one-phase object recovery — object_missing / object_stale re-read the source with -fmodule-output= instead of compiling a (reduced) BMI into the object. Matches build_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

Choose a tag to compare

@ruoka ruoka released this 01 Aug 23:36

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=1 on macOS — keep -fno-pie / -no-pie Linux-only (arm64 rejects both)

Changes

  • Distinct build trees — CB build-<os>-<config>/, Make build-make-<os>-<config>/, CMake build-cmake-<os>-<config>/
  • macOS links -lc++abi / -lunwind from LLVM_PREFIX on Make, CMake, and CB
  • CB skips top-level build-* trees when scanning (CMake CompilerId collision)
  • CI — all three build lanes matrix debug and release (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

Choose a tag to compare

@ruoka ruoka released this 01 Aug 22:53

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.txt builds the same library and test_runner; std compiled 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 serializes std::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 use signed char instead of char{-1}
  • Parallel [self] flake fix — stop mutating process-global jobs in-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

Choose a tag to compare

@cursor cursor released this 01 Aug 15:36
5e2c68f

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

v1.0.0 Pre-release
Pre-release

Choose a tag to compare

@ruoka ruoka released this 27 Nov 20:58

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.