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 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
v
prefix
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.
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.
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.
This package provides a set of locales generated from the Unicode CLDR Project which can be used independently or within an internalization (i18n) package. Its currently implemented features include
Rules generated from the CLDR data, v31.0.3
Contains Cardinal, Ordinal and Range Plural Rules
Contains Month, Weekday and Timezone translations built in
Contains Date & Time formatting functions
Contains Number, Currency, Accounting and Percent formatting functions
Supports the "Gregorian" calendar only
This package implements a various systemd bindings and provides Golang submodules:
activation
- for writing and using socket activation from Godaemon
- for notifying systemd of service status changesdbus
- for starting/stopping/inspecting running services and unitsjournal
- for writing to systemd's logging service, journaldsdjournal
- for reading from journald by wrapping its C APIlogin1
- for integration with the systemd logind APImachine1
- for registering machines/containers with systemdunit
- for (de)serialization and comparison of unit files
This package provides a variable size buffer pool for Golang.
go-buffer-pool
provides:
BufferPool
: A pool for re-using byte slices of varied sizes. This pool will always return a slice with at least the size requested and a capacity up to the next power of two. Each size class is pooled independently which makes theBufferPool
more space efficient than a plainsync.Pool
when used in situations where data size may vary over an arbitrary range.Buffer
: a buffer compatible withbytes.Buffer
but backed by aBufferPool
. Unlikebytes.Buffer
,Buffer
will automatically shrink on read, using the buffer pool to avoid causing too much work for the allocator. This is primarily useful for long lived buffers that usually sit empty.
certmagic
provides API for TLS Automation with full control over almost every aspect of the system.
Main features:
Fully automated certificate management including issuance and renewal, with support for certificate revocation. Also works in conjunction with your own certificates.
Wildcard certificates.
One-line, fully managed HTTPS servers, with HTTP->HTTPS redirects.
Multiple issuers supported: get certificates from multiple sources/CAs for redundancy and resiliency.
Solves all 3 common ACME challenges: HTTP, TLS-ALPN, and DNS (and capable of others.)
Robust error handling:
Challenges are randomized to avoid accidental dependence and rotated to overcome certain network blockages.
Robust retries for up to 30 days.
Exponential backoff with carefully-tuned intervals.
Retries with optional test/staging CA endpoint instead of production, to avoid rate limits.
All libdns DNS providers work out-of-the-box.
Pluggable storage backends (default: file system) and key sources.
Automatic OCSP stapling.
Distributed solving of all challenges (works behind load balancers.)
Supports on-demand issuance of certificates.
Optional event hooks for observation.
One-time private keys by default (new key for each cert) to discourage pinning and reduce scope of key compromise.
Works with any certificate authority (CA) compliant with the ACME specification RFC 8555.
Must-Staple (optional; not default.)
Full support for draft-ietf-acme-ari (ACME Renewal Information; ARI) extension.
Dingtalk webhook Golang SDK
Go library for decoding generic map values
Common SELinux package used across the container ecosystem.
Package couchbase provides a smart client for go.
Package backoff implements backoff algorithms for retrying operations.
Reflect-based black magic. YMMV, and use with caution