Search docsSearch this language
Getting started
Release candidatev0.20260809.0-rc.5

These docs describe the current coordinated release candidate.

Getting started

Install the SDK

Download, verify, and configure the coordinated C2Go SDK and runtime module.

The release archive is a relocatable native SDK. It contains the three command-line tools, C2Go headers, Clang runtime resources, and the license records required for redistribution. It does not contain repository checkouts or source trees.

Requirements

  • Go 1.25.x or 1.26.x. Go 1.27 and later fail closed until a newer centralized contract provider validates them.
  • The archive matching the OS and architecture of the machine that will run the tools.
  • A Go module that pins github.com/c2gohq/c2go_libc to v0.20260809.0-rc.5.

Choose an archive

Host archive C2Go target triple
linux-amd64 x86_64-unknown-linux-goabi
linux-arm64 aarch64-unknown-linux-goabi
windows-amd64 x86_64-pc-windows-goabi
macos-arm64 aarch64-apple-darwin

Download the archive and its same-named .sha256 sidecar from the release page, then verify only the platform archive you downloaded:

archive=c2go-toolchain-v0.20260809.0-rc.5-linux-amd64.tar.gz
sha256sum --check "$archive.sha256"

If you downloaded every release archive, SHA256SUMS can verify the complete set at once. On macOS, use shasum -a 256 -c "$archive.sha256". On Windows PowerShell, compute the hash with Get-FileHash -Algorithm SHA256 and compare it with the sidecar.

Do not skip verification: this release is not signed.

Configure your shell

Extract the archive, then keep its bin/, include/, and lib/ directories together:

export C2GO_HOME=/absolute/path/to/c2go-toolchain-v0.20260809.0-rc.5-<target>
export PATH="$C2GO_HOME/bin:$PATH"

c2go-clang --version
c2go-lto --version
c2go-bind --version

In -fc2go mode, c2go-clang discovers both the top-level c2go-libc headers and its Clang resource directory automatically. Do not add a host libc include directory.

c2go.h belongs to the Clang resource tree at lib/clang/<version>/include/c2go.h. The SDK’s top-level include/ directory contains the tracked public c2go-libc headers.

Pin the runtime module

Inside your project:

go mod init example.com/demo
go get github.com/c2gohq/c2go_libc@v0.20260809.0-rc.5

The Go runtime package is distributed as a module rather than a precompiled archive because Go package archives depend on the exact Go version, dependency build IDs, and build settings.

Schema-v2 generated libraries check both their C2Go ABI epoch and Go-toolchain contract epoch against that module at compile time. A compatible future Go minor release therefore needs a c2go-libc provider update, not regeneration of every generated library. See Versions and compatibility for the complete upgrade rules.

macOS quarantine

The macOS archive is not notarized. After verifying the checksum, remove Gatekeeper quarantine only if macOS blocks the extracted tools:

xattr -dr com.apple.quarantine "$C2GO_HOME"

Do not apply this command to a broader directory.

Confirm the layout

The SDK root should contain:

bin/                     c2go-clang, c2go-lto, c2go-bind
include/                 c2go-libc public headers
lib/clang/<version>/     Clang resources, including c2go.h
licenses/                component and third-party notices
BUILD-INFO.json          exact build and checksum metadata
toolchain.lock.json      coordinated source snapshot

You are now ready to build Hello World.