dartastic_opentelemetry_api 1.0.0-beta
dartastic_opentelemetry_api: ^1.0.0-beta copied to clipboard
Dartastic.io's OpenTelemetry API for Dart following the OpenTelemetry specification. Supports all platforms including web.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.0.0-beta - 2026-05-07 #
Added #
- (Thank you to Kevin Moore @kevmoo)
Context.run()andContext.runSync()— Zone-based implicit context propagation. These are the spec-aligned way to attach a context for a scope of execution and ensure it propagates correctly acrossawaits and async callbacks. - (Thank you to Kevin Moore @kevmoo)
isTransferableflag onContextKey(defaultfalse) to opt custom keys into cross-isolate transfer viaContext.runIsolate(). ServerResourceandUrlResourcesemantic resource enums.
Changed #
- Breaking:
tracer.startSpan()no longer automatically activates the span in the current context, aligning with the OpenTelemetry specification. Usetracer.withSpan/withSpanAsync(orContext.runSync/Context.run) to make a span active for a scope. - Breaking:
Context.currentWithBaggage()is now pure — it returns a Context with Baggage but no longer mutatesContext.current. Pair the returned Context withrunSync/runif you need it active. - Breaking: Custom values stored via
ContextKeyare no longer transferred across isolate boundaries by default. PassisTransferable: truewhen creating the key to opt in. Built-inBaggageandSpanContextcontinue to transfer unconditionally. APITracer.withSpan()andwithSpanAsync()now use Zone-based context propagation (Context.runSync/Context.run) for correct behavior across async boundaries (no-op implementation only).- README and example updated to demonstrate Zone-based context management.
Deprecated #
- The static
Context.currentsetter. Setting it does not propagate acrossZones, which produces incorrect context inside async callbacks. UseContext.run()orContext.runSync()instead.
Fixed #
APITracer.createSpan()now correctly inherits parent spans from the providedcontextparameter orContext.current. Previously these were ignored.Context.runIsolate()now serializes the specific Context instance it was called on, not the globalContext.current.Context.runIsolate()no longer mutates the parent isolate's_currentContexton return — eliminates a case where Zone-bound context could leak into the parent's static field.nowAsNanos()no longer loses precision on JS. The 64-bit wrap now happens before the multiplication by 1000.
1.0.0-alpha - 2025-12-22 #
Changed #
Documentation, updated to 1.0.0-alpha release candidate, matching dartastic_opentelemetry
0.9.0 - 2025-12-14 #
Added #
Logs signal, kudos to https://github.com/yuzurihaaa
0.8.3 - 2025-06-06 #
0.8.2 - 2025-06-05 #
Changed #
- Added instrumentationScope() to API
- Removed _getAndCacheOtelFactory() check from getTracerProviders/getMeterProviders
0.8.0 - 2025-05-01 #
Added #
- Initial public release of the OpenTelemetry API for Dart
- Core abstractions for traces, metrics and common (baggage, context)
- Context propagation mechanisms
- Implementation of the OpenTelemetry specification
- No-op implementations of all interfaces
- Comprehensive test suite
- Basic examples
Compliance #
- Implements OpenTelemetry API specification v1.42