go-msquic is a new QUIC and HTTP/3 library for Go, built as a wrapper around the performant msquic library from Microsoft. It aims to provide a Go-friendly API while leveraging msquic's speed and efficiency. The library supports both client and server implementations, offering features like stream management, connection control, and cryptographic configurations. While still under active development, go-msquic represents a promising option for Go developers seeking a fast and robust QUIC implementation backed by a mature, production-ready core.
The blog post explores the challenges of establishing trust in decentralized systems, particularly focusing on securely bootstrapping communication between two untrusting parties. It proposes a solution using QUIC and 2-party relays to create a verifiable path of encrypted communication. This involves one party choosing a relay server they trust and communicating that choice (and associated relay authentication information) to the other party. This second party can then, regardless of whether they trust the chosen relay, securely establish communication through the relay using QUIC's built-in cryptographic mechanisms. This setup ensures end-to-end encryption and authenticates both parties, allowing them to build trust and exchange further information necessary for direct peer-to-peer communication, ultimately bypassing the relay.
Hacker News users discuss the complexity and potential benefits of the proposed trust bootstrapping system using 2-party relays and QUIC. Some express skepticism about its practicality and the added overhead compared to existing solutions like DNS and HTTPS. Concerns are raised regarding the reliance on relay operators, potential centralization, and performance implications. Others find the idea intriguing, particularly its potential for censorship resistance and improved privacy, acknowledging that it represents a significant departure from established internet infrastructure. The discussion also touches upon the challenges of key distribution, the suitability of QUIC for this purpose, and the need for robust relay discovery mechanisms. Several commenters highlight the difficulty of achieving true decentralization and the risk of malicious relays. A few suggest alternative approaches like blockchain-based solutions or mesh networking. Overall, the comments reveal a mixed reception to the proposal, with some excitement tempered by pragmatic concerns about its feasibility and security implications.
Summary of Comments ( 15 )
https://news.ycombinator.com/item?id=43098690
Hacker News users discussed the
go-msquic
library, primarily focusing on its use of CGO and the implications for performance and debugging. Some expressed concern about the complexity introduced by CGO, potentially leading to harder debugging and build processes. Others pointed out that leveraging the mature msquic library from Microsoft might offer performance benefits that outweigh the downsides of CGO, especially given Microsoft's significant investment in QUIC. The potential for improved performance over pure Go implementations and the trade-offs between performance and maintainability were recurring themes. A few commenters also touched upon the lack of HTTP/3 support in the standard Go library and the desire for a more robust solution.The Hacker News post "Go-msquic: A new QUIC/HTTP3 library for Go" discussing the
go-msquic
library has generated several comments exploring various aspects of the project and QUIC in general.Several commenters discuss the performance characteristics of
go-msquic
. One commenter expresses interest in seeing benchmark comparisons betweengo-msquic
and other popular Go QUIC libraries likequic-go
. They specifically ask about performance differences and whethergo-msquic
leverages specific features of MsQuic to achieve better performance. Another commenter, seemingly knowledgeable about MsQuic's internals, suggests thatgo-msquic
's performance is likely limited by the single OS thread utilized by MsQuic, hindering its ability to fully leverage multi-core processors. They further explain that this limitation stems from MsQuic's internal architecture and its integration with the Windows kernel, which is not optimized for multi-threaded performance in user mode.The discussion also touches upon the cross-platform compatibility of MsQuic and
go-msquic
. A commenter points out that MsQuic, the underlying library, is Windows-only, therefore limiting the portability of any Go library built upon it. This observation leads to a broader conversation about the challenges of building cross-platform QUIC libraries and the desire for a truly portable, performant solution in the Go ecosystem.One commenter expresses skepticism about using
cgo
, whichgo-msquic
employs to interface with the underlying MsQuic C API. They voice concerns about the performance overhead and complexity introduced bycgo
and suggest exploring alternatives that minimize or eliminate its usage.The thread also briefly delves into the development history of QUIC libraries in Go, mentioning the initial work on a pure Go implementation within the
quic-go
project and subsequent efforts to incorporate MsQuic for potentially better performance. This context provides a glimpse into the evolving landscape of QUIC adoption within the Go community.Finally, some comments raise questions about the maturity and long-term support for
go-msquic
, given its relatively recent release. The commenters express hope for continued development and broader community adoption to ensure the project's viability.