typelevel / typelevel/cats-effect
Optimized circular buffer async `Queue`
Nobody has claimed this yet.
- Dominant language
- Scala
- Stars
- 2.2k
- Forks
- 576
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 18
Description
Using the same primitives implemented in #2885, implement a higher performance circularBuffer for Async[F]. This will probably require some fiddling with UnsafeBounded to allow it to run in overwrite mode rather than simply failing whenever the cursors run over each other. It would be worth referring back to jctools to make sure that we don't violate any invariants on the array of sequence ids.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the primitives implemented in #2885 and the current UnsafeBounded behavior. Compare the cursor and sequence-id invariants with jctools, then determine what is needed for overwrite mode. Done means an optimized circularBuffer Queue for Async[F] that overwrites rather than failing when cursors meet without violating those invariants.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- scala
- Domain
- backend
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100