|
1 | 1 | # Changelog |
2 | 2 |
|
| 3 | +## Unreleased |
| 4 | + |
| 5 | +### Added |
| 6 | + |
| 7 | +- **Erlang-native asyncio event loop** - Custom asyncio event loop backed by Erlang's scheduler |
| 8 | + - `ErlangEventLoop` class in `priv/erlang_loop.py` |
| 9 | + - Sub-millisecond latency via Erlang's `enif_select` (vs 10ms polling) |
| 10 | + - Zero CPU usage when idle - no busy-waiting or polling overhead |
| 11 | + - Full GIL release during waits for better concurrency |
| 12 | + - Native Erlang scheduler integration for I/O events |
| 13 | + - Event loop policy via `get_event_loop_policy()` |
| 14 | + |
| 15 | +- **TCP support for asyncio event loop** |
| 16 | + - `create_connection()` - TCP client connections |
| 17 | + - `create_server()` - TCP server with accept loop |
| 18 | + - `_ErlangSocketTransport` - Non-blocking socket transport with write buffering |
| 19 | + - `_ErlangServer` - TCP server with `serve_forever()` support |
| 20 | + |
| 21 | +- **UDP/datagram support for asyncio event loop** |
| 22 | + - `create_datagram_endpoint()` - Create UDP endpoints with full parameter support |
| 23 | + - `_ErlangDatagramTransport` - Datagram transport implementation |
| 24 | + - Parameters: `local_addr`, `remote_addr`, `reuse_address`, `reuse_port`, `allow_broadcast` |
| 25 | + - `DatagramProtocol` callbacks: `datagram_received()`, `error_received()` |
| 26 | + - Support for both connected and unconnected UDP |
| 27 | + - New NIF helpers: `create_test_udp_socket`, `sendto_test_udp`, `recvfrom_test_udp`, `set_udp_broadcast` |
| 28 | + - New test suite: `test/py_udp_e2e_SUITE.erl` |
| 29 | + |
| 30 | +- **Asyncio event loop documentation** |
| 31 | + - New documentation: `docs/asyncio.md` |
| 32 | + - Updated `docs/getting-started.md` with link to asyncio documentation |
| 33 | + |
3 | 34 | ## 1.3.2 (2026-02-17) |
4 | 35 |
|
5 | 36 | ### Fixed |
|
0 commit comments