Skip to content

Releases: AmrSaber/go-blocking-dequeue

v1.0.1

06 Jun 15:14
4a460e2
Compare
Choose a tag to compare

Release Notes

Fix methods comments/documentations.

v1.0.0

06 Jun 15:08
9a2f3a1
Compare
Choose a tag to compare

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 and SetCapacity are removed.
  • NewBlockingDequeue is updated to receive the used buffer slice. This is to delegate resource allocation to the user.
  • Listeners onEmpty and onFull 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

01 Jun 11:46
8798950
Compare
Choose a tag to compare

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 and OnFull) are no longer exposed. They can be set using their setters (SetOnEmpty and SetOnFull).

V0.1.0

31 May 15:38
e5f7150
Compare
Choose a tag to compare

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).