Skip to content

Releases: neelp03/ThrottleX

v1.0.0-rc2: Introduction of Leaky Bucket and Concurrency Limiters with Enhanced Test Coverage

23 Nov 22:04
0b84caa
Compare
Choose a tag to compare

Release Notes for v1.0.0-rc2

What's New

  • Leaky Bucket Rate Limiter Implemented

    • New Policy Added: Introduced the Leaky Bucket rate limiting policy (LeakyBucketLimiter), providing a smooth and controlled request flow.
    • Fully Functional Implementation: The leaky bucket algorithm is now fully integrated and functional within the library.
    • Concurrency Limit Integration: Added concurrency limit capabilities to the leaky bucket limiter, allowing control over simultaneous requests.
  • Concurrency Rate Limiter Introduced

    • New Policy Added: Implemented the Concurrency rate limiting policy (ConcurrencyLimiter), enabling limitation on the number of concurrent requests.
    • Integration with Existing Limiters: Works seamlessly with other rate limiting policies for comprehensive control.
  • Enhanced Test Coverage and Stability

    • Extensive Test Cases Added:
      • Memory Store (memory.go): Added additional test cases to improve coverage and ensure reliability.
      • Redis Store (redis.go): Improved test coverage with new test cases and fixed previous test errors.
      • Rate Limiter Core (ratelimiter.go): Included tests covering various policies and their integrations.
      • Sliding Window Limiter: Added more test cases to achieve better coverage and identify edge cases.
    • Fixed Test Errors:
      • Memory Goroutine Issues: Resolved test errors related to goroutines in the memory store.
    • Integration Tests Updated:
      • Ensured all limiters work together smoothly through updated integration tests.
  • Documentation and Changelog Updates

    • Changelog Added:
      • Created a CHANGELOG.md file to document all changes, features, and fixes in this release and previous ones.
    • README Updated:
      • Revised README.md to reflect new features, including usage instructions for the Leaky Bucket and Concurrency limiters.
      • Improved documentation for better clarity and ease of understanding.

Bug Fixes

  • Test Fixes and Stability Improvements

    • Addressed and fixed various test errors to ensure all tests pass reliably.
    • Improved the stability of tests across different environments.
  • Integration Fixes

    • Fixed issues in integration tests to ensure seamless operation of all rate limiting policies when used together.

Notes

  • Backward Compatibility

    • Maintained compatibility with existing implementations; no breaking changes introduced.
    • Existing users can upgrade without modifying their current integrations.
  • Testing and Validation

    • Comprehensive tests included for all new features and changes.
    • Users are encouraged to run tests in their environments to validate functionality.

Next Steps:

  • Feedback Requested

    • Please test this release candidate thoroughly.
    • Report any issues or provide feedback on GitHub to help us prepare for the final v1.0.0 release.
  • Future Plans

    • Focus on performance optimizations and additional features in upcoming releases.
    • Continued improvement of test coverage and documentation.

Summary:

This release candidate marks a significant milestone with the introduction of the Leaky Bucket and Concurrency rate limiters, offering more flexibility and control over request management. Enhanced test coverage and documentation ensure that the library is reliable, and user-friendly.

ThrottleX v1.0.0-rc1 - Pre-Release: Rate Limiting for Your APIs 🚀

16 Oct 22:29
cf95d33
Compare
Choose a tag to compare

Release Notes for v1.0.0-rc1

We are thrilled to announce the pre-release of ThrottleX: an open-source, distributed rate-limiting library for Go! This release marks an important milestone as we roll out ThrottleX for developers looking to manage API traffic, prevent abuse, and ensure fair usage.

This is a pre-release version, meaning it is still under active development, and we're actively looking for feedback from the community to polish it for a full production release.

Highlights:

1. Core Rate Limiting Strategies Implemented

  • Fixed Window Rate Limiting: Control the maximum number of requests in a fixed time frame.
  • Sliding Window Rate Limiting: A more dynamic approach to manage bursts and even out API usage.
  • Token Bucket Rate Limiting: Accumulate tokens over time to allow bursts, providing flexibility for peak loads.

2. Flexible Storage Backends

  • Support for both in-memory and Redis backends, allowing ThrottleX to be used in both local and distributed environments.

3. Ready-to-Use Examples

  • Included examples show how to apply rate limiting with Go, using memory-backed or Redis-backed stores, with simulated single-user and multi-user scenarios.

4. Concurrency Support

  • Basic concurrency handling ensures rate limits are enforced across simultaneous requests, making it suitable for a variety of use cases.

Future Improvements (Coming in v1.0.0 Stable Release):

  • New Rate Limiting Policies including Prioritized Rate Limiting, Geographic Rate Limiting, Dynamic Rate Limiting, Leaky Bucket Algorithm, and more.
  • Improved Project Structure: A new architecture to make rate limiting policies easy to configure via the new PolicyType enum.
  • Enhanced Error Handling and Resilience to handle distributed production environments more effectively.

How You Can Help

As this is an early pre-release version, we need your feedback to improve and get it ready for full production use. Please try out ThrottleX, open issues, suggest improvements, and share your thoughts on what features or changes would help make this the go-to rate limiter for Go developers.

Notes:

  • This release is not yet intended for production use. Testing and feedback are highly appreciated.
  • Visit our GitHub Repo for source code, examples, and documentation.

Thank you for being part of the journey! Let's make ThrottleX the ultimate rate-limiting solution for Go APIs!