- Lazily evaluate current loop to allow instantiating lock outside of async functions.
- Support Python 3.11 and 3.12.
- Drop Python 3.7 support.
- Dropped Python 3.6 support
- Python 3.10 is officially supported
- Drop deprecated loop parameter from RWLock constructor
- Fix a bug that makes concurrent writes possible under some (rare) conjunctions (#235)
- Remove explicit loop usage in asyncio.sleep() call, make the library forward compatible with Python 3.10
- Fix a bug with cancelation during acquire #170 (thanks @romasku)
- Deprecate passing explicit loop argument to RWLock constructor
- Deprecate creation of RWLock instance outside of async function context
- Minimal supported version is Python 3.6
- The library works with Python 3.8 and Python 3.9 seamlessly
- Wake up all readers after writer releases lock #60 (thanks @ranyixu)
- Fixed Python 3.7 compatibility
- Removed old yield from syntax
- Minimal supported version is Python 3.5.3
- Removed support for none async context managers
- Fix corner cases and deadlock when we upgrade lock from write to read #39
- Use loop.create_future instead asyncio.Future if possible
- Support Python 3.5 and async with statement
- rename .reader_lock -> .reader, .writer_lock -> .writer. Backward compatibility is preserved.
- Add .locked property
- Make .release() non-coroutine
- Initial release