QUIC for Nim
Go to file
Mark Spanbroek 84ab75184c Set individual bytes in a uint32 using MSB 0 indexing 2020-09-17 20:35:01 +02:00
.github/workflows Fix CI 2020-09-03 10:48:09 +02:00
quic Set individual bytes in a uint32 using MSB 0 indexing 2020-09-17 20:35:01 +02:00
tests Set individual bytes in a uint32 using MSB 0 indexing 2020-09-17 20:35:01 +02:00
.editorconfig Project setup 2020-09-03 10:05:46 +02:00
.gitignore Add .gitignore for Nim compiled files 2020-09-07 16:32:28 +02:00
.tool-versions Project setup 2020-09-03 10:05:46 +02:00
Readme.md Update readme: nim-ngtcp2 no longer requires CMake 2020-09-08 11:02:40 +02:00
quic.nim Add PacketHeader 2020-09-17 20:35:01 +02:00
quic.nimble Add dependency on ngtcp2 2020-09-07 16:32:28 +02:00

Readme.md

QUIC for Nim

We're working towards an implementation of the QUIC protocol for Nim. This is very much a work in progress, and not yet in a usable state.

Building and testing

Install dependencies:

nimble install -d

Run tests:

nimble test

Roadmap

This is a rough outline of the steps that we expect to take during implemenation. They are bound to change over time.

First, we're going to wrap an existing C library for QUIC, to test the future native Nim implementation against, and to explore what a Nim API should look like.

Wrap existing library:

  • Interface with TLS library
  • Open connection
  • Create stream
  • Send data
  • Close stream
  • Close connection
  • Stream multiplexing
  • Connection multiplexing

Then we'd like to implement QUIC in Nim itself:

  • Open connection
  • Create stream
  • Send data
  • Close stream
  • Close connection
  • Flow control
  • Stream multiplexing
  • Congestion control
  • Connection multiplexing