Microsoft Windows Build String Analysis


Nota: l’articolo è stato aggiornato dopo la pubblicazione iniziale

Forse (ma forse anche no) a qualcuno di voi sarà venuto un dubbio leggendo i recenti rumors su Windows 8 (e quelli di tre anni fa su Windows 7): “Ma perché tanto rumore per un numero di versione?” In effetti la domanda è legittima.. Beh, sappiate che la storia è lunga e non è affatto scontata.. mi sono attivato per saperne di più. Quello che riporto è in parte una traduzione di altri articoli e in parte alcune mie considerazioni aggiuntive..

Prima di tutto una precisazione generale che vale ancora oggi: la funzione GetVersion() delle API di Windows restituisce un intero a 32 bit, dove il primo bit è ad uso interno, i successivi 8 bit rappresentano il numero di Major Version (6 per Windows 8), altri 8 bit per il numero di Minor Version (2 per Windows 8) e gli ultimi 15 bit rappresentano il Build Number (e, se ho capito bene, anche in questo caso il primo bit è riservato e ne restano 14)

Tempi addietro, quando Windows NT muoveva i primi passi, il sistema era semplice: ogni volta che si compilava una nuova build si aumentava di una unità il valore precedente.

Le cose iniziarono a cambiare con Windows 2000 e soprattutto con Xp (dove si decise che il numero di Build finale dovesse essere divisibile per 100).

Il maggior cambiamento avvenne, neanche a dirlo, con Windows Vista. Da quel momento in poi infatti il QFE (Quick Fix Engineering, che si occupa di pubblicare gli Hotfix o Limited Distribution Release) decise che gli ultimi 4 bit che identificano il numero di versione dovessero essere riservati alla versione del Service Pack (0000 per la versione iniziale, 0001 per il SP1 e così via fino ad un ipotetico SP15) e che, oltre ad essere divisibile per 100, il numero di build della RTM dovesse essere anche divisibile anche per 16 (perché il Target Build Number, ovvero le prime due cifre, deve esserlo). Va da se che, così facendo, le “build candidate” a diventare versioni finali hanno salti di 400 unità (Windows 7 ha avuto le ultime build di sviluppo nel ramo 7200/7300 ed è stata dichiarata RTM con la versione 7600). In realtà c’è un ulteriore step: le versioni candidate a diventare RTM, quelle cioè che sono sottoposte a votazione (come sta accadendo oggi con Windows 8), presentano anche un numero di sotto-build che, sempre a richiesta del QFE, parte da 16384 (2^14) e aumenta di una unità alla volta per i bug-fix senza più vincoli. Questo particolare valore serve per identificare uno “Start Point” da cui partire per enumerare gli aggiornamenti di tipo GDR (General Distribution Release) e LDR (Limited Distribution Release) dedicati rispettivamente agli Updates e agli Hotfix. Questo valore di Sub-Build viene quindi incrementato ad ogni aggiornamento e, dato che i rami dello sviluppo sono diversi, sarà diversa anche la “classe” del Sub-Build number (es. 16xxx e 20xxx per Windows 7 SP0). Quando viene pubblicato un Service Pack questi due rami si “riuniscono” per poi dividersi nuovamente in nuove classi (es. 17xxx e 21xxx per Windows 7 SP1).

Se tutto questo è vero allora ecco spiegato quello che sta avvenendo con Windows 8: l’ultima build di sviluppo apparteneva al ramo 85xx, poi è stato fatto un salto alla build 8888.16384 che, per quanto suggestiva, non rispettava la regola del “16” ed ecco che arriviamo alla tanto miseriosa Build 9200.16384 (la scelta valida successiva).

Un altro paio di annotazioni:

Windows Vista/Server 2008 ha avuto come numero di Build 6.0.6000.16386
Windows 7/Server 2008R2 ha avuto come numero di Build 6.1.7600.16385 (6000+1600)

Se seguiamo questo trend e aggiungiamo 1600 a 7600 otteniamo proprio 9200.

Questo numero ritorna anche in questa strana combinazione:

Windows Vista  > 6000 / 16 = 375
Windows 7 > 7600 / 16 = 475
Windows 8 ?  > 9200 / 16 = 575

Strano vero?

Chissà se le previsioni saranno confermate.. per ora vi lascio con un Trivial: abbiamo detto che GetVersion() può restituire come massimo valore di Build il numero 32767. Cosa succederà dopo? E, ancora prima, cosa succederà quando il numero di Build supererà la soglia di 9999 (i programmi attuali sono tarati per identificare quattro cifre..)?

Lascio a voi i commenti per qualsiasi aggiunta / correzione..

Fonti secondarie: WinUnleaked

[Omnia / Luca Zaccaro – via Neowin]


2 risposte a “Microsoft Windows Build String Analysis”

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *