Repository navigation
v0.8.0
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, readspan.parent_span_iddirectly instead.