🔗💥 powpow
A high-performance event notification library for Nim. powpow provides a low-level event loop and timer wheel, plus higher-level abstractions for building TCP, UDP, HTTP/1.1, WebSocket and multi-threaded servers — built on top of epoll (Linux), kqueue (BSD, macOS) and IOCP (Windows), with an opt-in Linux io_uring backend.
nimble install powpowThe library is not production-ready yet and may contain bugs and securityvulnerabilities. It has been tested on Linux and macOS. **Use it, test it, anddo not hesitate to report any issues you find!**
🔗Key features
- Event loop — single-threaded reactor, 4-level timer wheel, deferred/idle hooks, thread-safe
postToLoop - TCP & UDP — non-blocking servers and clients, connection pooling, zero-copy
sendfile, Unix domain sockets - HTTP/1.1 — incremental zero-copy parser, chunked and streaming bodies, multipart uploads, static file serving with Range support
- WebSocket — RFC 6455, standalone and HTTP-upgrade modes
- TLS — OpenSSL, implicit and STARTTLS-style upgrades
- Async DNS — in-loop resolver, no blocking
getaddrinfo - Streams — raw-fd I/O (
IoStream): pipes, subprocess stdout, socketpair IPC, with read backpressure - Multi-threaded —
SO_REUSEPORTworkers, one event loop per core - SIMD — SSE2-accelerated HTTP message scanning
- io_uring — opt-in Linux submission-based backend with zero-copy
send_zc,SPLICEfile sends and registered buffers (guide)
🔗Getting started
🔗Guides
🔗Reference
@api/README.md