Chronos is an efficient async/await framework for Nim. Features include:
- Asynchronous socket and process I/O
 - HTTP server with SSL/TLS support out of the box (no OpenSSL needed)
 - Synchronization primitivies like queues, events and locks
 - Cancellation
 - Efficient dispatch pipeline with excellent multi-platform support
 - Exceptional error handling features, including 
raisestracking 
Install chronos using nimble:
nimble install chronos
or add a dependency to your .nimble file:
requires "chronos"
and start using it:
import chronos/apps/http/httpclient
proc retrievePage(uri: string): Future[string] {.async.} =
  # Create a new HTTP session
  let httpSession = HttpSessionRef.new()
  try:
    # Fetch page contents
    let resp = await httpSession.fetch(parseUri(uri))
    # Convert response to a string, assuming its encoding matches the terminal!
    bytesToString(resp.data)
  finally: # Close the session
    await noCancel(httpSession.closeWait())
echo waitFor retrievePage(
  "https://raw.githubusercontent.com/status-im/nim-chronos/master/README.md")See the user guide.
- libp2p - Peer-to-Peer networking stack implemented in many languages
 - presto - REST API framework
 - Scorper - Web framework
 - 2DeFi - Decentralised file system
 - websock - WebSocket library with lots of features
 
chronos is available in the Nim Playground
Submit a PR to add yours!
- Multithreading Stream/Datagram servers
 
When submitting pull requests, please add test cases for any new features or fixes and make sure nimble test is still able to execute the entire test suite successfully.
chronos follows the Status Nim Style Guide.
Licensed and distributed under either of
- MIT license: LICENSE-MIT or http://opensource.org/licenses/MIT
 
or
- Apache License, Version 2.0, (LICENSE-APACHEv2 or http://www.apache.org/licenses/LICENSE-2.0)
 
at your option. These files may not be copied, modified, or distributed except according to those terms.