Skip to content

v0.25.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@jayconrod jayconrod released this 02 Dec 20:56
· 7 commits to release-0.25 since this release
8c81912

Changes

  • go_download_sdk and go_register_toolchains can now download any version of Go from golang.org/dl without the need for hardcoded support in rules_go.
    • Consequently, the version parameter must be set to a string like "1.15.5" or to "host". This requires a change to WORKSPACE for most users. See go_register_toolchains for details.
    • go_download_sdk queries https://golang.org/dl in order to find SHA-256 of toolchains. Bazel won't cache downloaded files without these. If your build has limited network access, use version = "host" or set the sdks and urls attributes in go_download_sdk.
    • As a result of this change, rules_go will no longer need patch releases for new Go versions. The v0.24 branch will still be patched as long as it's supported.
  • Package conflicts are now errors rather than warnings. The linker already reports errors for most of these since Go 1.15.
  • rules_go now uses Bazel's modern C/C++ Starlark linker API.
  • go_path supports the include_transitive attribute, which controls whether transitively imported packages are included (thanks @steeve)
  • go_test changes to the test directory in an init function run before other package inits instead of in main (thanks @dragonsinth)
  • Several deprecated features were removed. See Deprecation schedule for information on removals.
    • go_rule wrapper.
    • go_archive_aspect and GoAspectProvider.
    • It is now an error when a go_binary or go_test depends on another go_binary or go_test.
    • --feature flags are no longer used for configuration. Use flags like --@io_bazel_rules_go//go/config:pure instead.

Compatibility

  • Go 1.13 is no longer supported.
  • Bazel 3.4.0 is now required.
  • This release is expected to be compatible with Bazel 4.0.0. Earlier rules_go releases may not work due to incompatible changes in the C/C++ APIs.

Updated dependencies

As always you can use higher versions of rules_go's dependencies by declaring them in WORKSPACE before calling go_rules_dependencies. Lower versions may work but are not supported.

  • platforms is updated to 0.0.1.
  • rules_cc is updated to master as of 2020-12-01.
  • bazel_skylib is updated to 1.0.3.
  • org_golang_x_tools is updated to master as of 2020-12-01.
  • com_github_golang_protobuf is updated to v1.4.3.
  • org_golang_google_genproto is updated to master as of 2020-12-01.
  • go_googleapis is updated to master as of 2020-12-01.

WORKSPACE code

NOTE: The code below has changed. In go_register_toolchains, version must be set to a string like "1.15.5" or to "host" unless a Go toolchain is declared earlier.

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "io_bazel_rules_go",
    sha256 = "6f111c57fd50baf5b8ee9d63024874dd2a014b069426156c55adbf6d3d22cb7b",
    urls = [
        "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.25.0/rules_go-v0.25.0.tar.gz",
        "https://github.com/bazelbuild/rules_go/releases/download/v0.25.0/rules_go-v0.25.0.tar.gz",
    ],
)

load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")

go_rules_dependencies()

go_register_toolchains(version = "1.15.5")