Skip to content

v0.8.0

Choose a tag to compare

@brickfrog brickfrog released this 12 Apr 21:09
· 81 commits to main since this release
v0.8.0
276b113

Changes

Stronger trace ID uniqueness

Trace and span IDs are now generated by a ChaCha8 PRNG seeded from the process startup time (@env.now() stretched to 32 bytes via splitmix64 mixing constants). Previously, IDs concatenated a wall-clock timestamp with a static monotonic counter, so two processes starting in the same nanosecond could produce identical trace IDs.

IDs are no longer temporally ordered. OTLP zero-value checks are enforced for generated IDs.

Redundant parent attribute removed from child spans

with_child_span no longer pushes a "parent" field into child span event attributes. The parent relationship is encoded in parent_span_id on the Span struct, correctly serialized by Span::to_json() and the OTLP exporter.

Breaking Changes

Subscriber code reading span.enter event fields for key == "parent" will no longer find it. Use span.parent_span_id instead.

Migration

  • If you sort or filter trace IDs expecting temporal ordering, that no longer holds.
  • If you check child span event fields for a "parent" key, read span.parent_span_id directly instead.