Versions and compatibility
$ nio version
nio 0.1.0 darwin/armnio --version says the same thing. The host is on the line so that a bug
report names it without anybody having to ask.
What the number promises
Nio is at 0.1.0, and the compatibility promise is not yet in force.
Until 1.0 a release may change the language, and CHANGELOG.md is where
each change is written down.
From 1.0, this holds:
A program that compiles and runs correctly with Nio 1.0 will continue to compile and run correctly, unchanged, with every 1.x release.
That is Go’s Go 1 promise, copied deliberately. It covers the language as
specs.md defines it, everything every built-in module exports, and
the command line’s flags and exit statuses.
It does not cover: a security fix, behaviour the specification never defined, a defect against the specification, the compiler’s own internals, or how fast a program runs and how a diagnostic is worded.
COMPATIBILITY.md, in the repository root, is the full statement — including
the list of what has to be true before 1.0 is tagged.
Version numbers
MAJOR.MINOR.PATCH. Before 1.0 the minor number moves when the language
does. From 1.0 the major number moves only for a change the promise above
does not allow, which is a thing that should approximately never happen.