@@ -12,6 +12,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1212
1313## Unreleased
1414
15+ - `opentelemetry-sdk`: Drop unused Jaeger exporter environment variables (exporter removed in 1.22.0)
16+ ([#4918](https://github.com/open-telemetry/opentelemetry-python/issues/4918))
17+ - `opentelemetry-sdk`: Clarify timeout units in environment variable documentation
18+ ([#4906](https://github.com/open-telemetry/opentelemetry-python/pull/4906))
1519- `opentelemetry-exporter-otlp-proto-grpc`: Fix re-initialization of gRPC channel on UNAVAILABLE error
1620 ([#4825](https://github.com/open-telemetry/opentelemetry-python/pull/4825))
1721- `opentelemetry-exporter-prometheus`: Fix duplicate HELP/TYPE declarations for metrics with different label sets
@@ -30,6 +34,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3034 ([#4806](https://github.com/open-telemetry/opentelemetry-python/pull/4806))
3135- Prevent possible endless recursion from happening in `SimpleLogRecordProcessor.on_emit`,
3236 ([#4799](https://github.com/open-telemetry/opentelemetry-python/pull/4799)) and ([#4867](https://github.com/open-telemetry/opentelemetry-python/pull/4867)).
37+ - Implement span start/end metrics
38+ ([#4880](https://github.com/open-telemetry/opentelemetry-python/pull/4880))
3339- Add environment variable carriers to API
3440 ([#4609](https://github.com/open-telemetry/opentelemetry-python/pull/4609))
3541- Add experimental composable rule based sampler
@@ -38,6 +44,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
3844 ([#4862](https://github.com/open-telemetry/opentelemetry-python/pull/4862))
3945- `opentelemetry-exporter-otlp-proto-http`: fix retry logic and error handling for connection failures in trace, metric, and log exporters
4046 ([#4709](https://github.com/open-telemetry/opentelemetry-python/pull/4709))
47+ - `opentelemetry-sdk`: avoid RuntimeError during iteration of view instrument match dictionary in MetricReaderStorage.collect()
48+ ([#4891](https://github.com/open-telemetry/opentelemetry-python/pull/4891))
49+ - Implement experimental TracerConfigurator
50+ ([#4861](https://github.com/open-telemetry/opentelemetry-python/pull/4861))
51+ - bump semantic-conventions to v1.39.0
52+ ([#4914](https://github.com/open-telemetry/opentelemetry-python/pull/4914))
4153
4254## Version 1.39.0/0.60b0 (2025-12-03)
4355
@@ -47,8 +59,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
4759 ([#4734](https://github.com/open-telemetry/opentelemetry-python/pull/4734))
4860- build: bump ruff to 0.14.1
4961 ([#4782](https://github.com/open-telemetry/opentelemetry-python/pull/4782))
50- - Add `opentelemetry-exporter-credential-provider-gcp` as an optional dependency to `opentelemetry-exporter-otlp-proto-grpc`
51- and `opentelemetry-exporter-otlp-proto-http`
62+ - Add `opentelemetry-exporter-credential-provider-gcp` as an optional dependency to `opentelemetry-exporter-otlp-proto-grpc`
63+ and `opentelemetry-exporter-otlp-proto-http`
5264 ([#4760](https://github.com/open-telemetry/opentelemetry-python/pull/4760))
5365- feat: implement on ending in span processor
5466 ([#4775](https://github.com/open-telemetry/opentelemetry-python/pull/4775))
@@ -60,29 +72,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6072 ([#4647](https://github.com/open-telemetry/opentelemetry-python/pull/4647))
6173
6274 **Migration Guide:**
63-
75+
6476 `LogData` has been removed. Users should update their code as follows:
65-
77+
6678 - **For Log Exporters:** Change from `Sequence[LogData]` to `Sequence[ReadableLogRecord]`
6779 ```python
6880 # Before
6981 from opentelemetry.sdk._logs import LogData
7082 def export(self, batch: Sequence[LogData]) -> LogRecordExportResult:
7183 ...
72-
84+
7385 # After
7486 from opentelemetry.sdk._logs import ReadableLogRecord
7587 def export(self, batch: Sequence[ReadableLogRecord]) -> LogRecordExportResult:
7688 ...
7789 ```
78-
90+
7991 - **For Log Processors:** Use `ReadWriteLogRecord` for processing, `ReadableLogRecord` for exporting
8092 ```python
8193 # Before
8294 from opentelemetry.sdk._logs import LogData
8395 def on_emit(self, log_data: LogData):
8496 ...
85-
97+
8698 # After
8799 from opentelemetry.sdk._logs import ReadWriteLogRecord, ReadableLogRecord
88100 def on_emit(self, log_record: ReadWriteLogRecord):
@@ -95,7 +107,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
95107 )
96108 ...
97109 ```
98-
110+
99111 - **Accessing log data:** Use the same attributes on `ReadableLogRecord`/`ReadWriteLogRecord`
100112 - `log_record.log_record` - The API LogRecord (contains body, severity, attributes, etc.)
101113 - `log_record.resource` - The Resource
0 commit comments