Constructor promotion needs a constructor body to assign into, so it is not available on an abstract constructor or in an interface. An abstract class with a concrete…
Preloading compiles and links classes into shared memory at startup, and the linking is what makes it different from opcache. The measured gain on a typical framework application…
An unbounded query works on the development database with four hundred rows and takes the site down at forty thousand. fields => ‘ids’ is the other half and…
After five years of 0.x, 1.0 in November is a commitment that a level will not start reporting new errors in a patch release. The practical difference is…
Level 8 checks calls on values that may be null, and it is the level where most projects discover how much of their code assumes otherwise. The temptation…
When a nullsafe operator short-circuits, everything to the right of it is skipped — including method arguments, which are not evaluated at all. The short-circuiting is the same…
A slow endpoint returning a 504 through nginx has three different timeouts that could be responsible, and they are configured by different directives. The distinction between a 502…
A memoisation cache keyed on object identity keeps every object it has ever seen alive, which in a long-running process is a leak with no upper bound. The…