Releases: AmrSaber/go-blocking-dequeue
Releases · AmrSaber/go-blocking-dequeue
v1.0.1
v1.0.0
Release Notes
Now that I got some feedback about the package, it's in a stable state, and I will be using semantic versioning from now on, trying to keep the current interface as much as possible.
Breaking Changes
Capacity
andSetCapacity
are removed.NewBlockingDequeue
is updated to receive the used buffer slice. This is to delegate resource allocation to the user.- Listeners
onEmpty
andonFull
are removed. They were not following the general conventions of Go and were not of significant importance.
Other Updates
- Dequeue locking is updated to use a single lock for the whole data structure. This simplifies things and prevents potential dead locks.
- No longer using built-in
container/list
. Instead, accept slice buffer from the user and use it as ring buffer. - Consequently to the previous point, the package no longer offers infinite dequeue. It's always limited.
- Updated tests and removed tests related to capacity.
v0.2.0
Fixes
- Fix potential data race related to setting and reading dequeue capacity.
- Fix potential data race related to setting and reading dequeue listeners.
Breaking Changes
- Listeners (
OnEmpty
andOnFull
) are no longer exposed. They can be set using their setters (SetOnEmpty
andSetOnFull
).
V0.1.0
First release
Features
- The basic functionality of the blocking dequeue.
- The following methods:
PushFront
,PushBack
PopFront
,PopBack
PeekFront
,PeekBack
Capacity
,SetCapacity
,IsFull
Size
,IsEmpty
- The following listeners:
OnEmpty
OnFull
- Unit and integration tests to cover all the implemented functionality.
Notes
This release is not a major release yet, as the package may evolve and change as I get more feedback about it. Once everything is settled I will create a major release (even if there are no major updates).