|
1 | | -# Changelog |
| 1 | +# CHANGELOG |
| 2 | + |
| 3 | +All significant changes to this project will be documented in this file. |
2 | 4 |
|
3 | 5 | ## Unreleased |
4 | 6 |
|
| 7 | +## v0.7.17 |
| 8 | + |
| 9 | +### Breaking Changes |
| 10 | + |
| 11 | +* Deprecated `Span::enter_with_parents()`. It now uses the first non-noop parent as the primary parent and converts additional parents to links. |
| 12 | + |
| 13 | +### New Features |
| 14 | + |
| 15 | +* Added `Span::with_link()` and `Span::add_link()`. |
| 16 | +* Added `LocalSpan::with_link()` and `LocalSpan::add_link()`. |
| 17 | +* Added `SpanRecord.links` and propagated links through collector post-processing. |
| 18 | +* Added `serde::Serialize` and `serde::Deserialize` support for `SpanContext` using W3C `traceparent` format. |
| 19 | + |
| 20 | +### Bug Fixes |
| 21 | + |
| 22 | +* Fixed `#[trace]` macro span attachment by generating the wrapper function with the original function span. |
| 23 | + |
5 | 24 | ## v0.7.16 |
6 | 25 |
|
7 | | -- Deprecate `Config::tail_sampled()`; spans are held until the root span finishes by default, and `Span::cancel()` discards spans collected up to the root's drop. |
| 26 | +### Improvements |
| 27 | + |
| 28 | +* Deprecated `Config::tail_sampled()`. |
| 29 | +* Spans are held until the root span finishes by default, and `Span::cancel()` discards spans collected up to the root span drop. |
8 | 30 |
|
9 | 31 | ## v0.7.15 |
10 | 32 |
|
11 | | -- `#[trace]` macro now supports trait-object futures and preserves input tokens more faithfully to avoid compilation errors. |
12 | | -- Added `#[allow(unreachable_code)]` on the macro return hint to quiet new compiler warnings. |
| 33 | +### Bug Fixes |
| 34 | + |
| 35 | +* `#[trace]` macro now supports trait-object futures and preserves input tokens more faithfully to avoid compilation errors. |
| 36 | + |
| 37 | +### Improvements |
| 38 | + |
| 39 | +* Added `#[allow(unreachable_code)]` on the macro return hint to quiet new compiler warnings. |
13 | 40 |
|
14 | 41 | ## v0.7.14 |
15 | 42 |
|
16 | | -- Fix stale spans not being cleared after reporting. |
| 43 | +### Bug Fixes |
17 | 44 |
|
18 | | -## v0.7.13 |
| 45 | +* Fixed stale spans not being cleared after reporting. |
19 | 46 |
|
20 | | -- Fix memory leak when reporter is not set. |
| 47 | +## v0.7.13 |
21 | 48 |
|
22 | | -## v0.7.12 |
| 49 | +### Bug Fixes |
23 | 50 |
|
24 | | -- Propagate trace context no matter the reporter is set or not. |
| 51 | +* Fixed memory leak when reporter is not set. |
25 | 52 |
|
26 | 53 | ## v0.7.12 |
27 | 54 |
|
28 | | -- Fix the issue that`SpanContext::random()` returns a non-zero parent id. |
| 55 | +### Bug Fixes |
| 56 | + |
| 57 | +* Propagated trace context no matter whether the reporter is set. |
| 58 | +* Fixed an issue where `SpanContext::random()` returned a non-zero parent id. |
29 | 59 |
|
30 | 60 | ## v0.7.10 |
31 | 61 |
|
32 | | -- `TraceContext::random()` now returns a `TraceContext` with random `TraceId` and `SpanId`. |
33 | | -- Add `Config::tail_sampled()`, which defaults to `false`. |
34 | | -- Add attribute `#[trace(crate = ::fastrace)]` to redirect the path to `fastrace` crate. |
35 | | -- Deprecate `Config::max_spans_per_trace()` and `Config::report_before_root_finish()`. |
| 62 | +### New Features |
| 63 | + |
| 64 | +* `TraceContext::random()` now returns a `TraceContext` with random `TraceId` and `SpanId`. |
| 65 | +* Added `Config::tail_sampled()`, which defaults to `false`. |
| 66 | +* Added attribute `#[trace(crate = ::fastrace)]` to redirect the path to the `fastrace` crate. |
| 67 | + |
| 68 | +### Improvements |
| 69 | + |
| 70 | +* Deprecated `Config::max_spans_per_trace()` and `Config::report_before_root_finish()`. |
36 | 71 |
|
37 | 72 | ## v0.7.9 |
38 | 73 |
|
39 | | -- Upgrade MSRV to 1.80. |
40 | | -- Improved performance. |
| 74 | +### Breaking Changes |
| 75 | + |
| 76 | +* Upgraded MSRV to 1.80. |
| 77 | + |
| 78 | +### Improvements |
| 79 | + |
| 80 | +* Improved performance. |
41 | 81 |
|
42 | 82 | ## v0.7.8 |
43 | 83 |
|
44 | | -- Add `TraceId::random()` and `SpanId::random()`. |
45 | | -- Add `FromStr`, `Display`, and `serde` support for `TraceId`, `SpanId`. |
46 | | -- Add `Span::add_property()` and `Span::add_properties()`. |
47 | | -- Add `Span::add_event()` and `LocalSpan::add_event()`. |
48 | | -- Deprecate `Event::add_to_parent()` and `Event::add_to_local_parent()`. |
| 84 | +### New Features |
| 85 | + |
| 86 | +* Added `TraceId::random()` and `SpanId::random()`. |
| 87 | +* Added `FromStr`, `Display`, and `serde` support for `TraceId` and `SpanId`. |
| 88 | +* Added `Span::add_property()` and `Span::add_properties()`. |
| 89 | +* Added `Span::add_event()` and `LocalSpan::add_event()`. |
| 90 | + |
| 91 | +### Improvements |
| 92 | + |
| 93 | +* Deprecated `Event::add_to_parent()` and `Event::add_to_local_parent()`. |
49 | 94 |
|
50 | 95 | ## v0.7.6 |
51 | 96 |
|
52 | | -- Reduce dependencies to futures 0.3. |
| 97 | +### Improvements |
| 98 | + |
| 99 | +* Reduced dependencies to `futures` 0.3. |
53 | 100 |
|
54 | 101 | ## v0.7.5 |
55 | 102 |
|
56 | | -- Optimize collect behavior when the span is not sampled. |
| 103 | +### Improvements |
| 104 | + |
| 105 | +* Optimized collect behavior when the span is not sampled. |
57 | 106 |
|
58 | 107 | ## v0.7.4 |
59 | 108 |
|
60 | | -- Upgrade opentelemtry to 0.26.0. |
| 109 | +### Improvements |
| 110 | + |
| 111 | +* Upgraded `opentelemetry` to 0.26.0. |
61 | 112 |
|
62 | 113 | ## v0.7.3 |
63 | 114 |
|
64 | | -- Upgrade opentelemtry to 0.25.0. |
| 115 | +### Improvements |
| 116 | + |
| 117 | +* Upgraded `opentelemetry` to 0.25.0. |
65 | 118 |
|
66 | 119 | ## v0.7.2 |
67 | 120 |
|
68 | | -- Allow to `LocalSpan::add_property()` when the local parent is a `Span`. |
| 121 | +### New Features |
| 122 | + |
| 123 | +* Allowed `LocalSpan::add_property()` when the local parent is a `Span`. |
69 | 124 |
|
70 | 125 | ## v0.7.1 |
71 | 126 |
|
72 | | -- Lower MSRV to 1.75. |
| 127 | +### Improvements |
| 128 | + |
| 129 | +* Lowered MSRV to 1.75. |
73 | 130 |
|
74 | 131 | ## v0.7.0 |
75 | 132 |
|
76 | | -- Upgrade dependencies including opentelemtry and more. |
77 | | -- Remove deprecated methods `Config::batch_report_interval` and `Config::batch_report_max_spans`. |
78 | | -- Deprecate `full_name!()` and rename it to `full_path!()`. |
79 | | -- Deprecate `SpanContext::encode_w3c_traceparent_with_sampled()`. |
80 | | -- Pass `Vec<SpanRecord>` to `Reporter::report()` instead of `&[SpanRecord]`. |
81 | | -- Added `SpanContext.sampled`, which will be propagated through the child spans. |
| 133 | +### Breaking Changes |
| 134 | + |
| 135 | +* Upgraded dependencies including `opentelemetry` and more. |
| 136 | +* Removed deprecated methods `Config::batch_report_interval` and `Config::batch_report_max_spans`. |
| 137 | +* Changed `Reporter::report()` to take `Vec<SpanRecord>` instead of `&[SpanRecord]`. |
| 138 | + |
| 139 | +### New Features |
| 140 | + |
| 141 | +* Added `SpanContext.sampled`, which is propagated through child spans. |
| 142 | + |
| 143 | +### Improvements |
| 144 | + |
| 145 | +* Deprecated `full_name!()` and renamed it to `full_path!()`. |
| 146 | +* Deprecated `SpanContext::encode_w3c_traceparent_with_sampled()`. |
82 | 147 |
|
83 | 148 | ## v0.6.8 |
84 | 149 |
|
85 | | -- Project rename to `fastrace`. |
| 150 | +### Breaking Changes |
| 151 | + |
| 152 | +* Renamed project to `fastrace`. |
86 | 153 |
|
87 | 154 | ## v0.6.7 |
88 | 155 |
|
89 | | -- Add `Config::report_interval`: The background collector working interval. |
90 | | -- Deprecate `Config::batch_report_interval` and `Config::batch_report_max_spans`. |
91 | | -- Fix a performance issue in object-pool which was causing lock racing. |
| 156 | +### New Features |
| 157 | + |
| 158 | +* Added `Config::report_interval` as the background collector interval. |
| 159 | + |
| 160 | +### Improvements |
| 161 | + |
| 162 | +* Deprecated `Config::batch_report_interval` and `Config::batch_report_max_spans`. |
| 163 | +* Fixed a performance issue in object-pool that caused lock racing. |
92 | 164 |
|
93 | 165 | ## v0.6.6 |
94 | 166 |
|
95 | | -- Update to opentelemetry, opentelemetry_sdk, and opentelemetry-otlp. |
| 167 | +### Improvements |
| 168 | + |
| 169 | +* Upgraded `opentelemetry`, `opentelemetry_sdk`, and `opentelemetry-otlp`. |
96 | 170 |
|
97 | 171 | ## v0.6.5 |
98 | 172 |
|
99 | | -- Update to opentelemetry 0.22, opentelemetry_sdk 0.22.1, and opentelemetry-otlp: 0.15. |
| 173 | +### Improvements |
| 174 | + |
| 175 | +* Upgraded to `opentelemetry` 0.22, `opentelemetry_sdk` 0.22.1, and `opentelemetry-otlp` 0.15. |
100 | 176 |
|
101 | 177 | ## v0.6.4 |
102 | 178 |
|
103 | | -- Add `LocalSpan::add_property` and `LocalSpan::add_properties`. |
104 | | -- Add `Config::report_before_root_finish`. |
105 | | -- Add new crate `fastrace-futures`. |
| 179 | +### New Features |
| 180 | + |
| 181 | +* Added `LocalSpan::add_property` and `LocalSpan::add_properties`. |
| 182 | +* Added `Config::report_before_root_finish`. |
| 183 | +* Added new crate `fastrace-futures`. |
106 | 184 |
|
107 | 185 | ## v0.6.3 |
108 | 186 |
|
109 | | -- Add `LocalSpans::to_span_records()`. |
110 | | -- Add `#[trace(properties = { "k1": "v1", "k2": "v2" })]`. |
111 | | -- Add `func_name!()`, `full_name!()`, and `file_location!()` to `fastrace::prelude`. |
| 187 | +### New Features |
| 188 | + |
| 189 | +* Added `LocalSpans::to_span_records()`. |
| 190 | +* Added `#[trace(properties = { "k1": "v1", "k2": "v2" })]`. |
| 191 | +* Added `func_name!()`, `full_name!()`, and `file_location!()` to `fastrace::prelude`. |
112 | 192 |
|
113 | 193 | ## v0.6.2 |
114 | 194 |
|
115 | | -- Improve documentation. |
| 195 | +### Improvements |
| 196 | + |
| 197 | +* Improved documentation. |
116 | 198 |
|
117 | 199 | ## v0.6.1 |
118 | 200 |
|
119 | | -- Macro will use the full path of the function as span name instead of the only function name. You can turn it off by setting `#[trace(short_name = true)]`. |
120 | | -- Add utility macros `func_name!()`, `full_name!()`, and `file_location!()` to generate names for use in span. |
121 | | -- Add `Span::elapsed()` that returns the elapsed time since the span is created. |
| 201 | +### New Features |
| 202 | + |
| 203 | +* Macro now uses the full function path as the default span name. You can turn this off with `#[trace(short_name = true)]`. |
| 204 | +* Added utility macros `func_name!()`, `full_name!()`, and `file_location!()` for span naming. |
| 205 | +* Added `Span::elapsed()` that returns elapsed time since span creation. |
122 | 206 |
|
123 | 207 | ## v0.6.0 |
124 | 208 |
|
125 | | -- Span name and event name now accept both `&'static str` and `String` (`Into<Cow<'static, str>>`), which previously only accept `&'static str`. |
126 | | -- `with_property` and `with_properties` now accept `impl Into<Cow<'static, str>>`, which previously accept `Cow<'static, str>`. |
| 209 | +### Improvements |
| 210 | + |
| 211 | +* Span name and event name now accept both `&'static str` and `String` (`Into<Cow<'static, str>>`) instead of only `&'static str`. |
| 212 | +* `with_property` and `with_properties` now accept `impl Into<Cow<'static, str>>` instead of only `Cow<'static, str>`. |
127 | 213 |
|
128 | 214 | ## v0.5.1 |
129 | 215 |
|
130 | | -- Fix panics due to destruction of Thread Local Storage value |
| 216 | +### Bug Fixes |
| 217 | + |
| 218 | +* Fixed panics due to destruction of Thread Local Storage values. |
131 | 219 |
|
132 | 220 | ## v0.5.0 |
133 | 221 |
|
134 | | -- Add `Event` type to represent single points in time during the span's lifetime. |
135 | | -- Add `fastrace-opentelementry` reporter that reports spans to OpenTelemetry collector. |
136 | | -- Removed `Collector` and replaced it with `Reporter`. |
137 | | -- The macro arguments must be named if any, e.g. `#[trace(name="name")]`. |
138 | | -- Allow to statically opt-out of tracing by not setting `enable` feature. |
| 222 | +### Breaking Changes |
| 223 | + |
| 224 | +* Removed `Collector` and replaced it with `Reporter`. |
| 225 | +* Macro arguments must be named when provided, for example `#[trace(name = "name")]`. |
| 226 | + |
| 227 | +### New Features |
| 228 | + |
| 229 | +* Added `Event` type to represent single points in time during a span lifetime. |
| 230 | +* Added `fastrace-opentelemetry` reporter to send spans to OpenTelemetry collectors. |
| 231 | +* Allowed statically opting out of tracing by not enabling the `enable` feature. |
139 | 232 |
|
140 | 233 | ## v0.4.0 |
141 | 234 |
|
142 | | -- Remove `LocalSpanGuard` and merge it into `LocalSpan`. |
143 | | -- Remove `LocalSpan::with_property`, `LocalSpan::with_properties`, `Span::with_property` and `Span::with_properties`. |
144 | | -- Add `LocalSpan::add_property`, `LocalSpan::add_properties`, `Span::add_property` and `Span::add_properties`. |
145 | | -- Remove `LocalParentGuard`. `Span::set_local_parent` returns a general `Option<Guard<impl FnOnce()>>` instead. |
| 235 | +### Breaking Changes |
| 236 | + |
| 237 | +* Removed `LocalSpanGuard` and merged it into `LocalSpan`. |
| 238 | +* Removed `LocalSpan::with_property`, `LocalSpan::with_properties`, `Span::with_property`, and `Span::with_properties`. |
| 239 | +* Removed `LocalParentGuard`; `Span::set_local_parent` now returns `Option<Guard<impl FnOnce()>>`. |
| 240 | + |
| 241 | +### New Features |
| 242 | + |
| 243 | +* Added `LocalSpan::add_property`, `LocalSpan::add_properties`, `Span::add_property`, and `Span::add_properties`. |
146 | 244 |
|
147 | 245 | ## v0.3.1 |
148 | 246 |
|
149 | | -- Add an async variant of jaeger reporting function `fastrace::report()`. |
150 | | -- `LocalSpan::with_property` now no longer takes `self` but `&mut self` instead. |
| 247 | +### New Features |
| 248 | + |
| 249 | +* Added an async variant of Jaeger reporting function `fastrace::report()`. |
| 250 | + |
| 251 | +### Improvements |
| 252 | + |
| 253 | +* `LocalSpan::with_property` now takes `&mut self` instead of `self`. |
151 | 254 |
|
152 | 255 | ## v0.3.0 |
153 | 256 |
|
154 | | -- `Collector::collect()` becomes an async function because the span collection work is moved to a background thread to extremely reduce the performance overhead on the code being tracing. |
155 | | -- Attribute macro `#[trace]` on async function becomes able to automatically extract the local parent in the caller's context. Previously, the caller must manually call `in_span()`. |
| 257 | +### Breaking Changes |
| 258 | + |
| 259 | +* `Collector::collect()` became async because span collection moved to a background thread to reduce tracing overhead. |
| 260 | + |
| 261 | +### New Features |
| 262 | + |
| 263 | +* Attribute macro `#[trace]` on async functions can automatically extract the caller local parent. Previously, the caller had to call `in_span()` manually. |
156 | 264 |
|
157 | 265 | ## v0.2.0 |
158 | 266 |
|
159 | | -- All API get redesigned for better egnormic experience. |
160 | | -- Attribute macro `#[trace]` automatically detects `async fn` and crate `async-trait`, and since that, `#[trace_async]` is removed. |
| 267 | +### Breaking Changes |
| 268 | + |
| 269 | +* Redesigned all APIs for a better ergonomic experience. |
| 270 | +* `#[trace]` now automatically detects `async fn` and `async-trait`, and `#[trace_async]` was removed. |
0 commit comments