Changelog and Version History
Relevant source files
The following files were used as context for generating this wiki page:
Introduction
The Changelog and Version History of the FastLimit project serves as the definitive record of all notable changes, improvements, and bug fixes across the library's lifecycle. It follows the Keep a Changelog format and strictly adheres to Semantic Versioning (SemVer) to ensure predictable dependency management for developers.
This system is integrated into the development workflow through tools like commitizen, which automates version bumping and changelog generation based on conventional commits. This ensures that every release—whether it introduces new algorithms, performance optimizations, or critical security fixes—is documented with technical precision.
Sources: CHANGELOG.md:5-7, pyproject.toml:94-101, CONTRIBUTING.md:387-399
Versioning Policy
FastLimit uses the MAJOR.MINOR.PATCH format to communicate the nature of changes in each release.
| Level | Description |
|---|---|
| MAJOR | Breaking changes that require updates to existing integrations. |
| MINOR | New features added in a backward-compatible manner. |
| PATCH | Backward-compatible bug fixes and internal improvements. |
Sources: CONTRIBUTING.md:468-479
Automated Release Workflow
The project utilizes commitizen for managing versioning. This tool automates the following:
- Bumping versions in
fastlimit/__init__.pyandpyproject.toml. - Updating the
CHANGELOG.mdincrementally. - Creating Git tags using the
v$versionformat.
Sources: pyproject.toml:94-101
Significant Release History
v0.2.0 (2026-01-24)
This release focused on API robustness and performance optimizations.
- New Features: Integrated
commitizenfor semantic versioning automation. - API Improvements:
- Made
reset()andget_usage()algorithm-aware to handle different storage structures (e.g., Token Bucket vs. Sliding Window). - Introduced
CheckResultand thecheck_with_info()method to eliminate redundant Redis calls when retrieving usage data for headers.
- Made
- Bug Fixes:
- Sliding Window: Corrected inverted usage formulas and transitioned to integer-only arithmetic for higher precision.
- Token Bucket: Implemented millisecond precision for refills to prevent crashes at low rates (e.g., 1 request/hour).
- Fixed Window: Aligned boundaries to epochs and implemented
EXPIREATfor stricter window resets. - Distributed Systems: Added support for Redis
TIMEmethods to ensure consistent window boundaries across multiple application instances.
Sources: CHANGELOG.md:18-35, tests/test_edge_cases.py:176-218, fastlimit/limiter.py:165-171
v0.1.0 (2025-01-18)
The initial release established the core architecture and high-performance rate limiting capabilities.
- Core Algorithms: Implementation of Token Bucket and Sliding Window.
- Integration: FastAPI support via
@limiter.limit()andRateLimitHeadersMiddleware. - Reliability: Comprehensive exception handling (e.g.,
RateLimitExceeded,BackendError) and Prometheus metrics integration. - Infrastructure: Async-first design and Docker Compose for development environments.
Sources: CHANGELOG.md:9-16, fastlimit/init.py:1-25
Release and Contribution Lifecycle
The following diagram illustrates the workflow from making a change to it appearing in the version history.
The release process ensures that all changes are verified and documented before being published.
Sources: CONTRIBUTING.md:417-434, pyproject.toml:97-101
Changelog Format Standards
To maintain clarity for downstream developers, the CHANGELOG.md categorizes changes into specific headers.
| Header | Usage |
|---|---|
| Added | For new features and capabilities. |
| Changed | For changes in existing functionality. |
| Deprecated | For soon-to-be-removed features. |
| Removed | For features removed in the current release. |
| Fixed | For any bug fixes. |
| Security | In case of vulnerabilities or security-related improvements. |
Sources: CONTRIBUTING.md:481-502
Conclusion
The changelog and versioning system in FastLimit provide a transparent and technically rigorous history of the project's evolution. By combining Semantic Versioning with automated tooling and the "Keep a Changelog" standard, the project ensures that developers can safely update the library while staying informed about critical architectural shifts and bug fixes.
Sources: CHANGELOG.md:1-7, CONTRIBUTING.md:468-471