Skip to content

new(github.com/usbarmory/tamago-go): TamaGo bare-metal Go toolchain#13173

Open
tannevaled wants to merge 1 commit into
pkgxdev:mainfrom
tannevaled:new/github.com/usbarmory/tamago-go
Open

new(github.com/usbarmory/tamago-go): TamaGo bare-metal Go toolchain#13173
tannevaled wants to merge 1 commit into
pkgxdev:mainfrom
tannevaled:new/github.com/usbarmory/tamago-go

Conversation

@tannevaled
Copy link
Copy Markdown
Contributor

What

Adds github.com/usbarmory/tamago-go: TamaGo, a minimally-patched Go distribution that adds GOOS=tamago — execution on bare metal, with no operating system — on top of upstream Go.

Why

With the tamago framework it builds pure-Go, cgo-free firmware/unikernels that run directly on hardware or in VMs — amd64 (Cloud Hypervisor, Firecracker, QEMU microvm, UEFI, GCE), arm, arm64, and riscv64. It tracks upstream Go releases (tamago-go1.26.3 ≈ Go 1.26.3).

How it's packaged

  • Built from source from the tamago-goX.Y.Z tags via make.bash, mirroring the go.dev recipe (bootstrap go.dev, copy GOROOT).
  • Versions from usbarmory/tamago-go tags (strip tamago-go).
  • No provides: / interprets: on purpose: it ships bin/go like go.dev, so it must not hijack the bare go/gofmt commands or the .go interpreter. Used explicitly:
    export GOOSPKG=github.com/usbarmory/tamago
    pkgx +github.com/usbarmory/tamago-go -- env GOOS=tamago GOARCH=riscv64 go build -ldflags "-T 0x80010000 -R 0x1000" main.go
  • README renders on pkgx.dev (usage, the framework, the tamago CLI alternative).

Verified

bk build and bk audit pass. The packaged toolchain reports go1.26.3 and accepts GOOS=tamago (a vanilla Go rejects that GOOS/GOARCH pair), confirming the TamaGo patches are present.

🤖 Generated with Claude Code

usbarmory/tamago-go is a minimally-patched Go distribution adding GOOS=tamago
(execution on bare metal, no OS). With the github.com/usbarmory/tamago framework
it builds pure-Go, cgo-free firmware/unikernels for amd64 (incl. UEFI and KVM
microVMs), arm, arm64 and riscv64.

Built from source from the tamago-goX.Y.Z tags (make.bash), mirroring the go.dev
recipe. No provides:/interprets: on purpose — it ships bin/go like go.dev and
must not hijack the bare go/gofmt commands; use explicitly via
`pkgx +github.com/usbarmory/tamago-go -- env GOOS=tamago ... go build`.

bk build + bk audit pass; the packaged toolchain reports go1.26.3 and accepts
GOOS=tamago (a vanilla Go rejects that pair). README renders on pkgx.dev.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant