The numerology of the build, redux


I noted some time ago that starting in Windows Vista, final build numbers must be a multiple of 16. Why is that?

The version number comes in four parts, each consisting of a 16-bit integer: major.minor.build.revision. The major and minor numbers correspond to the programmatic operating system version. For example, poseurs refer to Windows 7 as version 6.1. because its programmatic major version is 6 and its programmatic minor version is 1. Nobody at Microsoft calls it that; we just call it Windows 7.

The build number generally increases by one each time the build lab spins up a build, although there are occasional jumps and gaps, as I noted in the linked article.

The revision number is under the control of the servicing team. And here's what they needed to encode:

  • Four bits for the service pack number, where zero represents RTM.

  • One bit to indicate whether this is a non-milestone build. (And no, I don't know what that means.)

  • One bit to indicate whether this is a build intended to be released to the public.

  • Two bits to indicate which release track the build is from. 0 = GDR, 1 = LDR, 2 = (unused), 3 = private build.

  • Twelve bits to encode the servicing build number.¹

Add this all up and you'll see that this requires 20 bits. But the revision field is only 16 bits wide. Therefore, the servicing team needs to find 4 additional bits somewhere, and by requiring that the RTM build number be a multiple of 16, they get their extra four bits.

One of the changes to the servicing stack in Windows 10 is that the servicing team redesigned their version numbering system so that they need only 16 bits of information rather than 20. I don't know the details of how they accomplished it; all I know is that they no longer need to reserve the bottom four bits of the build number. In other words, the build number no longer needs to be a multiple of 16.

Most people in the Windows division were unaware of this change to the servicing stack. When the announcement came down that the release management team were hoping that build 10584 would be the final build for the November 2015 update, many people didn't believe it. "That can't be the final build. It's not a multiple of 16!"²

¹ The fact that this provides enough daily builds to cover the five-year mainstream support lifecycle is probably not a coincidence.

² Yes, the actual final build for the November 2015 update is 10586. I guess the release management team decided to take two more fixes.

Comments (12)
  1. Brian_EE says:

    The Windows Confidential article that you link to redirected to a page that said "You are accessing sensitive information, you must log in".

    Quick, someone delete that article from the search engine cached copies!

    1. alegr1 says:

      Quick, someone delete your cached credentials from your browser!Or open in private/incognito window.

  2. Mike Dimmick says:

    There are no service packs for Windows 10, only newer builds, so the service pack number is no longer required. There are no longer different release tracks, all updates are cumulative. That gets 6 bits back even before you consider the fairly useless non-milestone and public bits.

    1. Alexander S. says:

      So they removed the bits representing the service pack number, which allowed the build number to expand to 16 bits from 12 bits.

  3. smf says:

    I assumed November 2015 update was 10586 because of the Pentium.

    1. parkrrrr says:

      I am given to understand that it is all about those.

    2. DWalker says:

      "Because of the Pentium?" What does that mean, exactly? Was there a floating point calculation bug in the Pentium? :-)

      1. smf says:

        Intel were told they couldn't patent the number 486, so rather than use 586 for the next chip they used Pentium.
        Although people still used 586 & 686 for the Pentium and Pentium Pro & other manufacturers also used the numbers too.

        Maybe it's just a coincidence though.

  4. BZ says:

    How do fractional builds work? Like my current build is 10586.164

    1. 164 is the revision. See major.minor.build.revision.

  5. Poseurs? You bet.

    The other day, this guy comes to Wikipedia and says, hey I know the sources keep saying NT 10 but the actual version number of Windows 10 is NT 6.4! Fortunately, people who knew better shut him up.

    Somehow, there are a lot of people who think Wikipedia should have a concise but comprehensive version number listing for Windows versions. At least that has *some* uses. But sprawling lists of build numbers and revision numbers? Those belong to idiots who can't even imagine writing a Featured Article and instead fill articles with junk. Most of them claim to be Microsoft employees too. When they do, this is the ticket for reverting their actions because per Wikipedia's COI policy, a Microsoft employee is not allowed to edit a Microsoft-related article. (Real Microsoft employees seem to be aware of this.)

  6. DWalker says:

    One bit to rule them all, ...

Comments are closed.

Skip to main content