Last release today
01 Sep 2026
Ships on a steady schedule
a new release about every 1 weeks
Nearly every release is documented
notes for 22 of 22 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
714 releases · first in 2024
Release timeline
714 releases since 2024One column per month.
Releases
- v1.47.0-rc.1.0.20260901093353-267f72a4a86f1 Sept 2026pre-release
Nothing published for this version
- v1.47.0-rc.1.0.20260901072838-a22d2c00fc1d1 Sept 2026pre-release
Nothing published for this version
- v1.47.0-rc.1.0.20260901071946-96c0a9be52ad1 Sept 2026pre-release
Nothing published for this version
- v1.47.0-rc.1.0.20260901064650-27e4e96326cc1 Sept 2026pre-release
Nothing published for this version
- v1.47.0-rc.1.0.20260831191414-beb5e541014631 Aug 2026pre-release
Nothing published for this version
- v1.47.0-rc.1.0.20260828211312-1ad6638a742228 Aug 2026pre-release
Nothing published for this version
- v1.47.0-rc.128 Aug 2026pre-release
Release notes
Open source →This is a release candidate for the v1.47.0 release.
That release is expected to include thev1release of the OpenTelemetry Go Logs API and SDK and will provide stability guarantees for the following modules:go.opentelemetry.io/otel/loggo.opentelemetry.io/otel/sdk/log
See our versioning policy for more information about these stability guarantees.
Added
- Add
Logger,GetLoggerProvider, andSetLoggerProvidertogo.opentelemetry.io/otel. (#8874)
Deprecated
- Deprecate
go.opentelemetry.io/otel/log/global; use the equivalent APIs ingo.opentelemetry.io/otel. (#8874)
Fixed
- Ignore attempts to unregister unknown span processors in
go.opentelemetry.io/otel/sdk/trace. (#8840)
Removed
What's Changed
- chore(deps): update open-telemetry/shared-workflows action to v0.11.0 by @renovate[bot] in #8866
- fix(deps): update module google.golang.org/grpc to v1.83.2 by @renovate[bot] in #8867
- fix(deps): update golang.org/x to e88cd73 by @renovate[bot] in #8865
- fix(deps): update googleapis to da73d73 by @renovate[bot] in #8872
- chore(deps): update module github.com/sirupsen/logrus to v1.10.2 by @renovate[bot] in #8871
- chore(deps): update module github.com/ghostiam/protogetter to v1 by @renovate[bot] in #8868
- chore(deps): update module github.com/securego/gosec/v2 to v2.29.0 by @renovate[bot] in #8875
- otel: add global LoggerProvider by @pellared in #8874
- chore(deps): update module github.com/raeperd/recvcheck to v0.3.1 by @renovate[bot] in #8878
- chore(deps): update github/codeql-action action to v4.37.9 by @renovate[bot] in #8877
- Drop support for Go 1.25 by @MrAlias in #8876
- fix(trace): ignore unknown span processor unregisters by @jstar0 in #8840
- fix(deps): update module github.com/golangci/golangci-lint/v2 to v2.13.2 by @renovate[bot] in #8890
- chore(deps): update module github.com/skeema/knownhosts to v1.3.3 by @renovate[bot] in #8889
- chore(deps): update open-telemetry/shared-workflows action to v0.12.0 by @renovate[bot] in #8888
- chore(deps): update golang.org/x/telemetry digest to 9400fed by @renovate[bot] in #8887
- Release v1.47.0-rc.1 by @pellared in #8884
Full Changelog: v1.46.0...v1.47.0-rc.1
Additional notes
Open source →This is a release candidate for the v1.47.0 release. That release is expected to include the
v1release of the OpenTelemetry Go Logs API and SDK and will provide stability guarantees for the following modules:go.opentelemetry.io/otel/loggo.opentelemetry.io/otel/sdk/log
See our versioning policy for more information about these stability guarantees.
Added
- Add
Logger,GetLoggerProvider, andSetLoggerProvidertogo.opentelemetry.io/otel. (#8874)
Deprecated
- Deprecate
go.opentelemetry.io/otel/log/global; use the equivalent APIs ingo.opentelemetry.io/otel. (#8874)
Fixed
- Ignore attempts to unregister unknown span processors in
go.opentelemetry.io/otel/sdk/trace. (#8840) - Ensure
grpc.DialOptionvalues passed viaWithDialOptiontake precedence over conflicting internally-computed defaults ingo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc. (#8834) - Ensure
grpc.DialOptionvalues passed viaWithDialOptiontake precedence over conflicting internally-computed defaults ingo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc. (#8805)
Removed
- Drop support for [Go 1.25]. (#8876)
- v0.22.1-0.20260828211312-1ad6638a742228 Aug 2026pre-release
Nothing published for this version
- v0.22.1-0.20260828082503-384f1bd0a21228 Aug 2026pre-release
Nothing published for this version
- v0.22.1-0.20260827140632-24e94bba45cd27 Aug 2026pre-release
Nothing published for this version
- v0.22.1-0.20260825193955-f4f1d0968aea25 Aug 2026pre-release
Nothing published for this version
- v0.22.1-0.20260825174620-b0f5d6d7058125 Aug 2026pre-release
Nothing published for this version
- v0.22.025 Aug 2026
Release notes
Open source →Added
- Adds HTTP support for OTLP metrics exporter. (#2022)
Removed
- Removed the deprecated package
go.opentelemetry.io/otel/exporters/metric/prometheus. (#2020)
- v0.21.1-0.20260824184938-cfbeab547fb524 Aug 2026pre-release
Nothing published for this version
- v0.21.1-0.20260824183612-3599b597202b24 Aug 2026pre-release
Nothing published for this version
- v0.21.1-0.20260821215041-736a14fcdca221 Aug 2026pre-release
Nothing published for this version
- v0.21.1-0.20260818165053-3d62aa612fe418 Aug 2026pre-release
Nothing published for this version
- v0.21.1-0.20260811222304-11bb85ebc48011 Aug 2026pre-release
Nothing published for this version
- v0.21.1-0.20260807223717-fb878cf276c27 Aug 2026pre-release
Nothing published for this version
- v0.21.1-0.20260805192632-cc247ff9fd6e5 Aug 2026pre-release
Nothing published for this version
- v0.21.1-0.20260804223629-d2a1fe76d4704 Aug 2026pre-release
Nothing published for this version
- v0.21.03 Aug 2026
Release notes
Open source →With this release we are introducing a split in module versions. The tracing API and SDK are entering the
v1.0.0Release Candidate phase withv1.0.0-RC1while the experimental metrics API and SDK continue withv0.xreleases atv0.21.0. Modules at major version 1 or greater will not depend on modules with major version 0.Added
- Adds
otlpgrpc.WithRetryoption for configuring the retry policy for transient errors on the otlp/gRPC exporter. (#1832)- The following status codes are defined as transient errors:
gRPC Status Code Description 1 Cancelled 4 Deadline Exceeded 8 Resource Exhausted 10 Aborted 10 Out of Range 14 Unavailable 15 Data Loss
- The following status codes are defined as transient errors:
- Added
Statustype to thego.opentelemetry.io/otel/sdk/tracepackage to represent the status of a span. (#1874) - Added
SpanStubtype and its associated functions to thego.opentelemetry.io/otel/sdk/trace/tracetestpackage. This type can be used as a testing replacement for theSpanSnapshotthat was removed from thego.opentelemetry.io/otel/sdk/tracepackage. (#1873) - Adds support for scheme in
OTEL_EXPORTER_OTLP_ENDPOINTaccording to the spec. (#1886) - Adds
trace.WithSchemaURLoption for configuring the tracer with a Schema URL. (#1889) - Added an example of using OpenTelemetry Go as a trace context forwarder. (#1912)
ParseTraceStateis added to thego.opentelemetry.io/otel/tracepackage. It can be used to decode aTraceStatefrom atracestateheader string value. (#1937)- Added
Lenmethod to theTraceStatetype in thego.opentelemetry.io/otel/tracepackage. This method returns the number of list-members theTraceStateholds. (#1937) - Creates package
go.opentelemetry.io/otel/exporters/otlp/otlptracethat defines a trace exporter that uses aotlptrace.Clientto send data. Creates packagego.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpcimplementing a gRPCotlptrace.Clientand offers convenience functions,NewExportPipelineandInstallNewPipeline, to setup and install aotlptrace.Exporterin tracing .(#1922) - Added
Baggage,Member, andPropertytypes to thego.opentelemetry.io/otel/baggagepackage along with their related functions. (#1967) - Added
ContextWithBaggage,ContextWithoutBaggage, andFromContextfunctions to thego.opentelemetry.io/otel/baggagepackage. These functions replace theSet,Value,ContextWithValue,ContextWithoutValue, andContextWithEmptyfunctions from that package and directly work with the newBaggagetype. (#1967) - The
OTEL_SERVICE_NAMEenvironment variable is the preferred source forservice.name, used by the environment resource detector if a service name is present both there and inOTEL_RESOURCE_ATTRIBUTES. (#1969) - Creates package
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttpimplementing an HTTPotlptrace.Clientand offers convenience functions,NewExportPipelineandInstallNewPipeline, to setup and install aotlptrace.Exporterin tracing. (#1963) - Changes
go.opentelemetry.io/otel/sdk/resource.NewWithAttributesto require a schema URL. The old function is still available asresource.NewSchemaless. This is a breaking change. (#1938) - Several builtin resource detectors now correctly populate the schema URL. (#1938)
- Creates package
go.opentelemetry.io/otel/exporters/otlp/otlpmetricthat defines a metrics exporter that uses aotlpmetric.Clientto send data. - Creates package
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpcimplementing a gRPCotlpmetric.Clientand offers convenience functions,NewandNewUnstarted, to create anotlpmetric.Exporter.(#1991) - Added
go.opentelemetry.io/otel/exporters/stdout/stdouttraceexporter. (#2005) - Added
go.opentelemetry.io/otel/exporters/stdout/stdoutmetricexporter. (#2005) - Added a
TracerProvider()method to the"go.opentelemetry.io/otel/trace".Spaninterface. This can be used to obtain aTracerProviderfrom a given span that utilizes the same trace processing pipeline. (#2009)
Changed
- Make
NewSplitDriverfromgo.opentelemetry.io/otel/exporters/otlptake variadic arguments instead of aSplitConfigitem.NewSplitDrivernow automatically implements an internalnoopDriverforSplitConfigfields that are not initialized. (#1798) resource.New()now creates a Resource without builtin detectors. Previous behavior is now achieved by usingWithBuiltinDetectorsOption. (#1810)- Move the
Eventtype from thego.opentelemetry.io/otelpackage to thego.opentelemetry.io/otel/sdk/tracepackage. (#1846) - CI builds validate against last two versions of Go, dropping 1.14 and adding 1.16. (#1865)
- BatchSpanProcessor now report export failures when calling
ForceFlush()method. (#1860) Set.Encoded(Encoder)no longer caches the result of an encoding. (#1855)- Renamed
CloudZoneKeytoCloudAvailabilityZoneKeyin Resource semantic conventions according to spec. (#1871) - The
StatusCodeandStatusMessagemethods of theReadOnlySpaninterface and theSpanproduced by thego.opentelemetry.io/otel/sdk/tracepackage have been replaced with a singleStatusmethod. This method returns the status of a span using the newStatustype. (#1874) - Updated
ExportSpansmethod of theSpanExporterinterface type to acceptReadOnlySpans instead of the removedSpanSnapshot. This brings the export interface into compliance with the specification in that it now accepts an explicitly immutable type instead of just an implied one. (#1873) - Unembed
SpanContextinLink. (#1877) - Generate Semantic conventions from the specification YAML. (#1891)
- Spans created by the global
Tracerobtained fromgo.opentelemetry.io/otel, prior to a functioningTracerProviderbeing set, now propagate the span context from their parent if one exists. (#1901) - The
"go.opentelemetry.io/otel".Tracerfunction now accepts tracer options. (#1902) - Move the
go.opentelemetry.io/otel/unitpackage togo.opentelemetry.io/otel/metric/unit. (#1903) - Changed
go.opentelemetry.io/otel/trace.TracerConfigto conform to the Contributing guidelines (#1921) - Changed
go.opentelemetry.io/otel/trace.SpanConfigto conform to the Contributing guidelines. (#1921) - Changed
span.End()now only accepts Options that are allowed atEnd(). (#1921) - Changed
go.opentelemetry.io/otel/metric.InstrumentConfigto conform to the Contributing guidelines. (#1921) - Changed
go.opentelemetry.io/otel/metric.MeterConfigto conform to the Contributing guidelines. (#1921) - Refactored option types according to the contribution style guide. (#1882)
- Move the
go.opentelemetry.io/otel/trace.TraceStateFromKeyValuesfunction to thego.opentelemetry.io/otel/oteltestpackage. This function is preserved for testing purposes where it may be useful to create aTraceStatefromattribute.KeyValues, but it is not intended for production use. The newParseTraceStatefunction should be used to create aTraceState. (#1931) - Updated
MarshalJSONmethod of thego.opentelemetry.io/otel/trace.TraceStatetype to marshal the type into the string representation of theTraceState. (#1931) - The
TraceState.Deletemethod from thego.opentelemetry.io/otel/tracepackage no longer returns an error in addition to aTraceState. (#1931) - Updated
Getmethod of theTraceStatetype from thego.opentelemetry.io/otel/tracepackage to accept astringinstead of anattribute.Keytype. (#1931) - Updated
Insertmethod of theTraceStatetype from thego.opentelemetry.io/otel/tracepackage to accept a pair ofstrings instead of anattribute.KeyValuetype. (#1931) - Updated
Deletemethod of theTraceStatetype from thego.opentelemetry.io/otel/tracepackage to accept astringinstead of anattribute.Keytype. (#1931) - Renamed
NewExportertoNewin thego.opentelemetry.io/otel/exporters/stdoutpackage. (#1985) - Renamed
NewExportertoNewin thego.opentelemetry.io/otel/exporters/metric/prometheuspackage. (#1985) - Renamed
NewExportertoNewin thego.opentelemetry.io/otel/exporters/trace/jaegerpackage. (#1985) - Renamed
NewExportertoNewin thego.opentelemetry.io/otel/exporters/trace/zipkinpackage. (#1985) - Renamed
NewExportertoNewin thego.opentelemetry.io/otel/exporters/otlppackage. (#1985) - Renamed
NewUnstartedExportertoNewUnstartedin thego.opentelemetry.io/otel/exporters/otlppackage. (#1985) - The
go.opentelemetry.io/otel/semconvpackage has been moved togo.opentelemetry.io/otel/semconv/v1.4.0to allow for multiple telemetry schema versions to be used concurrently. (#1987) - Metrics test helpers in
go.opentelemetry.io/otel/oteltesthave been moved togo.opentelemetry.io/otel/metric/metrictest. (#1988)
Deprecated
- The
go.opentelemetry.io/otel/exporters/metric/prometheusis deprecated, usego.opentelemetry.io/otel/exporters/prometheusinstead. (#1993) - The
go.opentelemetry.io/otel/exporters/trace/jaegeris deprecated, usego.opentelemetry.io/otel/exporters/jaegerinstead. (#1993) - The
go.opentelemetry.io/otel/exporters/trace/zipkinis deprecated, usego.opentelemetry.io/otel/exporters/zipkininstead. (#1993)
Removed
- Removed
resource.WithoutBuiltin(). Useresource.New(). (#1810) - Unexported types
resource.FromEnv,resource.Host, andresource.TelemetrySDK, Use the correspondingWith*()to use individually. (#1810) - Removed the
TracerandIsRecordingmethod from theReadOnlySpanin thego.opentelemetry.io/otel/sdk/trace. TheTracermethod is not a required to be included in this interface and given the mutable nature of the tracer that is associated with a span, this method is not appropriate. TheIsRecordingmethod returns if the span is recording or not. A read-only span value does not need to know if updates to it will be recorded or not. By definition, it cannot be updated so there is no point in communicating if an update is recorded. (#1873) - Removed the
SpanSnapshottype from thego.opentelemetry.io/otel/sdk/tracepackage. The use of this type has been replaced with the use of the explicitly immutableReadOnlySpantype. When a concrete representation of a read-only span is needed for testing, the newly addedSpanStubin thego.opentelemetry.io/otel/sdk/trace/tracetestpackage should be used. (#1873) - Removed the
Tracermethod from theSpaninterface in thego.opentelemetry.io/otel/tracepackage. Using the same tracer that created a span introduces the error where an instrumentation library'sTraceris used by other code instead of their own. The"go.opentelemetry.io/otel".Tracerfunction or aTracerProvidershould be used to acquire a library specificTracerinstead. (#1900)- The
TracerProvider()method on theSpaninterface may also be used to obtain aTracerProviderusing the same trace processing pipeline. (#2009)
- The
- The
http.urlattribute generated byHTTPClientAttributesFromHTTPRequestwill no longer include username or password information. (#1919) - Removed
IsEmptymethod of theTraceStatetype in thego.opentelemetry.io/otel/tracepackage in favor of using the addedTraceState.Lenmethod. (#1931) - Removed
Set,Value,ContextWithValue,ContextWithoutValue, andContextWithEmptyfunctions in thego.opentelemetry.io/otel/baggagepackage. Handling of baggage is now done using the addedBaggagetype and related context functions (ContextWithBaggage,ContextWithoutBaggage, andFromContext) in that package. (#1967) - The
InstallNewPipelineandNewExportPipelinecreation functions in all the exporters (prometheus, otlp, stdout, jaeger, and zipkin) have been removed. These functions were deemed premature attempts to provide convenience that did not achieve this aim. (#1985) - The
go.opentelemetry.io/otel/exporters/otlpexporter has been removed. Usego.opentelemetry.io/otel/exporters/otlp/otlptraceinstead. (#1990) - The
go.opentelemetry.io/otel/exporters/stdoutexporter has been removed. Usego.opentelemetry.io/otel/exporters/stdout/stdouttraceorgo.opentelemetry.io/otel/exporters/stdout/stdoutmetricinstead. (#2005)
Fixed
- Only report errors from the
"go.opentelemetry.io/otel/sdk/resource".Environmentfunction when they are notnil. (#1850, #1851) - The
Shutdownmethod of the simpleSpanProcessorin thego.opentelemetry.io/otel/sdk/tracepackage now honors the context deadline or cancellation. (#1616, #1856) - BatchSpanProcessor now drops span batches that failed to be exported. (#1860)
- Use
http://localhost:14268/api/tracesas default Jaeger collector endpoint instead ofhttp://localhost:14250. (#1898) - Allow trailing and leading whitespace in the parsing of a
tracestateheader. (#1931) - Add logic to determine if the channel is closed to fix Jaeger exporter test panic with close closed channel. (#1870, #1973)
- Avoid transport security when OTLP endpoint is a Unix socket. (#2001)
Security
- Adds
- v0.20.1-0.20260731161524-313f17ffe3e631 Jul 2026pre-release
Nothing published for this version
- v0.20.1-0.20260728235821-2f4795fc7dcd28 Jul 2026pre-release
Nothing published for this version
- v0.20.1-0.20260724222506-e12724f97a7324 Jul 2026pre-release
Nothing published for this version
- v0.20.1-0.20260723093731-251b96b2489723 Jul 2026pre-release
Nothing published for this version
- v0.20.1-0.20260721190921-c15674061dd621 Jul 2026pre-release
Nothing published for this version
- v0.20.1-0.20260720175104-72949e7cc92520 Jul 2026pre-release
Nothing published for this version
- v0.20.1-0.20260717185620-3f1e0cf6869a17 Jul 2026pre-release
Nothing published for this version
- v0.20.1-0.20260714151229-c515a818d78414 Jul 2026pre-release
Nothing published for this version
- v0.20.1-0.20260713231842-9778affd47e213 Jul 2026pre-release
Nothing published for this version
- v0.20.1-0.20260707165415-10df8c6d22067 Jul 2026pre-release
Nothing published for this version
- v0.20.1-0.20260702223343-852dabed9f852 Jul 2026pre-release
Nothing published for this version
- v0.20.1-0.20260630223341-77954066ebef30 Jun 2026pre-release
Nothing published for this version
- v0.20.1-0.20260625225103-b75b3a233b2425 Jun 2026pre-release
Nothing published for this version
- v0.20.1-0.20260625150014-c84013202f0125 Jun 2026pre-release
Nothing published for this version
- v0.20.1-0.20260623195431-b3dcee0a5fb623 Jun 2026pre-release
Nothing published for this version
- v0.20.1-0.20260623111333-65f30a1ab95823 Jun 2026pre-release
Nothing published for this version
- v0.20.1-0.20260620202137-bb6f1c6c8b6a20 Jun 2026pre-release
Nothing published for this version
- v0.20.1-0.20260616192529-dcfc16cebd0616 Jun 2026pre-release
Nothing published for this version
- v0.20.1-0.20260609202716-4714a4fbd5659 Jun 2026pre-release
Nothing published for this version
- v0.20.1-0.20260603001523-8f437b4b2cf03 Jun 2026pre-release
Nothing published for this version
- v0.20.027 May 2026
Release notes
Open source →Added
- The OTLP exporter now has two new convenience functions,
NewExportPipelineandInstallNewPipeline, setup and install the exporter in tracing and metrics pipelines. (#1373) - Adds semantic conventions for exceptions. (#1492)
- Added Jaeger Environment variables:
OTEL_EXPORTER_JAEGER_AGENT_HOST,OTEL_EXPORTER_JAEGER_AGENT_PORTThese environment variables can be used to override Jaeger agent hostname and port (#1752) - Option
ExportTimeoutwas added to batch span processor. (#1755) trace.TraceFlagsis now a defined type overbyteandWithSampled(bool) TraceFlagsandIsSampled() boolmethods have been added to it. (#1770)- The
EventandLinkstruct types from thego.opentelemetry.io/otelpackage now include aDroppedAttributeCountfield to record the number of attributes that were not recorded due to configured limits being reached. (#1771) - The Jaeger exporter now reports dropped attributes for a Span event in the exported log. (#1771)
- Adds test to check BatchSpanProcessor ignores
OnEndandForceFlushpostShutdown. (#1772) - Extract resource attributes from the
OTEL_RESOURCE_ATTRIBUTESenvironment variable and merge them with theresource.Defaultresource as well as resources provided to theTracerProviderand metricController. (#1785) - Added
WithOSTyperesource configuration option to set OS (Operating System) type resource attribute (os.type). (#1788) - Added
WithProcess*resource configuration options to set Process resource attributes. (#1788)process.pidprocess.executable.nameprocess.executable.pathprocess.command_argsprocess.ownerprocess.runtime.nameprocess.runtime.versionprocess.runtime.description
- Adds
k8s.node.nameandk8s.node.uidattribute keys to thesemconvpackage. (#1789) - Added support for configuring OTLP/HTTP and OTLP/gRPC Endpoints, TLS Certificates, Headers, Compression and Timeout via Environment Variables. (#1758, #1769 and #1811)
OTEL_EXPORTER_OTLP_ENDPOINTOTEL_EXPORTER_OTLP_TRACES_ENDPOINTOTEL_EXPORTER_OTLP_METRICS_ENDPOINTOTEL_EXPORTER_OTLP_HEADERSOTEL_EXPORTER_OTLP_TRACES_HEADERSOTEL_EXPORTER_OTLP_METRICS_HEADERSOTEL_EXPORTER_OTLP_COMPRESSIONOTEL_EXPORTER_OTLP_TRACES_COMPRESSIONOTEL_EXPORTER_OTLP_METRICS_COMPRESSIONOTEL_EXPORTER_OTLP_TIMEOUTOTEL_EXPORTER_OTLP_TRACES_TIMEOUTOTEL_EXPORTER_OTLP_METRICS_TIMEOUTOTEL_EXPORTER_OTLP_CERTIFICATEOTEL_EXPORTER_OTLP_TRACES_CERTIFICATEOTEL_EXPORTER_OTLP_METRICS_CERTIFICATE
- Adds
otlpgrpc.WithTimeoutoption for configuring timeout to the otlp/gRPC exporter. (#1821) - Adds
jaeger.WithMaxPacketSizeoption for configuring maximum UDP packet size used when connecting to the Jaeger agent. (#1853)
Fixed
- The
Span.IsRecordingimplementation fromgo.opentelemetry.io/otel/sdk/tracealways returns false when not being sampled. (#1750) - The Jaeger exporter now correctly sets tags for the Span status code and message.
This means it uses the correct tag keys (
"otel.status_code","otel.status_description") and does not set the status message as a tag unless it is set on the span. (#1761) - The Jaeger exporter now correctly records Span event's names using the
"event"key for a tag. Additionally, this tag is overridden, as specified in the OTel specification, if the event contains an attribute with that key. (#1768) - Zipkin Exporter: Ensure mapping between OTel and Zipkin span data complies with the specification. (#1688)
- Fixed typo for default service name in Jaeger Exporter. (#1797)
- Fix flaky OTLP for the reconnnection of the client connection. (#1527, #1814)
- Fix Jaeger exporter dropping of span batches that exceed the UDP packet size limit. Instead, the exporter now splits the batch into smaller sendable batches. (#1828)
Changed
- Span
RecordErrornow records anexceptionevent to comply with the semantic convention specification. (#1492) - Jaeger exporter was updated to use thrift v0.14.1. (#1712)
- Migrate from using internally built and maintained version of the OTLP to the one hosted at
go.opentelemetry.io/proto/otlp. (#1713) - Migrate from using
github.com/gogo/protobuftogoogle.golang.org/protobufto matchgo.opentelemetry.io/proto/otlp. (#1713) - The storage of a local or remote Span in a
context.Contextusing its SpanContext is unified to store just the current Span. The Span's SpanContext can now self-identify as being remote or not. This means that"go.opentelemetry.io/otel/trace".ContextWithRemoteSpanContextwill now overwrite any existing current Span, not just existing remote Spans, and make it the current Span in acontext.Context. (#1731) - Improve OTLP/gRPC exporter connection errors. (#1737)
- Information about a parent span context in a
"go.opentelemetry.io/otel/export/trace".SpanSnapshotis unified in a newParentfield. The existingParentSpanIDandHasRemoteParentfields are removed in favor of this. (#1748) - The
ParentContextfield of the"go.opentelemetry.io/otel/sdk/trace".SamplingParametersis updated to hold acontext.Contextcontaining the parent span. This changes it to makeSamplingParametersconform with the OpenTelemetry specification. (#1749) - Updated Jaeger Environment Variables:
JAEGER_ENDPOINT,JAEGER_USER,JAEGER_PASSWORDtoOTEL_EXPORTER_JAEGER_ENDPOINT,OTEL_EXPORTER_JAEGER_USER,OTEL_EXPORTER_JAEGER_PASSWORDin compliance with OTel specification. (#1752) - Modify
BatchSpanProcessor.ForceFlushto abort after timeout/cancellation. (#1757) - The
DroppedAttributeCountfield of theSpanin thego.opentelemetry.io/otelpackage now only represents the number of attributes dropped for the span itself. It no longer is a conglomerate of itself, events, and link attributes that have been dropped. (#1771) - Make
ExportSpansin Jaeger Exporter honor context deadline. (#1773) - Modify Zipkin Exporter default service name, use default resource's serviceName instead of empty. (#1777)
- The
go.opentelemetry.io/otel/sdk/export/tracepackage is merged into thego.opentelemetry.io/otel/sdk/tracepackage. (#1778) - The prometheus.InstallNewPipeline example is moved from comment to example test (#1796)
- The convenience functions for the stdout exporter have been updated to return the
TracerProviderimplementation and enable the shutdown of the exporter. (#1800) - Replace the flush function returned from the Jaeger exporter's convenience creation functions (
InstallNewPipelineandNewExportPipeline) with theTracerProviderimplementation they create. This enables the caller to shutdown and flush using the relatedTracerProvidermethods. (#1822) - Updated the Jaeger exporter to have a default endpoint,
http://localhost:14250, for the collector. (#1824) - Changed the function
WithCollectorEndpointin the Jaeger exporter to no longer accept an endpoint as an argument. The endpoint can be passed with theCollectorEndpointOptionusing theWithEndpointfunction or by setting theOTEL_EXPORTER_JAEGER_ENDPOINTenvironment variable value appropriately. (#1824) - The Jaeger exporter no longer batches exported spans itself, instead it relies on the SDK's
BatchSpanProcessorfor this functionality. (#1830) - The Jaeger exporter creation functions (
NewRawExporter,NewExportPipeline, andInstallNewPipeline) no longer accept the removedOptiontype as a variadic argument. (#1830)
Removed
- Removed Jaeger Environment variables:
JAEGER_SERVICE_NAME,JAEGER_DISABLED,JAEGER_TAGSThese environment variables will no longer be used to override values of the Jaeger exporter (#1752) - No longer set the links for a
Spaningo.opentelemetry.io/otel/sdk/tracethat is configured to be a new root. This is unspecified behavior that the OpenTelemetry community plans to standardize in the future. To prevent backwards incompatible changes when it is specified, these links are removed. (#1726) - Setting error status while recording error with Span from oteltest package. (#1729)
- The concept of a remote and local Span stored in a context is unified to just the current Span.
Because of this
"go.opentelemetry.io/otel/trace".RemoteSpanContextFromContextis removed as it is no longer needed. Instead,"go.opentelemetry.io/otel/trace".SpanContextFromContextcan be used to return the current Span. If needed, that Span'sSpanContext.IsRemote()can then be used to determine if it is remote or not. (#1731) - The
HasRemoteParentfield of the"go.opentelemetry.io/otel/sdk/trace".SamplingParametersis removed. This field is redundant to the information returned from theRemotemethod of theSpanContextheld in theParentContextfield. (#1749) - The
trace.FlagsDebugandtrace.FlagsDeferredconstants have been removed and will be localized to the B3 propagator. (#1770) - Remove
Processconfiguration,WithProcessFromEnvandProcessFromEnv, and type from the Jaeger exporter package. The information that could be configured in theProcessstruct should be configured in aResourceinstead. (#1776, #1804) - Remove the
WithDisabledoption from the Jaeger exporter. To disable the exporter unregister it from theTracerProvideror use a no-operationTracerProvider. (#1806) - Removed the functions
CollectorEndpointFromEnvandWithCollectorEndpointOptionFromEnvfrom the Jaeger exporter. These functions for retrieving specific environment variable values are redundant of other internal functions and are not intended for end user use. (#1824) - Removed the Jaeger exporter
WithSDKOptionsOption. This option was used to set SDK options for the exporter creation convenience functions. These functions are provided as a way to easily setup or install the exporter with what are deemed reasonable SDK settings for common use cases. If the SDK needs to be configured differently, theNewRawExporterfunction and direct setup of the SDK with the desired settings should be used. (#1825) - The
WithBufferMaxCountandWithBatchMaxCountOptions from the Jaeger exporter are removed. The exporter no longer batches exports, instead relying on the SDK'sBatchSpanProcessorfor this functionality. (#1830) - The Jaeger exporter
Optiontype is removed. The type is no longer used by the exporter to configure anything. All the previous configurations these options provided were duplicates of SDK configuration. They have been removed in favor of using the SDK configuration and focuses the exporter configuration to be only about the endpoints it will send telemetry to. (#1830)
- The OTLP exporter now has two new convenience functions,
- v0.19.1-0.20260526190040-f5931856791326 May 2026pre-release
Nothing published for this version
- v0.19.1-0.20260521080857-e5bdc311108b21 May 2026pre-release
Nothing published for this version
- v0.19.1-0.20260519151513-552680a4153919 May 2026pre-release
Nothing published for this version
- v0.19.1-0.20260511195634-effbbb2e4d2b11 May 2026pre-release
Nothing published for this version
- v0.19.1-0.20260509003933-816ac54d22099 May 2026pre-release
Nothing published for this version
- v0.19.1-0.20260420162407-5bd5702ad21120 Apr 2026pre-release
Nothing published for this version
- v0.19.1-0.20260420090334-fa9276b15efc20 Apr 2026pre-release
Nothing published for this version
- v0.19.1-0.20260416191721-3356ad3f1acf16 Apr 2026pre-release
Nothing published for this version
- v0.19.1-0.20260414235140-3ee1d5a5166c14 Apr 2026pre-release
Nothing published for this version
- v0.19.1-0.20260410131846-73876cb4500310 Apr 2026pre-release
Nothing published for this version
- v0.19.1-0.20260409210403-b1284dbfaadf9 Apr 2026pre-release
Nothing published for this version
- v0.19.1-0.20260409135110-112bed7fc0739 Apr 2026pre-release
Nothing published for this version
- v0.19.1-0.20260409074233-cdf74d8f30729 Apr 2026pre-release
Nothing published for this version
- v0.19.1-0.20260408075054-876f7c51e4048 Apr 2026pre-release
Nothing published for this version
- v0.19.1-0.20260408074126-99b2206d119d8 Apr 2026pre-release
Nothing published for this version
- v0.19.1-0.20260407180330-3b18b21580487 Apr 2026pre-release
Nothing published for this version
- v0.19.03 Apr 2026
Release notes
Open source →Added
- Add
IsRandomandWithRandomonTraceFlags, andIsRandomonSpanContextingo.opentelemetry.io/otel/tracefor W3C Trace Context Level 2 Random Trace ID Flag support. (#8012) - Add service detection with
WithServiceingo.opentelemetry.io/otel/sdk/resource. (#7642) - Add
DefaultWithContextandEnvironmentWithContextingo.opentelemetry.io/otel/sdk/resourceto support plumbingcontext.Contextthrough default and environment detectors. (#8051) - Support attributes with empty value (
attribute.EMPTY) ingo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc. (#8038) - Support attributes with empty value (
attribute.EMPTY) ingo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc. (#8038) - Support attributes with empty value (
attribute.EMPTY) ingo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc. (#8038) - Support attributes with empty value (
attribute.EMPTY) ingo.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp. (#8038) - Support attributes with empty value (
attribute.EMPTY) ingo.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp. (#8038) - Support attributes with empty value (
attribute.EMPTY) ingo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp. (#8038) - Support attributes with empty value (
attribute.EMPTY) ingo.opentelemetry.io/otel/sdk/metric/metricdata/metricdatatest. (#8038) - Add support for per-series start time tracking for cumulative metrics in
go.opentelemetry.io/otel/sdk/metric. SetOTEL_GO_X_PER_SERIES_START_TIMESTAMPS=trueto enable. (#8060) - Add
WithCardinalityLimitSelectorfor metric reader for configuring cardinality limits specific to the instrument kind. (#7855)
Changed
- Introduce the
EMPTYType ingo.opentelemetry.io/otel/attributeto reflect that an empty value is now a valid value, withINVALIDremaining as a deprecated alias ofEMPTY. (#8038) - Improve slice handling in
go.opentelemetry.io/otel/attributeto optimize short slice values with fixed-size fast paths. (#8039) - Improve performance of span metric recording in
go.opentelemetry.io/otel/sdk/traceby returning early if self-observability is not enabled. (#8067) - Improve formatting of metric data diffs in
go.opentelemetry.io/otel/sdk/metric/metricdata/metricdatatest. (#8073)
Deprecated
- Deprecate
INVALIDingo.opentelemetry.io/otel/attribute. UseEMPTYinstead. (#8038)
Fixed
- Return spec-compliant
TraceIdRatioBaseddescription. This is a breaking behavioral change, but it is necessary to make the implementation spec-compliant. (#8027) - Fix a race condition in
go.opentelemetry.io/otel/sdk/metricwhere the lastvalue aggregation could collect the value 0 even when no zero-value measurements were recorded. (#8056) - Limit HTTP response body to 4 MiB in
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttpto mitigate excessive memory usage caused by a misconfigured or malicious server. Responses exceeding the limit are treated as non-retryable errors. (#8108) - Limit HTTP response body to 4 MiB in
go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttpto mitigate excessive memory usage caused by a misconfigured or malicious server. Responses exceeding the limit are treated as non-retryable errors. (#8108) - Limit HTTP response body to 4 MiB in
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttpto mitigate excessive memory usage caused by a misconfigured or malicious server. Responses exceeding the limit are treated as non-retryable errors. (#8108) WithHostIDdetector ingo.opentelemetry.io/otel/sdk/resourceto use full path forkenvcommand on BSD. (#8113)- Fix missing
request.GetBodyingo.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttpto correctly handle HTTP2 GOAWAY frame. (#8096)
- Add