Skip to content

Releases: chrono-metrics/metricchrono

v0.4.0

10 Jun 21:11

Choose a tag to compare

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

v0.3.0

08 Jun 21:54

Choose a tag to compare

  • Added: Pre-built binary wheels on PyPI for Linux (manylinux x86_64 and
    aarch64), macOS (Intel and Apple Silicon), and Windows (x86_64), so
    pip install metricchrono no longer requires a Rust toolchain on those
    platforms. The source distribution still builds from source (and so still
    requires Cargo). No API changes.