GitHub
11/14/2026, 3:43 AM<http://go.opentelemetry.io/otel/sdk|go.opentelemetry.io/otel/sdk> from 1.45.0 to 1.47.0
Release notes
Sourced from go.opentelemetry.io/otel/sdk's releases.
v1.47.0/v0.69.0/v0.23.0/v0.1.0
This release contains the first stable release of the OpenTelemetry Go Logs API and SDK. Our project stability guarantees now apply to the following modules:
•<http://go.opentelemetry.io/otel/log|go.opentelemetry.io/otel/log>
•<http://go.opentelemetry.io/otel/sdk/log|go.opentelemetry.io/otel/sdk/log>
See our versioning policy for more information about these stability guarantees.
Added
• Addmethod forStringtype inKeyValue. (#8205)<http://go.opentelemetry.io/otel/attribute|go.opentelemetry.io/otel/attribute>
• Addmethod forStringtype inSet. (#8347)<http://go.opentelemetry.io/otel/attribute|go.opentelemetry.io/otel/attribute>
• AddtoWithMaxExportBatchSizeto configure the maximum export batch size for<http://go.opentelemetry.io/otel/sdk/metric|go.opentelemetry.io/otel/sdk/metric>. (#8960)PeriodicReader
• Add,WithAttributeValueDepthLimit, andDefaultAttributeValueDepthLimitinSpanLimits.AttributeValueDepthLimitto configure the maximum depth of span, event, link, and instrumentation scope attribute values. (#8938)<http://go.opentelemetry.io/otel/sdk/trace|go.opentelemetry.io/otel/sdk/trace>
• AddinWithAttributeValueDepthLimitto configure the maximum depth of log record and instrumentation scope attribute values. (#8938)<http://go.opentelemetry.io/otel/sdk/log|go.opentelemetry.io/otel/sdk/log>
• AddtoWithMaxResponseSize,<http://go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp,go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp|go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp, and`go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp`. (#8941)go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp>
• Add experimentalinProbabilitySamplerthat conforms to the OpenTelemetry specification's threshold-based sampling algorithm. (#8123)<http://go.opentelemetry.io/otel/sdk/trace/x|go.opentelemetry.io/otel/sdk/trace/x>
• Add experimentalextension interfaces in*Binderfor instruments that support binding attributes ahead of time. (#8760)<http://go.opentelemetry.io/otel/metric/x|go.opentelemetry.io/otel/metric/x>
• Add the experimentalsynchronous metric instrument extension interface toFinisher. (#8906)<http://go.opentelemetry.io/otel/metric/x|go.opentelemetry.io/otel/metric/x>
Changed
• Use the OpenTelemetry Attribute Collection representation for non-OTLP protocols for metric data diffs in. (#8993)<http://go.opentelemetry.io/otel/sdk/metric/metricdata/metricdatatest|go.opentelemetry.io/otel/sdk/metric/metricdata/metricdatatest>
• Apply a maximum depth of 64 by default to span, event, link, log record, and instrumentation scope attribute values inand<http://go.opentelemetry.io/otel/sdk/trace|go.opentelemetry.io/otel/sdk/trace>. (#8938)<http://go.opentelemetry.io/otel/sdk/log|go.opentelemetry.io/otel/sdk/log>
• Reduce allocations when applying attribute value length limits inand<http://go.opentelemetry.io/otel/sdk/trace|go.opentelemetry.io/otel/sdk/trace>by rebuilding composite values only when truncation is needed. (#8912)<http://go.opentelemetry.io/otel/sdk/log|go.opentelemetry.io/otel/sdk/log>
• Decodeusing a hex lookup table intraceparent, which rejects the specification-disallowed upper-case characters without a separate scan of the header. (#8739)<http://go.opentelemetry.io/otel/propagation|go.opentelemetry.io/otel/propagation>
• Decode all characters at constant indices inandTraceIDFromHexinSpanIDFromHexto eliminate bounds checks. (#8740)<http://go.opentelemetry.io/otel/trace|go.opentelemetry.io/otel/trace>
Fixed
• Count valid U+FFFD replacement characters toward attribute value length limits in,<http://go.opentelemetry.io/otel/trace|go.opentelemetry.io/otel/trace>, and<http://go.opentelemetry.io/otel/sdk/trace|go.opentelemetry.io/otel/sdk/trace>.<http://go.opentelemetry.io/otel/sdk/log|go.opentelemetry.io/otel/sdk/log>
• Truncate string attribute values to empty strings when the configured length limit is zero, including malformed UTF-8, in,<http://go.opentelemetry.io/otel/trace|go.opentelemetry.io/otel/trace>, and<http://go.opentelemetry.io/otel/sdk/trace|go.opentelemetry.io/otel/sdk/trace>. (#9054)<http://go.opentelemetry.io/otel/sdk/log|go.opentelemetry.io/otel/sdk/log>
• Fix a data race inwhereNewPeriodicReaderwas assigned after the background goroutine was launched inr.inst. (#9028)<http://go.opentelemetry.io/otel/sdk/metric|go.opentelemetry.io/otel/sdk/metric>
• Prevent precision loss for largevalues inint64,Sum, andHistogramaggregations inExponentialHistogram. (#8981)<http://go.opentelemetry.io/otel/sdk/metric|go.opentelemetry.io/otel/sdk/metric>
• Ensurevalues passed viagrpc.DialOptiontake precedence over conflicting internally-computed defaults in`go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc`,`go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc`, and`go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc`. (#8805, #8834, #8836)WithDialOption
• Treat overflowingandOTEL_METRIC_EXPORT_INTERVALvalues as invalid inOTEL_METRIC_EXPORT_TIMEOUT. (#8800)<http://go.opentelemetry.io/otel/sdk/metric|go.opentelemetry.io/otel/sdk/metric>
• Preve…jmpsec/osctrl