- Implement ``.shutdown(immediate=False)`` for both sync and async APIs 720
The change is not fully backward compatible:
1. If the queue is closed, ``janus.AsyncQueueShutDown`` and ``janus.SyncQueueShutDown`` exceptions are raised instead of ``RuntimeError``.
2. Both sync and async ``.task_done()`` and ``.join()`` don't raise any exception on queue shutdown/closing anymore; it is compatible with shutdown behavior of stdlib sync and async queues.
1.2.0
------------------
- Optimize internal implementation for a little speedup 699
- Make not-full and not-empty notifications faster 703
- Add ``.aclose()`` async method 709
- Reduce notifications for a minor speedup 704
- Allow ``janus.Queue()`` instantiation without running asyncio event loop 710
- Remove sync notifiers for a major speedup 714
- Fix hang in ``AsyncQueue.join()`` 716
1.1.0
------------------
- Drop Python 3.7 and 3.8 support
- janus now works on Python 3.9-3.13
- Reexport SyncQueueEmpty, SyncQueueFull, AsyncQueueEmpty, and AsyncQueueFull names 680
1.0.0
------------------
- Drop Python 3.6 support
0.7.0
------------------
- Add SyncQueue and AsyncQueue Protocols to provide type hints for sync and async queues 374