PHP 8.6 Alpha 1: Was tatsächlich drin ist

PHP 8.6 Alpha 1: Was tatsächlich drin ist

Die erste Alpha von PHP 8.6 ist da und sorgt mit der überraschenden Integration der Partial Function Application bereits jetzt für einen echten Paukenschlag. Neben der neuen Platzhalter-Syntax enthüllt der Realitätscheck zudem Performance-Features wie First-Class-Callable-Caching, die bisher auf keinem Radar standen. Erfahren Sie, welche Neuerungen es tatsächlich in den Release geschafft haben und was sich bis zur Beta im August noch ändern könnte.

Dennis Schwenker-Sanders 6 Min. Lesezeit

Letzte Woche habe ich geschrieben, dass der PHP-8.6-Feature-Stand vor Alpha 1 kürzer ist als erwartet und dass "akzeptiert" nicht "gemergt" bedeutet. Auf LinkedIn hatte ich angekündigt, mir die Alpha genauer anzuschauen, sobald sie da ist. Sie ist jetzt da, seit dem 2. Juli. Zeit für den Realitäts-Check.

Was Sie in 6 Minuten erfahren:

  1. Warum Partial Function Application entgegen dem Stand von letzter Woche bereits in Alpha 1 gelandet ist
  2. Zwei Punkte, die in keiner Vorschau standen: First-Class-Callable-Caching und TAILCALL VM für Windows
  3. Was weiterhin offen ist und wie sich das bis Beta 1 im August entwickeln dürfte

Die kurze Antwort: PFA hat es geschafft. Letzte Woche stand in der Statustabelle "Akzeptiert, Implementation läuft, Status in Alpha 1 unklar". Diese Unsicherheit ist jetzt aufgelöst. Partial Function Application ist Teil von Alpha 1, mit der finalen Platzhalter-Syntax.

Statusvergleich: Montags-Prognose gegen Alpha-1-Realität


Feature

Stand letzte Woche

Stand Alpha 1 (02.07.)

clamp()

Gemergt

Bestätigt, inklusive Named-Arguments-Support

SortDirection-Enum

Gemergt

Bestätigt

Partial Function Application

Unklar

Gelandet, mit ?-Platzhaltern und ...-Fill-Rest

First-Class-Callable-Caching

Nicht auf dem Schirm

Neu bestätigt, Performance-Feature

TAILCALL VM für Windows

Nicht auf dem Schirm

Neu bestätigt, Clang-19-Build

Closure-Optimierungen (auto-static)

Unklar

Weiterhin nicht eindeutig bestätigt

Float-Endianness pack()/unpack()

Unklar

Weiterhin nicht eindeutig bestätigt

True Async

Abgelehnt

Bestätigt abgelehnt, keine Änderung

Betrifft Sie das? Schnelltest in 30 Sekunden

Jetzt PFA ausprobieren wenn: Sie in Ihrem Code viele kleine Wrapper-Closures schreiben, nur um Argumente vorzubelegen. Genau das ersetzt PFA direkt.

Callable-Caching beobachten wenn: Ihr Code viele First-Class-Callables in Schleifen oder häufig aufgerufenen Methoden erzeugt. Das ist ein reiner Performance-Gewinn ohne Code-Änderung.

Noch nichts tun wenn: Sie ohnehin erst nach Beta 1 im August testen wollten. Der Plan von letzter Woche gilt unverändert.

Verfolgen Sie PHP 8.6 selbst oder brauchen Sie eine Einordnung?

Ich behalte die Alpha- und Beta-Phase im Blick und kann für Ihr Projekt einschätzen, was relevant wird und was nicht.

  • PHP-Roadmap-Tracking aus erster Hand
  • Einordnung ohne Feature-Hype
Kostenlosen Check anfragen →

⏱️ Antwort binnen 24 Stunden

Partial Function Application: Was jetzt wirklich funktioniert

Die finale Syntax nutzt ? für einzelne Platzhalter und ... um alle verbleibenden Argumente offen zu lassen. Das ist großzügiger als die einfache Version, die ich letzte Woche skizziert hatte. PFA unterstützt Named Arguments, Parameter-Reordering und Variadics.

// Einzelne Platzhalter an beliebiger Position:
function logMessage(string $level, string $context, string $message): string {
return "[$level][$context] $message";
}

$errorAuth = logMessage('ERROR', 'auth', ?);
echo $errorAuth('Invalid token'); // [ERROR][auth] Invalid token

// Mehrere Platzhalter gleichzeitig:
function add4(int $a, int $b, int $c, int $d): int { return $a + $b + $c + $d; }
$f = add4(1, ?, 3, ?);
echo $f(2, 4); // 1+2+3+4 = 10

// Named Arguments und Reordering:
$f = add4(b: 2, d: 4, c: ?, a: ?);
echo $f(1, 3); // dieselbe Rechnung, andere Reihenfolge

// Alle offen lassen: entspricht First-Class-Callables aus PHP 8.1
$f = add4(...);

Was die kurze Vorschau letzte Woche nicht zeigen konnte: PFA und der Pipe-Operator aus PHP 8.5 sind als Paar gedacht. Larry Garfield, einer der RFC-Autoren, beschreibt es so, dass beide Features 2021 gemeinsam vorgeschlagen und beide abgelehnt wurden, jetzt aber getrennt eingeführt werden und zusammen erst ihren vollen Nutzen entfalten.

// Das Pipe-Operator-Problem aus PHP 8.5 ist damit gelöst:
$result = $data
|> array_filter(?, fn($x) => $x > 0)
|> array_map(strtoupper(...), ?);
// Keine Wrapper-Closures mehr nötig für mehrargumentige Funktionen
KurzPFA ist in Alpha 1 gelandet, mit vollem Funktionsumfang inklusive Named Arguments und Reordering. Zusammen mit dem Pipe-Operator aus PHP 8.5 ergibt sich jetzt die Kombination, die beide RFCs ursprünglich 2021 gemeinsam anstrebten.

Zwei Funde, die letzte Woche noch nicht bekannt waren

First-Class-Callable-Caching

Wer strtoupper(...) oder ähnliche First-Class-Callables innerhalb einer Schleife oder einer häufig aufgerufenen Funktion erzeugt, hat bisher bei jedem Aufruf ein neues Callable-Objekt bekommen. Die Engine cached diese Instanzen jetzt, wenn sie stateless sind. Das reduziert Allokationen in Code, der viele Callables erzeugt, ohne dass am Code selbst etwas geändert werden muss.

TAILCALL VM für Windows

PHP 8.5 hatte die TAILCALL-VM-Optimierung für rekursive Aufrufmuster eingeführt, allerdings nur für bestimmte Compiler-Toolchains. Alpha 1 bringt diese Optimierung jetzt auch für Windows-Builds unter Clang 19. Für Windows-Server-Deployments mit rekursionslastigem Code (Parser, Tree-Traversal, bestimmte Serializer-Patterns) ist das ein direkter Performance-Gewinn ohne Codeänderung.

Beide Punkte waren in keiner der Vorschauen bis Ende Juni sichtbar. Das ist der eigentliche Wert eines Alpha-Checks gegenüber einer reinen RFC-Liste: Nicht jede Verbesserung läuft über ein RFC-Voting, manche werden einfach committed.

⚡ PHP 8.6 in Ihre CI-Pipeline aufnehmen?

Ich richte einen strukturierten Alpha-Test-Workflow ein, der Ihre Projekte gegen aktuelle 8.6-Builds testet, ohne die Haupt-Pipeline zu belasten.

  • GitHub Actions und PHP-Version-Matrix
  • Kompatibilitäts-Checks aus der Praxis
Workflow besprechen →

⏱️ Antwort binnen 24 Stunden

📞 Oder direkt anrufen: 04481 - 9099658

Was weiterhin offen ist

Closure-Optimierungen (automatisches static für Closures ohne $this) und die Float-Endianness-Modifizierer für pack()/unpack() waren im März akzeptiert, sind aber in den bisherigen Alpha-1-Berichten nicht eindeutig als gelandet bestätigt. Das heißt nicht, dass sie fehlen. Es heißt, dass ich dazu keine verlässliche Quelle gefunden habe, die über die reine RFC-Annahme hinausgeht.

Dasselbe gilt für die neuen Reflection-Methoden isReadable() und isWritable(). Wer auf diese Features angewiesen ist, sollte selbst gegen die Alpha-1-Quellen bauen und prüfen, statt sich auf Sekundärquellen zu verlassen. Genau das ist der Unterschied zwischen "wahrscheinlich drin" und "verifiziert drin".

True Async bleibt draußen. Daran hat sich nichts geändert, und es wird sich für PHP 8.6 auch nichts mehr ändern.

Aus der Praxis

Was mir beim Verfolgen von PHP-Alpha-Phasen über die Jahre auffällt: Die Lücke zwischen "RFC akzeptiert" und "in der ersten Alpha sichtbar" ist der Punkt, an dem die meisten Blogartikel ungenau werden. Sekundärquellen kopieren oft die RFC-Liste, ohne zu prüfen, was tatsächlich committed wurde. Für die eigene Projektplanung zählt nur die verifizierte Version. Deshalb lohnt sich der zweite Blick nach dem Alpha-Release, auch wenn er mehr Aufwand macht als die reine RFC-Zusammenfassung.

Was das für Ihre Timeline bedeutet

Der Plan aus der vergangenen Woche bleibt unverändert richtig: CI-Job gegen Alpha laufen lassen, Deprecation-Warnings sammeln, Production-Deployment frühestens nach dem ersten Bugfix-Release im Dezember. PFA und die beiden neuen Performance-Features ändern daran nichts. Sie sind ein gutes Zeichen für die Qualität des Feature-Sets, kein Grund für einen früheren Zeitplan.

Wie ich im Artikel von letzter Woche beschrieben habe, ist der Wert der Alpha-Phase die Kompatibilitäts-Frühwarnung, nicht die Feature-Jagd. Das gilt auch mit PFA an Bord.

Sie wissen jetzt, was in Alpha 1 wirklich drin ist.

Wenn Sie Ihre Projekte gegen den aktuellen Stand testen wollen oder eine Einschätzung brauchen, was für Sie relevant wird, lassen Sie uns sprechen.

  • PHP-Roadmap-Tracking seit Jahren
  • Verifizierte Einordnung statt Sekundärquellen
Nächsten Schritt klären →

Häufige Fragen

Ist die finale PFA-Syntax jetzt festgelegt?

Innerhalb der Alpha-Phase kann sich Syntax theoretisch noch ändern, aber PFA ist ein RFC mit abgeschlossenem Voting (33:0). Änderungen wären in dieser Phase unüblich und würden eine erneute RFC-Diskussion erfordern. Für praktische Zwecke kann die aktuelle Syntax mit ? und ... als stabil betrachtet werden.

Muss ich meinen Code wegen First-Class-Callable-Caching ändern?

Nein. Das Caching passiert intern in der Engine und ist für bestehenden Code transparent. Es gibt keine neue Syntax und keine Migration. Der Effekt ist ein reiner Performance-Gewinn bei Code, der viele stateless First-Class-Callables erzeugt.

Woher weiß ich zuverlässig, was in einer bestimmten PHP-8.6-Alpha-Version enthalten ist?

Die verlässlichste Quelle ist der offizielle PHP-Changelog auf php.net für die jeweilige Version, ergänzt durch php.watch für eine aufbereitete Übersicht. RFC-Seiten auf wiki.php.net zeigen den Abstimmungsstatus, aber nicht zwingend ob der Code bereits gemergt ist. Wer sicher gehen will, sollte die Alpha selbst installieren und gegen die eigenen Testfälle laufen lassen.

Wirkt sich TAILCALL VM für Windows auf Linux-Deployments aus?

Nein, diese Optimierung ist spezifisch für Windows-Builds unter Clang 19. Linux- und macOS-Deployments hatten die TAILCALL-VM-Optimierung bereits mit PHP 8.5. Für Windows-Server-Betrieb mit rekursionslastigem Code ist das jetzt eine Verbesserung, die vorher fehlte.

Sollte ich jetzt schon PFA in neuen Projekten einplanen?

Für die Projektplanung ja, für den produktiven Einsatz noch nicht. PFA ist ein Alpha-Feature ohne Stabilitätsgarantie. Wer heute ein Projekt plant, das erst nach November 2026 in Produktion geht, kann PFA in die Architektur-Überlegungen einbeziehen. Für laufende Projekte gilt weiterhin: PHP 8.6 erst nach dem ersten Bugfix-Release produktiv einsetzen.

Artikel teilen: