Experimental Go libraries (take it with a grain of salt)
This repository contains projects, experiments and studies when developing new Go libraries and applications.
Its content ranges from HTTP / net utilities, generics in Go, binary encoding, to audio processing and much more in between. In /x/
many ideas are born, and some eventually ported to their own repositories.
This is the place for trying something new, to study it and amplify an initial idea. It's a place to be unbounded and unconstrained; to both succeed and to fail.
Directory | Notes | Description |
---|---|---|
x/audio |
digital signal processing tools for audio, including WAV encoding and decoding. | |
x/benchmark |
several benchmark tests to compare x implementations with third-party implementations |
|
x/bezier |
🤖 | PNG to SVG converter |
x/bom |
handlers for Byte Order Mark presence in text documents | |
x/cb |
experiments on a Circuit Breaker implementation | |
x/cfg |
generic configuration and options library | |
x/cli |
Command-Line Interface utilities and helper logic | |
x/codegraph |
first and second iterations of a call-graph generator from static Go code | |
x/codegraph_v3 |
third iteration of a call-graph generator from static Go code | |
x/conv |
standard binary converters for several types | |
x/cron |
cron-like execution scheduler library | |
x/crop |
an image cropping utility, to divide an input image into X and Y number of tiles (as multiple images) | |
x/discord |
Discord-focused libraries (webhooks, bots, etc.) | |
x/dns |
🚀 | a small but modular DNS server to freely create new routes in your network. |
x/encoding |
binary encoder libraries (like protobuf) | |
x/errors |
early port of errors.Join before it was generally available |
|
x/errs |
a library to standardize error creation, by defining a Domain, Kind and Entity in a type | |
x/fractal |
Mandelbrot and Julia fractals experiments | |
x/fts |
🚀 | SQLite-based full-text search (in-memory and persisted to a file) |
x/gbuf |
🚀 | generic buffers like bytes.Buffer , but for any specified type. |
x/ghttp |
generic HTTP handlers and mux compatible with the standard library, with a simplified structure | |
x/graph |
generic graph data structures | |
x/grid |
a Coordinates, Vectors, 2D Grids, Graphs, and Graph Search set of libraries | |
x/gwriter |
🚀 | generic I/O library, but for any specified type. |
x/is |
very simple (and limited) comparison logic to be used in Go tests | |
x/lex |
🚀 | generic lexer, following the design in Go's text/template and go/token implementations, for any specified type. |
x/log |
🚀 | second iteration on a structured logger in Go, with a hint from the new x/log/slog proposal, with generics. |
x/log/attr |
🚀 | a key-value attribute generic data structure, for any type of requirement. |
x/logbuf |
experiments with a buffered slog.Handler implementation | |
x/mapping |
a dynamic fields mapping library for Go types | |
x/monitoring-tmpl |
Template / example project including all 3 instrumentation signals (metrics, logs, traces) and backends for them as services | |
x/parse |
🚀 | generic parser, as a continuation of x/lex , that builds a generic AST based on defined tokens and processing rules, and optionally output generation. |
x/pcap |
🤖 | packet capture app |
x/pluslog |
standard-library slog package extensions |
|
x/ptr |
generic pointer (and unsafe) utilities library, for conversion, copying, casting and more. | |
x/secr |
🚀 | a compact yet module secrets / passwords storage solution, with a Domain Driven Design approach. |
x/slack |
Slack-focused libraries (webhooks, bots, etc.) | |
x/spanner |
🚀 | a simple (but flavored) tracer / spanner solution inspired by OpenTelemetry's, used interchangeably alongside logx in ghttp , for example. |
x/steam |
Steam API and CLI (unofficial) |
Reference
- 🚀: Ported into its own repository, as linked in the emoji
- 🤖: ChatGPT experiment; contains code generated with ChatGPT
A very heartwarming thank you to JetBrains for their support with their Open Source Support program!! Building these libraries, apps, solutions with GoLand makes it such a great developer experience, from the debugger to the tests, coverage and profiling ❤️