Diese Woche, am 24.Oktober 2020, wurde Composer 2.0 veröffentlicht. Was für ein Meilenstein für den PHP Paketmanager! Etwa zwei Jahre und über 1100 Commits von 28 Personen waren nötig diese Version zu vollenden.

Vor einigen Jahren habe ich einen Eintrag geschrieben bzgl. „Composer unter Windows (und Linux)“ – seitdem hat sich viel getan. So schreibt Joardi Boggiano im packagist.com Blog über die neue Major Version von Composer und geht detailliert auf die technischen Änderungen ein.

Besonders interessant ist das die Performance wohl um teilweise über 50% verbessert werden konnte. Das bezieht sich konkret auf initiale update und install Prozesse.

Ein möglichst einfaches Update

Das Ziel der Entwickler war das update zu Composer 2.0 möglichst einfach und schnell zu gestalten, daher wird zum Beispiel auch weiterhin noch PHP +5.3 unterstützt. Auch die composer.lock Dateien sind kompatibel – gleiches gilt außerdem für die meisten Befehle und Argumente.

Das Update wird durch den Befehl composer self-update durchgeführt und kann anschließend mittels composer self-update --rollback rückgängig gemacht werden. Mit Hilfe des Befehls composer self-update --2 lässt sich das Update auf Composer 2.0 forcieren.

Ebenso einfach ist es möglich nach dem update via composer self-update --1 zurück zur Version 1.x zu springen.

API-inkompatible Änderungen?

Wie bei einem Major Release üblich (siehe semantic versioning) gibt es auch hier Brüche zur Rückwärtskompatibilität. Laut dem Blog Eintrag kann es in den folgenden Fällen zu solchen Problemen kommen:

  • Plugins: Composer Plugins müssen ggf. aktualisiert werden um mit der neuen Major Version zu funktionieren.
  • Platform-Check Feature: Composer wird nun zur Laufzeit prüfen ob die installierte PHP Version (und Extensions) mit den Definitionen aus der composer.json übereinstimmen. Dies sollte man immer vor der Installation eines Projekts auf der produktiven Umgebung mittels composer check-platform-reqs --no-dev prüfen.
  • Repository Priorität: Aufgrund einer internen Änderung werden die Prioritäten von Abhängigkeiten nun anders verarbeitet. Es ist daher möglich das manche Abhängigkeiten unter der Nutzung von Composer 2.0 fehlen (mehr Informationen).
  • Invalide PSR-0 / PSR-4 Konfigurationen: Inkorrekte Autoloader Konfigurationen werden im „optimize-autoloader“ Modus nicht länger verarbeitet. Hierzu gab es bereits ab Composer 1.10 Warnungen.

Für alle Composer Nutzer gilt: Bitte den Upgrade Guide für Composer 2.0 lesen 🙂

Wie geht es weiter?

Mit eigenen Worten schreibt Jordi das es aktuell keine detaillierte Roadmap gibt, da Composer 2.0 so viele neue Funktionen und „Goodies“ beinhaltet. Ein wichtiges Thema ist aber die Kompatibilität zu neuen PHP Versionen:

As I mentioned above, Composer 2.0 supports PHP 5.3+, which is at this point very outdated and makes the code quite hard to maintain in places. We went through the effort to make sure every Composer user can upgrade to Composer 2, but the plan is to drop support for EOL PHP versions in a future minor release.

Das heißt: zukünftig wird der Support für veraltete PHP Versionen eingestellt. Aktuell ist aber noch nicht klar ob das schon mit Composer 2.1 passieren wird – spätestens jedoch mit Composer 2.2:

Composer 2.1 might still come with PHP 5.3 support, depending on the timeline and which features end up being included, but then at the latest by Composer 2.2 we will drop support for everything older than PHP 7.1.3. According to our stats this allows over 90% of the Composer users to use the latest version, and for the others who are stuck on outdated PHP versions we will keep providing critical bug and security fixes in the 2.0.x or 2.1.x range.

Was ist mit Composer 1?

Hierzu heißt es: Composer 1.x ist nun „mehr oder weniger“ tot (end of life). Es wird aber noch Bugfixes für kritische Fehler geben (sofern welche auftreten). Die Zielsetzung lautet ganz klar: Nutzt die aktuellste Version.

Stand Heute (27.Oktober) ist übrigens bereits Composer 2.0.2 🙂

Habt ihr bereits auf die neue Version aktualisiert oder ggf. sogar Probleme damit gehabt? Lasst es mich wissen!

Ansonsten wünsche ich wie immer eine angenehme Woche. Bleibt gesund und auch weiterhin – Happy Coding!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.