blob: 2fd10f08789bae4a1ec3e52be2510c3398cb3e4e [file] [log] [blame]
// Copyright 2023 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Package quic implements the QUIC protocol.
//
// This package is a work in progress.
// It is not ready for production usage.
// Its API is subject to change without notice.
//
// This package is low-level.
// Most users will use it indirectly through an HTTP/3 implementation.
//
// # Usage
//
// An [Endpoint] sends and receives traffic on a network address.
// Create an Endpoint to either accept inbound QUIC connections
// or create outbound ones.
//
// A [Conn] is a QUIC connection.
//
// A [Stream] is a QUIC stream, an ordered, reliable byte stream.
//
// # Cancelation
//
// All blocking operations may be canceled using a context.Context.
// When performing an operation with a canceled context, the operation
// will succeed if doing so does not require blocking. For example,
// reading from a stream will return data when buffered data is available,
// even if the stream context is canceled.
//
// # Limitations
//
// This package is a work in progress.
// Known limitations include:
//
// - Performance is untuned.
// - 0-RTT is not supported.
// - Address migration is not supported.
// - Server preferred addresses are not supported.
// - The latency spin bit is not supported.
// - Stream send/receive windows are configurable,
// but are fixed and do not adapt to available throughput.
// - Path MTU discovery is not implemented.
package quic