Releases: panjf2000/ants
Ants v2.12.0, The Garden of Words
Important
As of this release, the minimum required Go version to use ants is 1.19!
🚀 Features
- feat: implement ReleaseContext for all pool types (#387)
🛩 Enhancements
- perf: set nanoseconds instead of
time.Timefor pool-cachednow(#378) - perf: replace time.Time with nanoseconds in worker (#382)
- refactor: deduplicate ReleaseContext across multi-pool types 4ee6d73
🐛 Bugfixes
- bug: don't reset the worker queue when rebooting preallocated pool (#360)
- bug: hold the lock when spawning a new worker (#376)
- fix: drop Go 1.18, bump CI matrix to [1.19, 1.26] to resolve macOS ARM64 spinlock starvation (#386)
📚 Documentation
- fix: drop Go 1.18, bump CI matrix to [1.19, 1.26] to resolve macOS ARM64 spinlock starvation (#386)
- docs: update the comment on Options.PanicHandler to match its behavior (#365) (#366)
- docs: add more use cases
Full Changelog: v2.11.0...v2.12.0
Thanks to all these contributors: @Copilot, @POABOB, @fufuok, @huynhanx03, @panjf2000, @trace-andreason and copilot-swe-agent[bot] for making this release possible.
Ants v2.11.0, Grave of the Fireflies
Important
As of this release, the minimum required Go version to use ants is 1.18!
Furthermore, goroutine pool with Go generics is implemented!
🚀 Features
- test: add some basic testable examples (#353)
- feat: implement generic pool (#351)
- opt: streamline pool implementation to reduce duplicated code (#350)
- feat: export the internal package sync (#349)
🛩 Enhancements
- opt: streamline pool implementation to reduce duplicated code (#350)
- opt: bump up the minimum required Go version to 1.16 (#347)
📚 Documentation
- test: add some basic testable examples (#353)
- opt: streamline pool implementation to reduce duplicated code (#350)
- feat: export the internal package sync (#349)
Full Changelog: v2.10.0...v2.11.0
Thanks to all these contributors: @panjf2000 for making this release possible.
Ants v2.10.0, Cyberpunk: Edgerunners
🛩 Enhancements
- opt: speed up ReleaseTimeout() for multi-pool (#332)
- opt: make ReleaseTimeout() more efficient in waiting workers to exit (#329)
- opt: calculate the interval for ReleaseTimeout() based on a default count (#327)
- opt: increase the interval of waiting in ReleaseTimeout() (#325)
- bug: return error before creating multi pools if lbs is invalid to avoid leaks (#317)
🐛 Bugfixes
- bug: fix the last error being missed in ReleaseTimeout() for multi-pool (#334)
- bug: alleviate the data race between Release() and Reboot() (#333)
- bug: alleviate the data race between Release() and Reboot() (#330)
- bug: return error before creating multi pools if lbs is invalid to avoid leaks (#317)
📚 Documentation
- doc: add MultiPool & MultiPoolFunc example code and update READMEs. (#311)
🗃 Misc
- chore: add new benchmark tests (#309)
Full Changelog: v2.9.1...v2.10.0
Thanks to all these contributors: @POABOB, @akshaynanavare and @panjf2000 for making this release possible.
Ants v2.9.0, Puella Magi Madoka Magica
🚀 Features
- feat: add MultiPool and MultiPoolWithFunc (#305)
🛩 Enhancements
- opt: fall back to LeastTasks when RoundRobin can't find a worker (#306)
- feat: add MultiPool and MultiPoolWithFunc (#305)
- refactor: enforce a few minor optimizations in code (#302)
- refactor: refine the code in
retrieveWorkerto make it more readable (#295)
🐛 Bugfixes
- bug: return the error from Pool.Submit/PoolWithFunc.Invoke accordingly (#297)
- bug: fix the potential goroutine leak after calling
Release()(#287)
📚 Documentation
- chore: eliminate some useless content (#303)
- chore: update READMEs 16771ce
- chore: add a new use case (#290)
🗃 Misc
- chore: eliminate some useless content (#303)
- chore: enable more title matchers for auto-labelers of bug and new feature (#300)
- chore: enable auto-labeler for PRs of updating semantic version (#298)
- chore: clean up some comments and CI yaml (#296)
- chore: bump up modules (#292)
Full Changelog: v2.8.0...v2.9.0
Performance improvement
In version v2.9.0, ants introduces two new pool types: MultiPool and MultiPoolWithFunc from which you will benefit the
performance improvement on the basis of the fine-grained locking that reduces the lock contention.
These two pools are a good fit for the scenario where you have a large number of tasks to submit, and you don't want the single pool to be the bottleneck.
Benchmark testing
goos: darwin
goarch: arm64
pkg: github.com/panjf2000/ants/v2
BenchmarkAntsPool-10 2 777222500 ns/op 25458216 B/op 1115895 allocs/op
BenchmarkAntsMultiPool-10 2 667141666 ns/op 23590496 B/op 1105121 allocs/op
BenchmarkAntsPoolThroughput-10 2 747288979 ns/op 9266236 B/op 117693 allocs/op
BenchmarkAntsMultiPoolThroughput-10 2 579771771 ns/op 4550356 B/op 66303 allocs/op
BenchmarkParallelAntsPoolThroughput-10 1405256 801.3 ns/op 9 B/op 0 allocs/op
BenchmarkParallelAntsMultiPoolThroughput-10 2264618 473.6 ns/op 9 B/op 0 allocs/op
Thanks to all these contributors: @ELchem, @POABOB and @panjf2000 for making this release possible.
Ants v2.8.0, Paprika
🚀 Features
- feat: add a new API
ReleaseTimeoutfor the default pool (#285)
🛩 Enhancements
- feat: add a new API
ReleaseTimeoutfor the default pool (#285) - bug: avoid overflow when computing mid in the binarySearch of the workerStack (#278)
- opt: refactor the worker queue for reusability and readability of code (#270)
- opt: awake blocking goroutines more precisely in purgeStaleWorkers b32591f
- opt: use runtime/debug.Stack() to print stack trace of panic 7a56a5c
- opt: refactor the worker queue for reusability and readability of code 0313eff
- opt: refine some code b6eaea1
🐛 Bugfixes
- bug: avoid overflow when computing mid in the binarySearch of the workerStack (#278)
- bug: fix the missing log.Lmsgprefix in go1.13 (#275)
- fix: exit ticktock goroutine when pool is closed (#264)
📚 Documentation
🧳 Misc
- chore: reorganize the structure of internal packages 711cad9
- chore: reformat the default log string 3110e41
Full Changelog: v2.7.0...v2.8.0
Thanks to all these contributors: @ELchem, @GlebRadchenko, @gocurr, @panjf2000 and @piaodazhu for making this release possible.
Ants v2.7.0, Future GPX Cyber Formula
Changelogs
🛩 Enhancements
- opt: cache current time for workders and update it periodically (#261)
Performance improvement:
goos: darwin
goarch: arm64
pkg: github.com/panjf2000/ants/v2
name old time/op new time/op delta
AntsPool-10 771ms ± 9% 669ms ± 6% -13.29% (p=0.000 n=10+10)
name old alloc/op new alloc/op delta
AntsPool-10 23.0MB ± 5% 23.0MB ± 4% ~ (p=0.968 n=10+9)
name old allocs/op new allocs/op delta
AntsPool-10 1.10M ± 1% 1.10M ± 1% ~ (p=0.182 n=10+9)Full Changelog: v2.6.0...v2.7.0
Thanks to all these contributors: @panjf2000 for making this release possible.
Ants v2.6.0, Slam Dunk
Ants v2.5.0, Anohana: The Flower We Saw That Day
Ants v2.4.0, Digimon: Digital Monsters
Ants v2.3.0, Castle in the Sky
Features
- Add a feature of rebooting a released pool d32d668
- Testing ants on multiple operating systems 73c26bc
Enhancements
- Optimize the logic when putting worker back to sync.Pool 8cbfb5d
- Optimize loop queue of workers 7aaa434
- Leverage tool testify to refine unit-test code ea787e5
- sync.Pool opt 3bfc4f2









