PackageTrack
Sign in Get early access

cadence

An extensible Statsd client for Rust

1.8.0 60M downloads/mo #1103 most downloaded on crates.io 56quarters/cadence

What this package is like to depend on

Last release 4 months ago

11 Apr 2026

Release timing varies

gaps range from 2 weeks to 1.1 years

Nearly every release is documented

notes for 52 of 52 stable releases

2 versions withdrawn

withdrawn after publishing

11 years old

54 releases · first in 2015

2 releases in the last 12 months

see the full history below

Release timeline

54 releases · Dec 2015 to Apr 2026
2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026
Release Pre-release Withdrawn

Releases

latest 54
  1. 1.8.0 11 Apr 2026
    Release notes
    • Allow UDP sinks (UdpMetricSink, BufferedUdpMetricSink) to be configured to periodically re-resolve the hostname of the server that metrics are being sent to. Examples of this can be found in documentation for each sink, the README, or examples directory.
    Open source →
  2. 1.7.0 08 Feb 2026
    Release notes
    • Fix an issue with BufferedUdpMetricSink stats not being updated per #227. Thanks to @danielnorberg for this contribution.
    • Update the minimum supported Rust version to 1.70 (from 1.60) since 1.60 is unreliable in CI.
    Open source →
  3. 1.6.0 21 Jun 2025
    Release notes
    • Fix an issue with MultiLineWriter where buffering could cause metrics to be emitted out of order per #218. Thanks to @dwhjames for this fix.
    • Add a replace_writer method to MultiLineWriter to allow broken writers to be replaced (such as connection oriented writers like TCP streams) per #215. Thanks to @dwhjames for this contribution.
    Open source →
  4. 1.5.0 27 Sep 2024
    Release notes
    • Add support for Datadog Statsd extensions sample rates, container IDs, and explicit timestamps per #211. Thanks to @iksaif for this contribution.
    Open source →
  5. 1.4.0 28 Apr 2024
    Release notes
    • Make the previously internal MultiLineWriter and SocketStats structs available from the cadence::ext module per #206. These can be useful when creating custom MetricSink implementations. Thanks to @mlowicki for this contribution.
    Open source →
  6. 1.3.0 23 Mar 2024
    Release notes
    • Add support for using u64, i32, and u32 types as counters per #201. Thanks to @James-Bartman for this contribution.
    • Add MetricSink::stats() method to the MetricSink interface to allow sinks to expose low-level network telemetry per #203. Thanks to @mlowicki for this contribution.
    • Add StatsdClient::flush() method to the client to allow time-sensitive metrics to be flushed sooner than they otherwise might be per #200. Thanks to @James-Bartman for this contribution;
    Open source →
  7. 1.2.0 21 Feb 2024
    Release notes

    Version bump for 1.2.0 release (#198)

    Open source →
    Release notes
    • Add QueuingMetricSinkBuilder to allow an error handler to be set for the wrapped MetricSink implementation per #195. Thanks to @mlowicki for this contribution.
    Open source →
  8. 1.1.0 03 Feb 2024
    Release notes
    • Update crossbeam-channel dependency to 0.5.11.
    • Bump minimum supported Rust version to 1.60 from 1.56.
    • Add MetricSink::flush() implementation to QueuingMetricSink per #191. Thanks to @mlowicki for this contribution.
    Open source →
  9. 1.0.0 02 Dec 2023
    Release notes
    • Remove deprecated StatsdClient::from_udp_host method and Compat trait per #181. These methods have been deprecated since v0.26. See MIGRATION.md for more information.
    Open source →
  10. 0.29.1 22 May 2023
    Release notes

    Changelog and version bumps for 0.29.1

    Open source →
    Release notes
    • Fix a bug where distribution metrics didn't include default tags per #184. Thanks to @danielsig727 for this contribution.
    Open source →
  11. 0.29.0 02 Apr 2022
    Release notes
    • Add support for "default tags" that can be added to a StatsdClient when creating it using the builder per #172. Default tags will be automatically added to all metrics emitted by the client. Thanks to @look for this contribution.
    Open source →
  12. 0.28.0 29 Jan 2022
    Release notes
    • Breaking change - Add support for packed values which allows multiple values to be sent as a single metric for histogram, distribution, and timer types per #169. The Cadence client now accepts Vec<T> for histogram, distribution, and timer methods. Note that this feature is a Datadog extension and so may not be supported by your server. It is supported by versions >=v6.25.0 && <v7.0.0 or >=v7.25.0 of the Datadog agent. Thanks to @Jason8Ni for this contribution.
    Open source →
  13. 0.27.0 26 Dec 2021
    Release notes
    • Breaking change - StatsdClient no longer implements the Clone trait due to now using Box internally instead of Arc per #163. Where StatsdClient was .clone()'d previously, it should now be wrapped with an Arc to enable it to be cloned.
    • Minor performance improvement in the way metric tags are formatted per #161.
    Open source →
  14. 0.26.0 23 Jul 2021
    Release notes
    • Breaking change - Client traits are now generic across supported types of values #132. This change should be source-compatible in most cases for users importing the Cadence prelude module. Type-specific deprecated methods have been moved to a new Compat trait to ease this migration. This trait and its implementation will be removed in a future release. See MIGRATION.md for more information.
    • Add support for f64 values for histogram and distribution metric types per #131.
    • Minimum supported Rust version for Cadence is now 1.41 per #138.
    Open source →
  15. 0.25.0 21 Mar 2021
    Release notes
    • Breaking change - Added support for DataDog distribution metric types per #125 thanks to @duarten.

    • Breaking change - Rewrite SpyMetricSink and BufferedSpyMetricSink introduced in 0.22.0 to use channels for making written metrics available instead of shared Write implementation wrapped with a Mutex. The newly changed sinks now return a crossbeam_channel::Receiver<Vec<u8>> instance from their constructors that callers can use to read any metrics written by the sink. This avoids accidental cases of mutex poisoning which can happen when the Mutex is held when an assertion fails as part of a test per #124.

      Examples of how to use the newly rewritten sinks can be found in:

    • Breaking change - Remove unsafe uses of static mut used for global state related to macros which caused undefined behavior per #129 thanks to @parasyte. A consequence of this that cadence_macros::set_global_default and cadence_macros::get_global_default now only accept instances of StatsdClient, not the trait MetricClient.

    Open source →
  16. 0.24.0 03 Feb 2021
    Release notes

    cadence-macros yanked due to causing undefined behavior #129

    • Split the project into two crates. The cadence crate will continue to contain the primary client and API. The cadence-macros crate contains convenience macros for removing some boilerplate required to emit metrics per #114.
    • Fix MultilineWriter (used by buffered sinks) to honor the Write::write contract per #117.
    Open source →
  17. 0.23.0 15 Dec 2020
    Release notes
    • Breaking change - Add method to emit f64 types as gauges per #106.
    • Update crossbeam-channel dependency to 0.5 per #110.
    Open source →
  18. 0.22.0 09 Oct 2020
    Release notes
    • Add new SpyMetricSink and BufferedSpyMetricSink to allow inspecting metrics sent by Cadence as part of integration testing an application per #103.
    Open source →
  19. 0.21.1 02 Sep 2020
    Release notes
    • Minor documentation improvements.
    Open source →
  20. 0.21.0 02 Sep 2020
    Release notes
    • Add a .flush() method to the MetricSink trait to allow applications to flush metrics out-of-band per #100.
    Open source →
  21. 0.20.0 07 Apr 2020
    Release notes
    • The QueuingMetricSink can now be created with a fixed queue size using the ::with_capacity() constructor. This allows users to limit the amount of memory used by sending metrics (in case the wrapped sink can't keep up with the rate of metrics being sent due to to some sort of error).
    • Updated dependency on crossbeam_channel to version 0.4.0+;
    • Breaking change - The Histogrammed trait now includes methods for sending Duration objects, converted to nanoseconds, as histogram values.
    • Breaking change - The QueuingMetricSink::panics() method now returns a u64, not a usize.
    Open source →
  22. 0.19.1 12 Oct 2019
    Release notes
    • Minor documentation improvements.
    Open source →
  23. 0.19.0 07 Oct 2019
    Release notes
    • Fix cases where sending large payloads (a single metric larger than a UDP packet while using the buffered UDP sink) caused an extra UDP packet to be sent containing only a newline per #87.
    • Add support for emitting metrics over a Unix socket via the new UnixMetricSink and BufferedUnixMetricSink per #86 thanks to Daniel Smith.
    • Deprecate the StatsdClient::from_udp_host constructor which will be removed in a future release. Users are encouraged to use the ::from_sink() and ::builder() constructors instead.
    • All Cadence examples (in the examples directory) are now available under the CC0 agreement (basically public domain even in countries with no such concept).
    Open source →
  24. 0.18.0 01 Aug 2019
    Release notes
    • Allow empty strings to be use for metric prefixes. Previously, this would result in metrics with a leading ., now an empty prefix results in just the bare metric key.
    • Breaking change - Update Cadence to build with Rust 2018 per #82. Note that Cadence should still work fine with Rust 2015 code bases as well as Rust 2018 code bases. This is marked as a breaking change but will likely not require changes for most users. See the Rust edition docs for more information.
    Open source →
  25. 0.17.1 30 Mar 2019
    Release notes
    • Replace internal use of crossbeam MsQueue with channels from the crossbeam_channel crate per #79. This change improves performance of the QueuingMetricSink, reducing the time taken to submit a metric by about 50%. This is a non-breaking change.
    Open source →
  26. 0.17.0 30 Mar 2019 withdrawn

    Nothing published for this version

  27. 0.16.0 07 Dec 2018
    Release notes
    • Breaking change - Require that all sinks and error handlers used with StatsdClient are panic safe, that is, they implement RefUnwindSafe per #77. Note that all sinks included with Cadence are panic safe so this shouldn't be much of a change for many users. See also Rust #54768 for more information about the reasoning for the change.
    Open source →
  28. 0.15.1 19 Jul 2018
    Release notes
    • Update Cadence crate to forbid any uses of unsafe {} code.
    • Minor documentation improvements.
    Open source →
  29. 0.15.0 13 Jul 2018
    Release notes
    • Breaking change - Add support for Set metric types. Sets can be used to count the number of unique occurences of an event. Per #62.
    • Updated dependency on crossbeam to the latest version (0.3.2).
    Open source →
  30. 0.14.0 12 Apr 2018
    Release notes
    • Breaking change - Rename the MetricBuilder::send() method to MetricBuilder::try_send() and create a new .send() method that discards successful results and invokes a custom handler for error results. Handlers can be set by using a builder via the StatsdClient::builder() method. Per #65.
    Open source →
  31. 0.13.2 14 Mar 2018
    Release notes
    • Warn when MetricBuilder instances aren't used when adding tags to metrics per #63.
    Open source →
  32. 0.13.1 07 Feb 2018
    Release notes
    • Minor documentation improvements.
    Open source →
  33. 0.13.0 07 Feb 2018
    Release notes
    • Breaking change - Added _with_tags method variants to all traits for emitting metrics (Counted, Timed, Gauged, Metered, Histogrammed) per #41. These methods will return a MetricBuilder instance that can be used to add Datadog style tags to metrics. Tags are an extension so they may not be supported by all Statsd servers.
    • The Metric trait (which is used by each type of metric object for returning a &str representation of itself) is now part of the public API.
    Open source →
  34. 0.12.2 30 Nov 2017
    Release notes
    • Fix off-by-one bug in underlying functionality for BufferedUdpSink that would have caused extra writes to the UDP socket per #59.
    Open source →
  35. 0.12.1 22 Sep 2017
    Release notes
    • Minor documentation improvements and code cleanup.
    Open source →
  36. 0.12.0 10 Feb 2017
    Release notes
    • Add new time_duration method to Timed trait per #48. This allows users to record timings using the Duration struct from the standard library.
    • Add examples of Cadence usage per #36.
    Open source →
  37. 0.11.0 19 Jan 2017
    Release notes
    • Breaking change - Remove deprecated AsyncMetricSink per #47. Users are encouraged to switch to QueuingMetricSink instead. QueuingMetricSink has similar performance, emits metrics asynchronously in another thread, and has a more ergonomic signature (not requiring a generic parameter for the wrapped sink).
    • Breaking change - Remove the generic parameter T from the StatsdClient per #45. Instead of requiring all users of the client to care about the MetricSink implementation, put it behind an Arc pointer in the client and remove the type T from the signature. This makes the client easier to use and share between threads.
    • Remove use of Arc inside various sinks per #35.
    Open source →
  38. 0.10.0 09 Jan 2017
    Release notes
    • Breaking change - Remove deprecated ConsoleMetricSink and LoggingMetricSink per #46. Users wishing to still use these sinks are encouraged to copy the code into their own projects or use Cadence version 0.9.1 until they migrate away from them.
    • Deprecate AsyncMetricSink per #34. Anyone still using AsyncMetricSink is encouraged to switch to QueuingMetricSink instead. Performance should be comparable but QueuingMetricSink can be shared between threads without requiring a .clone().
    Open source →
  39. 0.9.1 01 Jan 2017
    Release notes
    • Change deprecation version of LoggingMetricSink and ConsoleMetricSink to 0.10.0.
    Open source →
  40. 0.9.0 01 Jan 2017
    Release notes
    • Implement QueuingMetricSink utilizing a lock-free queue from the Crossbeam library per #30.
    • Add new metric type, histograms, per #40.
    • Deprecate LoggingMetricSink per #32.
    • Deprecate ConsoleMetricSink per #33.
    Open source →
  41. 0.8.2 13 Dec 2016
    Release notes
    • Internal code cleanup per #29.
    Open source →
  42. 0.8.1 11 Oct 2016
    Release notes
    • Minor documentation fixes.
    Open source →
  43. 0.8.0 28 Aug 2016
    Release notes
    • Add new BufferedUdpMetricSink implementation of a MetricSink that buffers multiple metrics before sending then in a single network operation per #18.
    • Add new AsyncMetricSink implementation of a MetricSink that wraps another sink and sends metrics asynchronously using a thread pool per #23.
    • Implement Clone trait for all builtin sinks for easier use with multiple threads, specifically the AsyncMetricSink per #24.
    Open source →
  44. 0.7.0 27 Jul 2016
    Release notes
    • Add new MetricClient trait implemented by StatsdClient that encompasses all of the other traits for emitting metrics (Counted, Timed, Gauged, and Metered) so that users can refer to a single type when used with generics or behind a pointer per #20.
    Open source →
  45. 0.6.0 21 Jul 2016
    Release notes
    • Change Cadence to be dual licensed under Apache and MIT licenses per #12.
    • Improve documentation around MetricSink trait per #13.
    • Behavior change - Change UDP sockets created by StatsdClient::from_udp_host to be created in non-blocking mode by default per #14. While this does change previous behavior, users of the library shouldn't notice much of a change. In instances where the caller would have blocked before, they will get a MetricError wrapping an io::Error (with an ErrorKind of WouldBlock). Users wishing to restore the old behavior can do so by creating a custom instance of UdpMetricSink. Thanks to the Tikv team for the inspiration.
    Open source →
  46. 0.5.2 02 Jul 2016
    Release notes
    • Increase test coverage per #10.
    • Add documentation for setting up a UDP socket in non-blocking mode per #8.
    Open source →
  47. 0.5.1 07 Jun 2016
    Release notes
    • Remove debug! call in internal StatsdClient call to cut down on log noise per #7.
    Open source →
  48. 0.5.0 10 Mar 2016
    Release notes
    • Breaking change - Rename the constructor of UdpMetricSink from new to from to better match Rust naming conventions for conversion constructors.
    Open source →
  49. 0.4.0 19 Feb 2016
    Release notes
    • Change name of method for getting metric &str representation. The old name implied that the instance was consumed which it was not.
    • Create cadence::prelude module for easy import of Counted, Timed, Gauged, and Metered traits via a glob import. Fixes #4.
    Open source →
  50. 0.3.0 07 Feb 2016
    Release notes
    • Change LoggingMetricSink log target to cadence::metrics.
    • Minor documentation improvements. Fixes #1.
    • Add benchmarks to test suite.
    • Reduce heap allocations when emitting metrics. Fixes #3.
    Open source →
  51. 0.2.2 07 Feb 2016 withdrawn

    Nothing published for this version

  52. 0.2.1 27 Dec 2015
    Release notes
    • Change Cadence from MIT license to Apache-2.0 for better compatibility with BSD and GPLv3 licensed code.
    Open source →
  53. 0.2.0 27 Dec 2015
    Release notes
    • Remove unused development dependency.
    • Add Hash trait to assorted metric types (Counter, Timer, Gauge, Meter).
    • Documentation improvements.
    Open source →
  54. 0.1.0 23 Dec 2015
    Release notes
    • Initial release.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive