Skip to content

Zig-2021 vs Zig-1.0: Using year based version numbering #5053

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
ghost opened this issue Apr 15, 2020 · 5 comments
Closed

Zig-2021 vs Zig-1.0: Using year based version numbering #5053

ghost opened this issue Apr 15, 2020 · 5 comments
Labels
proposal This issue suggests modifications. If it also has the "accepted" label then it is planned.
Milestone

Comments

@ghost
Copy link

ghost commented Apr 15, 2020

It is a matter of preference, but I would like to see "year based" version numbering once zig is out of beta, with version numbers looking something like this:

  • Zig-2021-0.0, first release
  • Zig-2021-0.1, first bugfix release
  • Zig-2021-1.0, first improvement release
  • ...
  • Zig-2024-0.0, first "breaking" release.

Here are the associations I would get from different version numbers:

Zig-2021, the "standard" set by the first version of Zig, which is great for most use cases, keeps getting support, but was released ASAP to get something workable out there that people can depend upon (instead of C), while risking that the design decisions might not sufficiently cover all use cases.

Zig-2024, the refined standard that while making some breaking changes, could take real world usage into account and make final language adjustments that might be crucial for some (but not all) use cases.

Zig-1.0, The first version of Zig, but Zig-2.0 is gonna be twice as good! I will have to upgrade.

Zig-2.0. The second version of Zig, but Zig-3.0 is gonna be 50% better! I will have to upgrade.

TLDR: Incremental version numbering gives the impression of something bound to be replaced, while year based numbering gives the impression of something being a standard.

Final thoughts, if it would be very straight forward for an imagined Zig-2024 project to include (imagined) Zig-2021 packages as dependencies, then Zig could be a "stable" language, yet not have to stop evolving after the first release.

@mikdusan
Copy link
Member

mikdusan commented Apr 15, 2020

when 2021 is released, why would we need anything except bugfix release numbers? e. instead of 2021-1.0 just 2021-0 and next is 2021-1 . there will never be 2021-0.5. new features in a language are breaking once the language is stabilized.

  • hey Joe, here's my 2021-1.5 code, give it a shot. thanks Joe but I can't, we're at 2021-1.0

  • hey Joe, here's my 2021-1 code give it a shot. thanks Joe, works on our 2021-0 systems because they're FreeBSD and it doesn't have a need for -1 bugfix.

edit: I'll just add to summarize my thoughts: Zig has a stable number. Be it 1 or year based as 2021 or 2-digit year based 21, a delimiter and a maintenance number. And the choice of stable number { 1, 2021, 21 } delimiter { ., - } maintenance { int, hex, char } is cosmetic. My cosmetic pref is 21.int or 21.0 just because I don't much care about year 2100 and everyone before that will instantly now how new the language is.

@ghost
Copy link
Author

ghost commented Apr 15, 2020

With improvements, I was thinking in terms of improved compilation speed and so on. Not any changes to language semantics or syntax.

I agree that there's redundancy to it though. Zig versioning doesn't have to follow the breaking:enhancement:bugfix convention.

@zamadatix
Copy link

zamadatix commented Apr 16, 2020

As long as the future stable Zig release schedule guarantees there would never be 2 breaking releases in a year then I think it makes sense from the perspective "breaking" in `breaking:enhancement:bugfix" doesn't have to go up by 1 it just has to go up by some value. With that in mind year would seem perfectly acceptable and would help give extra context to how old a given version is.

@mikdusan
Copy link
Member

ah yes good point; the weakness of tying major to year is it precludes 2 major releases in a year. I'm strangely ok with that.

@daurnimator daurnimator added the proposal This issue suggests modifications. If it also has the "accepted" label then it is planned. label Apr 16, 2020
@andrewrk andrewrk added this to the 0.7.0 milestone Apr 22, 2020
@andrewrk
Copy link
Member

Closing in favor of status quo, which is semver.

The version number applies to:

  • the language
  • the standard library, including zig build API
  • command line options

Each with their own definition of what constitutes "breaking".

See also #350.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
proposal This issue suggests modifications. If it also has the "accepted" label then it is planned.
Projects
None yet
Development

No branches or pull requests

4 participants