Releases: open-telemetry/opentelemetry-kotlin
Release list
Version 0.6.0
Migration notes
- Pin the minimum supported Kotlin version for iOS and JS (klib) consumers at 2.4.0 in the version catalog, instead of implicitly tracking the Kotlin version this library is built with. A Kotlin update that would raise this floor now fails the min-versions integration test, so raising it becomes a deliberate, documented decision. (#647)
- Clarify the minimum supported Kotlin version per target family: 2.0.0 applies to JVM and Android consumers only, while iOS and JS consumers need at least the Kotlin version this library is built with (currently 2.4.0) — a klib toolchain constraint shared by all KMP libraries. Both floors are now enforced by integration tests. (#633)
- Raise the minimum supported AGP version to 8.0.2. Through no fault of opentelemetry-kotlin, AGP 8.0.0 bundles an R8 that fails to dex Kotlin 2.0
@Metadata, so projects on that version can't build against these artifacts without an unusual manual R8 override. Later 8.0.x patches ship a working R8, making 8.0.2 — the final 8.0.x patch — a more sensible floor. (#614) - Raise the minimum supported Gradle version from 8.0 to 8.0.2, matching the AGP floor on the final 8.0.x patch. (#614)
- Use the new name for the app id / client id (#623)
🌟 New instrumentation
📈 Enhancements
- Implement
enabled()onTracerinterface (#625) - Record dropped link/attribute/event counts (#630) (#631) (#629)
- Implement
LoggerConfig(#704) - Implementation of implicit context for coroutines (#684)
🛠️ Bug fixes
SpanProcessor.onEndingshould be forwarded byOtelJavaSpanProcessorAdapter(#637)OtelJavaSpanBuilderAdapter.setStartTimestampshould convert the startTimestamp into nanos from the specifiedTimeUnit(#638)
🧰 Tooling
🙇 Thank you
This release was possible thanks to the following contributors:
@bidetofevil
@breedx-splk
@codecov
@copilot-pull-request-reviewer
@damianpetla
@fractalwrench
@github-advanced-security
@inetand
@jdvr
@lemnik
@Msksgm
@priettt
@thompson-tomo
@trask
Version 0.5.0
- Attributes are now considered a stable API. 🚀
Migration notes
- The default resource no longer includes
service.version. (#561) - The default scheduled batch export delay is now 5000ms. (#580)
📈 Enhancements
- Metrics now include a minimal
MeterProviderimplementation wired through the OpenTelemetry entry points. (#527) - Add initial declarative config provider interfaces. (#598)
- Add the
AlwaysRecordSamplerimplementation. (#587) - Add generated event semantic convention classes. (#585)
- Attributes are now stable and no longer marked with
@ExperimentalApi. (#609) TextMapGetterandTextMapSettercarrier arguments are now nullable to align with the OpenTelemetry propagator API specification. (#595)
🛠️ Bug fixes
- Remove println output from OTLP exporters. (#560)
- Log a warning when an instrumentation scope name is invalid. (#563)
- Skip OTLP HTTP export requests when there is no telemetry to export. (#562)
- Use the trace service response model for OTLP trace responses. (#573)
- Retry OTLP HTTP requests on retryable status codes. (#574)
- Make
ReadWriteLogRecord.spanContextmutable. (#590) - Do not export spans when
isSampledis false. (#589) - Pass span links to samplers. (#608)
📖 Docs
- API stability levels are now documented in a matrix in api/README.md. (#579)
- Improve
CONTRIBUTING.mdfor new contributors. (#588)
🧰 Tooling
- test: add test that enforces min supported versions (#521)
- build: attempt to fix build (#524)
- test: add a test that cross checks propagation between impl/compat (#525)
🙇 Thank you
This release was possible thanks to the following contributors:
@bidetofevil
@breedx-splk
@carlosalberto
@codecov
@DavidGrath
@fractalwrench
@inetand
@jdvr
@Msksgm
@narumichi0710
@priettt
Version 0.4.0
⚠️ Breaking changes
- Drop platform support for x64 on iOS. This is due to the Kotlin language project also dropping support for iosX64. See the upstream release notes for additional detail. (#514) ### 📈 Enhancements
✉️ Attributes
- Attributes now support equality (#425)
- Attributes now support ByteArray value types. ( #430, #452 )
- Attributes now support AnyValue value type. (#516)
🧳 Baggage
- The Baggage API has an initial implementation. (#436)
- Baggage API also includes a compat layer. (#433)
- Baggage can be created through the OpenTelemetry API. (#480)
- Baggage can now be stored in the OpenTelemetry Context. (#456)
- BaggageFactory now has an implementation. (#457)
✈️ Propagators
- implement compat layer for PropagatorFactory (#461)
- add traceparent implementation (#462)
- create compat adapter for propagators (#460)
- Implement W3C TraceContext Propagator (#467)
- create entrypoint for propagators (#469)
- Initial implementation of the TextMapPropagator API. (#455)
- New spec-compliant support for W3CBaggagePropagator has been added. (#458)
- TextMapGetter now has getAll() method, per specification. (#466)
Miscellaneous Enhancements
- feat(sampling): implement probability sampler (#398)
- Initial API scaffolding has been created for Meter. (#414)
- Initial API scaffolding for MeterProvider api. (#437)
- OTLP exporters now allow users to provide a custom HttpClient. (#431)
- support AnyValue in Logger.emit() (#490)
- Scaffold MeterProvider config and compat layer (#498)
- allow supplying a custom implicit context storage mechanism (#470)
- thread local context storage (#479)
- TraceState now has an initial implementation. (#464)
- Provide implementation of AnyValue (#453)
- LogLimit can now be configured from environment variables. (#407)
🛠️ Bug fixes
- fix: specify span kind correctly in protobuf (#417)
- fix: prevent empty key for attributes (#424)
- fix: hook up attributes in compat resource implementation (#423)
- fix: ensure that resource attributes don't have limits (#429)
- fix: handle unexpected values in attributes (#432)
- Enforce attribute size limit for byte array attribute values. (#468)
- Invalid configs should not throw exceptions. (#504)
- Don't throw when using the DSL to configure exporters and processors. (#503)
- Remove throws on init in trace and span context usage scenarios (#506)
📖 Docs
- docs: Add SIG meeting info and welcoming language (#493)
- docs: add link for getting started instructions (#484)
🧰 Tooling
- Add fuzz tests for trace context (#492)
🙇 Thank you
This release was possible thanks to the following contributors:
@bidetofevil
@breedx-splk
@cijothomas
@codecov
@fractalwrench
@HylkeB
@inetand
@viorel-alexandrescu
@wpessers
Version 0.3.0
- Alter Tracing API so that
Spandoes not include readable values (#267) - Move packages of several APIs (#321) (#295) (#293)
- Alter resource API (#288)
- Add SDK instance level support of ShutdownState (#300)
- Provide return value for Scope#detach() (#287)
- Disallow creating span events during creation (#290)
- Add isRemote flag to SpanContext (#289)
- Add DSL for configuring samplers (#297) (#314) (#325) (#346)
- Capture default attributes in resource object (#308) (#317)
- Add ResourceFactory API (#299)
- Bump JavaScript dependencies (#309)
- Support exception parameter in Logger interface (#296)
- Move createKey() function to ContextFactory (#291)
- Implement the AlwaysOn/AlwaysOff built-in samplers (#306)
- Move additional interfaces to sdk-api (#311)
- Add API for span conversion (#316)
- Support logging structured messages (#313)
- Configure attribute limits on traces/logs (#324)
- Allow resources to be specified at a global level (#323)
- Alter DSL for configuring built-in samplers (#327)
- Ensure span id is generated before sampling decisions (#335)
- Add global attribute limits (#328)
- Add attributes from sampling result to span (#338)
- Remove recordException() from API (#320)
- Ensure that TraceState complies with W3C TraceContext spec (#345)
- Disallow overriding span status once set to Ok (#357)
- Add bounding for OTLP response body (#361)
- Create parent based sampler (#349)
- Update semantic conventions to v1.40.0 (#363)
- Bump JavaScript dependency versions (#360)
- Add ability to override span context (#358)
- Add makeCurrent() API to ContextFactory (#351)
- Allow specifying timeout for OTLP export (#386)
🙇 Thank you
This release was possible thanks to the following contributors:
@bidetofevil
@breedx-splk
@carlosalberto
@codecov
@fractalwrench
@FunkyMuse
@martincostello
@Msksgm
@priettt
Version 0.2.0
- Set explicit minCompileSdk at 34 (#214)
- Set minimum supported AGP version of 7.1.3 explicitly (#219)
- Move various interfaces to
sdk-apimodule to denote they should not be used when writing instrumentation (#223) (#224) (#240) - Various API changes to better align with the OpenTelemetry specification (#225) (#222) (#228) (#233) (#235) (#242) (#239) (#241) (#238) (#248) (#245) (#247) (#246)
- Include semantic conventions by default as dependency of core module (#249)
- Update opentelemetry-java to 1.60.1 (#260)
🙇 Thank you
This release was possible thanks to the following contributors:
@bidetofevil
@breedx-splk
@carlosalberto
@codecov
@fractalwrench
@priettt