▲ 196 r/symfony+3 crossposts

PHPStan 2.3: Leap in Performance, Generics Improvements, Detecting Unused Variables, and More!

PHPStan 2.3: Leap in Performance, Generics Improvements, Detecting Unused Variables, and More!

I had so much fun with the interactive charts and widgets, check out the article. I promise it's worth checking it out yourself, and not just letting your agent summarize it for you 😉 It contains a lot of interactive widgets with practical examples of the new features in action.

phpstan.org
u/OndrejMirtes — 9 days ago
▲ 100 r/PHP

PHPStan Turbo: Native PHP extension that makes PHPStan run faster

PHPStan 2.2.6 adds a native PHP extension (PHP 8.3+) written in C++ that makes running PHPStan 10-30 % faster.

PHPStan's Composer package ships prebuilt binaries for the most common platforms — Linux (glibc and musl, x86_64 and arm64), macOS, and Windows (x86_64), for PHP 8.3 and newer — and PHPStan automatically loads the one matching your runtime into its worker processes. You don't have to do any extra work to take advantage of this!

If you run PHPStan through manually downloaded phpstan.phar, you can run it with extension by installing it with PIE:

pie install phpstan/turbo

The extension only activates when its version matches the one your PHPStan release expects — on a mismatch PHPStan prints a note and runs without it, so an outdated extension can never affect results, only speed.

Only a handful of hot paths are currently rewritten in the extension. There's room for the performance gain to grow if we ever decide to rewrite more parts natively.

The extension is completely optional, PHPStan still works without it. When the extension gets enabled, its implementation shadows certain PHPStan classes designed for this. They are marked with the #[ShadowedByTurboExtension] attribute.

phpc.social
u/OndrejMirtes — 3 months ago
▲ 0 r/sonarr+2 crossposts

MCPArr - manage your media with AI

I got tired of clicking through Sonarr and Radarr, so I built MCPArr — a small self-hosted MCP server that lets Claude (or any MCP client) drive your *arr stack in plain English.

Things I can now just ask:

  • "Are we already tracking Severance?"
  • "Add Dune: Part Two in 1080p."
  • "A new episode of Slow Horses should be out — find it, grab the release with the most seeders that isn't rejected, and confirm it's downloading."
  • "What's airing this week?" / "What movies release this month?"
  • "Why isn't anything downloading?" / "Clear out anything stalled in the queue."

How it works

  • 30 tools across Sonarr (TV) + Radarr (movies): search/library, add, calendar, queue, health, interactive release search (sorted by seeders), grab, monitoring, cleanup.
  • Ships 8 bundled "skills" — workflow guides the model auto-discovers, so it does the right thing (checks the library before adding, never grabs a rejected release, confirms before deleting files).
  • TypeScript, Streamable-HTTP MCP transport, linuxserver-style Docker image (amd64 + arm64), configured purely via env vars.

Run it

docker run -d -p 3000:3000 \
  -e SONARR_URL=http://sonarr:8989 -e SONARR_API_KEY=... \
  -e RADARR_URL=http://radarr:7878 -e RADARR_API_KEY=... \
  ghcr.io/ondrejmirtes/mcparr:latest

claude mcp add --transport http mcparr http://localhost:3000/mcp

There's a docker-compose.yml, a read-only mode, and optional bearer-token auth. MIT licensed.

Repo: https://github.com/ondrejmirtes/mcparr

Feedback and PRs welcome

u/OndrejMirtes — 4 months ago