1.9.0 diventa 1.10.0, non 2.0.0. Sotto 1.0.0 l’API non è stabile. Una versione già rilasciata non si modifica. 1.0.0-alpha viene prima di 1.0.0. Dopo il + la precedenza non cambia.
1.10.0 non è «uno virgola dieci» dopo 1.9.0. Nel Versionamento Semantico 2.0.0 i tre numeri crescono da soli: 1.9.0 diventa 1.10.0, poi 1.11.0. Non è il corso di sintassi PHP che sta già in archivio. Verifica del 12 ottobre 2026 su semver.org/lang/it/, specifica 2.0.0.
In breve: MAJOR quando l’API pubblica si rompe, MINOR quando si aggiunge qualcosa di compatibile, PATCH per un bug compatibile. La 0.y.z non è stabile. La 1.0.0 definisce l’API pubblica. Una versione già rilasciata non si modifica: si pubblica un numero nuovo. 1.0.0-alpha viene prima di 1.0.0. I metadati dopo il + non cambiano la precedenza.
Cosa trovi in questo articolo
Tre numeri, non un decimale
La specifica Versionamento Semantico 2.0.0, rilettura 12 ottobre 2026: un numero normale DEVE avere la forma X.Y.Z. X, Y e Z sono interi non negativi e NON DEVONO avere zeri iniziali. X è major, Y è minor, Z è patch. Ogni elemento si incrementa per conto suo. L’esempio in pagina è esplicito: 1.9.0 → 1.10.0 → 1.11.0.
MAJOR quando si modifica l’API in modo non retrocompatibile. MINOR quando si aggiungono funzionalità retrocompatibili. PATCH quando si correggono bug retrocompatibili. Le parole DEVE e NON DEVE, scrive la specifica, vanno lette come nella RFC 2119. Il cluster è Programmazione. La lezione 1 di PHP insegna la sintassi del linguaggio, non come si numera un rilascio.
0.y.z, 1.0.0, niente modifiche in place
Il software che usa SemVer DEVE dichiarare un’API pubblica: nel codice oppure, in modo rigoroso, nella documentazione. Deve essere precisa e completa. Senza quell’API i tre numeri non comunicano nulla.
La major zero (0.y.z) è per lo sviluppo iniziale. Qualunque cosa può cambiare in qualsiasi momento. L’API pubblica non va considerata stabile. La versione 1.0.0 definisce l’API pubblica. Da lì in poi gli incrementi seguono le regole sopra.
Una volta rilasciata, una versione NON DEVE essere modificata nei contenuti. Qualsiasi modifica DEVE uscire come versione nuova. Ricompilare lo stesso tag con bit diversi non è un PATCH: è un rilascio che non ha numero.
| Numero | Cosa comunica (spec 2.0.0) |
|---|---|
| 0.y.z | Sviluppo iniziale. API non stabile. |
| 1.0.0 | Definisce l’API pubblica. |
| PATCH (Z) | Bugfix retrocompatibile. Non tocca il contratto. |
| MINOR (Y) | Funzionalità aggiunta in modo retrocompatibile. Si azzera il senso di «solo patch», non si scrive 1.10 come se fosse 1,10. |
| MAJOR (X) | Modifica non retrocompatibile dell’API pubblica. |
Pre-release e build
La precedenza si calcola nell’ordine major, minor, patch, pre-release. I metadati di build non entrano nel confronto. A parità di X.Y.Z, una pre-release ha precedenza inferiore alla versione normale: 1.0.0-alpha < 1.0.0. Tra pre-release, gli identificatori solo numerici si confrontano come numeri, quelli con lettere in ASCII; un identificatore numerico pesa meno di uno non numerico. L’esempio in pagina, da citare intero quando si ordina una coda di CI:
1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0.
I metadati di build POSSONO seguire patch o pre-release dopo un +, identificatori ASCII separati da punti. Vanno ignorati nella precedenza: 1.0.0+20130313144700 e 1.0.0 hanno la stessa precedenza. Esempi in specifica: 1.0.0-alpha+001, 1.0.0+20130313144700, 1.0.0-beta+exp.sha.5114f85. Il + non è un quarto numero di compatibilità.
Errori da evitare
Ordinare 1.9 e 1.10 come decimali: dopo 1.9.0 viene 1.10.0, non 2.0.0.
Chiamare stabile una 0.9.0 solo perché «manca poco alla 1».
Riscrivere i bit di un tag già pubblicato e lasciargli lo stesso numero.
Trattare 1.0.0-rc.1 come successiva a 1.0.0: nella specifica viene prima.
Far decidere a un hash dopo il
+quale build è «più nuova».Mettere zeri iniziali (01.2.3): la forma normale li vieta.
In sintesi
SemVer 2.0.0 è un contratto su X.Y.Z, non un decimale e non una lezione di PHP. Sotto 1.0.0 l’API non è stabile. Una versione rilasciata non si ritocca. Alpha precede il numero pulito; il testo dopo + non conta nell’ordine. Si rilegge semver.org/lang/it/ prima di fissare la policy di rilascio. Verifica del 12 ottobre 2026.