⚠️ **Deprecations & removals:**
* See changes to BSON and JSON serializers below:
💾 **Serialization:**
* ⚠️ Drop support for standalone `bson` codec; please install `pymongo` to use BSON serialization
* Remove `[bson]` package extra to prevent accidentally installing it in the same environment as `pymongo`
* When using BSON serialization with the filesystem backend, add a `.bson` file extension by default
* ⚠️ `serializer='json'` will no longer automatically use `ultrajson` if installed; it must be specified explicitly
* Add support for `orjson` as a JSON serializer
* However, see https://github.com/ijl/orjson/issues/483 for potential memory issues
* Add the following serializer objects to specify a JSON library: `json_serializer`, `ujson_serializer`, and `orjson_serializer`
* Remove `[json]` package extra due to multiple supported JSON libraries
* Allow `decode_content` to be set to different values across multiple sessions in use at the same time
💾 **Backends:**
* **SQLite:**
* Use exclusive transaction locks to prevent write contention; replaces retry behavior
* ***FileSystem:**
* Add {py:class}`requests_cache.backends.filesystem.LimitedFileDict` class to optionally limit the `filesystem` cache:
* Add `maximum_total_bytes` parameter to limit the total size of the cache
* Add `maximum_file_bytes` parameter to limit the size of each file
* Add `block_bytes` parameter to set the block size
* Add `lock` parameter to specify a custom lock object
* **Redis:**
* For maintenance/inspection methods that iterate over the cache, use `SCAN` and `HSCAN` instead of `KEYS`, `HKEYS`, and `HGETALL`
⚙️ **Session settings:**
* Add `autoclose` option to close backend connections when the session is closed
ℹ️ **Cache convenience methods:**
* Add `verify` parameter to `BaseCache.contains()` and `delete()` to handle requests made with SSL verification disabled
🧩 **Compatibility and packaging:**
* Add support for Python 3.13
* Packaging and project config are now managed by uv
* This has no impact for users; installation from PyPI still works the same
* For developers, see [Contributing Guide](https://requests-cache.readthedocs.io/en/stable/project_info/contributing.html) for details
🪲 **Bugfixes:**
* Ignore and log timezone errors when attempting to reuse responses cached in `requests-cache <= 1.1`
* Fix error handling with `stale_if_error` during revalidation requests
* By default, do not automatically close backend connections when using `install_cache()`
* Fix request headers sent when `expire_after` is set to `DO_NOT_CACHE`
* When updating response headers after revalidating a cached response, don't set both `Content-Length` and `Transfer-Encoding`