Conditional linkage generally refers to the inclusion or exclusion of certain pieces of code or libraries during the build process.

In Go, we use build tags to achieve the same.

Here’s the current list, grouped by category.

Supported backends

build tag comment
aws Include support for AWS S3
azure Include support for Azure Blob Storage
gcp Include support for Google Cloud Platform
ht Include support for a custom ht:// backend
oci Include support for Oracle Cloud Infrastructure (OCI)

Debug & development

build tag comment
debug Include debug-related code and assertions
deadbeef DEADBEEF freed memsys buffers

StatsD

StatsD was deprecated in v3.28 (Spring 2025) and completely removed in v4.0 (September 2025).

Open telemetry

build tag comment
oteltracing Include support for OpenTelemetry tracing

Intra-cluster transport

There are two alternative ways to build transport package for intra-cluster networking:

  1. using Go net/http, or
  2. with a 3rd party github.com/valyala/fasthttp aka “fasthttp”

The second option is the current default.

build tag comment
nethttp Use net/http for intra-cluster transport (the default is fasthttp)

fs.Walk from the standard library

build tag comment
stdlibwalk Instead of godirwalk use filepath.WalkDir from the standard library

Dsort (distributed shuffle)

build tag comment
dsort Build aisnode with dsort runtime enabled and the respective APIs not stubbed; for details, see docs/dsort.md, api/dsort.go (Go), and python/aistore/sdk/dsort (Python)