PHP RFC: True Async

Il progetto TrueAsync è stato portato avanti per circa un anno attraverso il processo ufficiale di RFC su wiki.php.net. Sono stati pubblicati due RFC che descrivono il modello di concorrenza di base e la concorrenza strutturata.

RFC #1 — PHP True Async

Autore: Edmond [HT] Versione: 1.7 Versione target: PHP 8.6+ Draft

L’RFC principale che definisce il modello di concorrenza per PHP. Descrive le coroutine, le funzioni spawn() / await() / suspend(), l’oggetto Coroutine, le interfacce Awaitable e Completable, il meccanismo di cancellazione cooperativa, l’integrazione con Fiber, la gestione degli errori e il graceful shutdown.

Principi chiave:

Leggi RFC su wiki.php.net →

RFC #2 — Scope e concorrenza strutturata

Autore: Edmond [HT] Versione: 1.0 Draft

Un’estensione dell’RFC base. Introduce la classe Scope, legando la durata di vita delle coroutine all’ambito lessicale. Descrive la gerarchia degli scope, la propagazione degli errori, la politica delle coroutine “zombie” e le sezioni critiche tramite protect().

Cosa risolve:

Leggi RFC su wiki.php.net →

Come questi RFC sono collegati

Il primo RFC definisce le primitive di basso livello — coroutine, funzioni base e API C per le estensioni. Il secondo RFC aggiunge la concorrenza strutturata — meccanismi per gestire gruppi di coroutine che rendono il codice concorrente sicuro e prevedibile.

Insieme formano un modello completo di programmazione asincrona per PHP:

  RFC #1: True Async RFC #2: Scope
Livello Primitive Gestione
Fornisce spawn(), await(), Coroutine Scope, TaskGroup, protect()
Analogie Go goroutines, Kotlin coroutines Kotlin CoroutineScope, Python TaskGroup
Obiettivo Esecuzione di codice concorrente Gestione sicura del ciclo di vita

Stato attuale del RFC

Attualmente il progetto TrueAsync ha incontrato incertezza nel processo di RFC. Negli ultimi mesi, la discussione si è praticamente fermata e non c’è chiarezza sul suo futuro. È abbastanza ovvio che l’RFC non potrà superare la votazione, e non c’è modo di cambiare questo.

Per queste ragioni, il processo di RFC è attualmente considerato congelato, e il progetto continuerà a svilupparsi all’interno della comunità aperta, senza uno status “ufficiale”.

Partecipare alla discussione

Gli RFC sono discussi nella mailing list internals@lists.php.net e su GitHub Discussions.

Unisciti anche alla conversazione su Discord.