Skip to content

Update dependencies including breaking changes#1175

Merged
kixelated merged 2 commits into
mainfrom
update-deps
Mar 31, 2026
Merged

Update dependencies including breaking changes#1175
kixelated merged 2 commits into
mainfrom
update-deps

Conversation

@kixelated

Copy link
Copy Markdown
Collaborator

Summary

  • Update all semver-compatible Rust and JS dependencies
  • m3u8-rs 5→6: target_duration changed from f32 to u64 per RFC 8216
  • sd-notify 0.4→0.5: removed unset_env parameter from notify()
  • web-transport-iroh 0.2→0.3: updated to iroh 0.97 which requires explicit preset selection
  • web-transport-proto 0.5→0.6: added headers field to ConnectRequest
  • Expose --iroh-disable-relay flag to allow P2P-only iroh connections without relay forwarding (uses N0DisableRelay preset which keeps DNS/pkarr discovery but disables the relay)

Test plan

  • just check passes (all builds, tests, linting, docs, nix)
  • Manual test of iroh connections with and without --iroh-disable-relay
  • Manual test of HLS ingest with updated m3u8-rs

🤖 Generated with Claude Code

Semver-compatible updates:
- Rust: 23 crate updates (hyper, mio, uuid, wasm-bindgen, etc.)
- JS: @biomejs/biome 2.4.3→2.4.10, publint 0.3.17→0.3.18

Breaking updates:
- m3u8-rs 5→6: target_duration changed from f32 to u64 (per RFC 8216)
- sd-notify 0.4→0.5: removed unset_env parameter from notify()
- web-transport-iroh 0.2→0.3: updated to iroh 0.97 (builder now requires preset)
- web-transport-proto 0.5→0.6: added headers field to ConnectRequest

Also exposes --iroh-disable-relay flag to allow P2P-only iroh connections
without relay traffic forwarding, using iroh's N0DisableRelay preset.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Mar 31, 2026

Copy link
Copy Markdown
Contributor

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c81b7df5-c18c-4245-8d89-623ebc23562b

📥 Commits

Reviewing files that changed from the base of the PR and between 02fced9 and bacbd6e.

⛔ Files ignored due to path filters (2)
  • Cargo.lock is excluded by !**/*.lock
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (4)
  • Cargo.toml
  • package.json
  • rs/moq-cli/Cargo.toml
  • rs/moq-relay/Cargo.toml
✅ Files skipped from review due to trivial changes (3)
  • package.json
  • rs/moq-relay/Cargo.toml
  • rs/moq-cli/Cargo.toml
🚧 Files skipped from review as they are similar to previous changes (1)
  • Cargo.toml

Walkthrough

This PR updates workspace and package dependency versions: web-transport-iroh 0.2→0.3, web-transport-proto 0.5→0.6, @biomejs/biome and publint dev deps, m3u8-rs 5→6, and sd-notify 0.4→0.5 for Unix targets. Code changes adapt to sd-notify API by removing the boolean argument from notify calls in multiple binaries. HLS handling now treats EXT-X-TARGETDURATION as an integer (Option) and computes refresh delays from whole seconds. Adds iroh-disable-relay: Option<bool> to IrohEndpointConfig and uses it to choose endpoint presets.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Update dependencies including breaking changes' accurately captures the main purpose of the PR, which is updating multiple dependencies with breaking changes.
Description check ✅ Passed The description is directly related to the changeset, providing detailed information about dependency updates, breaking changes, and new features like the --iroh-disable-relay flag.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch update-deps
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch update-deps

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@rs/moq-relay/src/main.rs`:
- Line 49: Replace the ignored call to
sd_notify::notify(&[sd_notify::NotifyState::Ready]) with error-aware handling:
capture the Result from sd_notify::notify, and on Err log the error and
contextual message (e.g., via log::error! or eprintln!) including the returned
std::io::Error and that NotifyState::Ready failed, but do not panic—allow the
process to continue; ensure you still call sd_notify::notify with
sd_notify::NotifyState::Ready on success.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 209c88e8-caf6-4e39-8b23-de1f1136df72

📥 Commits

Reviewing files that changed from the base of the PR and between 05f79a2 and 02fced9.

⛔ Files ignored due to path filters (3)
  • Cargo.lock is excluded by !**/*.lock
  • bun.lock is excluded by !**/*.lock
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (10)
  • Cargo.toml
  • package.json
  • rs/moq-cli/Cargo.toml
  • rs/moq-cli/src/client.rs
  • rs/moq-cli/src/server.rs
  • rs/moq-mux/Cargo.toml
  • rs/moq-mux/src/import/hls.rs
  • rs/moq-native/src/iroh.rs
  • rs/moq-relay/Cargo.toml
  • rs/moq-relay/src/main.rs

Comment thread rs/moq-relay/src/main.rs
#[cfg(unix)]
// Notify systemd that we're ready after all initialization is complete
let _ = sd_notify::notify(true, &[sd_notify::NotifyState::Ready]);
let _ = sd_notify::notify(&[sd_notify::NotifyState::Ready]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

cd rs/moq-relay && head -n 60 src/main.rs | tail -n 20

Repository: moq-dev/moq

Length of output: 671


🏁 Script executed:

cd rs/moq-relay && wc -l src/main.rs

Repository: moq-dev/moq

Length of output: 69


🏁 Script executed:

cd rs/moq-relay && sed -n '40,60p' src/main.rs

Repository: moq-dev/moq

Length of output: 703


🏁 Script executed:

# Search for sd_notify usage patterns in the codebase
rg 'sd_notify' --type rs -B 2 -A 2

Repository: moq-dev/moq

Length of output: 81


🏁 Script executed:

# Check the Cargo.toml to understand sd_notify version and return type
rg 'sd_notify' rs/moq-relay/Cargo.toml

Repository: moq-dev/moq

Length of output: 37


🏁 Script executed:

# Search without the --type flag (which failed)
rg 'sd_notify' -B 2 -A 2

Repository: moq-dev/moq

Length of output: 871


🏁 Script executed:

# Find and check Cargo.toml files
find . -name "Cargo.toml" | head -5 | xargs grep -l 'sd_notify'

Repository: moq-dev/moq

Length of output: 39


🏁 Script executed:

# Look at the Cargo.toml to see sd_notify version
cat rs/moq-relay/Cargo.toml | grep -A 5 -B 5 'sd_notify'

Repository: moq-dev/moq

Length of output: 37


🏁 Script executed:

# Check if there are any other error handling patterns for similar operations
rg 'sd_notify|tracing::warn' rs/moq-relay/src/main.rs -B 2 -A 2

Repository: moq-dev/moq

Length of output: 351


🏁 Script executed:

# Look for sd_notify in Cargo.lock or check dependencies
rg 'sd_notify' Cargo.lock --max-count=5

Repository: moq-dev/moq

Length of output: 37


🏁 Script executed:

# Search for any error handling or documentation about sd_notify
rg 'sd_notify' --max-count=10 -A 5 -B 5

Repository: moq-dev/moq

Length of output: 1997


🏁 Script executed:

# Check if there's any configuration or setup guide that mentions sd_notify
find . -name "*.md" -o -name "*.txt" | xargs grep -l "sd_notify" 2>/dev/null | head -5

Repository: moq-dev/moq

Length of output: 37


🏁 Script executed:

# Look for the sd_notify crate documentation in comments or code
rg 'sd_notify::' -A 3 -B 3 | head -50

Repository: moq-dev/moq

Length of output: 1161


🌐 Web query:

sd_notify rust crate return type Result error handling

💡 Result:

The sd-notify Rust crate (latest version 0.5.0 as of 2026-03-09) provides functions like sd_notify::notify for sending systemd notifications. The main notify function returns Result<, E> where E is typically std::io::Error from Unix socket operations. Examples in official docs show let _ = sd_notify::notify(&[NotifyState::Ready]); intentionally ignoring the Result, but proper error handling uses match or ? operator. For error handling: - Use match to handle Ok/Err: match sd_notify::notify(&[NotifyState::Ready]) { Ok() => println!("Notified"), Err(e) => eprintln!("Notification failed: {}", e), } - Or propagate with ?: fn notify_ready -> Result<, std::io::Error> { sd_notify::notify(&[NotifyState::Ready])? ; Ok() } Note: There is a different crate sdnotify with explicit Error enum, but sd-notify (most popular, 9M+ downloads) uses Result. Some functions like NotifyState::monotonic_usec_now explicitly return Result. Always check return value as socket send can fail (e.g., no NOTIFY_SOCKET env, connection issues).

Citations:


Handle notify errors instead of swallowing them.

The sd_notify::notify() function returns Result<(), std::io::Error> and can fail due to socket issues (e.g., missing NOTIFY_SOCKET environment variable, connection problems). Ignoring these errors makes operational debugging harder. Log the failure to provide visibility without crashing the application.

Suggested patch
-	let _ = sd_notify::notify(&[sd_notify::NotifyState::Ready]);
+	if let Err(err) = sd_notify::notify(&[sd_notify::NotifyState::Ready]) {
+		tracing::warn!(%err, "failed to notify systemd readiness");
+	}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
let _ = sd_notify::notify(&[sd_notify::NotifyState::Ready]);
if let Err(err) = sd_notify::notify(&[sd_notify::NotifyState::Ready]) {
tracing::warn!(%err, "failed to notify systemd readiness");
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@rs/moq-relay/src/main.rs` at line 49, Replace the ignored call to
sd_notify::notify(&[sd_notify::NotifyState::Ready]) with error-aware handling:
capture the Result from sd_notify::notify, and on Err log the error and
contextual message (e.g., via log::error! or eprintln!) including the returned
std::io::Error and that NotifyState::Ready failed, but do not panic—allow the
process to continue; ensure you still call sd_notify::notify with
sd_notify::NotifyState::Ready on success.

@kixelated kixelated enabled auto-merge (squash) March 31, 2026 23:33
@kixelated kixelated merged commit 6e76f23 into main Mar 31, 2026
2 checks passed
@kixelated kixelated deleted the update-deps branch March 31, 2026 23:53
This was referenced Mar 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant