Changelog

View Source

0.7.2

Added

  • Telemetry events at the sample-rate gate. statsderl now emits two events that observers can attach to without instrumenting shackle internals:

    EventMeasurementsMetadataFires when
    [statsderl, sample, sent]count => 1operation => OperationA metric crosses the rate gate (or rate was 1/1.0) and is dispatched to shackle for UDP send.
    [statsderl, sample, dropped]count => 1operation => Operation, rate => RateIntThe rate gate suppresses a metric (Rand > RateInt).

    Matches the telemetry pattern shackle (0.7.0) and whitecap already use. Event names are stable; the metadata map may grow over time.

  • telemetry (1.4.2) is now a direct dependency. It was already pulled in transitively via shackle.

Changed

  • statsderl_sample:rate_scaled/2 and the private cast/1 helper now emit the telemetry events above. No behavioural change to return values or wire-format output; the events sit on the existing call paths.

0.7.1

Changed

  • Bumped shackle dependency from 0.7.0 to 0.7.1, which itself bumps metal 0.1.1 -> 0.1.2 and foil 0.1.3 -> 0.1.4 (both infrastructure-only refreshes, plus a tightened error/0 type and a macro-based DRY refactor in foil).

0.7.0 was tagged in git but its hex publish failed (the granderl removal commit landed past hex's one-hour modification window for the pre-existing 0.7.0 release). 0.7.1 is the first hex release to ship the granderl-to-knot swap; behaviour and API are identical to the 0.7.0 git tag.

0.7.0

Breaking

  • Minimum supported Erlang/OTP version is now 25, inherited from shackle 0.7.0.

Changed

  • Replaced the granderl dependency with knot (in-house C NIF using wyrand). statsderl_sample:rate_scaled/2 now calls knot:uniform/1 — same signature, same range guarantees, no behavioural change at the sample-rate gate.
  • Bumped shackle from git ref 0.6.16 to the hex 0.7.0 release.
  • Bumped parse_trans from 3.0.0 to 3.4.2.
  • CI matrix now covers OTP 25, 26, 27, 28; actions/checkout upgraded to v5.
  • Documentation migrated from edown to rebar3_ex_doc (matching shackle 0.7.0). Generated doc/ directory removed from the repo; HTML docs are now published to hexdocs on release.

Why

granderl 0.1.5 on hex.pm fails to build on OTP 27+: its preamble.sh invokes erl -noshell -s init stop -eval ... with options in an order that causes the node to terminate before -eval runs, leaving ERTS_INCLUDE_DIR empty and the C compiler unable to find erl_nif.h. The fix exists in granderl's master but the hex package is not under our ownership. knot is a small in-house C NIF (~80 LOC) that implements the same uniform/1 primitive cleanly on every supported OTP.