Posts
-
Symfony 8.0: PHP 8.4 minimum, native lazy objects, and FormFlow
Symfony 8.0 shipped November 27, 2025, same day as 7.4. It requires PHP 8.4 and drops everything that was deprecated in 7.4. The two most interesting changes are what it stops doing and what it starts doing with PHP 8.4.
-
Symfony 7.4 LTS: message signing, PHP config arrays, and the last 7.x
Symfony 7.4 landed November 2025, alongside 8.0. It’s the last LTS of the 7.x line: PHP 8.2 minimum, three years of bug fixes, four of security. For teams that can’t or won’t follow 8.0’s PHP 8.4 requirement, 7.4 is where you land.
-
PHP 8.5: the pipe operator, a URI library, and a lot of cleanup
PHP 8.5 shipped November 20th. Two features define this release: the pipe operator and the URI extension. They solve different problems, but both share the same motivation: making common operations less awkward to express.
-
Local HTTPS with Traefik: traefik.me is dead, long live sslip.io
The setup seemed perfect. Point
*.traefik.meat 127.0.0.1, download a wildcard certificate from the same domain, drop it into Traefik, and every local service gets a clean HTTPS URL with no IP in the address bar. No Let’s Encrypt rate limits, nomkcertto explain to teammates, no self-signed warnings to click through. Justhttps://myapp.traefik.meand a green padlock. -
PHP 8.4: property hooks and the end of the getter/setter ceremony
PHP 8.4 released November 21st. Property hooks are the feature. Everything else, and there’s quite a bit of it, is secondary.
-
Symfony 7.0: PHP 8.2 minimum and annotations finally gone
Symfony 7.0 landed November 29, 2023, same day as 6.4. The pattern holds: the X.0 release cuts deprecated code and raises the PHP floor. 7.0 requires PHP 8.2 and removes everything that 6.4 flagged as deprecated.
-
Symfony 6.4 LTS: AssetMapper, Scheduler, Webhook, and the long-term release
Symfony 6.4 landed November 29, 2023. It’s an LTS with a story: four components that shipped as experimental in earlier releases are now stable. The biggest deal is AssetMapper.
-
PHP 8.3: typed constants and the small wins that stick
PHP 8.3 landed November 23rd. Quiet release by PHP standards: no enum-sized shift, no JIT. What it does have is a focused set of improvements that close long-standing gaps in the type system and add functions that should have existed years ago.
-
PHP 8.2: readonly classes and the deprecation that matters
PHP 8.2 dropped December 8th. Readonly classes are the headline. The deprecation of dynamic properties is the one that actually requires your attention.
-
From Vagrant to Docker Compose: a retrospective
I ran Vagrant for years. A Vagrantfile per project, a shared base box, a provision script that worked on Tuesday but not on Thursday. The promise was simple: reproducible environments for everyone on the team. The reality was more complicated.
-
Swarrot vs Symfony Messenger: a real-world comparison
We migrated a media microservices platform to Symfony 6 at the start of 2022. Twelve services, most of them consuming messages from RabbitMQ via Swarrot. Symfony 6 made Messenger more central than ever, and during the migration planning a developer asked the obvious question: why not switch at the same time?
-
Symfony 6.0: PHP 8.1 only, and the security system rebuilt
Symfony 6.0 released November 29, 2021. The defining characteristic: PHP 8.1 is the minimum. Not supported, required. The releases team waited for PHP 8.1 to ship, then cut Symfony 6.0 the next day.
-
Symfony 5.4 LTS: enum support, route aliases, and the PHP 8.1 bridge
Symfony 5.4 landed November 29, 2021, same day as Symfony 6.0 and one day after PHP 8.1 was released. Not a coincidence.
-
PHP 8.1: enums, fibers, and the type system growing up
PHP 8.1 released November 25th. It follows 8.0’s sweeping overhaul with something different: fewer features, but each one thought through rather than bolted on.
-
PHP 8.0: match, named arguments, attributes, and JIT
PHP 8.0 shipped November 26th. I’ve been running it for six weeks on a side project and a greenfield service at work. It’s the most significant PHP release since 7.0, and in some ways more impactful, because the changes pile on top of each other in useful ways.
-
PHP 7.4: typed properties and the arrow function you actually want
PHP 7.4 landed November 28th. It’s the last 7.x release before PHP 8.0, and it feels like it. The features are substantial enough to stand on their own, but they also read as groundwork for what’s coming.
-
Symfony 5.0: String, Notifier, and the secrets vault
Symfony 5.0 released November 21, 2019, same day as 4.4. Where 4.4 is about stability and a long support window, 5.0 is the next chapter: no deprecated code, PHP 7.2.5 minimum, and a handful of new components that finally address gaps that had piled up for years.
-
Symfony 4.4 LTS: HttpClient, Mailer, Messenger, and the features that stayed
Symfony 4.4 and 5.0 both landed November 21, 2019. 4.4 is the LTS: same feature set as 5.0, deprecation layer baked in, and a long support window for teams that can’t follow every release.
-
From a €10 sensor to a Home Assistant dashboard with a Raspberry Pi and MQTT
The question was simple: what’s the temperature and humidity in my home office right now? Not the weather outside, not a city average — the actual conditions in the room where I spend most of my day. Opening a weather app for that felt wrong.
-
PHP 7.3: small wins that add up
PHP 7.3 shipped December 6th. No single killer feature. It’s a collection of quality-of-life improvements that individually feel minor but together make daily work noticeably less annoying.
-
Symfony 4.0: Flex and the end of the Standard Edition
Symfony 4.0 released November 30, 2017, same day as 3.4. The shared release date is pretty much the only thing they have in common.
-
PHP 7.2: goodbye mcrypt, hello sodium
PHP 7.2 released November 30th. The headline isn’t a language feature, it’s a removal.
mcryptis gone. -
Symfony 3.4 LTS: the bridge you actually want to cross
Symfony 3.4 and 4.0 were released the same day: November 30, 2017. That’s not a coincidence, it’s the strategy.
-
Symfony 3.3: when services stopped being a configuration nightmare
Symfony 3.3 shipped May 29th. It’s the release that changed how I think about service configuration. In hindsight, it was basically a preview of what 4.0 would make the new default.
-
Controlling a USB missile launcher over HTTP with FastAPI and Docker
The rule was simple: whoever breaks the CI build owes the team a coffee. It worked fine for a while. Then someone suggested we needed something with more immediate feedback. Something physical. Something that fires.
-
PHP 7.1: a tighter type system and the small wins around it
PHP 7.1 shipped December 1st. No 2x performance headline, no engine rewrite. It fills in the gaps that 7.0 left in the type system, and those gaps were genuinely annoying.
-
PHP 7.0: performance, types, and the features that stuck
PHP 7.0 dropped on December 3rd. A month and a half in, I’ve migrated two projects and the results are hard to ignore.
subscribe via RSS