#quic #p2p #networking #low-level #node #customizable #quinn

quickie

A simple, low-level, and customizable implementation of a QUIC P2P node

7 releases (breaking)

0.7.0 May 24, 2024
0.6.0 Jun 27, 2023
0.5.0 May 11, 2023
0.4.0 Nov 9, 2022
0.1.0 Jul 19, 2022

#2055 in Network programming

Download history 35/week @ 2024-07-26 3/week @ 2024-08-02 20/week @ 2024-09-20 5/week @ 2024-09-27 1/week @ 2024-10-04

404 downloads per month

CC0 license

39KB
699 lines

quickie

crates.io docs.rs LOC dependencies actively developed issues

quickie is a simple, low-level, and customizable implementation of a QUIC P2P node. Its design is inspired by pea2pea.

goals

  • small, simple, non-framework codebase
  • ease of use: few objects and traits, no "turboeels" or generics/references that would force all parent objects to adapt
  • correctness: builds with stable Rust, there is no unsafe code
  • low-level oriented: while the underlying quinn crate does the QUIC heavy-lifting, the user should have access to most of its functionalities

how to use it

  1. define a clonable struct containing a Node and any extra state you'd like to carry
  2. implement the Quickie trait for it
  3. create that struct (or as many of them as you like)

That's it!

examples

  • simple interop with libp2p-quic

status

  • the core functionalities seem to work, but there can still be bugs
  • not all the quinn features are exposed yet
  • some tests are already in place
  • the crate follows semver, and API breakage is to be expected before 1.0

Dependencies

~11–21MB
~385K SLoC