NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1894 most downloaded on crates.io
A collection of histogram data structures
Last release 23 days ago
15 Sep 2026
Release timing varies
gaps range from 8 days to 10 months
Rarely documented
notes for 9 of 58 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
58 releases · first in 2015
chore: bump to 1.5.1-alpha.0 for next development iteration by @brayniac in #26
Full Changelog: v1.5.0...v1.6.0
One column per quarter.
checked_sum() on Histogram and Histogram32 aggregates a batch of
completed windows or per-writer histograms into one fresh owned result. Every
configuration is validated before allocation; addition and per-bucket overflow
detection are fused into one pass per source, and a failing private result is
discarded. On x86 an AVX2 specialization is selected at runtime after the
CPU feature check; other hosts use the portable path.checked_add_assign() on Histogram and Histogram32: allocation-free
in-place merge with two-pass overflow validation and no partial mutation on
failure. The u32 validation pass reduces per-bucket overflow flags so large
arrays can vectorize.reset() on Histogram and Histogram32 clears every bucket in place while
preserving configuration and the existing allocation.load_into() and drain_into() on AtomicHistogram and AtomicHistogram32
fill an existing dense destination, rejecting incompatible configurations
before any mutation.quantile_bucket() and quantile_buckets_into() on
Histogram and Histogram32. Batches preserve request order and duplicates,
validate before writing, and share one forward rank scan.shrink_to_fit() on owned sparse and cumulative histograms, with both
u64 and u32 counters, to reduce spare vector capacity before retention.quantile_bucket() and quantile_buckets_into() queries on
owned and borrowed cumulative histograms, for both u64 and u32 counters.
Batch queries preserve request order and duplicates using caller-provided storage.Error::InsufficientOutputCapacity reports the required and available output
slots when a caller-provided query buffer is too short.u128 totals, validation and rank semantics are unchanged.Config and rebuilds dense, sparse and cumulative
histograms through their validating constructors; cumulative means are
recomputed from validated counts. Serialized field names and legacy JSON and
bincode round trips are preserved.Config construction rejects bucket geometries whose index or count fields
cannot fit u32 before arithmetic can overflow.QuantileResult: Add into_entries by @Lorak-mmk in #24
Full Changelog: v1.4.1...v1.5.0
QuantilesResult::into_entries() — consumes the result and returns the
quantile-to-bucket BTreeMap by value, allowing iterator transformations
without borrowing from the original result.Add mean() to borrowed CumulativeRO Ref views by @thinkingfish in #21
Full Changelog: v1.4.0...v1.4.1
mean() on the borrowed CumulativeROHistogramRef /
CumulativeROHistogram32Ref views. The mean is stored on the view
(computed once at construction, or carried over from the owned
histogram's cached value), so mean() is a cheap field access exposed
just like count() — no per-call streaming computation — letting a
zero-alloc reducer fold it in directly. Returns None for an empty
histogram.CumulativeROHistogramRef / CumulativeROHistogram32Ref no longer
implement Eq (they now carry an f64 mean); PartialEq is retained.Midpoint-based mean() on CumulativeROHistogram / CumulativeROHistogram32 — the mean of all observations, estimated from bucket midpoints, computed onc
mean() on CumulativeROHistogram / CumulativeROHistogram32
— the mean of all observations, estimated from bucket midpoints, computed
once at construction time across from_parts, From<&Histogram>, and
From<&SparseHistogram>. Returns None for an empty histogram.CumulativeROHistogram / CumulativeROHistogram32 no longer implement Eq
(they now store an f64 mean); PartialEq is retained. The borrowed
*Ref view types are unaffected.Plan: borrowed-view types for zero-allocation percentile queries by @thinkingfish in #16
Full Changelog: v1.3.0...v1.3.1
CumulativeROHistogramRef<'a> / CumulativeROHistogram32Ref<'a> and
SparseHistogramRef<'a> / SparseHistogram32Ref<'a> — borrowed views over
histogram storage that mirror the read-only API surface of the owned types.
Lets columnar consumers compute quantiles directly off &[u32] slices
without per-snapshot allocation or revalidation.from_parts_unchecked constructor on each ref type for hot-path use where
invariants are already known to hold; from_parts validates as before.as_ref() on CumulativeROHistogram* and SparseHistogram* returning the
matching ref view; From<&Owned> for OwnedRef<'_> for trait-based conversion.SampleQuantiles impl on each ref type.Add Notebook Kit site for h2histogram.org (alternative to #10 ) by @thinkingfish in #11
Full Changelog: v1.2.0...v1.3.0
Histogram32, AtomicHistogram32, SparseHistogram32, and
CumulativeROHistogram32 — u32-counter sibling types for all four histogram
variants, generated from shared declarative macrosCount and AtomicCount traits abstracting the bucket counter width
(implemented for u32/u64 and their atomic counterparts)From conversions (u32 → u64) for all four histogram
familiesTryFrom conversions (u64 → u32) for Histogram,
SparseHistogram, and CumulativeROHistogramTryFrom paths for the snapshot pipeline:
Histogram → CumulativeROHistogram32, Histogram → SparseHistogram32,
and SparseHistogram → CumulativeROHistogram32Histogram and AtomicHistogramrezolus_memory example comparing Histogram, SparseHistogram, and
CumulativeROHistogram memory footprints from Rezolus parquet recordingslib.rsCumulativeROHistogram cache-line threshold for linear-vs-binary search is
now count-type-dependent (64 / size_of::<C>()); total_count and
individual_count continue to return u64Add CumulativeROHistogram for fast quantile queries by @thinkingfish in #7
Full Changelog: v1.1.0...v1.2.0
CumulativeROHistogram, a read-only histogram variant with cumulative
(prefix-sum) counts that enables O(log n) quantile lookups via binary search
(with a linear-scan fallback for cache-line-sized data)From<&Histogram> and From<&SparseHistogram> conversions for constructing
a CumulativeROHistogramCumulativeROHistogram for analytics use
caseschore: bump to 1.0.1-alpha.0 for next development iteration by @brayniac in #2
Full Changelog: v1.0.0...v1.1.0
SampleQuantiles trait with quantiles() and quantile() methods, implemented
for both Histogram and SparseHistogramQuantilesResult struct returning a BTreeMap<Quantile, Bucket> with
total_count, min, and max bucket metadataQuantile newtype wrapping validated f64 in 0.0..=1.0, implementing
Ord/Eq for use as a BTreeMap keyError::InvalidQuantile variant for quantile validation errorsHistogram::percentiles() and Histogram::percentile() — use SampleQuantiles
trait methods insteadSparseHistogram::percentiles() and SparseHistogram::percentile() — use
SampleQuantiles trait methods insteadError::InvalidPercentile — use Error::InvalidQuantile insteadrelease: v1.0.0 by @brayniac in #1
Full Changelog: https://github.com/iopsystems/histogram/commits/v1.0.0
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
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
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
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
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
Your coding agent can read these notes before it upgrades. Set up the MCP server →