Yamux (Yet another Multiplexer) is a multiplexing library for Golang. It relies on an underlying connection to provide reliability and ordering, such as TCP or Unix domain sockets, and provides stream-oriented multiplexing. It is inspired by SPDY but is not interoperable with it.
Yamux (Yet another Multiplexer) is a multiplexing library for Golang. It relies on an underlying connection to provide reliability and ordering, such as TCP or Unix domain sockets, and provides stream-oriented multiplexing. It is inspired by SPDY but is not interoperable with it.
This package provides ciinfo, a tool to get details about the current Continuous Integration environment, including checking if running in a CI system, which CI system, build id, and more.
This is a reimplementation of ci-info in Go.
The yaml package enables Golang programs to comfortably encode and decode YAML values. It was developed within Canonical as part of the juju project, and is based on a pure Golang port of the libyaml C library to parse and generate YAML data quickly and reliably.
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.
Package decimal implements an arbitrary precision fixed-point decimal. Features:
the zero-value is 0, and is safe to use without initialization
addition, subtraction, multiplication with no loss of precision
division with specified precision
database/sql serialization/deserialization
JSON and XML serialization/deserialization
This package implements io.ReaderAt that makes HTTP Range Requests. It can be used for example with "archive/zip" package in Go standard library. Together they can be used to access remote (HTTP accessible) ZIP archives without needing to download the whole archive file.
cpuid provides information about the CPU running the current program. CPU features are detected on startup, and kept for fast access through the life of the application. Currently x86 / x64 (AMD64) is supported, and no external C (cgo) code is used, which should make the library very eas to use.
This package implements a functionality to modify/update field tags in structs making it easy to update, add or delete the tags in a struct field with possibility to add and remove tag options. It's intended to be used by an editor, but also has modes to run it from the terminal.
go-cache is an in-memory key:value store/cache similar to Memcached that is suitable for applications running on a single machine. Its major advantage is that, being essentially a thread-safe map[string]interface with expiration times, it doesn't need to serialize or transmit its contents over the network.
Diskv (disk-vee) is a simple, persistent key-value store written in the Go language. It starts with a simple API for storing arbitrary data on a filesystem by key, and builds several layers of performance-enhancing abstraction on top. The end result is a conceptually simple, but highly performant, disk-backed storage system.
This is an IPLD ADL that provides string based pathing for protobuf nodes. The top level node behaves like a map where LookupByString returns the Hash property on the Link in the protobufs list of Links whos Name property matches the key. This should enable selector traversals that work based of paths.
Package jsonschema uses reflection to generate JSON Schemas from Go types.
Features:
supports arbitrarily complex types, including interface, maps, slices, etc.
supports json-schema features such as minLength, maxLength, pattern, format, etc.
supports simple string and numeric enums
supports custom property fields via the jsonschema_extras struct tag
This cache implementation is a map with some expiration abilities over it, for different types with different caching needs, such as a small group of items that should never expire, items that should exist in cache forever only being removed when the cache is full. Most operations should be o(1) as well as all being thread safe.
This package implements a functionality to configure Go's pprof features and default HTTP mux using the environment variable GOPPROF. envpprof has an init function that will run at process initialization that checks the value of the GOPPROF environment variable. The variable can contain a comma-separated list of values, for example GOPPROF=http,block.
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 package implements a functionality for parsing, converting and validating OpenAPI v2.0, OpenAPI v3.0 and OpenAPI v3.1.
This package provides a password strength generators written in Golang. It attempts to give sound password advice through pattern matching and conservative entropy calculations. It finds 10k common passwords, common American names and surnames, common English words, and common patterns like dates, repeats (aaa), sequences (abcd), and QWERTY patterns. It's an active fork of https://github.com/nbutton23/zxcvbn-go.
Package ff is a flags-first helper package for configuring programs.
The basic idea is that myprogram -h should always show the complete configuration "surface area" of a program. Therefore, every config parameter should be defined as a flag. This module provides a simple and robust way to define those flags, and to parse them from command-line arguments, environment variables, and/or config files.
eggsampler/acme is a Go client library implementation for RFC8555 (previously ACME v2). This library can be used with the Let's Encrypt Certificate Authority (CA), but also other ACME compliant CA's such as ZeroSSL, Google Trust Services and others listed at https://acmeclients.com/certificate-authorities/.
This package provides a simple key/value logging interface for Golang for use in development and production environments. Unlike the standard library log package, this package provides logging levels that provide decreased output based upon the desired amount of output. It also comes with a command-line program hclogvet that can be used to check that the logging level methods on hclog.Logger are used correctly.
This package provides Go bindings for iptables utility. In-kernel netfilter does not have a good userspace API. The tables are manipulated via setsockopt that sets/replaces the entire table. Changes to existing table need to be resolved by userspace code which is difficult and error-prone. Netfilter developers heavily advocate using iptables utility for programmatic manipulation. go-iptables wraps invocation of iptables utility with functions to append and delete rules; create, clear and delete chains.
This package provides a plugin system over WebAssembly. As a plugin is compiled to Wasm, it can be size-efficient, memory-safe, sandboxed and portable. The plugin system auto-generates Go SDK for plugins from Protocol Buffers files. While it is powered by Wasm, plugin authors/users don't have to be aware of the Wasm specification since the raw Wasm APIs are capsulated by the SDK.