@@ -18,7 +18,7 @@ Before (0.27):
1818opentelemetry :: global :: shutdown_tracer_provider ();
1919```
2020
21- • After (0.28):
21+ After (0.28):
2222
2323``` rust
2424let tracer_provider = opentelemetry_sdk :: trace :: SdkTracerProvider :: builder ()
@@ -54,33 +54,43 @@ PeriodicReader, BatchSpanProcessor, BatchLogProcessor are the components
5454affected.
5555
5656For Logs,Traces replace ` .with_batch_exporter(exporter, runtime::Tokio) ` with
57- ` .with_batch_exporter(exporter) ` . For Metrics, replace `let reader =
57+ ` .with_batch_exporter(exporter) ` .
58+
59+ For Metrics, replace `let reader =
5860PeriodicReader::builder(exporter, runtime::Tokio).build();` with ` let reader =
5961PeriodicReader::builder(exporter).build();` or more conveniently,
6062` .with_periodic_exporter(exporter) ` .
6163
6264Please note the following:
6365
64- 1 . With the new approach, only the following grpc/http clients are supported in
65- ` opentelemetry-otlp ` . grpc-tonic, reqwest-blocking-client In other words,
66- ` reqwest ` and ` hyper ` are not supported. If using ` grpc-tonic ` , the OTLP
67- Exporter must be created from within a Tokio runtime.
66+ * With the new approach, only the following grpc/http clients are supported in
67+ ` opentelemetry-otlp ` .
68+
69+ ` grpc-tonic ` (OTLP
70+ Exporter must be created from within a Tokio runtime)
71+
72+ ` reqwest-blocking-client `
73+
74+ In other words,
75+ ` reqwest ` and ` hyper ` are not supported.
6876 If using exporters other than ` opentelemetry-otlp ` , consult the docs
6977 for the same to know if there are any restrictions/requirements on async
7078 runtime.
71- 2 . Timeout enforcement is now moved to Exporters. i.e
79+
80+ * Timeout enforcement is now moved to Exporters. i.e
7281BatchProcessor,PeriodicReader does not enforce timeouts. For logs and traces,
7382` max_export_timeout ` (on Processors) or ` OTEL_BLRP_EXPORT_TIMEOUT ` or
7483` OTEL_BSP_EXPORT_TIMEOUT ` is no longer supported. For metrics, ` with_timeout ` on
7584PeriodicReader is no longer supported.
7685
77- ` OTEL_EXPORTER_OTLP_TIMEOUT ` can be used to setup timeout for OTLP Exporters via
78- environment variables, or ` .with_tonic().with_timeout() ` or
79- ` .with_http().with_timeout() ` programmatically.
86+ ` OTEL_EXPORTER_OTLP_TIMEOUT ` can be used to setup timeout for OTLP Exporters
87+ via environment variables, or ` .with_tonic().with_timeout() ` or
88+ ` .with_http().with_timeout() ` programmatically.
8089
81- If you need the old behavior (your application cannot spawn a new thread, or
82- need to use another networking client etc.) use appropriate feature flags from
83- below “experimental_metrics_periodicreader_with_async_runtime”
90+ * If you need the old behavior (your application cannot spawn a new thread, or
91+ need to use another networking client etc.) use appropriate feature flag(s) from
92+ below.
93+ “experimental_metrics_periodicreader_with_async_runtime”
8494 "experimental_logs_batch_log_processor_with_async_runtime"
8595 "experimental_trace_batch_span_processor_with_async_runtime"
8696
@@ -100,9 +110,9 @@ let logger_provider = SdkLoggerProvider::builder()
100110
101111## OTLP Default change
102112
103- "grpc-tonic" feature flag is no longer enabled by default. "http-proto" and
104- "reqwest-blocking-client" features are added as default, to align with the
105- OTel specification.
113+ "grpc-tonic" feature flag is no longer enabled by default in
114+ ` opentelemetry-otlp ` . "http-proto" and "reqwest-blocking-client" features are
115+ added as default, to align with the OTel specification.
106116
107117## Resource Changes
108118
@@ -133,9 +143,9 @@ Resource::builder()
133143OpenTelemetry internally used ` tracing ` to emit its internal logs. This is under
134144feature-flag "internal-logs" that is enabled by default in all crates. When
135145using OTel Logging, care must be taken to avoid OTel's own internal log being
136- fed back to OTel, creating an infinite loop . This can be achieved via proper
146+ fed back to OTel, creating an circular dependency . This can be achieved via proper
137147filtering. The OTLP Examples in the repo shows how to achieve this. It also
138- shows how to send OTel's internal logs to stdtout using ` tracing::Fmt ` .
148+ shows how to send OTel's internal logs to stdout using ` tracing::Fmt ` .
139149
140150## Full example
141151
@@ -152,3 +162,27 @@ the changes required to be made.
152162This guide covers only the most common breaking changes. If you’re using custom
153163exporters or processors (or authoring one), please consult the changelog for
154164additional migration details.
165+
166+ ## Notes on Breaking Changes and the Path to 1.0
167+
168+ We understand that breaking changes can be challenging, but they are essential
169+ for the growth and stability of the project. With the release of 0.28, the
170+ Metric API (` opentelemetry ` crate, "metrics" feature flag) and LogBridge API
171+ (` opentelemetry ` crate, "logs" feature flag) are now stable, and we do not
172+ anticipate further breaking changes for these components.
173+
174+ Moreover, the ` opentelemetry_sdk ` crate for "logs" and "metrics" will have a
175+ very high bar for any future breaking changes. Any changes are expected to
176+ primarily impact those developing custom components, such as custom exporters.
177+ In the upcoming releases, we aim to bring the "traces" feature to the same level
178+ of stability as "logs" and "metrics". Additionally, "opentelemetry-otlp", the
179+ official exporter, will also receive stability guarantees.
180+
181+ We are excited to announce that a 1.0 release, encompassing logs, metrics, and
182+ traces, is planned for June 2025. We appreciate your patience and support as we
183+ work towards this milestone. The 1.0 release will cover the API
184+ (` opentelemetry ` ), SDK (` opentelemetry_sdk ` ), OTLP Exporter
185+ (` opentelemetry-otlp ` ), and Tracing-Bridge (` opentelemetry-appender-tracing ` ).
186+
187+ We encourage you to share your feedback via GitHub issues or the OTel-Rust Slack
188+ channel [ here] ( https://cloud-native.slack.com/archives/C03GDP0H023 ) .
0 commit comments