Go Library
4.11K subscribers
20 photos
1 video
63 files
800 links
Go (Golang) Library

Реклама: @ostinostin
Контент: @mxssl
Download Telegram
Cross-compiling C and Go via cgo with Bazel

Go offers an exceptional language and an impressive ecosystem of tools. However, it presents a notable challenge when integrating with C code via cgo. While building and distributing pure Go binaries across various platforms is straightforward — often requiring just a few parameter adjustments — the process becomes considerably more complex when C dependencies are introduced.


https://popovicu.com/posts/cross-compile-cgo-bazel/
go-binsize-treemap

Go binary size SVG treemap


https://github.com/nikolaydubina/go-binsize-treemap
Why Go is a good fit for agents

https://docs.hatchet.run/blog/go-agents
The Ingredients of a Productive Monorepo

https://blog.swgillespie.me/posts/monorepo-ingredients
Announcing GoReleaser v2.10

- New Homebrew Casks support - Replaces the old brews section which was incorrectly using Homebrew Formulas for pre-built binaries. The new homebrew_casks section does it properly.
- Easy migration - Most users just need to rename brews to homebrew_casks in their config
- Experimental MCP server - Adds Model Context Protocol support for AI tools like Claude Desktop (just run goreleaser mcp)

https://carlosbecker.com/posts/goreleaser-v2.10
Go should be more opinionated

TL;DR:

The author argues that Go should provide more opinionated guidance on application structure and project layout. While Go excels at having "one way to do things" for language features (formatting, loops, etc.), it lacks official guidance for organizing larger projects.

Key points:
- Go's simplicity makes it easy to learn, but structuring real-world projects becomes challenging
- Teams spend significant time researching and deciding on project structure
- Official templates for common patterns (CLIs, APIs, microservices) would help
- Similar to how go mod solved dependency management fragmentation
- Would especially benefit teams migrating from opinionated frameworks like Spring Boot or Laravel

Bottom line: Go needs official project scaffolding tools (like go new) to extend its opinionated philosophy beyond language syntax to application architecture.

https://eltonminetto.dev/en/post/2025-06-19-go-more-opinated
Gist of Go: Race conditions

Preventing data races with mutexes may sound easy, but dealing with race conditions is a whole other matter. Let's learn how to handle these beasts!


https://antonz.org/go-concurrency/race-conditions
Benchmark of Go SQLite libraries

github.com/mattn/go-sqlite3 vs modernc.org/sqlite vs github.com/ncruces/go-sqlite3

https://gitlab.com/cznic/sqlite-bench
OpenTelemetry for Go: measuring the overhead

Everything comes at a cost — and observability is no exception. When we add metrics, logging, or distributed tracing to our applications, it helps us understand what’s going on with performance and key UX metrics like success rate and latency. But what’s the cost?


https://coroot.com/blog/opentelemetry-for-go-measuring-the-overhead
Why I Made Peace With Go’s Date Formatting

https://preslav.me/2025/06/11/golang-date-formatting-is-fine
Things You Never Wanted To Know About Go Interfaces

Lately I’ve been finding myself writing a bit of Go, and I’ve picked up various fun “layout secrets” that help inform how I write code to minimize hidden allocations, and generally be kind to the optimizer. This article is a series of notes on the topic.

This post is about Go implementation details, so they can probably break you at any time if you rely on it. On the other hand, Hyrum’s law is a bitch, so taking your chances may not be that bad. After all, they’re probably never going to be able to properly clean up the mess people made with //go:linkname with runtime symbols…

As with many of my other posts, I’ll assume a basic familiarity with being able to read assembly. I’m using x86 for this post, but it’s worth looking at my RISC-V post for a refresher.


https://mcyoung.xyz/2024/12/12/go-abi
netpoll

Netpoll is a high-performance non-blocking I/O networking framework, which focused on RPC scenarios, developed by ByteDance.


https://github.com/cloudwego/netpoll
Go 1.25 interactive tour

Go 1.25 is scheduled for release in August, so it's a good time to explore what's new. The official release notes are pretty dry, so I prepared an interactive version with lots of examples showing what has changed and what the new behavior is.


https://antonz.org/go-1-25
JSON evolution in Go: from v1 to v2

https://antonz.org/go-json-v2
Finding performance problems by diffing two Go profiles

https://www.dolthub.com/blog/2025-06-20-go-pprof-diffing
Counter Service: How we rewrote it in Rust

The Integrity Data Platform (IDP) team decided to rewrite one of our heavy Queries Per Second (QPS) Golang microservices in Rust. It resulted in 70% infrastructure savings at a similar performance, but was not without its pitfalls. This article will elaborate on:

- How we picked what to rewrite in Rust.
- Approach taken to tackle the rewrite.
- The pitfalls and speed bumps along the way.
- Was it worthwhile?


https://engineering.grab.com/counter-service-how-we-rewrote-it-in-rust
Comparing Rust, JavaScript and Go for authoring WASM Components

https://obeli.sk/blog/comparing-rust-javascript-and-go-for-authoring-wasm-components/