In systems with many dependencies, releasing new package versions can quicklybecome a nightmare. If the dependency specifications are too tight, you are indanger of version lock (the inability to upgrade a package without having torelease new versions of every dependent package). If dependencies arespecified too loosely, you will inevitably be bitten by version promiscuity(assuming compatibility with more future versions than is reasonable).Dependency hell is where you are when version lock and/or version promiscuityprevent you from easily and safely moving your project forward.
As a solution to this problem, we propose a simple set of rules andrequirements that dictate how version numbers are assigned and incremented.These rules are based on but not necessarily limited to pre-existingwidespread common practices in use in both closed and open-source software.For this system to work, you first need to declare a public API. This mayconsist of documentation or be enforced by the code itself. Regardless, it isimportant that this API be clear and precise. Once you identify your publicAPI, you communicate changes to it with specific increments to your versionnumber. Consider a version format of X.Y.Z (Major.Minor.Patch). Bug fixes notaffecting the API increment the patch version, backward compatible APIadditions/changes increment the minor version, and backward incompatible APIchanges increment the major version.
Software using Semantic Versioning MUST declare a public API. This APIcould be declared in the code itself or exist strictly in documentation.However it is done, it SHOULD be precise and comprehensive.
A normal version number MUST take the form X.Y.Z where X, Y, and Z arenon-negative integers, and MUST NOT contain leading zeroes. X is themajor version, Y is the minor version, and Z is the patch version.Each element MUST increase numerically. For instance: 1.9.0 -> 1.10.0 -> 1.11.0.
Minor version Y (x.Y.z x > 0) MUST be incremented if new, backwardcompatible functionality is introduced to the public API. It MUST beincremented if any public API functionality is marked as deprecated. It MAY beincremented if substantial new functionality or improvements are introducedwithin the private code. It MAY include patch level changes. Patch versionMUST be reset to 0 when minor version is incremented.
Major version X (X.y.z X > 0) MUST be incremented if any backwardincompatible changes are introduced to the public API. It MAY also include minorand patch level changes. Patch and minor versions MUST be reset to 0 when majorversion is incremented.
A pre-release version MAY be denoted by appending a hyphen and aseries of dot separated identifiers immediately following the patchversion. Identifiers MUST comprise only ASCII alphanumerics and hyphens[0-9A-Za-z-]. Identifiers MUST NOT be empty. Numeric identifiers MUSTNOT include leading zeroes. Pre-release versions have a lowerprecedence than the associated normal version. A pre-release versionindicates that the version is unstable and might not satisfy theintended compatibility requirements as denoted by its associatednormal version. Examples: 1.0.0-alpha, 1.0.0-alpha.1, 1.0.0-0.3.7,1.0.0-x.7.z.92, 1.0.0-x-y-z.--.
Build metadata MAY be denoted by appending a plus sign and a series of dotseparated identifiers immediately following the patch or pre-release version.Identifiers MUST comprise only ASCII alphanumerics and hyphens [0-9A-Za-z-].Identifiers MUST NOT be empty. Build metadata MUST be ignored when determiningversion precedence. Thus two versions that differ only in the build metadata,have the same precedence. Examples: 1.0.0-alpha+001, 1.0.0+20130313144700,1.0.0-beta+exp.sha.5114f85, 1.0.0+21AF26D3----117B344092BD.
Precedence for two pre-release versions with the same major, minor, andpatch version MUST be determined by comparing each dot separated identifierfrom left to right until a difference is found as follows:
If all of this sounds desirable, all you need to do to start using SemanticVersioning is to declare that you are doing so and then follow the rules. Linkto this website from your README so others know the rules and can benefit fromthem.
Use your best judgment. If you have a huge audience that will be drasticallyimpacted by changing the behavior back to what the public API intended, thenit may be best to perform a major version release, even though the fix couldstrictly be considered a patch release. Remember, Semantic Versioning is allabout conveying meaning by how the version number changes. If these changesare important to your users, use the version number to inform them.
Deprecating existing functionality is a normal part of software development andis often required to make forward progress. When you deprecate part of yourpublic API, you should do two things: (1) update your documentation to letusers know about the change, (2) issue a new minor release with the deprecationin place. Before you completely remove the functionality in a new major releasethere should be at least one minor release that contains the deprecation sothat users can smoothly transition to the new API.
Quick search helps you quickly navigate to a particular category. It searches only titles, inclusions and the index and it works by starting to search as you type and provide you options in a dynamic dropdown list.
You may use this feature by simply typing the keywords that you're looking for and clicking on one of the items that appear in the dropdown list. The system will automatically load the item that you've picked.
The colored squares show from where the results are found.
(green:Title, blue:inclusions, orange:index, red:ICD code)
You don't need to remeber the colors as you may hover your mouse on these squares to read the source.
The legacy Linux package repositories (apt.kubernetes.io and yum.kubernetes.io AKA packages.cloud.google.com)
have been frozen starting from September 13, 2023 and are going away in January 2024, users must migrate.
Please read our announcement for more details.
Kubernetes versions are expressed as x.y.z, where x is the major version,y is the minor version, and z is the patch version, followingSemantic Versioning terminology. For more information, seeKubernetes Release Versioning.
The Kubernetes project maintains release branches for the most recent three minor releases(1.29, 1.28, 1.27).Kubernetes 1.19 and newer receive approximately 1 year of patch support.Kubernetes 1.18 and older received approximately 9 months of patch support.
Applicable fixes, including security fixes, may be backported to those three release branches,depending on severity and feasibility. Patch releases are cut from those branches at aregular cadence, plus additional urgent releases, when required.
kube-controller-manager, kube-scheduler, and cloud-controller-manager must not be newer than thekube-apiserver instances they communicate with. They are expected to match the kube-apiserver minor version,but may be up to one minor version older (to allow live upgrades).
The supported version skew between components has implications on the orderin which components must be upgraded. This section describes the order inwhich components must be upgraded to transition an existing cluster from version1.28 to version 1.29.
Upgrade kube-controller-manager, kube-scheduler, andcloud-controller-manager to 1.29. There is norequired upgrade order between kube-controller-manager, kube-scheduler, andcloud-controller-manager. You can upgrade these components in any order, oreven simultaneously.
760c119bf3