Go 2 transition
https://github.com/golang/proposal/blob/master/design/28221-go2-transitions.md
- Proposal how to make incompatible changes Go1->Go2 while breaking as little as possible
- background about C versions changed (_Complex + defines in headers; version for the compler -std=c90)
- Backward compatibility matters.
- Breaking compatibility in small ways is OK, as long as people can spot the breakages through compiler options or compiler errors.
- Compiler options to select specific language/library versions are useful, provided code compiled using different options can be linked together.
- Unlimited undefined behavior is confusing for users.
- C++: added several new keywords
- A new version may have a very different feel while remaining backward compatible.
- Java:
- Be aware of how compatibility issues may restrict future changes.
- Python
- Python3 was released 2008 -> 2018 still incomplete move
- main problem - lack of backward compatibility (print: statement -> function, string -> unicode)
- libraries must support Python2 and Python3 simultaneously (to support programs in both languages)
- => Backward compatibility is essential.
- Proposal
- Separate Go language version from standard library version
- Language addition is