This package provides Protocol Buffer models and associated libraries for working with API description formats supported by gnostic. It exists to provide a lightweight distribution of these models with minimal dependencies.
Package atomicfile provides the ability to write a file with an eventual rename on Close (using os.Rename). This allows for a file to always be in a consistent state and never represent an in-progress write.
This package is an implementation of Roaring bitmaps as described at https://roaringbitmap.org/about/ in Go. Roaring bitmaps are fast compressed bitmap data structures (also called bitset). They are ideally suited to represent sets of integers over relatively small ranges.
jsonpatch is a library which provides functionality for both applying RFC6902 JSON patches against documents, as well as for calculating & applying RFC7396 JSON merge patches.
Pebble is a LevelDB/RocksDB inspired key-value store focused on performance and internal usage by CockroachDB. Pebble inherits the RocksDB file formats and a few extensions such as range deletion tombstones, table-level bloom filters, and updates to the MANIFEST format.
This package provides a framework for building REST APIs in Go. It is designed to generate OpenAPI 3.1 specifications and JSON Schema documents describing the API and providing a quick & easy way to generate docs, mocks, SDKs, CLI clients, and more.
Resiliency patterns for golang. Based in part on Hystrix, @urlhttps://github.com/Shopify/semian, Semian, and others.
Currently implemented patterns include:
circuit-breaker
semaphore
deadline/timeout
batching
retriable
containerd is a container runtime with an emphasis on simplicity, robustness, and portability. It is available as a daemon, which can manage the complete container lifecycle of its host system: image transfer and storage, container execution and supervision, low-level storage and network attachments, etc.
Package weightedrand contains a performant data structure and algorithm used to randomly select an element from some kind of list, where the chances of each element to be selected not being equal, but defined by relative "weights" (or probabilities). This is called weighted random selection.
reflectwalk is a Go library for "walking" a value in Go using reflection, in the same way a directory tree can be "walked" on the file system. Walking a complex structure can allow you to do manipulations on unknown structures such as those decoded from JSON.
This package offers overflow-checked integer arithmetic operations for int,int32, and int64. Each of the operations returns a result,bool combination. This was prompted by the need to know when to flow into higher precision types from the math.big library.
This package is a linter that detects struct contained context.Context field. This is discouraged technique in favour of passing context as first argument of method or function. For rationale please read Contexts and structs the Go blog post.
seccomp is a computer security facility in the Linux kernel. It allows a process to make a one-way transition into a secure state where it cannot make any system calls except exit, sigreturn, read and write to already-open file descriptors.
lifecycle helps manage goroutines at the application level. context.Context has been great for propagating cancellation signals, but not for getting any feedback about when goroutines actually finish.
This package works with context.Context to ensure that applications don't quit before their goroutines do.
This package implements a functionality of managing the registration, marshaling, and unmarshaling of encoded types. It helps when types are sent over a ttrpc/GRPC API and marshaled as a protobuf Any.
The semver package provides the ability to work with semantic versions. Specifically it provides the ability to:
Parse semantic versions
Sort semantic versions
Check if a semantic version fits within a set of constraints
Optionally work with a
vprefix
Package reedsolomon enables Erasure Coding. It's a Go port of the JavaReedSolomon.
For encoding high shard counts (>256) a Leopard implementation is used. For most platforms this performs close to the original Leopard implementation in terms of speed.
This package provides an implementation of the Red October keyserver protocol for Golang. It uses the Two-Person Rule to protect sensitive data, which means it supports generating, distributing, and recovering keys among multiple parties with configurable quorum requirements. The package include Go source library and redoctober command.
The dnsutils package provides a Go function to return a map of Service Records (SRV) in the order they should be used for a given service, protocol and name. The order is determined by the records' priority and randomized selection based on their relative weighting. This package is useful for network applications that require accessing services using SRV records.
udiff (micro-diff, or µDiff) is a library that implements the Myers' diffing algorithm. It aims to provide a minimal API to compute and apply diffs with zero dependencies. It also supports generating diffs in the Unified Format.
Package httprc implements a cache for resources available over http(s). Its aim is not only to cache these resources so that it saves on HTTP roundtrips, but it also periodically attempts to auto-refresh these resources once they are cached based on the user-specified intervals and HTTP Expires and Cache-Control headers, thus keeping the entries relativelyfresh.
This library provides a http.Handler that acts as a health endpoint. It can be used by cloud infrastructure or other services to determine the availability of an application.
Rather than simply returning a response with HTTP status code 200, this library allows building health checks that test the availability of all required dependencies. The HTTP response contains the aggregated health result and details about the health status of each component.
protobuild works by scanning the Golang package in a project and emitting correct protoc commands, configured with the plugins, packages and details of your choice. The main benefit is that it makes it much easier to consume external types from vendored projects. By integrating the protoc include paths with Go's vendoring and GOPATH, builds are much easier to keep consistent across a project. This package provides a source library and built command protobuild.