Facilitating the Spread of Knowledge and Innovation in Professional Software Development



Choose your language

InfoQ Homepage Go Language Content on InfoQ

  • On Go's Generics Implementation and Performance

    On the heels of Go generics becoming stable in Go 1.18, PlanetScale performance engineer Vicent Martí dissected how they work and highlighted some performance limitations of their actual implementation. He also provided a few handy suggestions about their usage.

  • Go 1.18 Stabilizes Generics, Fuzzing, Multi-Module Support, and Improves Performance

    The Go team has announced the release of Go 1.18, which brings support for generics, fuzzing, workspaces, and performance improvements.

  • Uber's Engineering Manages to Cut 70k CPUs by Tuning Go GC

    In an effort to help the company become profitable, Uber’s engineering department has focused their efforts on making their infrastructure more efficient. As an outcome of this effort, they managed to develop a semi-automated GO Garbage Collection tuning mechanism which in turn saved 70K CPU cores across 30 mission critical services.

  • Go Generics Debut in Go 1.18 Beta 1

    The latest beta release of Go, Go 1.18 beta 1, finally introduces support for generics programming using parametrized types, a long-awaited and highly-requested feature. Additionally, it also adds support for test fuzzing, a technique used to find inputs then uncover incorrect behaviour in a program.

  • Pants Build System Adds Support for Java, Scala, and Go

    In its upcoming release, now available to early adopters, build system Pants adds Java, Scala, and Go to previously supported Python. InfoQ has spoken with Benjy Weinberger, one of the creator of Pants alongside John Sirois, and currently CEO of Toolchain, Pants' main sponsor.

  • Dapr Joins CNCF Incubator: Q&A with Yaron Schneider

    The Cloud Native Computing Foundation (CNCF) recently announced that it accepted the Distributed Application Runtime (Dapr) as a CNCF incubating project. This statement follows an earlier announcement by Dapr, announcing the formation of the Dapr project's Steering and Technical Committee (STC).

  • How Pinterest Scaled up Its Ad-Serving Architecture

    On the Pinterest Engineering Blog, Nishant Roy wrote about their strategy to overcome a scaling problem with their ad corpus. Their existing solution had hit its scaling limit, but further growth was necessary. Its redesign offloaded the ad index to a key-value store and optimised garbage collection in their Go applications to increase their ad corpus size by a factor of 60.

  • Go Gets Fuzz Testing Support in Beta

    The Go team has announced fuzzing support is now available for beta testing. The main goal of the project is to create a unified and end-to-end experience for developers and users of the language, including robust module support, integration with the go command, and new compiler instrumentation.

  • Slack Details Its New Role Management Architecture

    Slack recently posted a detailed description of the software architecture of its new role management system. Slack needed to build a system that was more flexible than the one it previously had. It created a custom containerized Go-based permission service that integrates with its existing systems over gRPC. As a result, its customers' admins now have granular control over what their users can do.

  • CDK for Terraform Adds Go Support and Improves Asset Construction

    Hashicorp recently released version 0.4 of their CDK for Terraform. The CDK allows for writing Terraform configurations in a number of programming languages including C#, Python, TypeScripts, and Java. This release adds experimental support for using Go to write Terraform configurations. Also included are enhanced support for Terraform modules and asset construction.

  • Uber Reveals Its API Gateway's Architecture

    Uber recently detailed the architecture of its internally built API gateway. It described how independent layered components handle each request in the gateway, with each layer being responsible for a different facet of the request lifecycle. A combination of YAML and Apache Thrift defines the gateway configuration, and a code-generated artifact in Go makes up the gateway implementation.

  • Content-Aware Image Resizing in Go and JavaScript

    Oleksii Trekhleb, software engineer at Uber, recently explored the use of dynamic programming to speed up a CPU-intensive content-aware image resizing algorithm. Developers may use content-aware resizing to fit images into a variety of enclosing contexts (e.g., screen form factors, responsive layout container) while preserving the image’s key features.

  • Distributed Application Runtime (Dapr) v1.0 Announced

    The Distributed Application Runtime (Dapr) team announced today that Dapr v1.0 is now available and is considered production-ready. Dapr is an open-source runtime that allows developers to build resilient, microservices-based applications that run on the cloud and edge. With the v1.0 release, developers can deploy Dapr applications to Kubernetes clusters in production scenarios.

  • Using Go in Native macOS Apps with MacDriver

    MacDriver is a recent project aiming to enable interoperability between Go and Objective-C. This will make it possible to write macOS, and potentially iOS apps using Go, as well as reuse Go code in macOS apps written in Objective-C or Swift. InfoQ has taken the chance to speak with MacDriver creator Jeff Lindsay.

  • Generics Enter Go Change Proposal Process

    Generics, one of the features more frequently requested by Go developers, are making their way into the language based on a draft design that has been evolving for the last couple of years and is now entering the language change proposal process.