pond
Version, currently 2.0.213 versions
- 2.0.2latestMay 16, 2026
- 2.0.1not indexedAug 10, 2026
- 2.0.0not indexedAug 10, 2026
- 1.0.1not indexedAug 10, 2026
- 1.0.0not indexedAug 10, 2026
- 0.3.5not indexedAug 10, 2026
- 0.3.4not indexedAug 10, 2026
- 0.3.3not indexedAug 10, 2026
- 0.3.2not indexedAug 10, 2026
- 0.3.1not indexedAug 10, 2026
- 0.3.0not indexedAug 10, 2026
- 0.2.0not indexedAug 10, 2026
- 0.1.0not indexedAug 10, 2026
github.com/GrottoPress/pond
Crystal WaitGroups without channels or counters
Installation
# Add this to your shard.yml
dependencies:
pond:
github: GrottoPress/pond
version: ~> 2.0.2Then run:
shards installshard.yml
- Crystal
~> 1.0- License
- MIT
- Authors
- GrottoPress, N Atta Kusi Adusei
Dependencies
Development Dependencies
- ameba~> 0.14.3github: crystal-ameba/amebadev
README
Pond
Pond is a Crystal implementation of a WaitGroup, without channels or explicit counters. Pond automatically keeps track of all its fibers, and waits until all of them complete execution.
Installation
-
Add the dependency to your
shard.yml:dependencies: pond: github: GrottoPress/pond -
Run
shards install
Usage
-
Spawn fibers and wait on them:
require "pond" pond = Pond.new 1000.times do |_| pond.fill { do_work } # <= Spawns fiber and passes block to it end pond.drain # <= Waits for fibers to completeThe code above is the same as:
require "pond" Pond.drain do |pond| 1000.times do |_| pond.fill { do_work } end end # <= Drains pond automatically at the end of the block -
You may spawn nested fibers:
In this case, all ancestor fibers have to be added to the pond, otherwise Pond can't guarantee any of them would complete.
require "pond" pond = Pond.new pond.fill do pond.fill do pond.fill { do_work } end end pond.drainNote that, while you can fill a pond that was created in a another fiber, draining has to be done in the same fiber the pond was created in. This is to prevent potential deadlocks.
require "pond" pond = Pond.new pond.fill { do_work } spawn { pond.drain } # <= Error!
Development
Run tests with crystal spec -Dpreview_mt. You may set CRYSTAL_WORKERS environment variable with export CRYSTAL_WORKERS=<number>, before running tests.
Contributing
- Fork it
- Switch to the
masterbranch:git checkout master - Create your feature branch:
git checkout -b my-new-feature - Make your changes, updating changelog and documentation as appropriate.
- Commit your changes:
git commit - Push to the branch:
git push origin my-new-feature - Submit a new Pull Request against the
GrottoPress:masterbranch.
Documentation
Built from the current release. The first visit to a release nobody has asked for starts its build.
Links
This release
- Version
2.0.2- Tagged
- May 16, 2026
- Commit
4d86e3b4a739- Crystal
~> 1.0- Indexed
- yes
Dependents
Repository
github.com/GrottoPress/pond
Metadata
- Created
- Aug 12, 2026
- Updated
- Sep 24, 2026
- Synced
- Sep 24, 2026
- Versions
- 13