Skip to content

3.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 04 Oct 21:20
076983e

Version 3.0 is a major step for this PHPStan extension: it goes well beyond flagging blocking calls and starts encoding how ReactPHP code is usually meant to be written.

The release adds a full set of event-loop rules that treat the loop as a global concern you reach through Loop::…, not something you inject, pass around, or keep on objects. PHPStan now nudges you toward static loop APIs, away from Loop::get() indirection and from calling methods on values typed as LoopInterface, and it catches promoted properties and traits that would hold a loop reference in your domain model. Together, those checks reflect the direction the ReactPHP ecosystem has been taking: fewer foot-guns around loop lifetime and clearer separation between application code and the runtime.

On the react/async side, 3.0 brings static analysis for fiber-style await usage. A parser visitor tracks which closures are wrapped in async, and a call-graph collector follows the stack when await might be reached indirectly. You get feedback when await appears outside an async closure, and when a plain closure can still reach await through callees—the cases that are easy to miss in review but painful at runtime.

Everything remains on by default, but you can tune the extension under parameters.wyrihaximus.reactphp.rules, so teams can adopt event-loop or async rules gradually or silence a category without dropping the whole package. Documentation and installation notes were refreshed (including the correct extension.neon include and guidance around PHPStan’s extension installer), and the project runs on current PHP and QA tooling so the new rules sit on a maintained foundation.

3.0.0

  • Total issues resolved: 0
  • Total pull requests resolved: 49
  • Total contributors: 2

Bug 🐞

Configuration ⚙,Dependencies 📦

Configuration ⚙

Configuration ⚙,Dependencies 📦,Enhancement ✨

Dependencies 📦

Dependencies 📦,Feature 🏗

Enhancement ✨

Feature 🏗