Versions and compatibility
zaytunc --version reports two numbers, and they promise different things:
zaytunc 1.1.0 (writes bytecode format 16)
The version is a promise about your source. It follows the ordinary three-part rule:
major (1.x → 2.0) | a game that compiled before may not compile now. Something was taken away or made stricter, and the changelog says what, at every site the compiler can name. |
minor (1.0 → 1.1) | new things to write. Everything that compiled before and worked still compiles and still means the same. |
patch (1.1.0 → 1.1.1) | a fix. Nothing new to write. |
So a game written against 1.0 compiles unchanged with any 1.x. That is the whole of the promise, and it is the one worth relying on: keep your .zaytun source and a version bump is a recompile.
"And worked" is doing work in that row. A minor release may start refusing something that compiled and then did nothing — a verb named quit, which the player answers itself before the game's verb table is ever consulted, or a write to a flag nobody declared, inside one of the handlers the reference check used to walk past. Refusing those is the compiler learning to say what was already true, and a game it stops was already not doing what it looked like it was doing. Each one is in the changelog, named at the site the compiler can point to. What a minor release will not do is take away something that worked.
The format number is a promise about the compiled file, and it is a weaker one. A player reads a range of formats and says so; when the floor equals the current format — which is the case today — a .zaytunb from an older compiler will not play and is told why. See Versions, and what a player will accept for what that range is now and how it moves.
The practical consequence, stated once: a .zaytunb is a build artefact, not an archive. Give people the game file to play by all means, but the thing to keep, publish and back up is the source it was built from. That is also what the games on the site do — every published .zaytunb there is rebuilt from its .zaytun and compared byte for byte, so none of them can drift away from a source that still exists.