Versionnage sémantique à partir de Ruby 2.1.0

Nous avons décidé de changer la façon d’incrémenter les versions de Ruby en utilisant le système des versions sémantiques à partir de Ruby 2.1.0.

Afin de fournir une gestion claire du schéma de versionnage, nous avons décidé de basculer progressivement à la politique suivante.

Politique de changement

Cette politique est basée sur une proposition d’un administrateur de ruby-lang.org, Hiroshi Shibata (@hsbt).

Schéma de versionnage

  • MAJEUR: incrémenté lorsque des changements incompatibles ne peuvent être sortis en version MINEURE
    • Réservée pour des occasions spéciales
  • MINEUR: incrémenté à chaque Noël, peut inclure des changements d’API incompatibles
  • MICRO: correction de bugs ou de failles de sécurité en conservant la compatibilité avec l’API
    • Peut être incrémenté plus de 10 fois (comme 2.1.11) et sortira tous les 2 ou 3 mois
  • PATCH: nombre de commits depuis la dernière version MINEURE (sera remise à 0 à chaque sortie d’une version MINEURE)

Schéma de gestion des branches

Nous maintiendrons les branches suivantes :

  • trunk
  • ruby_{MAJEUR}_{MINEUR}

La branche ruby_{MAJEUR}_{MINEUR} sera maintenue tant que des versions MICRO sortiront. Nous utiliserons des tags pour chaque version.

Compatibilité de l’API

Les critères suivants peuvent être qualifiés de changements incompatibles, nécessitant la sortie d’une version MINEURE:

  • Suppression d’une fonctionnalité de l’API écrite en C
  • Changements ou ajouts incompatibles avec l’API

Compatibilité de l’ABI

L’ABI respectera le schéma suivant : {MAJEUR}.{MINEUR}.0

Nous fournirons le maximum d’effort pour conserver la compatibilité de l’ABI avec la version MINEURE, par conséquent le numéro de version MICRO sera fixé à 0.

Références

Pour plus d’informations sur cette proposition, veuillez consulter les liens suivants :

Merci !

Je souhaiterais remercier personnellement tous ceux qui ont contribué à ce débat. Chaque décision permet d’avoir un Ruby plus stable et plus efficace.