Package easyjson implements functionality to marshal/unmarshal Golang structs to/from JSON without the use of reflection. It also aims to keep generated Go code simple enough so that it can be easily optimized or fixed.
This package provides two scripts that will backup PostgreSQL databases in a cluster. They are supposed to be run in scheduled jobs. pg_backup.sh runs regular backups, pg_backup_rotated.sh runs rotated backups.
This package facilitates the BusyBox style reexec of a binary. Handlers can be registered with a name and the argv 0 of the exec of the binary will be used to find and execute custom init paths.
Features: 1..Efficient generated code without unneccessary overhead. 2.Uses gzip compression internally (selectively, only for files that compress well). 3.Enables direct access to internal gzip compressed bytes via an optional interface. 4.Outputs gofmted Go code.
go-github-com-nu7hatch-gouuid provides immutable UUID structs and the functions NewV3, NewV4, NewV5 and Parse() for generating versions 3, 4 and 5 UUIDs as specified in RFC 4122.
Package agent implements the ssh-agent protocol, and provides both a client and a server. The client can talk to a standard ssh-agent that uses UNIX sockets, and one could implement an alternative ssh-agent process using the sample server.
ioprogress is a Go library with implementations of io.Reader and io.Writer that draws progress bars. The primary use case for these are for command-line applications but alternate progress bar writers can be supplied for alternate environments.
go-opt is a library to parse command line arguments based on tag annotations on struct fields. It came as a spin-off from aerc to deal with its internal commands.
GoProxy is a library to create a customized HTTP/HTTPS proxy server using Go (aka Golang), with several configurable settings available. The target of this project is to offer an optimized proxy server, usable with reasonable amount of traffic, yet customizable and programmable.
This package implements much of the decimal specification from the General Decimal Arithmetic description. This is the same specification implemented by Python’s decimal module and GCC’s decimal extension.
Server-sent events is a technology where a browser receives automatic updates from a server via HTTP connection. The SSE EventSource API is standardized as part of HTML5[1] by the W3C.
This package implements parallel gzip compression and decompression in Golang and is fully compatible with compress/gzip from the standard library. This is beneficial for large amounts of data, say more than 1MB at a time, as otherwise the internal gzip library will likely be faster.
This package provides the socks5 package that implements a SOCKS5 server. SOCKS (Secure Sockets) is used to route traffic between a client and server through an intermediate proxy layer. This can be used to bypass firewalls or NATs.
FarmHash provides hash functions for strings and other data. The functions mix the input bits thoroughly but are not suitable for cryptography. It is implemented as a mechanical translation of the non-SSE4/non-AESNI hash functions from Google's FarmHash.
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.
Go sigar is a golang implementation of the sigar API. The Go version of sigar has a very similar interface, but is being written from scratch in pure go/cgo, rather than cgo bindings for libsigar. This package provides an alternative fork of https://github.com/cloudfoundry/gosigar.
Package deque provides a fast ring-buffer deque (double-ended queue) implementation for Golang.
It generalizes a queue and a stack, to efficiently add and remove items at either end with O(1) performance. Queue (FIFO) operations are supported using PushBack and PopFront. Stack (LIFO) operations are supported using PushBack and PopBack.
Go-fuzz is a coverage-guided fuzzing solution for testing of Go packages. Fuzzing is mainly applicable to packages that parse complex inputs (both text and binary), and is especially useful for hardening of systems that parse inputs from potentially malicious users (e.g. anything accepted over a network).
This package, fsx, takes the style of the io/fs package, and extends it with more features:
fsx provides the ability to write files (using OpenFile, which is much like the os package feature you're already familiar with)
fsx provides the ability to create directories
fsx provides the ability to delete files and directories
fsx provides features for reading symlinks, and creating them
This package implements a functionality for two parties to generate a mutual secret key by using a weak key that is known to both beforehand (e.g. via some other channel of communication). This is a simple API for an implementation of Password-Authenticated Key Exchange. This protocol is derived from Dan Boneh and Victor Shoup's cryptography book (pg 789, PAKE2 protocol).
The termui Go library draws customizable dashboard widgets in a text terminal. It includes several common widgets: lists, trees, tables and tabs, but also more complex items such as (stacked) bar and pie charts, scatter plots, gauges, and even images and a canvas for drawing `high resolution' braille dots.
You can also easily create new custom widgets. Widgets can be coloured and styled and positioned absolutely or relatively. They respond to keyboard, mouse, and terminal resizing events.
Fastzip is an opinionated Zip archiver and extractor with a focus on speed. Features:
archiving and extraction of files and directories can only occur within a specified directory
permissions, ownership (uid, gid on linux/unix) and modification times are preserved
buffers used for copying files are recycled to reduce allocations
files are archived and extracted concurrently
by default,
github.com/klauspost/compress/flatelibrary is used for compression and decompression
Puddle is a tiny generic resource pool library hat uses the standard context library to signal cancellation of acquires. It is designed to contain the minimum functionality required for a resource pool. It can be used directly or it can be used as the base for a domain specific resource pool. For example, a database connection pool may use puddle internally and implement health checks and keep-alive behavior without needing to implement any concurrent code of its own.
Yamux (Yet another Multiplexer) 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.
Features:
streams can be opened by either client or server
useful for nat traversal
server-side push support
avoid starvation
back-pressure to prevent overwhelming a receiver
enables persistent connections over a load balancer
enables thousands of logical streams with low overhead