Go Library
4.13K subscribers
20 photos
63 files
805 links
Go (Golang) Library

Реклама: @ostinostin
Контент: @mxssl
Download Telegram
EchoVault

EchoVault is a highly configurable, distributed, in-memory data store and cache implemented in Go. It can be imported as a Go library or run as an independent service.


https://github.com/EchoVault/EchoVault
High-Speed Packet Transmission in Go: From net.Dial to AF_XDP

Pushing limits in Go: from net.Dial to syscalls, AF_PACKET, and lightning-fast AF_XDP. Benchmarking packet sending performance.


https://toonk.io/sending-network-packets-in-go
The One Billion Row Challenge in Go: from 1m45s to 3.4s in nine solutions

https://benhoyt.com/writings/go-1brc
The missing type in the Go standard library: Date!

The Go standard library uses a single overloaded type as a stand-in for both full datetimes1 and dates. This mostly “just works”, but slowly starts to degrade correctness in codebases where both datetime and date values need to interact.


https://engineering.hardfin.com/2024/02/date-the-missing-type
Writing a Postgres Logical Replication System in Golang

We're building Dolt, the world's first version-controlled SQL database. Dolt is MySQL compatible, but many of our prospective customers wanted a Postgres-compatible version instead, so we have been hard at work building DoltgreSQL.

The first prospective DoltgreSQL customer to reach out to us wants to continue using Postgres for their primary database server, but get diffs of all their changes in Doltgres. So we talked it over with them and decided that Postgres's logical replication would be the best fit for this functionality, and started building it. A few weeks later, DoltgreSQL's replicate-from-Postgres feature is almost ready for production use, and you'll be able to try it out in the next release of the product.

This blog discusses what we learned building this feature, and walks you step-by-step through how to build a replication system consuming Postgres's logical replication protocol in Go. We'll be using the jackc/pglogrepl library to consume and send messages with the Postgres primary, but most of the lessons generalize to other clients as well.


https://www.dolthub.com/blog/2024-03-08-postgres-logical-replication
Dysfunctional options pattern in Go

https://rednafi.com/go/dysfunctional_options_pattern
Modern Git Commands and Features You Should Be Using

https://martinheinz.dev/blog/109
goqite

goqite (pronounced Go-queue-ite) is a persistent message queue Go library built on SQLite and inspired by AWS SQS (but much simpler).


https://github.com/maragudk/goqite
formstream

FormStream is a Golang streaming parser for multipart data, primarily used in web form submissions and file uploads.


https://github.com/mazrean/formstream
mechanoid

Mechanoid is an open source framework for building and running WebAssembly applications on small embedded systems and tiny IoT devices. It is intended to make it easier to create applications that are secure and extendable, and take advantage of all of the latest developments in both WebAssembly and embedded development.

Mechanoid includes a command line interface tool that helps you create, test, and run applications on either simulators or actual hardware.

You can write WASM modules for Mechanoid using any language that can compile to WebAssembly, including TinyGo, Rust, and Zig.

Mechanoid itself is written using Go and TinyGo.


https://github.com/hybridgroup/mechanoid
For Loops and More in Go

Looping seems like a basic topic: Write a for loop with a termination condition, and you’re done. However there’s a lot of ways you can write a for loop in Go. Knowing more about the different versions of for will help you choose the best option to accomplish your tasks and it will help you prevent some bugs.


https://www.ardanlabs.com/blog/2024/03/for-loops-and-more-in-go.html
Visual Guide to Slices in Go

We use slices everywhere in Go. With maps, they are fundamental data types we use to store data. Today we will dive into the internals and see how slices work under the hood.


https://sazak.io/articles/visual-guide-to-slices-in-go-2024-03-25
konf

konf offers an(other) opinion on how Go programs can read configuration without becoming coupled to a particular configuration source.


https://github.com/nil-go/konf
bloom

A Bloom filter is a concise/compressed representation of a set, where the main requirement is to make membership queries; i.e., whether an item is a member of a set. A Bloom filter will always correctly report the presence of an element in the set when the element is indeed present.


https://github.com/bits-and-blooms/bloom
Eradicating N+1s: The Two-phase Data Load and Render Pattern in Go

https://brandur.org/two-phase-render
bob

SQL query builder and ORM/Factory generator for Go with support for PostgreSQL, MySQL and SQLite


https://github.com/stephenafamo/bob
rill

Rill (noun: a small stream) is a Go toolkit that offers a collection of easy-to-use functions for concurrency, streaming, batching and pipeline construction. It abstracts away the complexities of concurrency, removes boilerplate, provides a structured way to handle errors and allows developers to focus on core logic. Whether you need to perform a basic concurrent ForEach or construct a complex multi-stage processing pipeline, Rill has got you covered.


https://github.com/destel/rill
entropy

Entropy is a CLI tool that will scan your codebase for high entropy lines, which are often secrets.


https://github.com/EwenQuim/entropy
gcss

CSS written in Pure Go.


https://github.com/AccentDesign/gcss