Go Developer Survey 2023 Q1 Results
Key findingshttps://go.dev/blog/survey2023-q1-results
- Novice Go developers are interested in web development. We introduced a new segmentation this year based on self-identified experience levels. Novices expressed some interesting differences from other experience levels. Most notably they showed greater interest in using Go for web development.
- Error handling and learning are respondents’ top challenges. Historically, lack of generics was the biggest challenge to using Go, but since the introduction of generics, we’ve seen comments about generics decline. Comments about error handling (with respect to readability and verbosity) and difficulty learning best practices are now the most commonly reported challenges.
- An optimization guide was the most valued way to improve Go’s performance. When asked how they would spend resources on various improvements to Go’s compile and runtime, respondents spent the most on an optimization guide rather than specific performance improvements, demonstrating how much documentation is valued in this area.
- Managing dependencies and versioning are the top challenges for open source Go module maintainers. Open source module maintainers face challenges in keeping their dependencies up to date and avoiding disruptions due to versioning and breaking changes. This is an area we’ll explore further to help maintainers provide a stable and healthy ecosystem.
Go arm64 Function Call Assembly
An in-depth analysis of the assembly code emitted by the Go compiler for function calls on arm64.https://blog.felixge.de/go-arm64-function-call-assembly
mimetype
A fast Golang library for media type and file extension detection, based on magic numbershttps://github.com/gabriel-vasile/mimetype
milvus
A cloud-native vector database, storage for next generation AI applicationshttps://github.com/milvus-io/milvus
counterfeiter
When writing unit-tests for an object, it is often useful to have fake implementations of the object's collaborators. In go, such fake implementations cannot be generated automatically at runtime, and writing them by hand can be quite arduous.https://github.com/maxbrunsfeld/counterfeiter
counterfeiter allows you to simply generate test doubles for a given interface.
spago
A Machine Learning library written in pure Go designed to support relevant neural architectures in Natural Language Processing.https://github.com/nlpodyssey/spago
Spago is self-contained, in that it uses its own lightweight computational graph both for training and inference, easy to understand from start to finish.
sftpgo
Fully featured and highly configurable SFTP server with optional HTTP/S, FTP/S and WebDAV support. Several storage backends are supported: local filesystem, encrypted local filesystem, S3 (compatible) Object Storage, Google Cloud Storage, Azure Blob Storage, SFTP.https://github.com/drakkan/sftpgo
go-callvis
go-callvis is a development tool to help visualize call graph of a Go program using interactive view.https://github.com/ofabry/go-callvis
TIL: Go Response Body MUST be closed, even if you don’t read it
https://manishrjain.com/must-close-golang-http-response
https://manishrjain.com/must-close-golang-http-response
vale
Vale is a command-line tool that brings code-like linting to prose. It's fast, cross-platform (Windows, macOS, and Linux), and highly customizable.https://github.com/errata-ai/vale
etree
The etree package is a lightweight, pure go package that expresses XML in the form of an element tree. Its design was inspired by the Python ElementTree module.https://github.com/beevik/etree
memphis
Memphis enables building modern queue-based applications that require large volumes of streamed and enriched data, modern protocols, zero ops, up to x9 faster development, up to x46 fewer costs, and significantly lower dev time for data-oriented developers and data engineers.https://github.com/memphisdev/memphis
How Much Memory Do You Need to Run 1 Million Concurrent Tasks?
https://pkolaczk.github.io/memory-consumption-of-async
https://pkolaczk.github.io/memory-consumption-of-async
go-datastructures
A collection of useful, performant, and threadsafe Go datastructures.https://github.com/Workiva/go-datastructures
gain
Gain is a high-performance io_uring networking framework written entirely in Go.https://github.com/pawelgaczynski/gain
lancet
Lancet is a comprehensive, efficient, and reusable util function library of go. Inspired by the java apache common package and lodash.js.https://github.com/duke-git/lancet
dnscontrol
DNSControl is a system for maintaining DNS zones. It has two parts: a domain specific language (DSL) for describing DNS zones plus software that processes the DSL and pushes the resulting zones to DNS providers such as Route53, Cloudflare, and Gandi. It can send the same DNS records to multiple providers. It even generates the most beautiful BIND zone files ever. It runs anywhere Go runs (Linux, macOS, Windows). The provider model is extensible, so more providers can be added.https://github.com/StackExchange/dnscontrol
openfga
A high-performance and flexible authorization/permission engine built for developers and inspired by Google Zanzibar.https://github.com/openfga/openfga