Das Ruby-Projekt hat am 25. Dezember 2017 Ruby 2.5.0 als erste stabile Ausgabe der neuen Reihe veröffentlicht. Zu den Neuerungen gehören Messungen der Methoden- und Verzweigungsabdeckung. Damit lassen sich ungetestete Ausführungspfade genauer untersuchen als mit einer bloßen Zeilenzählung.
Die zusätzlichen Messungen sind nicht automatisch aktiv
Die Versionshinweise zum Tag v2_5_0 nennen Coverage.start(lines: true, branches: true, methods: true) zur Auswahl der Messungen. Coverage.result liefert anschließend getrennte Ergebnisse. Ohne Optionen bleibt Coverage.start aus Kompatibilitätsgründen bei der bisherigen Zeilenabdeckung und deren Rückgabeformat.
Für die Qualitätssicherung ist das eine wichtige Grenze: Ein gestarteter Testlauf erfasst nicht zwangsläufig jede neue Messgröße. Außerdem zeigt Coverage, welcher Code ausgeführt wurde. Ob dessen Ergebnis stimmt, müssen die Prüfungen des Tests beantworten. Auch vollständige Ausführungsabdeckung beweist daher nicht die Fehlerfreiheit eines Programms.
Neue Rückgabewerte und geänderte Fehlermeldungen
yield_self gibt das Ergebnis des übergebenen Blocks zurück, während tap das ursprüngliche Objekt zurückliefert. Hinzu kommen Hash#slice und Hash#transform_keys. Die Suche nach Konstanten auf oberster Ebene entfällt; darauf beruhender Code benötigt eine Migrationsprüfung.
Bereits Ruby 2.4 hatte Werkzeuge zur Untersuchung von Thread-Fehlern eingeführt. In Version 2.5 ist Thread.report_on_exception standardmäßig aktiviert. Unbehandelte Ausnahmen eines Threads werden dadurch sichtbarer, ohne dass dies den Fehler selbst behebt.
Das Projekt nennt außerdem rund fünf bis zehn Prozent mehr Leistung durch den Ersatz fest eingebauter Trace-Anweisungen durch dynamische Instrumentierung. Das ist eine Projektangabe, kein eigener Benchmark. Sie lässt sich nicht unverändert auf die Gesamtdauer beliebiger Build- oder Testpipelines übertragen.
Historischer Stand: Der Beitrag behandelt die Veröffentlichung vom Dezember 2017. Er ist keine Empfehlung, diese alte Laufzeit heute neu einzusetzen. Das Projektlogo dient als Symbolbild.

