Skip to content
Jay Conrod edited this page Apr 16, 2020 · 3 revisions

rules_go and Gazelle roadmap

This document describes the major rules_go and Gazelle features the Go team has planned and how those features are prioritized. If you have an idea for a feature which is not mentioned here or if you think something should be prioritized differently, please send a message to bazel-go-discuss, or open an issue.

Note that this document doesn't cover prioties for the overall Go team. Work on Go itself can (and frequently does) take priority over Bazel support for Go. As a result, it's difficult to provide time estimates or release dates.

Release process

rules_go follows semantic versioning. A patch release is tagged every few weeks with bug fixes and support for new versions of Go. A minor release is tagged approximately every quarter with new features and updated dependencies. No major release has been tagged yet.

The current minor release branch is maintained together with the previous branch. Earlier release branches are not maintained or supported.

You can subscribe to new releases on GitHub.

1.0.0

At some point a 1.0.0 release will be tagged. This will indicate the API is stable. We try to keep the 0.x.y releases as stable as possible to make upgrades simple, but some incompatible changes may be needed before a 1.0.0 release in order to shed technical debt, enabling long-term maintenance.

We hope not to make any incompatible changes after that. A 2.0.0 should not be needed.

rules_go changes

Improved editor support

rules_go has no direct support for editors and IDEs. #512 tracks work to develop a driver for golang.org/x/tools/go/packages. This would enable Bazel support in gopls and other tools based on that framework, which would cover VSCode, vim-go, Emacs, and most other editors aside from GoLand. Editor and tool integration describes this further.

Another driver may be needed to other Go analysis and code generation tools that run as Bazel actions. #393 tracks that work.

Cross-compilation and configuration

In the past, rules_go has used aspects, --feature flags and other hacks to implement cross-compilation and alternative configurations like race mode.

#2219 tracks an effort to migrate to Bazel's new build setting and configuration transition system. This should fix or at least unblock a lot of bugs related to cross-compilation.

Other priorities

In no particularly order:

  • Improved protobuf support
  • Improved runfiles
  • Improved static analysis
  • Coverage support
  • Debugging

gazelle changes

Gazelle is mostly feature complete. Priorities are:

  • Fixing bugs
  • Simplifying user experience
  • Reducing technical debt and simplifying testing
Clone this wiki locally