reactor.nim is an asynchronous networking engine for Nim. It's based on libuv and provides future-based API.

reactor.nim doesn't use asynchronous mechanisms from asyncdispatch stdlib module and instead provides its own. They are arguably richer and more performant. The API is inspired by Dart and Midori OS (in particular by this article).

reactor.nim currently works on Linux and macOS. Windows support is in works - see issue #3. Other platforms supported by libuv and Nim should be relatively easy to add.

As you are probably going to deal with untrusted data, you should enable range checks even if compiling in release mode - see example nim.cfg. reactor.nim treats security very seriously.

How to start


reactor.nim consists of several modules.

External libraries

There are libraries that are not part of reactor.nim, but are compatible with it: