-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Polygen e SemVer #17
Comments
Ah sì scusa, me l'avevi anche detto ma me l'ero perso tra i milioni di robette in piedi :) |
Ovviamente non abbiamo alcun obbligo a seguire la SemVer 2.0 — e Git e GitHub non impongono restrizioni ai tag di release (puoi usare quello che vuoi, nei limiti dei soliti caratteri validi per un identificativo). La scelta se adottare o meno SemVer 2.0 per Polygen dovrebbero prendere le mosse da altre considerazioni:
Il punto 2 è il più cruciale a mio avviso. Tramite scorsa rapida sul sito di OPAM e nella sua documentazione non ho trovato da nessuna parte riferimenti a SemVer, e da questo Issue direi che non l'uso di SemVer non è poi così diffuso in OPAM:
Ho però trovato un modulo per gestire la SemVer su OPAM: Sia quel che sia, credo concorderai che sarebbe comunque opportuno adottare uno schema di versione consistente nel tempo, di modo che i tag di release abbiano una loro coerenza. |
L'utilità di SemVer si rivela nell'uso di dipendenze esterne, dato che implementando dei constrain operators (come fanno Ruby e altri linguaggi) è possibile specificare l'inclusione di pacchetti entro un range specifico. P.es:
ecc. Ma visto che OPAM non impone la SemVer, e che non dispone dei costraint operators, non è che ci cambierebbe la vita usare SemVer. Però SemVer è intuitiva, specie per le API, quindi direi che se è in vista la creazione di una libreria statica/dinamica di Polygen, l'adozione di SemVer è una buona scelta. Alla fine, se ci limitiamo anche solo all'uso di |
Ho visto che al codice ripultito in
master
hai assegnato le versione1.0.6a
.Apro una parentesi riguardo SemVer, dato che si era discusso sulla possibilità di adottarne la notazione per le release di Polygen da questo repo in poi.
La versione
1.0.6a
non è valida in SemVer 2.0, perché i tre segmenti devono essere solo numerici, o0
o un numero qualsiasi non preceduto da zeri.L'unico modo per creare una release successiva alla
1.0.6
è creare la1.0.7
(o una maggiore). L'alternative è creare una prerelease della1.0.7
, per es1.0.7-a
o1.0.7-rc1
(o qualsasi schema si voglia adottare pre le prerelease).Il problema in questione è facilmente illustrabile tramite esempi pratici:
In SemVer una prerlease è sempre inferiore ad una release (ossia una versione che non contiene il segmento di pre-release). L'ordine di precedenza tra le prerelease (in una stessa versione) ha delle regole un po' arzigogolate:
Come accennavo, conviene sempre verificare la validità di una release SemVer tramite un validatore online:
http://jubianchi.github.io/semver-check/
che consente anche di verificare che la precedenza tra le varie prerelease sia corretta.
The text was updated successfully, but these errors were encountered: