The Go programming language team is outlining its next steps as it makes its way to Go 2.
Go 2 has been in the works for a couple of years now. It has been about seven years since Go first reached 1.0, and the team has been working towards 2.0 ever since. However, according to the team, Go 2 won’t happen as a big release. It will be an ongoing effort of incremental releases and proposal implementations.
RELATED CONTENT: The developer’s dilemma: Choosing between Go and Rust
The team is currently working on Go 1.13, which is expected to be ready by early August. According to the team, this is the first release to include concrete language changes. The changes come from a large list of Go 2 proposals.
“We wanted our initial selection of proposals to be relatively minor and mostly uncontroversial, to have a reasonably high chance of having them make it through the process. The proposed changes had to be backward-compatible to be minimally disruptive since modules, which eventually will allow module-specific language version selection, are not the default build mode quite yet. In short, this initial round of changes was more about getting the ball rolling again and gaining experience with the new process, rather than tackling big issues, the Go team wrote in a post.
The initial list of proposals included general Unicode identifiers, binary integer literals, separators for number literals and signed integer shift counts. While general Unicode identifiers didn’t make the cut this time, binary integer literals were expanded, which led to an overhaul of the languages number literal syntax, the team explained. In addition, the team also added error inspection to the Go 2 draft design proposal and it has been partially accepted.
“The goals we have for Go today are the same as in 2007: to make software development scale. The three biggest hurdles on this path to improved scalability for Go are package and version management, better error handling support, and generics,” the team wrote.
Next, the team will focus on Go 1.14. The proposals the team will be looking at for this release include a built-in Go error check function, the ability to embed overlapping interfaces, ability to diagnose string(int) conversion in go vet, and the adoption of crypto principles.
“Unless there are strong reasons to not even proceed into the experimental phase with a given proposal, we are planning to have all these implemented at the start of the Go 1.14 cycle (beginning of August, 2019) so that they can be evaluated in practice. Per the proposal evaluation process, the final decision will be made at the end of the development cycle (beginning of November, 2019),” the team wrote.