Skip to content

v0.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 10 Jun 21:11
· 16 commits to main since this release
  • Added: CoverageMeter, progress_efficiency, classify_regime, and
    OperatingRegime in metricchrono-core — a per-tier streaming coverage
    read-out (greedy maximal epsilon-packing of the visited image, holding
    representatives only) complementary to the per-step tick throughput.
    Coverage is invariant under revisits and detects sub-threshold relocation
    (creep) that per-step thresholding is silent on by design; jointly with
    throughput it classifies windows into quiescent / progress / churn / creep.
  • Performance: CoverageMeter stores pooled representatives (a sample
    admitted at several tiers is cloned once and indexed per tier), memoizes
    each representative's distance across tiers within one observation, scans
    newest-first so locality-heavy streams short-circuit early (2.3x on the
    2-D walk benchmark, benches/coverage_throughput.rs), and exposes the
    allocation-free observe_into. representatives() now returns an
    iterator over pooled entries and accessors no longer require T: Clone.
  • Added: full binding parity for coverage. C ABI: opaque MCCoverageMeter
    (mc_coverage_meter_new/observe/counts/unique_representatives/tier_count/ free) over fixed-dimension double states with the existing metric ids,
    plus mc_progress_efficiency, mc_classify_regime, and the MCRegime
    enum, declared in both copies of metricchrono.h and exercised by the C
    header smoke test. Python: CoverageMeter, OperatingRegime,
    classify_regime, progress_efficiency over the C ABI. JavaScript:
    pure-JS CoverageMeter (pooled storage, per-observe distance memo,
    newest-first scan, NaN-rejects semantics identical to Rust),
    OperatingRegime, classifyRegime, progressEfficiency, with TypeScript
    declarations and tests.
  • Added: custom distance callbacks for the C-ABI coverage meter.
    mc_coverage_meter_new_with_callback takes an MCDistanceFn
    (double (*)(const double *a, const double *b, size_t dim, void *user_data)),
    so embedders can audit coverage under domain metrics without round-tripping
    states; returning NaN rejects admission (the safe failure mode). The Python
    CoverageMeter accepts any Python callable as its metric (exceptions in the
    callable are converted to NaN rather than unwinding into the C ABI); the
    JavaScript binding already accepted arbitrary metric functions.