1056N/AUpdated for
X.Org by Keith Packard, Kevin E. Martin, and Alan Coopersmith
1056N/AX.Org has adopted the same basic numbering scheme used by the XFree86 Project,
1056N/AInc. for their releases. The actual numbers are different, but the basic scheme
1056N/Ais the same. This document reflects the policy that
X.Org uses.
1056N/A━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1276N/AReleases, Development Streams, and Branches
1056N/ACurrent Version Numbering Scheme
1056N/AStarting with the X11R7.0 release, each module has its own version number. For
1056N/Athose without a natural starting point, the version numbers started at 1.0. For
1056N/Ainstance, the X11R7.0 release included the xorg-server 1.0 module. As modules
1056N/Aare released independently from the rest of the window system, the module
1056N/Aversion is the most accurate source of version information. For instance, there
1056N/Aare many X server releases in a year, but generally only one window system
1056N/Arelease, so an X server version number such as 1.7.7 is more informative than
1056N/Athe X11R7.5 version for the window system “katamari” release.
1056N/AUnfortunately, up through the X server 1.3 release, the X server used the
1056N/AWindow System version when reporting its version number in log files, the
1056N/A-version option, and the connection setup string (displayed by xdpyinfo). This
1056N/Awas corrected with X server 1.3, which caused the visible version number string
1056N/Ato appear to jump backwards from 7.2 to 1.3.
1276N/AReleases, Development Streams, and Branches
1056N/AX.Org has two release branches for the X server software, and several other
1056N/Amodules with active ongoing development. First is the trunk of the git
1056N/Arepository. This is the main development stream, where all new work and work
1056N/Afor future releases is done.
1056N/ASecond is the stable bugfix branch for the latest full release. It is created
1056N/Aaround the time of the release. The branch will be named for the release
1056N/Aversion, such as “server-1.9-branch” for the X server
1.9.x series of releases.
1056N/AFixes for bugs found in the release will be added to this branch (as well as
1056N/Athe trunk), and updates to this release (if any) will be cut from this branch.
1056N/ASimilar stable branches are present for previous full releases.
1056N/AThe
X.Org Foundation is planning to make full releases from the main
1056N/Adevelopment stream at regular intervals in the 6-12 month range. The feature
1056N/Afreezes for these releases will usually be 2-3 months before the release dates.
1056N/AThis general plan is a goal, not a binding commitment. The actual release
1056N/Aintervals and dates will depend to a large degree on the resource available to
1056N/Aalso on the availability of resources, and will generally be limited to serious
1056N/Abug and security fixes. New features will not usually be added in update
1056N/AAside from actual releases, snapshots of the active release branches are tagged
1056N/Ain the git repository from time to time. Each such snapshot has an identifiable
1056N/ACurrent Version Numbering Scheme
1056N/AStarting with the main development branch after X11R6.7, the
X.Org versions are
1056N/Anumbered according to the scheme outlined here.
1056N/AThe version numbering format is
M.m.P.s, where M is the major version number, m
1056N/Ais the minor version number, P is the patch level, and s is the snapshot
1056N/Anumber. Full releases have P set to zero, and it is incremented for each
1056N/Asubsequent bug fix release on the post-release stable branch. The snapshot
1056N/Anumber s is present only for between-release snapshots of the development and
1056N/AImmediately after forming a release stable branch, the patch level number for
1056N/Athe main development branch is bumped to 99, and the snapshot number is reset.
1056N/AThe snapshot number is incremented for each tagged development snapshot. The
1056N/Aenters feature freeze, the snapshot number is bumped to 900. A stable branch
1056N/Amay be created for the next full release at any time after the feature freeze.
1056N/Aincremented from there until the release is finalised. Each of these snapshots
1056N/Ais a “release candidate”. When the release is finalised, the minor version is
1056N/Aincremented, the patch level is set to zero, and the snapshot number removed.
1056N/AHere's an example which shows the version number sequence for the development
1056N/A1.7.99.1 The first snapshot of the pre-1.8 development branch.
1056N/A1.7.99.23 The twenty-third snapshot of the pre-1.8 development branch.
1056N/A1.7.99.900 The start of the 1.8 feature freeze.
1056N/A1.7.99.903 The third 1.8 release candidate.
1056N/A1.8.99.1 The first pre-1.9 development snapshot, which is the first main
1056N/A branch snapshot after creating the 1.8 stable branch.
1056N/AAfter a full release, the stable branch for the release will be maintained with
1056N/Abug fixes and important updates until the next full release. Any snapshots on
1056N/Athis branch are considered “release candidates,” which is indicated by setting
1056N/As to a number above 900. The snapshot number is incremented for each release
1056N/Acandidate until the update release is finalised. The patch level value (P) is
1056N/Aincremented for each update release.
1056N/AHere's an example which shows a version number sequence for a
1.8.x stable
1056N/A1.8.0.901 The first pre 1.8.1 snapshot.
1276N/A1.8.0.903 The third pre 1.8.1 snapshot, also known as the third 1.8.1 release
1056N/A1.8.1.901 The first pre 1.8.2 snapshot.
1056N/AThe
X.Org X servers report a VendorRelease value that matches the
X.Org version
1056N/Anumber. There have been some cases of releases where this value wasn't set
1056N/Acorrectly. The rules for interpreting this value as well as the known
1056N/Aexceptions are outlined here.
1056N/AAs noted above, the version reported by VendorRelease changed from the window
1056N/Asystem version to the X server version starting in the xorg-server 1.3 release.
1056N/AFor all
X.Org development and release versions using this numbering scheme, the
1056N/AVendorRelease value is MMmmPPsss. That is, version
M.m.P.s has VendorRelease
1056N/Aset to M * 10000000 + m * 100000 + P * 1000 + s.
1056N/AVendorRelease information can be interpreted.
1056N/A int vendrel = VendorRelease(dpy);
1056N/A printf("%d.%d.%d", vendrel / 10000000,
1056N/A printf(".%d", vendrel % 1000);