Conversation
added 8 commits
September 28, 2025 23:14
…th locking on Linux.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



📒 Description
With Vexil 3 we were relying on AsyncStream's unofficial handling of multiple subscribers/iterators. While it did work there were known bugs with cleanup of multi-iterators, and it was considered an accident that it supported before - it was not behaviour that was guaranteed.
Now that we've had more evidence of Vexil 3 used in production projects it is apparent that relying on
AsyncStream's behaviour here leads to unreliable outcomes, so we need a custom solution.This PR adds that, and modernises our locking infrastructure with a more modern backport.
🗳 Test Plan
Covered by unit tests.
🧯 Source Impact
Publicly this changes only one API — when subscribing to changes it now returns a custom
AsyncSequenceinstead of anAsyncStream.✅ Checklist