Skip to content

Releases: panjf2000/ants

Ants v2.10.0

18 Jun 09:36
1217e3e
Compare
Choose a tag to compare

🛩 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

21 Nov 06:09
5cecad0
Compare
Choose a tag to compare

🚀 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

01 Jul 13:44
1411ae8
Compare
Choose a tag to compare

🚀 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

11 Dec 11:56
Compare
Choose a tag to compare

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

02 Nov 13:59
Compare
Choose a tag to compare

Features

Add option to turn off automatically purge (#253) b604f7d

Ants v2.5.0

07 May 15:09
Compare
Choose a tag to compare

Features

Bugfixes

  • Fix some trivial bugs

Misc

  • Add one more use case (Baidu App) 9d85d57

Ants v2.4.0

11 May 10:53
Compare
Choose a tag to compare

Features

  • Support customized logger e507ae3
  • Support unlimited pool (#90)

Bugfixes

  • Fix a bug that doesn't release lock (#79)

Misc

  • Add go1.14 support on CI
  • Leverage reviewdog as automated code review tool 77a3da4
  • Fix code issues d55cc24
  • Fix indent on README (#89)

Ants v2.3.0

02 Feb 13:19
Compare
Choose a tag to compare

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

Docs

Misc

  • Add JetBrains logo for thanks of its support 88fe6df
  • Fix a failed test on Windows temporarily 1b1fee3

Ants v2.2.0

13 Oct 17:39
Compare
Choose a tag to compare

Features

  • Support loop queue as workers queue #53

Enhancements

  • Refine the logic of sync.Pool b1cf2ff
  • Refactoring to the interface and implementations of worker-array 566511e
  • Make optimization to Pool and PoolWithFunc struct 5ecbdf4

Docs

Misc

Ants v2.1.0

27 Sep 13:10
Compare
Choose a tag to compare

Enhancements

  • Replace mutex with spin-lock e73db1d