Geschrieben von zzak am 21.12.2013
Übersetzt von Quintus
Wir haben uns entschieden, ab Ruby 2.1.0 zu einer eher semantischen Versionierung zu wechseln.
Um ein besser organisiertes und ordentlich nutzbares Versionierungsschema für Ruby zur Verfügung zu stellen, haben wir uns dafür entschieden, die folgenden Richtlinien umzusetzen.
Richtlinienänderungen
Die Richtlinie basiert auf einem Vorschlag des Administrators von ruby-lang.org, Hiroshi Shibata (@hsbt).
Versionierungsschema
MAJOR
: Wird erhöht, wenn es inkompatible Änderungen gibt, die nicht per MINOR veröffentlicht werden können.- Für besondere Ereignisse reserviert.
MINOR
: Wird jedes Jahr an Weihnachten erhöht, kann API-kompatibel sein.TEENY
: Sicherheits- oder Bugfix, der API-Kompatibilität gewährleistet.- Kann größer als 10 werden (z.B.
2.1.11
) und wird etwa alle 2-3 Monate erhöht.
- Kann größer als 10 werden (z.B.
PATCH
: Anzahl der Commits seit dem letztenMINOR
-Release (wird auf 0 zurückgesetzt, wennMINOR
erhöht wird).
Branching-Schema
Wir werden weiterhin die folgenden Zweige unterstützen:
- trunk
ruby_{MAJOR}_{MINOR}_{TEENY}
API-Kompatibilität
Die folgenden Dinge können als inkompatible Änderung markiert werden
und somit eine Erhöhung der MINOR
-Version erforderlich machen:
- Entfernen von API-Features auf C-Ebene
- Nicht rückwärtskompatible Änderungen und Erweiterungen
ABI-Kompatibilität
Das ABI wird dem folgenden Schema folgen: {MAJOR}.{MINOR}.0
Wir bemühen und so gut wie möglich (best effort), die
ABI-Kompatibilität innerhalb derselben MINOR
-Veröffentlichungsreihe
aufrecht zu erhalten, daher wird TEENY
auf 0 festgehalten.
Referenzen
Sie können die folgenden Beiträge lesen, um mehr über diesen Vorschlag zu erfahren:
- Einführung eines semantischen Versionierungsschemas und einer Branching-Richtlinie
- Akzeptierter Vorschlag auf Englisch
- Akzeptierter Vorschlag auf Japanisch
Vielen Dank!
Ich möchte mich an dieser Stelle persönlich bei jedem bedanken, der zu dieser Diskussion beigetragen hat. Jeder Schritt, den wir unternehmen, ist einer hin zu einem stabileren und effektiveren Ruby.