Releases: wyhaines/opentelemetry-api.cr
Update shard.yml to remove hardcoded branches
API/SDK Separation
This is a major breaking change!
This release is the first API-only release. All of the SDK functionality now lives in the SDK repository. If you were using this directly, you will need to switch to the SDK.
Removing {% debug %}
A debug statement was left in the new code in the previous release. This release just removes that.
Memory efficiency & more
This release has a lot of internal fixups. A couple of significant memory leak-related bugs are fixed. A bunch of minor internals were improved, and JSON generation now uses JSON::Builder, which results in prettier JSON, and arguably more correct code generating it.
Fix Memory Leaks
The major upside to this release is that it resolves a couple issues that can cause memory leaks.
First, creating new traces was triggering the creation of new TracerProviders every time, which would create new Configuration and Exporter instances. And since exporters create Fibers (which would wait forever for data that will never arrive)....ugly memory leak.
A finalizer has been added to Configuration to ensure that Exporter instances reap any resources (like Fibers), that might otherwise persist. Second, TracerProvider provisioning is more intelligent. The cached, default TracerProvider is always used unless there is a request for one that is differently configured. TODO is to make this more robust, to cache all config combinations for TracerProviders.
Documentation, config cleanup, better spec compliance
This release bundles several bug fixes, cleanups, and some minor spec compliance improvements, as well as some documentation changes.
What's Changed
New Contributors
Full Changelog: v0.3.0...v0.3.1
Samplers and Environment Based Config
This release adds support for defining a sampler on traces, and it also adds support for configuring the Otel library via environment variables.
Instrumentation Won't Instrument Itself
In previous releases, the instrumentation would instrument itself. So, for example, the HTTP requests that send telemetry to a remote ingest point, such as the New Relic ingester, would also get instrumented. This leads to data ingest that one doesn't usually care about. i.e. you don't usually want to see the spans for the process of delivering the spans to your observability platform. This release implements the Spec required ability to mark spans as non-recording. This can be used by instrumentation to mark areas where any generated spans must be discarded. This release also has improved documentation.
Improve type handling
This release includes some fixes to improve type handling bodges.
Fix bugs so that TraceContext & Distributed Tracing can work
This release is mostly bug fixes, in tandem with instrumentation work, so that Distributed Tracing works.