NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #484 by repository stars
Last release today
15 Oct 2026
Ships on a steady schedule
a new release about every 9 days
Nearly every release is documented
notes for 23 of 23 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
999 releases · first in 2024
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per month.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Module set stable-v1, Version v1.47.0-rc.1
Module set stable-v1, Version v1.47.0-rc.1
This is a release candidate for the v1.47.0 release.
That release is expected to include the v1 release 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/logSee our versioning policy for more information about these stability guarantees.
Logger, GetLoggerProvider, and SetLoggerProvider to go.opentelemetry.io/otel. (#8874)go.opentelemetry.io/otel/log/global; use the equivalent APIs in go.opentelemetry.io/otel. (#8874)go.opentelemetry.io/otel/sdk/trace. (#8840)Full Changelog: v1.46.0...v1.47.0-rc.1
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Removed the deprecated package go.opentelemetry.io/otel/exporters/metric/prometheus.
go.opentelemetry.io/otel/exporters/metric/prometheus. (#2020)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
The old function is still available as resource.NewSchemaless. This is a breaking change.
With this release we are introducing a split in module versions. The tracing API and SDK are entering the v1.0.0 Release Candidate phase with v1.0.0-RC1
while the experimental metrics API and SDK continue with v0.x releases at v0.21.0. Modules at major version 1 or greater will not depend on modules
with major version 0.
otlpgrpc.WithRetryoption for configuring the retry policy for transient errors on the otlp/gRPC exporter. (#1832)
| gRPC Status Code | Description |
|---|---|
| 1 | Cancelled |
| 4 | Deadline Exceeded |
| 8 | Resource Exhausted |
| 10 | Aborted |
| 10 | Out of Range |
| 14 | Unavailable |
| 15 | Data Loss |
Status type to the go.opentelemetry.io/otel/sdk/trace package to represent the status of a span. (#1874)SpanStub type and its associated functions to the go.opentelemetry.io/otel/sdk/trace/tracetest package.
This type can be used as a testing replacement for the SpanSnapshot that was removed from the go.opentelemetry.io/otel/sdk/trace package. (#1873)OTEL_EXPORTER_OTLP_ENDPOINT according to the spec. (#1886)trace.WithSchemaURL option for configuring the tracer with a Schema URL. (#1889)ParseTraceState is added to the go.opentelemetry.io/otel/trace package.
It can be used to decode a TraceState from a tracestate header string value. (#1937)Len method to the TraceState type in the go.opentelemetry.io/otel/trace package.
This method returns the number of list-members the TraceState holds. (#1937)go.opentelemetry.io/otel/exporters/otlp/otlptrace that defines a trace exporter that uses a otlptrace.Client to send data.
Creates package go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc implementing a gRPC otlptrace.Client and offers convenience functions, NewExportPipeline and InstallNewPipeline, to setup and install a otlptrace.Exporter in tracing .(#1922)Baggage, Member, and Property types to the go.opentelemetry.io/otel/baggage package along with their related functions. (#1967)ContextWithBaggage, ContextWithoutBaggage, and FromContext functions to the go.opentelemetry.io/otel/baggage package.
These functions replace the Set, Value, ContextWithValue, ContextWithoutValue, and ContextWithEmpty functions from that package and directly work with the new Baggage type. (#1967)OTEL_SERVICE_NAME environment variable is the preferred source for service.name, used by the environment resource detector if a service name is present both there and in OTEL_RESOURCE_ATTRIBUTES. (#1969)go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp implementing an HTTP otlptrace.Client and offers convenience functions, NewExportPipeline and InstallNewPipeline, to setup and install a otlptrace.Exporter in tracing. (#1963)go.opentelemetry.io/otel/sdk/resource.NewWithAttributes to require a schema URL. The old function is still available as resource.NewSchemaless. This is a breaking change. (#1938)go.opentelemetry.io/otel/exporters/otlp/otlpmetric that defines a metrics exporter that uses a otlpmetric.Client to send data.go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc implementing a gRPC otlpmetric.Client and offers convenience functions, New and NewUnstarted, to create an otlpmetric.Exporter.(#1991)go.opentelemetry.io/otel/exporters/stdout/stdouttrace exporter. (#2005)go.opentelemetry.io/otel/exporters/stdout/stdoutmetric exporter. (#2005)TracerProvider() method to the "go.opentelemetry.io/otel/trace".Span interface. This can be used to obtain a TracerProvider from a given span that utilizes the same trace processing pipeline. (#2009)NewSplitDriver from go.opentelemetry.io/otel/exporters/otlp take variadic arguments instead of a SplitConfig item.
NewSplitDriver now automatically implements an internal noopDriver for SplitConfig fields that are not initialized. (#1798)resource.New() now creates a Resource without builtin detectors. Previous behavior is now achieved by using WithBuiltinDetectors Option. (#1810)Event type from the go.opentelemetry.io/otel package to the go.opentelemetry.io/otel/sdk/trace package. (#1846)ForceFlush() method. (#1860)Set.Encoded(Encoder) no longer caches the result of an encoding. (#1855)CloudZoneKey to CloudAvailabilityZoneKey in Resource semantic conventions according to spec. (#1871)StatusCode and StatusMessage methods of the ReadOnlySpan interface and the Span produced by the go.opentelemetry.io/otel/sdk/trace package have been replaced with a single Status method.
This method returns the status of a span using the new Status type. (#1874)ExportSpans method of theSpanExporter interface type to accept ReadOnlySpans instead of the removed SpanSnapshot.
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)SpanContext in Link. (#1877)Tracer obtained from go.opentelemetry.io/otel, prior to a functioning TracerProvider being set, now propagate the span context from their parent if one exists. (#1901)"go.opentelemetry.io/otel".Tracer function now accepts tracer options. (#1902)go.opentelemetry.io/otel/unit package to go.opentelemetry.io/otel/metric/unit. (#1903)go.opentelemetry.io/otel/trace.TracerConfig to conform to the Contributing guidelines (#1921)go.opentelemetry.io/otel/trace.SpanConfig to conform to the Contributing guidelines. (#1921)span.End() now only accepts Options that are allowed at End(). (#1921)go.opentelemetry.io/otel/metric.InstrumentConfig to conform to the Contributing guidelines. (#1921)go.opentelemetry.io/otel/metric.MeterConfig to conform to the Contributing guidelines. (#1921)go.opentelemetry.io/otel/trace.TraceStateFromKeyValues function to the go.opentelemetry.io/otel/oteltest package.
This function is preserved for testing purposes where it may be useful to create a TraceState from attribute.KeyValues, but it is not intended for production use.
The new ParseTraceState function should be used to create a TraceState. (#1931)MarshalJSON method of the go.opentelemetry.io/otel/trace.TraceState type to marshal the type into the string representation of the TraceState. (#1931)TraceState.Delete method from the go.opentelemetry.io/otel/trace package no longer returns an error in addition to a TraceState. (#1931)Get method of the TraceState type from the go.opentelemetry.io/otel/trace package to accept a string instead of an attribute.Key type. (#1931)Insert method of the TraceState type from the go.opentelemetry.io/otel/trace package to accept a pair of strings instead of an attribute.KeyValue type. (#1931)Delete method of the TraceState type from the go.opentelemetry.io/otel/trace package to accept a string instead of an attribute.Key type. (#1931)NewExporter to New in the go.opentelemetry.io/otel/exporters/stdout package. (#1985)NewExporter to New in the go.opentelemetry.io/otel/exporters/metric/prometheus package. (#1985)NewExporter to New in the go.opentelemetry.io/otel/exporters/trace/jaeger package. (#1985)NewExporter to New in the go.opentelemetry.io/otel/exporters/trace/zipkin package. (#1985)NewExporter to New in the go.opentelemetry.io/otel/exporters/otlp package. (#1985)NewUnstartedExporter to NewUnstarted in the go.opentelemetry.io/otel/exporters/otlp package. (#1985)go.opentelemetry.io/otel/semconv package has been moved to go.opentelemetry.io/otel/semconv/v1.4.0 to allow for multiple telemetry schema versions to be used concurrently. (#1987)go.opentelemetry.io/otel/oteltest have been moved to go.opentelemetry.io/otel/metric/metrictest. (#1988)go.opentelemetry.io/otel/exporters/metric/prometheus is deprecated, use go.opentelemetry.io/otel/exporters/prometheus instead. (#1993)go.opentelemetry.io/otel/exporters/trace/jaeger is deprecated, use go.opentelemetry.io/otel/exporters/jaeger instead. (#1993)go.opentelemetry.io/otel/exporters/trace/zipkin is deprecated, use go.opentelemetry.io/otel/exporters/zipkin instead. (#1993)resource.WithoutBuiltin(). Use resource.New(). (#1810)resource.FromEnv, resource.Host, and resource.TelemetrySDK, Use the corresponding With*() to use individually. (#1810)Tracer and IsRecording method from the ReadOnlySpan in the go.opentelemetry.io/otel/sdk/trace.
The Tracer method 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.
The IsRecording method 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)SpanSnapshot type from the go.opentelemetry.io/otel/sdk/trace package.
The use of this type has been replaced with the use of the explicitly immutable ReadOnlySpan type.
When a concrete representation of a read-only span is needed for testing, the newly added SpanStub in the go.opentelemetry.io/otel/sdk/trace/tracetest package should be used. (#1873)Tracer method from the Span interface in the go.opentelemetry.io/otel/trace package.
Using the same tracer that created a span introduces the error where an instrumentation library's Tracer is used by other code instead of their own.
The "go.opentelemetry.io/otel".Tracer function or a TracerProvider should be used to acquire a library specific Tracer instead. (#1900)
TracerProvider() method on the Span interface may also be used to obtain a TracerProvider using the same trace processing pipeline. (#2009)http.url attribute generated by HTTPClientAttributesFromHTTPRequest will no longer include username or password information. (#1919)IsEmpty method of the TraceState type in the go.opentelemetry.io/otel/trace package in favor of using the added TraceState.Len method. (#1931)Set, Value, ContextWithValue, ContextWithoutValue, and ContextWithEmpty functions in the go.opentelemetry.io/otel/baggage package.
Handling of baggage is now done using the added Baggage type and related context functions (ContextWithBaggage, ContextWithoutBaggage, and FromContext) in that package. (#1967)InstallNewPipeline and NewExportPipeline creation 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)go.opentelemetry.io/otel/exporters/otlp exporter has been removed. Use go.opentelemetry.io/otel/exporters/otlp/otlptrace instead. (#1990)go.opentelemetry.io/otel/exporters/stdout exporter has been removed. Use go.opentelemetry.io/otel/exporters/stdout/stdouttrace or go.opentelemetry.io/otel/exporters/stdout/stdoutmetric instead. (#2005)"go.opentelemetry.io/otel/sdk/resource".Environment function when they are not nil. (#1850, #1851)Shutdown method of the simple SpanProcessor in the go.opentelemetry.io/otel/sdk/trace package now honors the context deadline or cancellation. (#1616, #1856)http://localhost:14268/api/traces as default Jaeger collector endpoint instead of http://localhost:14250. (#1898)tracestate header. (#1931)Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
This is unspecified behavior that the OpenTelemetry community plans to standardize in the future. To prevent backwards incompatible changes when it is…
NewExportPipeline and InstallNewPipeline, setup and install the exporter in tracing and metrics pipelines. (#1373)OTEL_EXPORTER_JAEGER_AGENT_HOST, OTEL_EXPORTER_JAEGER_AGENT_PORT
These environment variables can be used to override Jaeger agent hostname and port (#1752)ExportTimeout was added to batch span processor. (#1755)trace.TraceFlags is now a defined type over byte and WithSampled(bool) TraceFlags and IsSampled() bool methods have been added to it. (#1770)Event and Link struct types from the go.opentelemetry.io/otel package now include a DroppedAttributeCount field to record the number of attributes that were not recorded due to configured limits being reached. (#1771)OnEnd and ForceFlush post Shutdown. (#1772)OTEL_RESOURCE_ATTRIBUTES environment variable and merge them with the resource.Default resource as well as resources provided to the TracerProvider and metric Controller. (#1785)WithOSType resource configuration option to set OS (Operating System) type resource attribute (os.type). (#1788)WithProcess* resource configuration options to set Process resource attributes. (#1788)
process.pidprocess.executable.nameprocess.executable.pathprocess.command_argsprocess.ownerprocess.runtime.nameprocess.runtime.versionprocess.runtime.descriptionk8s.node.name and k8s.node.uid attribute keys to the semconv package. (#1789)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_CERTIFICATEotlpgrpc.WithTimeout option for configuring timeout to the otlp/gRPC exporter. (#1821)jaeger.WithMaxPacketSize option for configuring maximum UDP packet size used when connecting to the Jaeger agent. (#1853)Span.IsRecording implementation from go.opentelemetry.io/otel/sdk/trace always returns false when not being sampled. (#1750)"otel.status_code", "otel.status_description") and does not set the status message as a tag unless it is set on the span. (#1761)"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)RecordError now records an exception event to comply with the semantic convention specification. (#1492)go.opentelemetry.io/proto/otlp. (#1713)github.com/gogo/protobuf to google.golang.org/protobuf to match go.opentelemetry.io/proto/otlp. (#1713)context.Context using 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".ContextWithRemoteSpanContext will now overwrite any existing current Span, not just existing remote Spans, and make it the current Span in a context.Context. (#1731)"go.opentelemetry.io/otel/export/trace".SpanSnapshot is unified in a new Parent field.
The existing ParentSpanID and HasRemoteParent fields are removed in favor of this. (#1748)ParentContext field of the "go.opentelemetry.io/otel/sdk/trace".SamplingParameters is updated to hold a context.Context containing the parent span.
This changes it to make SamplingParameters conform with the OpenTelemetry specification. (#1749)JAEGER_ENDPOINT, JAEGER_USER, JAEGER_PASSWORD
to OTEL_EXPORTER_JAEGER_ENDPOINT, OTEL_EXPORTER_JAEGER_USER, OTEL_EXPORTER_JAEGER_PASSWORD in compliance with OTel specification. (#1752)BatchSpanProcessor.ForceFlush to abort after timeout/cancellation. (#1757)DroppedAttributeCount field of the Span in the go.opentelemetry.io/otel package 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)ExportSpans in Jaeger Exporter honor context deadline. (#1773)go.opentelemetry.io/otel/sdk/export/trace package is merged into the go.opentelemetry.io/otel/sdk/trace package. (#1778)TracerProvider implementation and enable the shutdown of the exporter. (#1800)InstallNewPipeline and NewExportPipeline) with the TracerProvider implementation they create.
This enables the caller to shutdown and flush using the related TracerProvider methods. (#1822)http://localhost:14250, for the collector. (#1824)WithCollectorEndpoint in the Jaeger exporter to no longer accept an endpoint as an argument.
The endpoint can be passed with the CollectorEndpointOption using the WithEndpoint function or by setting the OTEL_EXPORTER_JAEGER_ENDPOINT environment variable value appropriately. (#1824)BatchSpanProcessor for this functionality. (#1830)NewRawExporter, NewExportPipeline, and InstallNewPipeline) no longer accept the removed Option type as a variadic argument. (#1830)JAEGER_SERVICE_NAME, JAEGER_DISABLED, JAEGER_TAGS
These environment variables will no longer be used to override values of the Jaeger exporter (#1752)Span in go.opentelemetry.io/otel/sdk/trace that 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)"go.opentelemetry.io/otel/trace".RemoteSpanContextFromContext is removed as it is no longer needed.
Instead, "go.opentelemetry.io/otel/trace".SpanContextFromContext can be used to return the current Span.
If needed, that Span's SpanContext.IsRemote() can then be used to determine if it is remote or not. (#1731)HasRemoteParent field of the "go.opentelemetry.io/otel/sdk/trace".SamplingParameters is removed.
This field is redundant to the information returned from the Remote method of the SpanContext held in the ParentContext field. (#1749)trace.FlagsDebug and trace.FlagsDeferred constants have been removed and will be localized to the B3 propagator. (#1770)Process configuration, WithProcessFromEnv and ProcessFromEnv, and type from the Jaeger exporter package.
The information that could be configured in the Process struct should be configured in a Resource instead. (#1776, #1804)WithDisabled option from the Jaeger exporter.
To disable the exporter unregister it from the TracerProvider or use a no-operation TracerProvider. (#1806)CollectorEndpointFromEnv and WithCollectorEndpointOptionFromEnv from 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)WithSDKOptions Option.
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, the NewRawExporter function and direct setup of the SDK with the desired settings should be used. (#1825)WithBufferMaxCount and WithBatchMaxCount Options from the Jaeger exporter are removed.
The exporter no longer batches exports, instead relying on the SDK's BatchSpanProcessor for this functionality. (#1830)Option type 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)Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →