Laravel a publié la version 13.40.0 de son framework le 3 novembre 2026. Au menu : deux méthodes de supervision attendues par les équipes qui exploitent des files d’attente en production, une série de correctifs sur les connexions aux bases de données, et surtout un correctif de sécurité sur la façade Concurrency, qui authentifie désormais l’enveloppe de résultat des processus pour empêcher l’injection de sortie dans une tâche concurrente.
Ce que contient la version 13.40
La release couvre un large spectre : Eloquent, les files d’attente, l’ordonnanceur de tâches et le cœur du framework. Deux ajouts retiennent l’attention des équipes back-end qui opèrent des traitements asynchrones à grande échelle, aux côtés d’une dizaine de correctifs sur MySQL, MariaDB, PostgreSQL et SQL Server.
| Domaine | Changement | Effet pratique |
|---|---|---|
| Files d’attente | Queue::whenJobRunsLongerThan() | Déclenche une alerte quand un job dépasse un seuil de durée défini |
| Ordonnanceur | Schedule::whenTaskRunsLongerThan() | Même mécanisme pour les tâches planifiées |
| Sécurité | Authentification de l’enveloppe Concurrency | Empêche l’injection de sortie dans un processus concurrent |
| Base de données | Reconnexion après perte de connexion en transaction | Retombe sur un savepoint lors d’erreurs de concurrence |
| Pagination | Correction de cursorPaginate() sur les requêtes union | Évite des résultats de pagination incohérents |
Surveiller les jobs et les tâches qui s’éternisent
Jusqu’ici, détecter un job de file d’attente anormalement lent demandait d’instrumenter soi-même le worker ou de s’appuyer sur un service tiers de supervision. La méthode Queue::whenJobRunsLongerThan() permet de brancher un callback directement dans le code applicatif, sans dépendance externe. Son pendant pour l’ordonnanceur, Schedule::whenTaskRunsLongerThan(), répond au même besoin pour les tâches planifiées via le Scheduler.
use Illuminate\Support\Facades\Queue;
use Illuminate\Support\Facades\Log;
Queue::whenJobRunsLongerThan(
threshold: now()->addMinutes(3),
callback: function ($job) {
Log::warning('Job anormalement lent', [
'job' => $job->resolveName(),
'queue' => $job->getQueue(),
]);
}
);Le callback reçoit l’instance du job en cours, ce qui permet d’en extraire le nom, la file concernée ou la charge utile avant de notifier une équipe d’astreinte. Associée à la nouvelle information « released » dans la sortie de queue:work, cette alerte comble un angle mort classique des déploiements Laravel à fort volume de jobs.
La faille corrigée dans la façade Concurrency
Le changement le plus sensible de cette version concerne la façade Concurrency, utilisée pour exécuter plusieurs callbacks en parallèle via des processus séparés. L’équipe cœur a ajouté une authentification de l’enveloppe qui transporte le résultat de chaque processus, afin d’empêcher qu’une sortie de processus falsifiée ne soit injectée et interprétée comme un résultat légitime par le processus parent.
Une enveloppe de résultat non authentifiée dans un mécanisme de concurrence inter-processus revient à faire confiance à n’importe quelle donnée qui transite sur le canal, quelle que soit sa provenance.
Le correctif ne modifie aucune signature publique : les applications qui utilisent Concurrency::run() bénéficient de la protection sans changement de code. Il concerne en priorité les environnements où les workers de processus concurrents tournent dans des conteneurs partagés ou des environnements mutualisés, où la surface d’attaque entre processus est plus large — le type de socle que décrit le guide de durcissement serveur publié sur Mail Studio.
Comment monter de version
La mise à jour suit le cycle de correctifs habituel de Laravel : un composer update laravel/framework suffit pour les projets qui contraignent déjà la dépendance sur la branche 13.x. Aucune migration de base de données n’est requise, et aucun changement cassant n’est signalé dans le journal des modifications. Pour vérifier la santé du worker avant et après la mise à jour, les équipes qui n’ont pas encore standardisé leurs commandes gagneront à consulter la sélection d’outils en ligne de commande pour le développement web déjà publiée sur Mail Studio.
whenJobRunsLongerThan() dès la mise à jour plutôt que d’attendre un incident : le seuil se règle en quelques lignes et s’intègre directement aux canaux d’alerte existants.Ce qu’il faut retenir
Laravel 13.40 ajoute deux leviers de supervision simples à activer pour les files d’attente et l’ordonnanceur, et referme une faille d’injection dans la façade Concurrency sans rupture de compatibilité. La mise à jour ne nécessite ni changement de code ni migration, ce qui en fait une priorité basse friction pour toute application en production.
Sur les projets où des jobs critiques tournent sans supervision dédiée, ce type d’ajout change plus la donne qu’une grosse fonctionnalité annoncée en fanfare. Le correctif sur Concurrency est également bienvenu : peu d’applications l’utilisent encore, mais celles qui l’adoptent pour paralléliser des traitements lourds gagnent une protection qu’il aurait été risqué de devoir patcher soi-même. — Simon Janvier
Pour aller plus loin : notes de version complètes sur GitHub.
