Skip to content

Releases: bazel-contrib/rules_go

v0.51.0-rc2

02 Dec 20:55
a103a08
Compare
Choose a tag to compare
v0.51.0-rc2 Pre-release
Pre-release

Breaking changes

In order to reduce CPU and memory usage in the analysis phase and to improve the maintainability of the codebase, this release contains a number of breaking changes.
As the bulk of these changes are to the Go context API, users of the go_* rules should not be affected (with a very minor exception below).

The maintainers would like to give a special thanks to @dzbarsky for numerous contributions to this release!

Changes to rules

  • Support for inferring an importpath for libraries named go_default_library has been removed. Modern versions of Gazelle do not generate this target name, please ensure you are up to date. (c8a7ebca3)

Changes to the Go context API and behavior

  • Converted SDK files to depsets (go.sdk.tools, go.sdk.headers, go.sdk.libs, go.sdk.srcs). To migrate, either call to_list() on those properties or, preferably, use them as depsets in your downstream actions. To remain compatible with older versions, consider a conditional conversion such as depset_or_list if type(depset_or_list) == type([]) else depset_or_list.to_list() (3994841a)

  • go.sdk_files has been removed and can be replaced with depset(direct = [go.sdk.go], transitive = [go.sdk.srcs, go.sdk.headers, go.sdk.libs, go.sdk.tools]) (which is a depset). Wherever possible, try to use only the subset of those files that's actually needed.

  • GoSource and GoLibrary providers have been merged and renamed to GoInfo. The previous names are now aliases, but can result in errors about duplicate providers when both are returned from the same rule. go.new_library and go.library_to_source are now deprecated. To migrate, use go.new_go_info. To remain compatible with older versions that require both providers, consider checking whether GoSource != GoLibrary. (564f8204)

  • Some fields on the Go context object are marked deprecated. go_context will still add them to the context object, unless it is invoked with include_deprecated_properties = False. This default will be flipped in the future and eventually this codepath will be removed. (aa96a1174) You can migrate as follows:

    • go.root -> go.env["GOROOT"]
    • go.go -> go.sdk.go
    • go.sdk_root -> go.sdk.root_file
    • go.sdk_tools -> go.sdk.tools
    • go.package_list -> go.sdk.package_list
    • go.tags -> go.mode.tags
    • go.stamp -> go.mode.stamp
    • go.cover_format -> go.mode.cover_format
    • go.pgoprofile -> go.mode.pgoprofile
  • Removed get_nogo from the Go context object (0f88f8c8)

  • Removed exe_extension and shared_extension from the Go context object. (c419453a)

  • Removed GoSource.cc_info. If you need to access the CcInfo from a Go target, you will need to apply the _go_cc_aspect from go/private/rules/binary.bzl. Please let us know if it's needed and we can move it to public API. (a01ba7c72)

  • go_binary and go_test targets no longer expose GoInfo, GoSource or GoLibrary providers. If you need a dedicated provider to attach an aspect to, please let us know. (2d2266)

  • The Go context's mode property is now a GoConfigInfo provider instead of a bare struct. go.mode.link has been renamed to go.mode.linkmode (5933f872)

  • If you are relying on go_context to read an _stdlib attribute from your attrs, please ensure the attribute is not transitioned, as it will no longer handle a list value. (9214edcd126)

  • go_context now accepts keyword arguments for the following fields: go_context_data, importpath, importmap, embed, importpath_aliases. If these properties are omitted, the function will continue to fall back to reading them from attr. Consider passing these explicitly to improve code clarity and analysis phase performance. (6749a3819, f3029e2a8)

Changes to providers

GoSource

  • Removed cgo_deps, use cdeps instead (56d415d)

  • Removed orig_srcs (520bee50)

  • Removed cgo_exports (86c3f3ae97)

  • Converted cover to a depset (692d008c96)

  • deps is now a list of GoArchives instead of Targets (a32f3e1)

GoArchive

  • Removed mode, use source.mode instead (bfd99a663)

GoArchiveData

  • Removed data_files, use with runfiles instead, which is a runfiles object (60f55c91ce)

CgoContextInfo

  • Converted cc_toolchain_files to a depset (3994841)

WORKSPACE code

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

http_archive(
    name = "io_bazel_rules_go",
    sha256 = "1101d7e81a6e7f9cee94dd947bed705144bf339257fbec1d73d620df87e58885",
    urls = [
        "https://mirror.bazel.build/github.com/bazel-contrib/rules_go/releases/download/v0.51.0-rc2/rules_go-v0.51.0-rc2.zip",
        "https://github.com/bazel-contrib/rules_go/releases/download/v0.51.0-rc2/rules_go-v0.51.0-rc2.zip",
    ],
)

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

go_rules_dependencies()

go_register_toolchains(version = "1.23.3")

What's Changed

New Contributors

Full Changelog: v0.51.0-rc1...v0.51.0-rc2

v0.51.0-rc1

22 Nov 18:21
a985583
Compare
Choose a tag to compare
v0.51.0-rc1 Pre-release
Pre-release

Breaking changes

In order to reduce CPU and memory usage in the analysis phase and to improve the maintainability of the codebase, this release contains a number of breaking changes.
As the bulk of these changes are to the Go context API, users of the go_* rules should not be affected (with a very minor exception below).

The maintainers would like to give a special thanks to @dzbarsky for numerous contributions to this release!

Changes to rules

  • Support for inferring an importpath for libraries named go_default_library has been removed. Modern versions of Gazelle do not generate this target name, please ensure you are up to date. (c8a7ebca3)

Changes to the Go context API and behavior

  • Converted SDK files to depsets (go.sdk.tools, go.sdk.headers, go.sdk.libs, go.sdk.srcs). To migrate, either call to_list() on those properties or, preferably, use them as depsets in your downstream actions. To remain compatible with older versions, consider a conditional conversion such as depset_or_list if type(depset_or_list) == type([]) else depset_or_list.to_list() (3994841a)

  • go.sdk_files has been removed and can be replaced with depset(direct = [go.sdk.go], transitive = [go.sdk.srcs, go.sdk.headers, go.sdk.libs, go.sdk.tools]) (which is a depset). Wherever possible, try to use only the subset of those files that's actually needed.

  • GoSource and GoLibrary providers have been merged and renamed to GoInfo. The previous names are now aliases, but can result in errors about duplicate providers when both are returned from the same rule. go.new_library and go.library_to_source are now deprecated. To migrate, use go.new_go_info. To remain compatible with older versions that require both providers, consider checking whether GoSource != GoLibrary. (564f8204)

  • Some fields on the Go context object are marked deprecated. go_context will still add them to the context object, unless it is invoked with include_deprecated_properties = False. This default will be flipped in the future and eventually this codepath will be removed. (aa96a1174) You can migrate as follows:

    • go.root -> go.env["GOROOT"]
    • go.go -> go.sdk.go
    • go.sdk_root -> go.sdk.root_file
    • go.sdk_tools -> go.sdk.tools
    • go.package_list -> go.sdk.package_list
    • go.tags -> go.mode.tags
    • go.stamp -> go.mode.stamp
    • go.cover_format -> go.mode.cover_format
    • go.pgoprofile -> go.mode.pgoprofile
  • Removed get_nogo from the Go context object (0f88f8c8)

  • Removed exe_extension and shared_extension from the Go context object. (c419453a)

  • Removed GoSource.cc_info. If you need to access the CcInfo from a Go target, you will need to apply the _go_cc_aspect from go/private/rules/binary.bzl. Please let us know if it's needed and we can move it to public API. (a01ba7c72)

  • go_binary and go_test targets no longer expose GoInfo, GoSource or GoLibrary providers. If you need a dedicated provider to attach an aspect to, please let us know. (2d2266)

  • The Go context's mode property is now a GoConfigInfo provider instead of a bare struct. go.mode.link has been renamed to go.mode.linkmode (5933f872)

  • If you are relying on go_context to read an _stdlib attribute from your attrs, please ensure the attribute is not transitioned, as it will no longer handle a list value. (9214edcd126)

  • go_context now accepts keyword arguments for the following fields: go_context_data, importpath, importmap, embed, importpath_aliases. If these properties are omitted, the function will continue to fall back to reading them from attr. Consider passing these explicitly to improve code clarity and analysis phase performance. (6749a3819, f3029e2a8)

Changes to providers

GoSource

  • Removed cgo_deps, use cdeps instead (56d415d)

  • Removed orig_srcs (520bee50)

  • Removed cgo_exports (86c3f3ae97)

  • Converted cover to a depset (692d008c96)

  • deps is now a list of GoArchives instead of Targets (a32f3e1)

GoArchive

  • Removed mode, use source.mode instead (bfd99a663)

GoArchiveData

  • Removed data_files, use with runfiles instead, which is a runfiles object (60f55c91ce)

CgoContextInfo

  • Converted cc_toolchain_files to a depset (3994841)

WORKSPACE code

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

http_archive(
    name = "io_bazel_rules_go",
    sha256 = "fcafde4bc064dc4e2b37b910e1aa61853a6e654e1927671eaca4853678f071d7",
    urls = [
        "https://mirror.bazel.build/github.com/bazel-contrib/rules_go/releases/download/v0.51.0-rc1/rules_go-v0.51.0-rc1.zip",
        "https://github.com/bazel-contrib/rules_go/releases/download/v0.51.0-rc1/rules_go-v0.51.0-rc1.zip",
    ],
)

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

go_rules_dependencies()

go_register_toolchains(version = "1.23.3")

What's Changed

Read more

v0.50.1

05 Sep 14:22
Compare
Choose a tag to compare

WORKSPACE code

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

http_archive(
    name = "io_bazel_rules_go",
    sha256 = "f4a9314518ca6acfa16cc4ab43b0b8ce1e4ea64b81c38d8a3772883f153346b8",
    urls = [
        "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.50.1/rules_go-v0.50.1.zip",
        "https://github.com/bazelbuild/rules_go/releases/download/v0.50.1/rules_go-v0.50.1.zip",
    ],
)

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

go_rules_dependencies()

go_register_toolchains(version = "1.23.0")

Fixes Included:

#4081
#4082
#4083

Full Changelog: v0.50.0...v0.50.1

v0.50.0

30 Aug 18:56
Compare
Choose a tag to compare

WORKSPACE code

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

http_archive(
    name = "io_bazel_rules_go",
    sha256 = "67b4d1f517ba73e0a92eb2f57d821f2ddc21f5bc2bd7a231573f11bd8758192e",
    urls = [
        "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.50.0/rules_go-v0.50.0.zip",
        "https://github.com/bazelbuild/rules_go/releases/download/v0.50.0/rules_go-v0.50.0.zip",
    ],
)

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

go_rules_dependencies()

go_register_toolchains(version = "1.23.0")

What's Changed

New Contributors

Full Changelog: release-0.49...release-0.50

v0.49.0

13 Jul 04:06
a23892e
Compare
Choose a tag to compare

WORKSPACE code

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

http_archive(
    name = "io_bazel_rules_go",
    sha256 = "d93ef02f1e72c82d8bb3d5169519b36167b33cf68c252525e3b9d3d5dd143de7",
    urls = [
        "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.49.0/rules_go-v0.49.0.zip",
        "https://github.com/bazelbuild/rules_go/releases/download/v0.49.0/rules_go-v0.49.0.zip",
    ],
)

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

go_rules_dependencies()

go_register_toolchains(version = "1.22.5")

What's Changed

New Contributors

Full Changelog: v0.48.0...v0.49.0

v0.48.1

19 Jun 19:57
Compare
Choose a tag to compare

WORKSPACE code

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

http_archive(
    name = "io_bazel_rules_go",
    sha256 = "b2038e2de2cace18f032249cb4bb0048abf583a36369fa98f687af1b3f880b26",
    urls = [
        "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.48.1/rules_go-v0.48.1.zip",
        "https://github.com/bazelbuild/rules_go/releases/download/v0.48.1/rules_go-v0.48.1.zip",
    ],
)

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

go_rules_dependencies()

go_register_toolchains(version = "1.22.4")

Full Changelog: v0.48.0...v0.48.1

v0.48.0

22 May 03:03
354a98f
Compare
Choose a tag to compare

Important Changes!

--incompatible_enable_proto_toolchain_resolution is now supported in rules_go. This means that protoc should now be supplied as a toolchain. protoc can be registered using https://github.com/aspect-build/toolchains_protoc, or a local proto toolchain can be added.

rules_proto 6.0.0 is required to use Go proto rules.

WORKSPACE code

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

http_archive(
    name = "io_bazel_rules_go",
    sha256 = "33acc4ae0f70502db4b893c9fc1dd7a9bf998c23e7ff2c4517741d4049a976f8",
    urls = [
        "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip",
        "https://github.com/bazelbuild/rules_go/releases/download/v0.48.0/rules_go-v0.48.0.zip",
    ],
)

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

go_rules_dependencies()

go_register_toolchains(version = "1.22.3")

What's Changed

New Contributors

Full Changelog: v0.47.1...v0.48.0

v0.47.1

06 May 19:32
ed2f625
Compare
Choose a tag to compare

WORKSPACE code

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

http_archive(
    name = "io_bazel_rules_go",
    sha256 = "f74c98d6df55217a36859c74b460e774abc0410a47cc100d822be34d5f990f16",
    urls = [
        "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.47.1/rules_go-v0.47.1.zip",
        "https://github.com/bazelbuild/rules_go/releases/download/v0.47.1/rules_go-v0.47.1.zip",
    ],
)

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

go_rules_dependencies()

go_register_toolchains(version = "1.22.2")

What's Changed

New Contributors

Full Changelog: v0.47.0...v0.47.1

v0.47.0

23 Apr 14:37
54d8f48
Compare
Choose a tag to compare

WORKSPACE code

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

http_archive(
    name = "io_bazel_rules_go",
    sha256 = "af47f30e9cbd70ae34e49866e201b3f77069abb111183f2c0297e7e74ba6bbc0",
    urls = [
        "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.47.0/rules_go-v0.47.0.zip",
        "https://github.com/bazelbuild/rules_go/releases/download/v0.47.0/rules_go-v0.47.0.zip",
    ],
)

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

go_rules_dependencies()

go_register_toolchains(version = "1.22.2")

What's Changed

New Contributors

Full Changelog: v0.46.0...v0.47.0

v0.46.0

10 Feb 00:31
00fe64f
Compare
Choose a tag to compare

WORKSPACE code

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

http_archive(
    name = "io_bazel_rules_go",
    sha256 = "80a98277ad1311dacd837f9b16db62887702e9f1d1c4c9f796d0121a46c8e184",
    urls = [
        "https://mirror.bazel.build/github.com/bazelbuild/rules_go/releases/download/v0.46.0/rules_go-v0.46.0.zip",
        "https://github.com/bazelbuild/rules_go/releases/download/v0.46.0/rules_go-v0.46.0.zip",
    ],
)

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

go_rules_dependencies()

go_register_toolchains(version = "1.22.0")

What's Changed

New Contributors

Full Changelog: v0.45.1...v0.46.0