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

Реклама: @ostinostin
Контент: @mxssl
Download Telegram
Go Developer Survey 2023 H2 Results

tl;dr
- Go developers said they are more interested in AI/ML tooling that improves the quality, reliability, and performance of code they write, rather than writing code for them. An always-awake, never-busy expert “reviewer” might be one of the more helpful forms of AI developer assistance.
- The top requests for improving toolchain warnings and errors were to make the messages more comprehensible and actionable; this sentiment was shared by developers of all experience levels, but was particularly strong among newer Go developers.
- Our experiment with project templates (gonew) appears to solve critical problems for Go developers (especially developers new to Go) and does so in a way that matches their existing workflows for starting a new project. Based on these findings, we believe gonew can substantially reduce onboarding barriers for new Go developers and ease adoption of Go in organizations.
- Three out of every four respondents work on Go software that also uses cloud services; this is evidence that developers see Go as a language for modern, cloud-based development.
- Developer sentiment towards Go remains extremely positive, with 90% of survey respondents saying they felt satisfied while working with Go during the prior year.


https://go.dev/blog/survey2023-h2-results
Synchronization Constructs in the Go Standard Library

Go provides sync.Mutex as its implementation of a mutual exclusion lock. However, it is not the only synchronization construct that is a part of the standard library.

This blog post will look at four synchronization constructs that we can use instead of a sync.Mutex.


https://hjr265.me/blog/synchronization-constructs-in-go-standard-library
warrant

Warrant is a highly scalable, centralized authorization service based on Google Zanzibar, used for defining, querying, and auditing application authorization models and access control rules.


https://github.com/warrant-dev/warrant
ttlMap

TtlMap is golang package that implements a time-to-live map such that after a given amount of time, items in the map are deleted.


https://github.com/jftuga/ttlMap
bluetuith

bluetuith is a TUI-based bluetooth connection manager, which can interact with bluetooth adapters and devices. It aims to be a replacement to most bluetooth managers, like blueman.


https://github.com/darkhz/bluetuith
beelzebub

Beelzebub is an advanced honeypot framework designed to provide a highly secure environment for detecting and analyzing cyber attacks. It offers a low code approach for easy implementation and utilizes virtualization techniques powered by OpenAI Generative Pre-trained Transformer.


https://github.com/mariocandela/beelzebub
walk

Walk — a terminal navigator.

Why another terminal navigator? I wanted something simple and minimalistic. Something to help me with faster navigation in the filesystem; a cd and ls replacement. So I build walk. It allows for quick navigation with fuzzy searching, cd integration is quite simple. And you can open vim right from the walk. That's it.


https://github.com/antonmedv/walk
Why Golang instead of Rust to develop the Krater desktop app

Hello! If you have been following our articles, you may remember reading that Krater was being developed with Rust using Tauri. However, this is no longer the case because a few months ago we made the decision to migrate the entire project to Wails (Golang). In this article, we will discuss our experience and why we made such a risky decision to migrate an entire application from one language to another.


https://blog.moonguard.dev/why-golang-instead-of-rust-to-develop-the-krater-desktop-app
Go, Containers, and the Linux Scheduler

Like many Go developers my applications are usually deployed in containers. When running in container orchestrators it’s important to set CPU limits to ensure that the container doesn’t consume all the CPU on the host. However, the Go runtime is not aware of the CPU limits set on the container and will happily use all the CPU available. This has bitten me in the past, leading to high latency, in this blog I’ll explain what is going on and how to fix it.


https://www.riverphillips.dev/blog/go-cfs
SORTING STRINGS IN GO, FAST & SLOW

https://aead.dev/news/sort-strings
doltgresql

From the creators of Dolt, the world's first version controlled SQL database, DoltgreSQL (aka Doltgres) is a Postgres-flavored version of Dolt. Doltgres offers all the Git-style log, diff, branch, and merge functionality of Dolt on your Postgres database schema and data. Instead of connecting with a MySQL client and using MySQL SQL, you connect to Doltgres with a Postgres client and use Postgres SQL. Doltgres is like Git and Postgres had a baby.


https://github.com/dolthub/doltgresql
goleak

Goroutine leak detector to help avoid Goroutine leaks.


https://github.com/uber-go/goleak
goverter

goverter is a tool for creating type-safe converters. All you have to do is create an interface and execute goverter. The project is meant as alternative to jinzhu/copier that doesn't use reflection.


https://github.com/jmattheis/goverter
gatewayd

GatewayD is a free and open-source cloud-native database gateway and framework for building data-driven applications. It sits between your database servers and clients and proxies all their communication. It is like API gateways, for databases.


https://github.com/gatewayd-io/gatewayd
nutsdb

NutsDB is a simple, fast, embeddable and persistent key/value store written in pure Go.

It supports fully serializable transactions and many data structures such as list、set、sorted set. All operations happen inside a Tx. Tx represents a transaction, which can be read-only or read-write. Read-only transactions can read values for a given bucket and a given key or iterate over a set of key-value pairs. Read-write transactions can read, update and delete keys from the DB.


https://github.com/nutsdb/nutsdb
fuse

bazil.org/fuse is a Go library for writing FUSE userspace filesystems.

It is a from-scratch implementation of the kernel-userspace communication protocol, and does not use the C library from the project called FUSE. bazil.org/fuse embraces Go fully for safety and ease of programming.


https://github.com/bazil/fuse
Go's 1.22+ ServeMux vs Chi Router

Go 1.22 introduces a couple new features for Go. Among them are changes to the net/http package that make it easier to use the ServeMux. In a nutshell, the routing for this type is being updated to allow for HTTP methods and URL path values.


https://www.calhoun.io/go-servemux-vs-chi
Pushing SQLite to its limits with Go while having fun

https://www.terlici.com/2023/11/06/pushing-sqlite-limits.html
cpuid

Package 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/i386) and ARM (ARM64) is supported, and no external C (cgo) code is used, which should make the library very easy to use.


https://github.com/klauspost/cpuid