How the TrueAsync RFC evolved over time:

The first version proposed a fairly low-level API for controlling the
Scheduler, philosophically very close to AMPHP. It quickly became
clear that this approach had many drawbacks, including issues with
consistent PHP behavior.

The code was completely rewritten. Core changes became more
significant. In the second version, the PHP execution flow was changed
so that any code could be asynchronous.
The second RFC version introduced structured concurrency, close to
modern equivalents.
At the same time, the garbage collector code was rewritten several
times. One version went through code review, after which a simplified
variant appeared. Today, Async GC exists in a lightweight form.
The implementation code was modified and optimized according to
approaches used in Swoole.
The next RFC version received fixes and improvements to the
description. The RFC was split into several parts and significantly
reduced in size.
Around this point, the first vote and major discussions took place.
Their result was the creation of a working group. Another important
outcome was the integration of Fibers as coroutine generators, which
removed the problems of previous RFCs.
Various experiments were conducted, extended memory models were
tested, and Globals isolation was explored. WordPress and Laravel were
run as stateful applications under FrankenPHP + TrueAsync.
A small MVP was written for a multithreaded PHP memory manager capable
of correctly working with PHP objects across different threads. The
possibilities of sharing and transferring memory between PHP threads
were investigated.

Compared to document 1.6, document 1.7 contains one new section:
Fiber. Everything else remains without significant changes.

Best regards, Ed

Reply via email to