Releases: panjf2000/ants
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)
What's Changed
- opt: increase the interval of waiting in ReleaseTimeout() by @panjf2000 in #325
- ci: replace macos-latest with macos-12 for go1.13 by @panjf2000 in #326
- opt: calculate the interval for ReleaseTimeout() based on a default count by @panjf2000 in #327
- opt: make ReleaseTimeout() more efficient in waiting workers to exit by @panjf2000 in #329
- bug: alleviate the data race between Release() and Reboot() by @panjf2000 in #330
- opt: speed up ReleaseTimeout() for multi-pool by @panjf2000 in #332
- bug: alleviate the data race between Release() and Reboot() by @panjf2000 in #333
- minor: v2.10.0 by @panjf2000 in #331
- bug: fix the last error being missed in ReleaseTimeout() for multi-pool by @panjf2000 in #334
- minor: v2.10.0 (update) by @panjf2000 in #335
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
retrieveWorker
to 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
ReleaseTimeout
for the default pool (#285)
🛩 Enhancements
- feat: add a new API
ReleaseTimeout
for 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