Skip to content

pmd-pytcp 0.1.0

Choose a tag to compare

@doronz88 doronz88 released this 13 Jul 07:50
· 40 commits to main since this release
607a376

pmd-pytcp 0.1.0 — pure-asyncio runtime (breaking)

The stack now runs entirely on one asyncio event loop; all threads and threading primitives are gone.

Breaking: blocking socket calls (connect/accept/recv*/send*/sendmsg/probe_pmtu) are now coroutines — await them. bind/listen/close/shutdown/setsockopt stay sync. stack.start()/stack.stop() are coroutines. The eventfd-backed fileno()/select interop is removed (asyncio replaces it). Consumers must migrate to await; there is no compatibility shim.

Highlights

  • Task-based Subsystem; Timer over loop.call_at; RxRing via loop.add_reader + deliver callback; TxRing drains with add_writer backpressure (no worker/eventfd/marshaling).
  • Async socket API, TCP session+FSM, DHCP4/6, link-local, ACD, ARP/ND, IPC (asyncio.start_unix_server), and run_daemon.
  • Preserves the 0.0.5/0.0.6 robustness fixes (writev OSError fallthrough, abort-open-TCP-on-stop, ring fd-teardown survival).
  • Python 3.9–3.14, Linux/macOS/Windows — CI green across all 18 combinations.