-
-
Notifications
You must be signed in to change notification settings - Fork 1k
Release cycle zh CN
ASF uses common C# versioning with 4 numbers, written as A.B.C.D
. Given version is always frozen, pointing to a fixed source code it was built from (bundled together with the release). We do not intend to remove any previously-published version, as long as our hosting provider (GitHub) remains fine with preserving them for indefinite future, therefore you can safely rollback to any of them without a need of making self-copies.
In general in terms of ASF versioning, we're doing our best to follow semver versioning of MAJOR.MINOR.PATCH
on the 3 least significant numbers - B.C.D
. Those three numbers are directly related to ASF's code. The most significant A
number indicates changes with a scope that goes beyond ASF codebase itself, usually directly affecting the foundation of the program.
ASF as a project is aiming to have more or less one feature release per month, indicated by a bump of C
number. In order to make such release possible, we have smaller pre-releases dedicated to advanced users, which serve as smaller milestones of changes that are released on as-needed basis when there will be enough of changes since the last pre-release to focus on. Eventually, when a final pre-release will be determined to be stable and mature enough with no known critical regressions that should be corrected compared to previous stable release, it'll be marked as the new stable release, at the same time opening a new monthly cycle for the next one.
While we're doing our best to ensure that even our pre-releases are relatively stable, it should be noted that pre-releases aren't supposed to be used in any production environment. Pre-releases might have critical bugs and otherwise broken functionality, which is exactly why we're releasing them to begin with - so we can avoid all of that mess in our stable builds and offer reliable software. If you're unwilling to accept higher risk that comes from using potentially unstable software, please avoid using our pre-release builds and stick with our latest stable build instead, which is more appropriate for majority of users.
Depending on amount of changes in the cycle, usually there will be a single C
version dump (from previous stable), and D
bumps for every pre-release. However, when introducing changes with far bigger scope, especially breaking changes, the cycle might start from (or switch in the middle) to B
or even A
bump - such switch indicates that current release cycle has a potential to be more unstable than usual, and should be tested carefully. Keep in mind that semver changes we're making relate only to previously released stable version, we do not track versioning across pre-releases in a cycle themselves, which means that version 1.0.1.2
might have a new feature that 1.0.1.1
didn't have, as long as the previously marked stable release is from 1.0.0
family. Likewise, there could be major breaking changes even across two pre-releases from the same cycle, which is especially true when we're still deciding about the final shape of newly-introduced functionality or similar.
Version bump | Semver | Example of changes |
---|---|---|
A | Major .NET runtime changes, foundation changes, breaking changes that are beyond ASF's codebase | |
B | Major | Minor .NET runtime changes, breaking changes in ASF codebase, major code edits that go beyond minor classification |
C | Minor | New monthly cycles, usually introducing new functionalities, commands, configuration properties or other changes that do not break the existing setups |
D | Patch | New pre-releases that are part of existing cycle (indicated by more significant number), critical bugfixes that introduce no code changes beyond necessary |
请注意,新引入的功能和更改可能不会立刻被记录(例如在 Wiki 上),因为我们通常会在给定功能的代码编写完成的时候才编写文档(以便于我们在修改功能时节省编写文档的时间)。 Due to the fact that pre-release may contain work-in-progress code that doesn't have a final form yet, documentation may arrive at later stage of the development. 更新日志也是同样的,一些预览版的更新日志有时是不完整的。 因此,如果您决定使用预览版,就可能需要时刻关注 ASF 内部的提交。 Of course, lack of documentation applies only to pre-releases - each stable version must always have a complete changelog and documentation on the wiki the moment it's being released.
两个版本之间的详细更新日志总是可以在 GitHub 上比较——通过提交记录和代码变更。 在发布中,我们倾向于仅记录我们认为的上次稳定版与当前版本之间的重要更改。 这样的简短更新日志并不完整,所以如果您希望了解两个版本之间发生的详细更改——请通过 GitHub 实现。
ASF project is powered by our continuous integration process. Every build is supposed to be reproducible, therefore it should not be a problem to grab source (included in the release) of given version and compile yourself receiving the same result as the one available through our precompiled binaries. We typically avoid compiling releases ourselves, the released binaries come directly from our CI process.