[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5716":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":24,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":16,"starSnapshotCount":16,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},5716,"quinn","quinn-rs\u002Fquinn","quinn-rs","Async-friendly QUIC implementation in Rust","",null,"Rust",5119,572,60,134,0,10,53,4,74.57,"Apache License 2.0",false,"main",true,[26,27,28,29],"hacktoberfest","protocol","quic","rust","2026-06-12 04:00:26","\u003Ch1 align=\"center\">\u003Cimg width=\"500\" src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fquinn-rs\u002Fquinn\u002F51a3cea225670757cb844a342428e4e1341d9f13\u002Fdocs\u002Fthumbnail.svg\" \u002F>\u003C\u002Fh1>\n\n[![Documentation](https:\u002F\u002Fdocs.rs\u002Fquinn\u002Fbadge.svg)](https:\u002F\u002Fdocs.rs\u002Fquinn\u002F)\n[![Crates.io](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fv\u002Fquinn.svg)](https:\u002F\u002Fcrates.io\u002Fcrates\u002Fquinn)\n[![Build status](https:\u002F\u002Fgithub.com\u002Fquinn-rs\u002Fquinn\u002Fworkflows\u002FCI\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fdjc\u002Fquinn\u002Factions?query=workflow%3ACI)\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fquinn-rs\u002Fquinn\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002Fquinn-rs\u002Fquinn)\n[![Chat](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fchat-%23quinn:matrix.org-%2346BC99?logo=matrix)](https:\u002F\u002Fmatrix.to\u002F#\u002F#quinn:matrix.org)\n[![Chat](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F976380008299917365?logo=discord)](https:\u002F\u002Fdiscord.gg\u002FSGPEcDfVzh)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg)](LICENSE-MIT)\n[![License: Apache 2.0](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache%202.0-blue.svg)](LICENSE-APACHE)\n\nQuinn is a pure-Rust, async-compatible implementation of the IETF [QUIC][quic] transport protocol.\nThe project was founded by [Dirkjan Ochtman](https:\u002F\u002Fgithub.com\u002Fdjc) and\n[Benjamin Saunders](https:\u002F\u002Fgithub.com\u002FRalith) as a side project in 2018, and has seen more than\n30 releases since then. If you're using Quinn in a commercial setting, please consider\n[sponsoring](https:\u002F\u002Fopencollective.com\u002Fquinn-rs) the project.\n\n## Features\n\n- Simultaneous client\u002Fserver operation\n- Ordered and unordered stream reads for improved performance\n- Works on stable Rust, tested on Linux, macOS and Windows\n- Pluggable cryptography, with a standard implementation backed by\n  [rustls][rustls] and [*ring*][ring]\n- Application-layer datagrams for small, unreliable messages\n- Future-based async API\n- Minimum supported Rust version of 1.80.0\n\n## Overview\n\n- **quinn:** High-level async API based on tokio, see [examples][examples] for usage. This will be used by most developers. (Basic benchmarks are included.)\n- **quinn-proto:** Deterministic state machine of the protocol which performs [**no** I\u002FO][sans-io] internally and is suitable for use with custom event loops (and potentially a C or C++ API).\n- **quinn-udp:** UDP sockets with ECN information tuned for the protocol.\n- **bench:** Benchmarks without any framework.\n- **fuzz:** Fuzz tests.\n\n# Getting Started\n\n**Examples**\n\n```sh\n$ cargo run --example server .\u002F\n$ cargo run --example client https:\u002F\u002Flocalhost:4433\u002FCargo.toml\n```\n\nThis launches an HTTP 0.9 server on the loopback address serving the current\nworking directory, with the client fetching `.\u002FCargo.toml`. By default, the\nserver generates a self-signed certificate and stores it to disk, where the\nclient will automatically find and trust it.\n\n**Links**\n\n- Talk at [RustFest Paris (May 2018) presentation][talk]; [slides][slides]; [YouTube][youtube]\n- Usage [examples][examples]\n- Guide [book][documentation]\n\n## Usage Notes\n\n\u003Cdetails>\n\u003Csummary>\nClick to show the notes\n\u003C\u002Fsummary>\n\n### Buffers\n\nA Quinn endpoint corresponds to a single UDP socket, no matter how many\nconnections are in use. Handling high aggregate data rates on a single endpoint\ncan require a larger UDP buffer than is configured by default in most\nenvironments. If you observe erratic latency and\u002For throughput over a stable\nnetwork link, consider increasing the buffer sizes used. For example, you could\nadjust the `SO_SNDBUF` and `SO_RCVBUF` options of the UDP socket to be used\nbefore passing it in to Quinn. Note that some platforms (e.g. Linux) require\nelevated privileges or modified system configuration for a process to increase\nits UDP buffer sizes.\n\n### Certificates\n\nBy default, Quinn clients validate the cryptographic identity of servers they\nconnect to. This prevents an active, on-path attacker from intercepting\nmessages, but requires trusting some certificate authority. For many purposes,\nthis can be accomplished by using certificates from [Let's Encrypt][letsencrypt]\nfor servers, and relying on the default configuration for clients.\n\nFor some cases, including peer-to-peer, trust-on-first-use, deliberately\ninsecure applications, or any case where servers are not identified by domain\nname, this isn't practical. Arbitrary certificate validation logic can be\nimplemented by customizing the `rustls` configuration; see the\n[insecure_connection.rs][insecure] example for details.\n\nWhen operating your own certificate authority doesn't make sense, [rcgen][rcgen]\ncan be used to generate self-signed certificates on demand. To support\ntrust-on-first-use, servers that automatically generate self-signed certificates\nshould write their generated certificate to persistent storage and reuse it on\nfuture runs.\n\n\u003C\u002Fdetails>\n\u003Cp>\u003C\u002Fp>\n\n## Contribution\n\nAll feedback welcome. Feel free to file bugs, requests for documentation and\nany other feedback to the [issue tracker][issues].\n\nThe quinn-proto test suite uses simulated IO for reproducibility and to avoid\nlong sleeps in certain timing-sensitive tests. If the `SSLKEYLOGFILE`\nenvironment variable is set, the tests will emit UDP packets for inspection\nusing external protocol analyzers like Wireshark, and NSS-compatible key logs\nfor the client side of each connection will be written to the path specified in\nthe variable.\n\nThe minimum supported Rust version for published releases of our\ncrates will always be at least 6 months old at the time of release.\n\n[quic]: https:\u002F\u002Fquicwg.github.io\u002F\n[issues]: https:\u002F\u002Fgithub.com\u002Fdjc\u002Fquinn\u002Fissues\n[rustls]: https:\u002F\u002Fgithub.com\u002Fctz\u002Frustls\n[ring]: https:\u002F\u002Fgithub.com\u002Fbriansmith\u002Fring\n[talk]: https:\u002F\u002Fparis.rustfest.eu\u002Fsessions\u002Fa-quic-future-in-rust\n[slides]: https:\u002F\u002Fgithub.com\u002Fdjc\u002Ftalks\u002Fblob\u002Fff760845b51ba4836cce82e7f2c640ecb5fd59fa\u002F2018-05-26%20A%20QUIC%20future%20in%20Rust\u002FQuinn-Speaker.pdf\n[animation]: https:\u002F\u002Fdirkjan.ochtman.nl\u002Ffiles\u002Fhead-of-line-blocking.html\n[youtube]: https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=EHgyY5DNdvI\n[letsencrypt]: https:\u002F\u002Fletsencrypt.org\u002F\n[rcgen]: https:\u002F\u002Fcrates.io\u002Fcrates\u002Frcgen\n[examples]: https:\u002F\u002Fgithub.com\u002Fdjc\u002Fquinn\u002Ftree\u002Fmain\u002Fquinn\u002Fexamples\n[documentation]: https:\u002F\u002Fquinn-rs.github.io\u002Fquinn\u002Fnetworking-introduction.html\n[sans-io]: https:\u002F\u002Fsans-io.readthedocs.io\u002Fhow-to-sans-io.html\n[insecure]: https:\u002F\u002Fgithub.com\u002Fquinn-rs\u002Fquinn\u002Fblob\u002Fmain\u002Fquinn\u002Fexamples\u002Finsecure_connection.rs\n","Quinn 是一个用 Rust 语言编写的异步兼容的 QUIC 协议实现。它支持同时作为客户端和服务器运行，并提供有序和无序的流读取以提高性能，适用于稳定版 Rust，在 Linux、macOS 和 Windows 上经过测试。该项目采用了可插拔的加密方式，默认使用 rustls 和 ring 库进行支持，并且提供了应用层的数据报文功能来处理小规模的不可靠消息。其基于 futures 的异步 API 设计使得 Quinn 成为开发需要高性能网络通信的应用程序的理想选择，特别是在那些对延迟敏感或要求高吞吐量的场景下。",2,"2026-06-11 03:04:52","top_language"]