Skip to content

Commit dda882e

Browse files
committed
Merge remote-tracking branch 'origin/main' into tokio-type-clean
2 parents a05eed1 + b956998 commit dda882e

52 files changed

Lines changed: 3336 additions & 1136 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.cargo/audit.toml

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,13 @@
1-
# Ignored advisories for rustls-webpki name constraint bugs.
2-
#
3-
# Both are low-severity: exploitable only after signature verification
4-
# passes, and require certificate misissuance. The vulnerable crate
5-
# (rustls-webpki 0.101.7) is pulled in transitively by
6-
# aws-sdk-s3-transfer-manager and s3s-aws, which unconditionally enable
7-
# the legacy rustls feature on aws-sdk-s3. We cannot remove it without
8-
# upstream changes.
9-
#
10-
# Upstream issues:
11-
# https://github.com/awslabs/aws-s3-transfer-manager-rs/issues/138
12-
# https://github.com/s3s-project/s3s/issues/571
13-
#
14-
# Remove these ignores once the upstream crates stop pulling in the
15-
# legacy rustls 0.21 dependency chain.
1+
# Advisories against rustls-webpki 0.101.7, pulled in transitively by
2+
# aws-sdk-s3-transfer-manager and s3s-aws (legacy rustls 0.21 chain).
3+
# No patch exists in 0.101.x; not reachable in our usage (TLS client
4+
# only, no CRL parsing). Remove once the upstream fixes below ship:
5+
# aws-s3-transfer-manager-rs: PR #141
6+
# s3s: merged to main, awaiting s3s-aws 0.14 release
167

178
[advisories]
189
ignore = [
1910
"RUSTSEC-2026-0098", # rustls-webpki: URI name constraints incorrectly accepted
2011
"RUSTSEC-2026-0099", # rustls-webpki: name constraints accepted for wildcard certs
12+
"RUSTSEC-2026-0104", # rustls-webpki: reachable panic in CRL parsing (we do not parse CRLs)
2113
]

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,4 @@
44
!dial9-viewer/ui/demo-trace.bin
55
target/
66
.claude/
7+
.zed/

CHANGELOG.md

Lines changed: 52 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,52 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Added
11+
12+
- **Inline config in the macro**: `#[dial9_tokio_telemetry::main]` now accepts a closure, so simple setups no longer need a separate config function.
13+
- **Fluent config builder**: `Dial9Config::builder()` with named setters, `with_tokio`/`with_runtime` closures, and `.enabled(bool)`. The original positional API under `dial9_tokio_telemetry::config` is unchanged.
14+
- **`build_or_disabled()`**: on config validation or writer I/O failure, logs an error and starts a plain tokio runtime instead of crashing. Use `build()` to handle failures explicitly.
15+
16+
All three in action:
17+
18+
```rust
19+
#[dial9_tokio_telemetry::main(config = || {
20+
Dial9Config::builder()
21+
.base_path("/tmp/trace.bin")
22+
.max_file_size(64 * 1024 * 1024)
23+
.max_total_size(256 * 1024 * 1024)
24+
.build_or_disabled()
25+
})]
26+
async fn main() { /* ... */ }
27+
```
28+
29+
### Changed
30+
31+
- `TelemetryHandle::current()` no longer panics off-runtime. It returns an inert handle whose `spawn` falls through to `tokio::spawn`. Use `TelemetryHandle::is_enabled()` to check whether telemetry is live.
32+
33+
## [0.3.6](https://github.com/dial9-rs/dial9-tokio-telemetry/compare/dial9-tokio-telemetry-v0.3.5...dial9-tokio-telemetry-v0.3.6) - 2026-04-30
34+
35+
### Added
36+
37+
- Store S3 metadata into segement metadata ([#311](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/311))
38+
- detect uninstrumented task spawns and surface in viewer ([#293](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/293))
39+
- Add simple example for local execution ([#306](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/306)) — thanks @mox692!
40+
41+
### Fixed
42+
43+
- Don't register sched events on blocking pool threads ([#316](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/316))
44+
- *(viewer)* correct schedWait unit from µs to ns ([#308](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/308))
45+
46+
### Other
47+
48+
- Fix thread CPU time measurement details in README ([#312](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/312))
49+
- Fix ctimer test on AL2 ([#317](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/317))
50+
- Allow opening .gz trace files in the file picker ([#315](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/315))
51+
- [dial9-viewer] Toolkit: parallel multi-file trace analysis with caching ([#298](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/298))
52+
- Retain parent stack trace when zooming into flamegraph frames ([#305](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/305))
53+
- Retain selection overlay while sidebar is open ([#304](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/304))
54+
- (viewer) Move flamegraph into sidebar instead of full-screen overlay ([#291](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/291))
55+
1056
## [0.3.5](https://github.com/dial9-rs/dial9-tokio-telemetry/compare/dial9-tokio-telemetry-v0.3.4...dial9-tokio-telemetry-v0.3.5) - 2026-04-24
1157

1258
### Added
@@ -74,13 +120,13 @@ tracing_subscriber::registry()
74120
.init();
75121
```
76122

77-
Tracing support means you can attach a request ID or other context to spans via `#[instrument(fields(request_id = %id))]` and then search for specific requests in the trace. You can also see what's happening inside long polls: if a single poll contains many small operations without yielding, the span breakdown shows exactly where the time went.
123+
Tracing support means you can attach a request ID or other context to spans via `#[instrument(fields(request_id = %id))]` and then search for specific requests in the trace. You can also see what's happening inside long polls: if a single poll contains many small operations without yielding, the span breakdown shows exactly where the time went.
78124

79125
Standard `tracing-subscriber` filtering rules apply. Without a filter, libraries like the AWS SDK will flood the trace with internal spans. The preceding captures only spans from `my_app`.
80126

81127
## [0.3.0](https://github.com/dial9-rs/dial9-tokio-telemetry/compare/dial9-tokio-telemetry-v0.2.0...dial9-tokio-telemetry-v0.3.0) - 2026-04-17
82128

83-
Big release. The setup story is much better, there's support for tracing multiple runtimes, you can emit your own events into the trace, and the viewer is its own crate now.
129+
Big release. The setup story is much better, there's support for tracing multiple runtimes, you can emit your own events into the trace, and the viewer is its own crate now.
84130

85131
### `#[dial9_tokio_telemetry::main]` macro ([#212](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/212))
86132

@@ -204,6 +250,7 @@ Uncompressed trace files can be concatenated (`cat trace.0.bin trace.1.bin > com
204250
## [0.2.0](https://github.com/dial9-rs/dial9-tokio-telemetry/compare/dial9-tokio-telemetry-v0.1.1...dial9-tokio-telemetry-v0.2.0) - 2026-03-20
205251

206252
0.2.0 brings two major improvements:
253+
207254
1. Support for publishing traces to S3
208255
2. Migration to the new trace format (dial9-trace-format). This format is self describing, extremely compact, compressible and fast to write. This will set us up to easily add application level telemetry in the future.
209256

@@ -223,15 +270,15 @@ For setting it up in production applications, the new `.install(true/false)` met
223270
- Bring back support for locations in offline symbolization ([#110](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/110))
224271
- stop writing trailing garbage in gzip segments after graceful_shutdown ([#104](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/104))
225272
- Fix worker spin-loop on gzip-compressed and permanently failing segments ([#102](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/102))
226-
- *(trace_viewer)* update format name from TOKIOTRC to D9TF in landing screen ([#103](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/103))
227-
- *(js-decoder)* handle truncated frames gracefully, read symbol frames even if >= MAX_EVENTS ([#98](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/98))
273+
- _(trace_viewer)_ update format name from TOKIOTRC to D9TF in landing screen ([#103](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/103))
274+
- _(js-decoder)_ handle truncated frames gracefully, read symbol frames even if >= MAX_EVENTS ([#98](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/98))
228275
- clarify S3 key layout is the default, not the only option ([#89](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/89))
229276
- add missing crates.io metadata ([#84](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/84))
230277
- thread-local buffer not flushing on drop ([#54](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/54))
231278

232279
### Other
233280

234-
- *(trace-parser)* consolidate per-branch cap checks into early continue ([#116](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/116))
281+
- _(trace-parser)_ consolidate per-branch cap checks into early continue ([#116](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/116))
235282
- fix flaky worker park test ([#117](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/117))
236283
- Harden flush path with ArrayQueue & emit metrics ([#97](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/97))
237284
- Update demo trace to have symbols ([#105](https://github.com/dial9-rs/dial9-tokio-telemetry/pull/105))

Cargo.lock

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ repository = "https://github.com/dial9-rs/dial9-tokio-telemetry"
2121

2222
[workspace.dependencies]
2323
libc = "0.2"
24-
dial9-perf-self-profile = { version = "0.3.5", path = "perf-self-profile" }
25-
dial9-trace-format = { version = "0.3.5", path = "dial9-trace-format" }
24+
dial9-perf-self-profile = { version = "0.3.6", path = "perf-self-profile" }
25+
dial9-trace-format = { version = "0.3.6", path = "dial9-trace-format" }
2626
dial9-trace-format-derive = { version = "0.3.5", path = "dial9-trace-format-derive" }
2727
dial9-macro = { version = "0.3.5", path = "dial9-macro" }
2828
assert2 = "0.4"

0 commit comments

Comments
 (0)