Skip to content

Commit e7a9e58

Browse files
ioquatixsamuel-williams-shopify
authored andcommitted
Bump major version.
1 parent d0fc257 commit e7a9e58

File tree

2 files changed

+28
-28
lines changed

2 files changed

+28
-28
lines changed

lib/async/limiter/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77

88
module Async
99
module Limiter
10-
VERSION = "1.5.4"
10+
VERSION = "2.0.0"
1111
end
1212
end

releases.md

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,50 @@
11
# Releases
22

3-
## Unreleased
3+
## v2.0.0
44

55
The 2.0.x release should be considered somewhat unstable.
66

7-
- **Breaking**: Complete API redesign. The v1.x classes (`Async::Limiter::Concurrent`, `Async::Limiter::Unlimited`, etc.) have been replaced with a new inheritance-based architecture.
8-
- **Breaking**: Removed `blocking?` method due to inherent race conditions. Use `acquire(timeout: 0)` for non-blocking checks.
9-
- **Breaking**: Timing strategies now use consumption-only model (no explicit `release` methods).
10-
- **Breaking**: Window classes moved from `limiter/window/` to `limiter/timing/` with renamed classes.
7+
- **Breaking**: Complete API redesign. The v1.x classes (`Async::Limiter::Concurrent`, `Async::Limiter::Unlimited`, etc.) have been replaced with a new inheritance-based architecture.
8+
- **Breaking**: Removed `blocking?` method due to inherent race conditions. Use `acquire(timeout: 0)` for non-blocking checks.
9+
- **Breaking**: Timing strategies now use consumption-only model (no explicit `release` methods).
10+
- **Breaking**: Window classes moved from `limiter/window/` to `limiter/timing/` with renamed classes.
1111

1212
### New Architecture (replaces v1.x classes)
1313

14-
- **New**: `Async::Limiter::Generic` - Unlimited concurrency with timing coordination (replaces `Async::Limiter::Unlimited`).
15-
- **New**: `Async::Limiter::Limited` - Counting semaphore with configurable limits (replaces `Async::Limiter::Concurrent`).
16-
- **New**: `Async::Limiter::Queued` - Queue-based resource distribution with priority/timeout support (completely new functionality).
14+
- **New**: `Async::Limiter::Generic` - Unlimited concurrency with timing coordination (replaces `Async::Limiter::Unlimited`).
15+
- **New**: `Async::Limiter::Limited` - Counting semaphore with configurable limits (replaces `Async::Limiter::Concurrent`).
16+
- **New**: `Async::Limiter::Queued` - Queue-based resource distribution with priority/timeout support (completely new functionality).
1717

1818
### Advanced Timeout Features
1919

20-
- **New**: Unified timeout API - `acquire(timeout: 0/nil/seconds)` provides non-blocking and timed acquisition.
21-
- **New**: Precise deadline tracking using `Async::Deadline` (requires async v2.31.0+).
22-
- **New**: Convoy effect prevention - quick timeout operations not blocked by slow operations.
23-
- **New**: Accurate timeout propagation - remaining time correctly passed through timing and concurrency layers.
20+
- **New**: Unified timeout API - `acquire(timeout: 0/nil/seconds)` provides non-blocking and timed acquisition.
21+
- **New**: Precise deadline tracking using `Async::Deadline` (requires async v2.31.0+).
22+
- **New**: Convoy effect prevention - quick timeout operations not blocked by slow operations.
23+
- **New**: Accurate timeout propagation - remaining time correctly passed through timing and concurrency layers.
2424

2525
### Cost-Based Acquisition
2626

27-
- **New**: Cost-based acquisition - `acquire(cost: 1.5)` for proportional resource consumption.
28-
- **New**: Starvation prevention - validates cost against timing strategy `maximum_cost` capacity.
29-
- **New**: Flexible operation weighting - light operations consume fewer resources than heavy ones.
27+
- **New**: Cost-based acquisition - `acquire(cost: 1.5)` for proportional resource consumption.
28+
- **New**: Starvation prevention - validates cost against timing strategy `maximum_cost` capacity.
29+
- **New**: Flexible operation weighting - light operations consume fewer resources than heavy ones.
3030

3131
### Enhanced Timing Strategies
3232

33-
- Add `Async::Limiter::Timing::LeakyBucket` for token bucket rate limiting with automatic leaking.
34-
- Add `Async::Limiter::Timing::FixedWindow` for discrete time boundary enforcement.
35-
- Rename `Async::Limiter::Timing::Window` to `Async::Limiter::Timing::SlidingWindow` for clarity.
36-
- **Breaking**: Remove `release` methods from timing strategies (consumption-only model).
37-
- **Breaking**: Remove `try_acquire` methods from timing strategies (unified timeout API).
33+
- Add `Async::Limiter::Timing::LeakyBucket` for token bucket rate limiting with automatic leaking.
34+
- Add `Async::Limiter::Timing::FixedWindow` for discrete time boundary enforcement.
35+
- Rename `Async::Limiter::Timing::Window` to `Async::Limiter::Timing::SlidingWindow` for clarity.
36+
- **Breaking**: Remove `release` methods from timing strategies (consumption-only model).
37+
- **Breaking**: Remove `try_acquire` methods from timing strategies (unified timeout API).
3838

3939
### Token-Based Resource Management
4040

41-
- **New**: `acquire_token` method returns `Token` objects for advanced resource management.
42-
- **New**: Token re-acquisition with different options - `token.acquire(priority: 5)`.
43-
- **New**: Automatic token cleanup with block usage.
41+
- **New**: `acquire_token` method returns `Token` objects for advanced resource management.
42+
- **New**: Token re-acquisition with different options - `token.acquire(priority: 5)`.
43+
- **New**: Automatic token cleanup with block usage.
4444

4545
### Thread Safety and Performance
4646

47-
- **New**: Race condition elimination by moving timing coordination inside mutex.
48-
- **New**: Fast path optimizations using `deadline.expired?` checks.
49-
- **New**: Atomic timing coordination prevents race conditions in concurrent access.
50-
- **Improved**: Test performance using time simulation instead of actual sleep calls.
47+
- **New**: Race condition elimination by moving timing coordination inside mutex.
48+
- **New**: Fast path optimizations using `deadline.expired?` checks.
49+
- **New**: Atomic timing coordination prevents race conditions in concurrent access.
50+
- **Improved**: Test performance using time simulation instead of actual sleep calls.

0 commit comments

Comments
 (0)