Skip to content

Go Library

Go

  • Build: the Go toolchain with modules; make build and make release-build differ only in stripped symbols.
  • Tests: go test; acceptance scenarios run with Godog from test/bdd/features/.
  • Lint: golangci-lint; go-arch-lint enforces the dependency direction app → infra → usecase → domain.
  • Rationale: Go builds static binaries, so one build serves every Linux target and the runtime image needs no libc.

Library

  • Structure: a public API and its implementation; no executable of its own.
  • Acceptance tests: a library has no running process; where the profile has acceptance scenarios, they drive the public API, in C++ through a test-only CLI wrapper.
  • Pipeline: build, test, and, where the language has packages, package; no container image.
  • Rationale: a consumer depends on the published API, so the guidelines stress semantic versioning and a small public surface.