Skip to Content
DocumentationVersions and compatibility

Versions and compatibility

$ nio version nio 0.1.0 darwin/arm

nio --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.