Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Software versioning
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==== Change significance ==== In some schemes, sequence-based identifiers are used to convey the significance of changes between releases. Changes are classified by significance level, and the decision of which sequence to change between releases is based on the significance of the changes from the previous release, whereby the first sequence is changed for the most significant changes, and changes to sequences after the first represent changes of decreasing significance. Depending on the scheme, significance may be assessed by lines of code changed, function points added or removed, the potential impact on customers in terms of work required to adopt a new version, risk of bugs or undeclared breaking changes, degree of changes in visual layout, the number of new features, or almost anything the product developers or marketers deem to be significant, including marketing desire to stress the "relative goodness" of the new version. <!-- [[Semantic versioning]] and [[SemVer]] redirect here -->==== Semantic versioning ==== [[File:Semver.jpg|thumb|Semantic versioning three-part version number]] '''{{Visible anchor|Semantic versioning}}''' (aka '''SemVer''')<ref name="semver"> Preston-Werner, Tom (2013). [https://semver.org/ Semantic Versioning] 2.0.0. Creative Commons. Retrieved from https://semver.org/spec/v2.0.0.html. </ref> is a widely-adopted version scheme<ref>{{cite book|last1=Lam|first1=Patrick|last2=Dietrich|first2=Jens|last3=Pearce|first3=David J.|date=August 16, 2020|title=Proceedings of the 2020 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software|chapter=Putting the semantics into semantic versioning |pages=157β179 |doi=10.1145/3426428.3426922 |arxiv=2008.07069|isbn=9781450381789 |s2cid=221139849 }}</ref> that encodes a version by a three-part version number (Major.Minor.Patch), an optional pre-release tag, and an optional build meta tag. In this scheme, risk and functionality are the measures of significance. Breaking changes are indicated by increasing the major number (high risk); new, non-breaking features increment the minor number (medium risk); and all other non-breaking changes increment the patch number (lowest risk). The presence of a pre-release tag (-alpha, -beta) indicates substantial risk, as does a major number of zero (0.y.z), which is used to indicate a work-in-progress that may contain any level of potentially breaking changes (highest risk). As an example of inferring compatibility from a SemVer version, software which relies on version 2.1.5 of an API is compatible with version 2.2.3, but not necessarily with 3.2.4. Developers may choose to jump multiple minor versions at a time to indicate that significant features have been added, but are not enough to warrant incrementing a major version number; for example, [[Internet Explorer 5]] from 5.1 to 5.5 or [[Adobe Photoshop]] 5 to 5.5. This may be done to emphasize the value of the upgrade to the software user or, as in Adobe's case, to represent a release halfway between major versions (although levels of sequence-based versioning are not necessarily limited to a single digit, as in [[Blender (software)|Blender]] version 2.91 or ''[[Minecraft]]'' Java Edition starting from 1.7.10). A different approach is to use the ''major'' and ''minor'' numbers along with an alphanumeric string denoting the release type, e.g. "alpha" (a), "beta" (b), or "release candidate" (rc). A [[software release train]] using this approach might look like 0.5, 0.6, 0.7, 0.8, 0.9 β 1.0b1, 1.0b2 (with some fixes), 1.0b3 (with more fixes) β 1.0rc1 (which, if it is stable ''enough''), 1.0rc2 (if more bugs are found) β 1.0. It is a common practice in this scheme to lock out new features and breaking changes during the release candidate phases and, for some teams, even betas are locked down to bug fixes only, to ensure convergence on the target release. Other schemes impart meaning on individual sequences: :''<nowiki>major.minor[.build[.revision]]</nowiki>'' (example: ''1.2.12.102'') :''<nowiki>major.minor[.maintenance[.build]]</nowiki>'' (example: ''1.4.3.5249'') Again, in these examples, the definition of what constitutes a "major" as opposed to a "minor" change is entirely subjective and up to the author, as is what defines a "build", or how a "revision" differs from a "minor" change. Shared libraries in Solaris and [[Linux]] may use the ''<nowiki>current.revision.age</nowiki>'' format where:<ref name="libinterface">{{cite web|url=http://static.usenix.org/publications/library/proceedings/als00/2000papers/papers/full_papers/browndavid/browndavid_html/|title=Library Interface Versioning in Solaris and Linux}}</ref><ref>{{cite web |title=Libtool's versioning system |url=https://www.gnu.org/software/libtool/manual/libtool.html#Versioning |website=Libtool documentation}}</ref> :''current'': The most recent interface number that the library implements. :''revision'': The implementation number of the current interface. :''age'': The difference between the newest and oldest interfaces that the library implements. This use of the third field is specific to [[libtool]]: others may use a different meaning or simply ignore it. A similar problem of relative change significance and versioning nomenclature exists in book publishing, where [[edition (book)#Revised edition|edition numbers or names]] can be chosen based on varying criteria. In most proprietary software, the first released version of a software product has version 1.{{Citation needed|date=December 2020}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)