GoReleaser
The release pipeline, rewritten in Go+
Current release —
v1.0.2.goforge.dev/gpreleaseris a Go+ reimplementation ofgoreleaser/goreleaserv2.17.0 whose entire pipeline is authored in Go+, withgoreleaser checkoutput byte-identical to upstream. The installable artifact is stillgoreleaser— install withgo install goforge.dev/gpreleaser/cmd/goreleaser@v1.0.2. The current line executes git throughstd/processand consumes Go+ stdlib v0.207.0.
GoForge GoReleaser targets goreleaser/goreleaser v2.17.0. It builds, archives,
packages, and publishes Go releases — and its ~60-stage release pipeline is now
Go+.
Parity
goreleaser check is byte-identical to the pinned upstream binary (across
valid, release-disabled, and passing configs), build --snapshot works, and the
test suite is green — 120 packages pass with zero rewrite-specific
failures (the sole failing package needs a live Docker daemon and fails
identically on upstream).
Go+ authorship
204 .gp files cover the hand-written source — every internal/pipe/ stage
(archive, build, docker, brew, nix, publish, release, changelog, …),
internal/builders, internal/pipeline, pkg, and the cmd cobra commands.
Only the //go:embed template shims and one generated license table stay
hand-off Go. Generation is deterministic and goplus gen -check is clean against
released goplus v0.139.0.
Honest about its shape: gpreleaser introduces zero enums. Its
discriminators are wire-coupled — artifact.Type serializes to
dist/artifacts.json, context.Action’s zero value is the load-bearing
default, and the config format/type/mode/provider kinds are YAML strings
— so the wire and config formats are preserved byte-for-byte rather than
reshaped.
Notes
Faithful to pinned upstream MIT provenance (© 2016-2026 Carlos Alexandro
Becker). Third-party dependencies are unchanged. See the repository’s
PARITY.md for the phase-by-phase ledger.