Skip to content

Releases: AlexsanderHamir/GenPool

Release v1.6.6

25 Aug 18:54

Choose a tag to compare

What'a New ?

On the put method procPin is not longer called, the processor index is cached on get and reused on put.

What's Changed

Full Changelog: v1.6.5...v1.6.6

Release v1.6.5

13 Aug 20:52

Choose a tag to compare

What's New

More micro-optimizations were performed, pool improved by another 5%.

What's Changed

Full Changelog: v1.6.4...v1.6.5

v1.6.4

12 Aug 23:42

Choose a tag to compare

What's New ?

Performed some micro-optimizations which improve individual function performance in 6%.

What's Changed

Full Changelog: v1.6.3...v1.6.4

Release v1.6.3

30 Jul 19:04

Choose a tag to compare

What's New?

When the pool reaches its maximum size, users now have two new blocking options instead of receiving nil:

  • GetBlock: Waits until an object becomes available in the pool.
  • PutBlock: Returns the object to the shard with the highest number of waiting consumers.

These methods provide more predictable and coordinated pool behavior under contention.

Each shard uses a condition variable internally to coordinate blocking calls.

Release v1.6.2

16 Jul 20:17

Choose a tag to compare

Updates

Fixed Critical Growth Configuration Bug

In the previous release, growth configuration was implemented but contained a critical bug: the pool cleaner wasn't properly updating the pool's internal counters. This caused the following issues:

  • Once maxgrowth was reached, the pool would become permanently stuck at maximum size
  • Even after the cleaner evicted objects, the pool couldn't grow again because the internal length counter wasn't decremented
  • This effectively disabled the growth mechanism once it first hit its maximum.

Release v1.6.1

16 Jul 16:35

Choose a tag to compare

What's New?

  1. Configurable Maximum Pool Size
    You can now set an upper limit on how many objects the pool is allowed to grow to, giving you tighter control over memory usage.

  2. Real-Time Pool Size Tracking
    The pool now keeps track of its current size. While primarily used internally by growth policies, this metric is also exposed for external monitoring or debugging.

Full Changelog: v1.6.0...v1.6.1

Release v1.6.0

15 Jul 19:07

Choose a tag to compare

Removed Features

  • GetNCheap(): It was unnecessary and solved no problems, GetN should barely be used as it is.

Codebase Changes

  1. Extensive use of linters led to many code changes, enforcing best practices across the codebase.
  2. Prevent direct pushes to the main branch; require that pull requests pass GitHub Actions checks before merging.
  3. Achieve 99% test coverage through a combination of black-box and unit testing.
  4. numShards is now configurable, no longer fixed to just min (max(runtime.GOMAXPROCS(0), 8), 128).

What's Changed

Full Changelog: v1.5.5...v1.6.0

Release v1.5.5

13 Jul 04:13

Choose a tag to compare

What's New ?

  1. Simplified names of legacy methods.
  2. Added new methods for bulk operations.
  3. Added fast path for bulk operations to avoid creating memory.

Full Changelog: v1.5.0...v1.5.5

Release v1.5.0

10 Jul 19:51

Choose a tag to compare

What's Changed

  • Drop "reflect" package using proper type constraints by @DmitriyMV in #1
  • Fix "index of bounds" panic if GOMAXPROCS changes by @DmitriyMV in #3
  • The API verbosity caused by the intrusive style was removed.
  • Levels for the cleanup policy were implemented to provide pre-defined choices.
  • Internal fields were made public to allow for custom clean up functionality for power users.
  • Because of @DmitriyMV contributions, performance was greatly improved.

New Contributors

Full Changelog: v1.4.1...v1.5.0

v1.4.1

23 Jun 13:24

Choose a tag to compare

What's New ?

  1. Memory leak during clean up problem was solved.
  2. Better testing coverage.
  3. Dead code eliminated.
  4. Reduced binary size by only including the necessary.
  5. Fixed race conditions.

Full Changelog: v1.4.0...v1.4.1