Go 1.14 is coming and with that, it’s time for the team behind the Google-bred language to put feature proposals for version 1.15 up for feedback.
Aside from that, the Go team also revealed an alteration to the way language changes are proposed. From now on, devs wanting to file an idea for this kind of change will need to fill out a questionnaire. The step was added to the process, because language changes are costly to make and not all of the many proposals received are sufficiently thought through.
As a consequence, the team said “most language change proposals get rejected sooner or later, sometimes with minimal feedback”. Understandably, this causes quite a bit of frustration amongst those with a well constructed proposition. The new questionnaire is therefore meant to help reviewers with additional information and provide proposers with better guidelines. Depending on how this will pan out, the team is going to make adjustments to make it more helpful.
That being said, the enhancements being put to vote are made up of new vet checks and minor adjustments, reason being the team not wanting to “incrementally add new features without a long-term plan”. The first proposal aims to help Go newcomers confused by the way string(int) conversions work by throwing a vet error. The conversion is also part of the unicode/utf8 package and a total removal would not be backwards-compatible, hence this way of handling seems like the least invasive.
Another check that could be introduced in Go 1.15 is meant to flag up interface-interface type assertions where the interfaces have the same name and different signatures. Since these will fail at runtime anyway, a vet error helps to catch them early, without presenting the breaking change a compiler error would introduce. Meanwhile, the last proposal looks to fit compilers with a way of producing constant results when indexing or slicing expressions with all constant operands.
If this doesn’t look like much to you, it doesn’t mean there isn’t lots in the works. Modules and generics for example are under active development right now, which supposedly fall under the more discussed features. Those still looking for improved error handling however might have to detach themselves from that topic, since the Go team decided to put it onto the backburner for now. The last proposal had to be abandoned due to the high level of controversy it sparked.
Final decisions on the changes mentioned are planned to be made at the beginning of May, 2020. The final release of Go 1.15 is scheduled for August.