NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #897 most downloaded on crates.io
Helper types/functions used by the metrics ecosystem.
Last release 4 months ago
13 May 2026
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 37 of 38 stable releases
2 versions withdrawn
withdrawn after publishing
7 years old
50 releases · first in 2019
chore: Release metrics-util version 0.20.4
chore: Release metrics-util version 0.20.4
metrics dependency constraint to ^0.24.6 so that consumers of metrics-util
resolve a fixed metrics. The metrics 0.24.6 release fixes a duplicate-entry regression in
metrics::KeyHasher that affected metrics_util::registry::Registry in versions 0.19.0
through 0.20.1. metrics-util 0.20.2+ carries its own no-op KeyHasher and is unaffected
by metrics::KeyHasher's behavior, but the dep bump documents the intended pairing.
(#694)chore: Release metrics-util version 0.20.3
chore: Release metrics-util version 0.20.3
One column per quarter.
metrics dependency constraint to ^0.24.5 to avoid build failures when an older
metrics 0.24.x is locked. (#692)chore: Release metrics-util version 0.20.2
chore: Release metrics-util version 0.20.2
metrics_util::common::KeyHasher, replacing the now-deprecated metrics::KeyHasher.
(#669)Drain::count() and Drain::sum() methods to expose true-value counts/sums on reservoir-sampled
storage. (#681)Storage<K> implementation for Arc<T> where T: Storage<K>.
(#657)Summary::sum() method to retrieve the running sum of recorded values.
(#650)DebuggingRecorder uses Key::to_retained() for more efficient long-lived key storage.
(#688)Fixed an atomicity violation in AtomicSamplingReservoir::consume.
AtomicSamplingReservoir::consume.
(#606)No changes. This release replaces 0.19.2, as #588 introduced a breaking change that should not have been released as a patch version.
Taking a snapshot from DebuggingRecorder now has "consume" semantics for counters and gauges, matching the behavior observed for histograms.
### Changed - Updated rand to 0.9.
rand to 0.9. (#556)Added new module storage -- behind a feature flag of the same name -- which contains all storage implementations such as Summary, Histogram, AtomicBuc
storage -- behind a feature flag of the same name -- which contains all storage implementations
such as Summary, Histogram, AtomicBucket, etc.AtomicSamplingReservoir, which provides a memory-bounded histogram storage
container utilizing reservoir sampling for statistically accurate sampling.FanoutBuilder and RouterBuilder now both require recorders to be Sync to facilitate usage with being installed
as the global recorder.AtomicBucket, Histogram, and Summary to new storage module.handles feature which has been subsumed by the new storage feature flag.Added Debug derive to numerous types.
Snapshotter now implements Clone.
New set of methods on Registry for getting a metric handle if it exists.
Registry for getting a metric handle if it exists. (#457)Registry for retaining metric handles that match a given predicate.
(#461)ahash back to 0.8.8 to remove range constraint after an upstream fix was provided to
remove the unnecessary MSRV bump.Lock down the version of ahash to avoid unnecessary MSRV bumping.
ahash to avoid unnecessary MSRV bumping.Fixed the Debug implementation for bucket::Block which represented both an unsafe and logically incorrect usage of crossbeam-epoch.
Debug implementation for bucket::Block<T> which represented both an unsafe and
logically incorrect usage of crossbeam-epoch.RecoverableRecorder no longer functions as a drop guard itself, and instead returns a new
type, RecoveryHandle<R>, which provides that functionality. (#414)DebuggingRecorder. Users should now use
metrics::with_local_recorder instead, which is inherently per-thread.Added a new helper type, RecoverableRecorder, that allows installing a recorder and then recovering it later.
RecoverableRecorder, that allows installing a recorder and then
recovering it later.aho-corasick to 1.0.hashbrown to 0.13.1 to avoid MSRV bump.Switch to metrics-exposed version of AtomicU64.
metrics-exposed version of AtomicU64.Updated sketches-ddsketch to 0.2.0.
sketches-ddsketch to 0.2.0.portable_atomic for 64-bit atomics on more architectures. (#313)In Summary, some quantiles were previously mapped to an incorrect rank at low sample counts, leading to large swings in estimated values.
Summary, some quantiles were previously mapped to an incorrect rank at low sample counts, leading to large swings
in estimated values. (#304)metrics to deal with a public API change.A new per-thread mode for DebuggingRecorder that allows recording metrics on a per-thread basis to better supporting the testing of metrics in user ap
DebuggingRecorder that allows recording metrics on a per-thread basis to better supporting
the testing of metrics in user applications where many tests are concurrently emitting metrics.New storage type, GenerationalStorage, that provides the generational behavior of GenerationalAtomicStorage, nee GenerationalPrimitives, without being
GenerationalStorage, that provides the generational behavior of
GenerationalAtomicStorage, nee GenerationalPrimitives, without being inherently coupled to
using atomic storage.Primitives to Storage, and publicly exposed it so that users can implement their own
storage strategies.StandardPrimitives and GenerationalPrimitives to AtomicStorage and
GenerationalAtomicStorage, respectively.registry, that encompasses Registry and all Registry-related
and dependent types.DefaultHashable publicly.debugging module, and Snapshot is now public.Recency incorrectly failed to keep track of the latest generation when a previously-observed metric had changed generations since the first time it wa
Recency incorrectly failed to keep track of the latest generation when a previously-observed
metric had changed generations since the first time it was observed.Updated various dependencies in order to properly scope dependencies to only the necessary feature flags, and thus optimize build times and reduce tra
metrics.AtomicBucket to use MaybeUninit and better documented the safety invariants in the
various areas that use unsafe.AtomicBucket now correctly drops only initialized slots in a Block.Bump atomic-shim from 0.1 to 0.2.
atomic-shim from 0.1 to 0.2.Simple release to bump dependencies.
Bumped metrics dependency to correspond to the change in key hasher.
metrics dependency to correspond to the change in key hasher.Pin crossbeam-epoch to the correct version where Atomic::compare_exchange support was added.
crossbeam-epoch to the correct version where Atomic::compare_exchange support was added.Reworked Registry to make generation tracking a configurable property at the type level.
Registry to make generation tracking a configurable property at the type level.Updated all deprecated usages of crossbeam_epoch::Atomic ::compare_and_set to compare_exchange.
Router -- for routing specific metrics to target downstream recorders.Registry::clear allows clearing all metrics from the registry.crossbeam_epoch::Atomic<T>::compare_and_set to compare_exchange.Switched Registry over to supporting &Key.
Registry over to supporting &Key.dashmap to hashbrown/parking_lot for Registry.Key to &Key in metrics::Recorder.`Key to speed up Registry operations.Fixed issue with ordering on CompositeKey.
CompositeKey. (#182)Added AbsoluteLayer for supporting counters reported via absolute value.
AbsoluteLayer for supporting counters reported via absolute value.Bumped metrics dependency to 0.14.
metrics dependency to 0.14.MetricKind is now MetricKindMask, and MetricKind is used to define the source side i.e. MetricKindMask is used to match against MetricKind.
MetricKind is now MetricKindMask, and MetricKind is used to define the source side i.e.
MetricKindMask is used to match against MetricKind.- No changes.
Added multiple utility layers: prefix, filter, and fanout.
CompositeKey for defining a metric kind/key combination.Histogram for defining a bucket-based histogram.Registry for storing metric handles mapped to a given key.Summary, based on DDSketch, as a more lightweight alternative to hdrhistogram.DebuggingRecorder to help tet various types that depend on a Recorder.Recency for tracking idle metrics.StreamingIntegers as we no longer use it, and compressed_vec is a better option.MetricsTree as we no longer use it.AtomicBucket now exposes clear and clear_with for both emptying the bucket and reading the
values that were cleared, allowing behavior similiar to atomically swapping a fresh data structure
in for another.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Updated to crossbeam-epoch 0.8 and switched directly to crossbeam-utils for tests.
MetricTree allows storing hierarchical metric values while being serializable by serde.
MetricTree allows storing hierarchical metric values while being serializable by serde. (#38)Erroneously bumped/published. No changes.
Erroneously bumped/published. No changes.
StreamingIntegers allows holding a set of integers in a compressed format in-memory.
StreamingIntegers allows holding a set of integers in a compressed format in-memory. (#13)AtomicBucket provides an append-only list of items that can be snapshot without stopping writes. (#13)### Added - Effective birth of the crate.
Your coding agent can read these notes before it upgrades. Set up the MCP server →