chore(deps): update rust crate loole to 0.6.0 #2373

Open
renovate wants to merge 1 commit from renovate/loole-0.x into main
Collaborator

This PR contains the following updates:

Package Type Update Change
loole workspace.dependencies minor 0.4.0 → 0.6.0

Release Notes

mahdi-shojaee/loole (loole)

v0.6.0

Compare Source

  • Added sender_count/receiver_count/is_disconnected to Sender and Receiver (flume parity via relaxed counters + shared disconnect latch; hot send/recv paths untouched)
  • Added SendFuture::is_disconnected and RecvStream::is_disconnected
  • Added FusedFuture for SendFuture (terminated when disconnected) and RecvFuture (terminated when disconnected and empty), and FusedStream for RecvStream
  • Added Debug for Iter, TryIter, and IntoIter

v0.5.1

Compare Source

  • Fixed SendSink soundness under concurrent forward(): poll_ready now flushes the buffered send instead of reporting always-ready (fixes forward() delivering only the last item)
  • Fixed SendSink::poll_close to release only its own sender handle instead of closing the shared channel (fixes spurious SendError under concurrent sinks)

v0.5.0

  • Performance: send_async/recv_async (and sink/stream) now return futures that borrow the sender/receiver instead of cloning it, removing four atomic reference-count operations per message (SPSC async-async bounded(100): up to +39% at 32 B, +7% at 16384 B on P-cores)
  • Added Sender::into_send_async and Receiver::into_recv_async: owned 'static futures that keep the channel open until dropped, for tokio::spawn and stored futures (the previous send_async/recv_async behavior)
  • Behavior change: a borrowed SendFuture/RecvFuture no longer keeps the channel open — dropping all senders/receivers while one is pending closes the channel and the future resolves with an error
  • SendSink/RecvStream and Sender::sink/Receiver::stream are now lifetime-parameterized (SendSink<'a, T>, RecvStream<'a, T>); into_sink/into_stream are unchanged in behavior
  • Performance: lock-free consumed-park confirmation — a receiver that consumes a parked send publishes the entry's id on a per-channel watermark, so the woken SendFuture confirms with one atomic load instead of re-acquiring the channel mutex (which contended with the receiver's pop loop and could futex-stall the runtime worker, de-phasing the SPSC async-async pipeline on large buffered channels and halving b(100) 16KB throughput)
  • Performance: single-waiter inline fast path in the pending queues — with exactly one parked waiter (the SPSC steady state) the entry lives in an inline slot with no hashing or table probe (previously 3+ HashMap ops per park/wake)
  • Performance: a parked SendFuture now stores a single waker clone (in its queue entry, the future keeps just the id) with in-place refresh on re-poll, and bounded channels preallocate the message ring
  • Tests: added async_park_confirm — watermark confirmation paths (consumed fast path, close fallback, FIFO monotonicity across multiple parked senders, cancellation, drain, sink supersede, stream receiver on a full channel, b100 SPSC async-async stress)
  • Behavior change: sync send/recv on bounded channels with capacity 2-16 no longer spin before parking — the spin-then-park handoff now applies only to rendezvous-like channels (capacity 0/1) with a single peer. Interleaved A/B on the merged stack (i7-13700K, pinned CPUs 0-7, criterion 256B/alloc n=100000, 5 repeats): the wider cap<=16 spin gate regressed b10 SPSC sync-sync throughput -23.1% (4.05M vs 3.11M msg/s median, 0/5 repeats) and b10 sync-mixed rows -8.0%/-15.4%, outweighing its ~2.8x b10 ping-pong latency gain, so the rendezvous-only gate stands
  • Performance: rewrote channel internals — wake one parked receiver per send instead of all, plain VecDeque message buffer, rendezvous hand-off for parked sync receivers, lazy pending-queue ids, taken-flag send confirmation, spin-then-park sync ops, identity-hashed pending queues, and close detection via Arc drop instead of counters
  • Behavior change: dropping a pending SendFuture now cancels the send (the queued message is removed and destroyed) instead of delivering it anyway
  • Fixed: polling a SendFuture after completion no longer panics
  • Fixed: past deadlines given to send_deadline/recv_deadline behave like a zero timeout instead of panicking
  • Fixed send/recv edge-case semantics (A1-A5) and added coverage-gap tests (cancellation, close, deadline, drain, errors, handles, select-send, sink)
  • Fixed: a RecvFuture dropped after a sender claimed its registration but before being re-polled (e.g. a losing select! branch) now wakes the next parked receiver, so the delivered message is not stranded while receivers sleep
  • Fixed: send_timeout with extreme durations (e.g. Duration::MAX) no longer panics on Instant overflow
  • Fixed: recv_timeout no longer misses a message delivered exactly at the deadline in rendezvous-with-hook configurations
  • Overhauled benchmarks: criterion-driven suite with auto-updated charts
  • Restored Apache-2.0 licensing alongside MIT (project is dual-licensed MIT OR Apache-2.0 again, matching the declaration that Cargo.toml/crates.io kept all along)

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [loole](https://github.com/mahdi-shojaee/loole) | workspace.dependencies | minor | `0.4.0` → `0.6.0` | --- ### Release Notes <details> <summary>mahdi-shojaee/loole (loole)</summary> ### [`v0.6.0`](https://github.com/mahdi-shojaee/loole/blob/HEAD/CHANGELOG.md#Version-060) [Compare Source](https://github.com/mahdi-shojaee/loole/compare/v0.5.1...v0.6.0) - Added `sender_count`/`receiver_count`/`is_disconnected` to `Sender` and `Receiver` (flume parity via relaxed counters + shared disconnect latch; hot send/recv paths untouched) - Added `SendFuture::is_disconnected` and `RecvStream::is_disconnected` - Added `FusedFuture` for `SendFuture` (terminated when disconnected) and `RecvFuture` (terminated when disconnected and empty), and `FusedStream` for `RecvStream` - Added `Debug` for `Iter`, `TryIter`, and `IntoIter` ### [`v0.5.1`](https://github.com/mahdi-shojaee/loole/blob/HEAD/CHANGELOG.md#Version-051) [Compare Source](https://github.com/mahdi-shojaee/loole/compare/v0.5.0...v0.5.1) - Fixed `SendSink` soundness under concurrent `forward()`: `poll_ready` now flushes the buffered send instead of reporting always-ready (fixes `forward()` delivering only the last item) - Fixed `SendSink::poll_close` to release only its own sender handle instead of closing the shared channel (fixes spurious `SendError` under concurrent sinks) ### [`v0.5.0`](https://github.com/mahdi-shojaee/loole/blob/HEAD/CHANGELOG.md#Version-050) - Performance: `send_async`/`recv_async` (and `sink`/`stream`) now return futures that borrow the sender/receiver instead of cloning it, removing four atomic reference-count operations per message (SPSC async-async bounded(100): up to +39% at 32 B, +7% at 16384 B on P-cores) - Added `Sender::into_send_async` and `Receiver::into_recv_async`: owned `'static` futures that keep the channel open until dropped, for `tokio::spawn` and stored futures (the previous `send_async`/`recv_async` behavior) - Behavior change: a borrowed `SendFuture`/`RecvFuture` no longer keeps the channel open — dropping all senders/receivers while one is pending closes the channel and the future resolves with an error - `SendSink`/`RecvStream` and `Sender::sink`/`Receiver::stream` are now lifetime-parameterized (`SendSink<'a, T>`, `RecvStream<'a, T>`); `into_sink`/`into_stream` are unchanged in behavior - Performance: lock-free consumed-park confirmation — a receiver that consumes a parked send publishes the entry's id on a per-channel watermark, so the woken `SendFuture` confirms with one atomic load instead of re-acquiring the channel mutex (which contended with the receiver's pop loop and could futex-stall the runtime worker, de-phasing the SPSC async-async pipeline on large buffered channels and halving b(100) 16KB throughput) - Performance: single-waiter inline fast path in the pending queues — with exactly one parked waiter (the SPSC steady state) the entry lives in an inline slot with no hashing or table probe (previously 3+ `HashMap` ops per park/wake) - Performance: a parked `SendFuture` now stores a single waker clone (in its queue entry, the future keeps just the id) with in-place refresh on re-poll, and bounded channels preallocate the message ring - Tests: added `async_park_confirm` — watermark confirmation paths (consumed fast path, close fallback, FIFO monotonicity across multiple parked senders, cancellation, drain, sink supersede, stream receiver on a full channel, b100 SPSC async-async stress) - Behavior change: sync `send`/`recv` on bounded channels with capacity 2-16 no longer spin before parking — the spin-then-park handoff now applies only to rendezvous-like channels (capacity 0/1) with a single peer. Interleaved A/B on the merged stack (i7-13700K, pinned CPUs 0-7, criterion 256B/alloc n=100000, 5 repeats): the wider cap<=16 spin gate regressed b10 SPSC sync-sync throughput -23.1% (4.05M vs 3.11M msg/s median, 0/5 repeats) and b10 sync-mixed rows -8.0%/-15.4%, outweighing its \~2.8x b10 ping-pong latency gain, so the rendezvous-only gate stands - Performance: rewrote channel internals — wake one parked receiver per send instead of all, plain VecDeque message buffer, rendezvous hand-off for parked sync receivers, lazy pending-queue ids, `taken`-flag send confirmation, spin-then-park sync ops, identity-hashed pending queues, and close detection via `Arc` drop instead of counters - Behavior change: dropping a pending `SendFuture` now cancels the send (the queued message is removed and destroyed) instead of delivering it anyway - Fixed: polling a `SendFuture` after completion no longer panics - Fixed: past deadlines given to `send_deadline`/`recv_deadline` behave like a zero timeout instead of panicking - Fixed send/recv edge-case semantics (A1-A5) and added coverage-gap tests (cancellation, close, deadline, drain, errors, handles, select-send, sink) - Fixed: a `RecvFuture` dropped after a sender claimed its registration but before being re-polled (e.g. a losing `select!` branch) now wakes the next parked receiver, so the delivered message is not stranded while receivers sleep - Fixed: `send_timeout` with extreme durations (e.g. `Duration::MAX`) no longer panics on `Instant` overflow - Fixed: `recv_timeout` no longer misses a message delivered exactly at the deadline in rendezvous-with-hook configurations - Overhauled benchmarks: criterion-driven suite with auto-updated charts - Restored Apache-2.0 licensing alongside MIT (project is dual-licensed MIT OR Apache-2.0 again, matching the declaration that Cargo.toml/crates.io kept all along) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNTEuMiIsInVwZGF0ZWRJblZlciI6IjQ0LjE1MS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJEZXBlbmRlbmNpZXMiLCJEZXBlbmRlbmNpZXMvUmVub3ZhdGUiXX0=-->
chore(deps): update rust crate loole to 0.6.0
All checks were successful
Auto Labeler / Apply labels based on changed files (pull_request_target) Successful in 3s
Documentation / Build and Deploy Documentation (pull_request) Successful in 1m12s
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m16s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m20s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 12m53s
90d77c4248
renovate force-pushed renovate/loole-0.x from 90d77c4248
All checks were successful
Auto Labeler / Apply labels based on changed files (pull_request_target) Successful in 3s
Documentation / Build and Deploy Documentation (pull_request) Successful in 1m12s
Checks / Prek / Check changed files (pull_request) Successful in 6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m16s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m20s
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 7s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 12m53s
to 8fe05c5721
All checks were successful
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 6s
Documentation / Build and Deploy Documentation (pull_request) Successful in 1m6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m20s
Checks / Prek / Check changed files (pull_request) Successful in 7s
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m29s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 12m3s
2026-10-19 05:41:24 +00:00
Compare
All checks were successful
Checks / Changelog / Check changelog is added (pull_request_target) Successful in 6s
Required
Details
Documentation / Build and Deploy Documentation (pull_request) Successful in 1m6s
Checks / Prek / Pre-commit & Formatting (pull_request) Successful in 1m20s
Required
Details
Checks / Prek / Check changed files (pull_request) Successful in 7s
Required
Details
Update flake hashes / update-flake-hashes (pull_request) Successful in 1m29s
Checks / Prek / Clippy and Cargo Tests (pull_request) Successful in 12m3s
Required
Details
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/loole-0.x:renovate/loole-0.x
git switch renovate/loole-0.x
Sign in to join this conversation.
No reviewers
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
continuwuation/continuwuity!2373
No description provided.