-
Notifications
You must be signed in to change notification settings - Fork 52
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
Move to a more ordinary versioning scheme or document current scheme #113
Comments
The The command
Will also print this documentation. We will reference this request in the TODO list under issue #103. Thanks for the feedback. As this is part of the TODO for version 3, we will now close this issue with our thanks. |
Just saw this. Wished to comment. A 4 part version is not uncommon, unique, or unusual in any way. Many software over the years have used 4 part versions. Even the CMake build system supports 4 parts documented as |
You made a number of good points, @Leif-W Thanks 🙏 for sharing. For calc version 3, we have a planning issue #103 where, in our analysis, a 3-level version is being considered. The current model is that the top level version changes whenever the underlying object memory layout changes. Calc version 3 does involve a change to the way numbers are stored in memory (at the request of some with hardware acceleration support, BTW) so the top level version is changing from 2 to 3. The second level version would change whenever new API interfaces such as new builtin functions are introduced. So, say after version 3 is released we wish to add a new builtin function called
The release of the same memory model with a new API would have us change the version number to "3.1". Those with a dependency on memory layout (such as with those with hardware acceleration) would know that version "3.1" would NOT change the memory model. However folks would know that the API did change (due to the new builtin function called Then of course we have releases, bug fixes, documentation improvements, etc. Such would be released as "3.1.0", "3.1.1", "3.1.2", etc. So our "promise", if you will, is that while calc remains at version 3, all 3.x.y releases will have compatible if not identical memory footprints/layouts. And while calc remains at version "3.a", all 3.a.b releases will have the same API/builtin function name space. Your point about the used of 4-level version systems, @Leif-W, is well taken. In our view, 4-level version systems have their advantages and uses. However, calc might not need such 4-level versions system given the above "promises". We certainly could use 4-levels, but we don't see a compelling reason at this time. Issuing a new, for example, calc version 3.2.4 after version 3.2.3 would be for some bug fix or documentation improvement over version 3.2.3. Version 3.2.4 would have the same memory model and the same API as version 3.2.3. That's our current thinking on future calc version numbers. We remain open to suggestions and feedback, as always is welcome 🙏. UPDATE 0Your point, @Leif-W, about high priority and low priority bug fixes is a good one. Nevertheless calc might not need such a fine granularity on fixes to use a 4-level version system. However, if we did find ourselves in need of such fix priorities, we could certainly change from a 3-level to 4-level if needed. |
calc currently uses a unique (or perhaps merely very unusual) four part version scheme. I've been using calc for many years and I'm not actually sure I know what the versions mean.
A three part version scheme (major.minor.patch, where major is incremented for incompatible changes or "big" changes, minor is incremented for feature additions, patch for pure bug fixes) or two part (where the first part is incremented when features are changed and the second part is incremented for bug fixes) would not require explanation to most users.
Failing that, it would be nice to get an explanation in the README and docs about what the version numbers mean.
The move to Calc 3 might be a good time for this.
The text was updated successfully, but these errors were encountered: