| ⇢ | A | RateLimitTestController added | |
| ⇢ | A | IpAddress added | |
| ⇢ | A | MemoryCache added | |
| ⇢ | A | RateLimitExceededException added | |
| ⇢ | A | Limiter added | |
| C | ↘ | D | SecurityMiddleware got worse |
| ⇢ | A | Limiter::register() added | |
| ⇢ | A | Limiter::registerUserRequest() added | |
| ⇢ | A | IpAddress::getIPv4Subnet() added | |
| ⇢ | A | IpAddress::getIPv6Subnet() added | |
| ⇢ | A | IpAddress::getSubnet() added | |
| ⇢ | A | MemoryCache::__construct() added | |
| ⇢ | A | MemoryCache::getExistingAttempts() added | |
| ⇢ | A | MemoryCache::getAttempts() added | |
| ⇢ | A | MemoryCache::registerAttempt() added | |
| ⇢ | A | Limiter::__construct() added | |
| ⋮ | view more | ||
| C | ↘ | F | SecurityMiddleware::beforeController() got worse |
| B | ↘ | D | ControllerMethodReflector::reflect() got worse |
| A | ↛ | ControllerMethodReflector::__construct() removed | |
| A | ↛ | Throttler::getIPv4Subnet() removed | |
| A | ↛ | Throttler::getIPv6Subnet() removed | |
| A | ↛ | Throttler::getSubnet() removed | |