Package mmap allows mapping files into memory. It tries to provide a simple, reasonably portable interface, but doesn't go out of its way to abstract away every little platform detail. This specifically means:
HyperLogLog is an improved version of HyperLogLog for the count-distinct problem, approximating the number of distinct elements in a multiset. This implementation offers enhanced performance, flexibility, and simplicity while maintaining accuracy.
This is a development helper program that generates a Golang interface by inspecting the structure methods of an existing .go
file. The primary use case is to generate interfaces for gomock, so that gomock can generate mocks from those interfaces.
Package sqlmock is a mock library implementing sql driver. Which has one and only purpose - to simulate any sql driver behavior in tests, without needing a real database connection. It helps to maintain correct TDD workflow.
Package testza is a full-featured testing framework for Go. It integrates with the default test runner, so you can use it with the standard go test
tool. Testza contains easy to use methods, like assertions, output capturing, mocking, and much more.
The netlink package provides a simple netlink library for Go. Netlink is the interface a user-space program in Linux uses to communicate with the kernel. It can be used to add and remove interfaces, set IP addresses and routes, and configure IPsec.
This library provides typesetting capabilities in pure Go. It is appropriate for use in GUI applications, and is shared by multiple Go UI toolkits including @urlhttps://fyne.io,Fyne, @urlhttps://gioui.org,Gio, and @urlhttps://ebitengine.org,Ebitengine.
This repo is the home for all of the public go code produced by SDF. In addition to various tools and services, this repository is the SDK from which you may develop your own applications that integrate with the stellar network.
gotestspace
is used to quickly create a working directory for shell execution using Go, as well as a tool for customizing the execution of the shell. It can help you quickly create an independent workspace for unit testing and improve the efficiency of unit test writing.
Package bolthold is an indexing and querying layer on top of a Bolt database. The goal is to allow easy, persistent storage and retrieval of Go types. BoltDB is an embedded key-value store, and bolthold servers a similar use case however with a higher level interface for common uses of BoltDB.
Package httpcache
provides a http.RoundTripper
implementation that works as a mostly RFC 7234 compliant cache for HTTP responses. It is only suitable for use as a "private" cache (i.e. for a web-browser or an API-client and not for a shared proxy).
This package provides a re-implementation of Julien Schmidt's httprouter, in that it uses a patricia tree, but the logic is rather different. Specifically, the routing rules are relaxed so that a single path segment may be a wildcard in one route and a static token in another.
Package chanqueue implements a queue that uses channels for input and output to provide concurrent access to a re-sizable queue. This allows the queue to be used like a channel. Closing the input channel closes the output channel when all queued items are read, consistent with channel behavior. In other words chanqueue is a dynamically buffered channel with up to infinite capacity.
This is a Go port of the exponential backoff algorithm from Google's HTTP Client Library for Java.
Exponential backoff is an algorithm that uses feedback to multiplicatively decrease the rate of some process, in order to gradually find an acceptable rate. The retries exponentially increase and stop increasing when a certain threshold is met.
Package gocui allows creating console user interfaces.
Highlighted features:
Minimalist API.
Views (the windows in the GUI) implement the interface io.ReadWriter.
Support for overlapping views.
The GUI can be modified at runtime (concurrent-safe).
Global and view-level keybindings.
Mouse support.
Colored text.
Customizable edition mode.
Easy to build reusable widgets, complex layouts.
Package gocui allows creating console user interfaces.
Highlighted features:
Minimalist API.
Views (the windows in the GUI) implement the interface io.ReadWriter.
Support for overlapping views.
The GUI can be modified at runtime (concurrent-safe).
Global and view-level keybindings.
Mouse support.
Colored text.
Customizable edition mode.
Easy to build reusable widgets, complex layouts.
This is an implementation of go-datastore that is backed by DynamoDB
.
ddbds includes support for optimized prefix queries. When you setup your table's key schema correctly and register it with ddbds, then incoming queries that match the schema will be converted into DynamoDB queries instead of table scans, enabling high performance, ordered, high-cardinality prefix queries.
JSON Patch implementation for Go as specified in RFC 6902 from the IETF.
JSON Patch allows you to generate JSON that describes changes you want to make to a document, so you don't have to send the whole doc. JSON Patch format is supported by HTTP PATCH method, allowing for standards based partial updates via REST APIs.
go-reuseport
enables listening and dialing from the same TCP or UDP port. This means that SO_REUSEADDR
and SO_REUSEPORT
socket options may be set. This is particularly important when attempting to do TCP NAT hole-punching, which requires a process to both Listen
and Dial
on the same TCP port. go-reuseport
provides some utilities around enabling this behaviour on various operating systems.
Package proxyproto implements Proxy Protocol (v1 and v2) parser and writer, as per specification: @urlhttps://www.haproxy.org/download/2.3/doc/proxy-protocol.txt. It is to be used in one of or both proxy clients and proxy servers that need to support said protocol. Both protocol versions, 1 (text-based) and 2 (binary-based) are supported. TLV parsers extensions coming with this library support AWS, Azure and GCP.
Fast IP to CIDR block(s) lookup using trie in Golang, inspired by IPv4 route lookup Linux. Possible use cases include detecting if a IP address is from published cloud provider CIDR blocks (e.g. 52.95.110.1 is contained in published AWS Route53 CIDR 52.95.110.0/24), IP routing rules, etc.
Package netlink provides a simple library for netlink. Netlink is the interface a user-space program in linux uses to communicate with the kernel. It can be used to add and remove interfaces, set up ip addresses and routes, and confiugre ipsec. Netlink communication requires elevated privileges, so in most cases this code needs to be run as root. The low level primitives for netlink are contained in the nl subpackage. This package attempts to provide a high-level interface that is loosly modeled on the iproute2 cli.
This package provides a pure Go Kerberos library. It features:
Kerberos libraries for custom integration
Parsing Keytab files
Parsing krb5.conf files
Parsing client credentials cache files such as /tmp/krb5cc_$(id -u $(whoami))
On the client side, it provides a client that can authenticate to an SPNEGO Kerberos authenticated web service, and the ability to change client's password.
On the server side, the library provides a HTTP handler wrapper implements SPNEGO Kerberos authentication, as well as a HTTP handler wrapper decodes Microsoft AD PAC authorization data.
Package btcec
implements elliptic curve cryptography needed for working with Bitcoin (secp256k1 only for now). It is designed so that it may be used with the standard crypto/ecdsa packages provided with Go. A comprehensive suite of test is provided to ensure proper functionality. Package btcec
was originally based on work from ThePiachu which is licensed under the same terms as Go, but it has significantly diverged since then. The btcsuite
developers original is licensed under the liberal ISC license.
Although this package was primarily written for btcd, it has intentionally been designed so it can be used as a standalone package for any projects needing to use secp256k1 elliptic curve cryptography.