Laravel Framework v13.35.0 a été publié le 6 octobre à 13:54 par github-actions. Cette version regroupe les changements récents de la branche 13.x.

Les workers de queue acceptent désormais des pourcentages avec queue:work --memory. Queue::fakeFor() libère les verrous des jobs uniques, et les opérations bulk SQS normalisent les valeurs de queue. Les attributs de queue hérités sont conservés lorsqu’un enfant utilise Queueable. La gestion des signaux ajoute une couverture pour notifyJobOfSignal avec SIGALRM.

Le planificateur reçoit Schedule::alwaysOnOneServer(). La sortie JSON de schedule:list contient onOneServer. Les commandes planifiées de longue durée peuvent réagir à schedule:interrupt. La commande de liste gère les conversions de fuseaux horaires qui traversent un changement d’heure saisonnier. Les disques locaux disposent de l’option de configuration lazy_root_creation. Les callbacks de vues compilées en parallèle supportent les exécutions simultanées.

La fabrique de réponses reçoit une méthode markdown(). Le routage accepte la méthode QUERY. Le cache des routes fait aussi correspondre la route racine lorsqu’une application est servie depuis un sous-répertoire. Str::finish et Str::start bénéficient d’optimisations. Le traitement des exceptions reçoit plusieurs améliorations, dont un type de retour never pour failedBasicResponse. Des cycles de références sont supprimés dans le callback par défaut de PendingRequest::throw(), ainsi que dans les callbacks headers() et priority() de Mailable.

DatabaseRule conserve les valeurs false dans where() et whereNot(). Les helpers de durée préservent les valeurs flottantes. forceCreate() applique désormais withAttributes(). HasOneThrough corrige les comparaisons de clés de is(), les relations one-of-many et la qualification des colonnes chargées avec anticipation. chunkById() et lazyById() ne bouclent plus indéfiniment avec des clés primaires castées. Les opérations de détachement de MorphPivot mettent correctement à jour les propriétaires.

Les collections lazy restent intactes avec collapse(), collapseWithKeys() et flatten(). DB::setDefaultConnection() traite correctement les enums. Les mises à jour de chemins JSON préservent les modifications dans AsEncryptedArrayObject et AsEncryptedCollection. La gestion des chemins JSON de MySQL est corrigée pour whereJsonOverlaps(). D’autres corrections concernent les bindings de cursorPaginate(), les casts des requêtes clonées avec withCasts(), findOrNew() et chunkMap() sur HasManyThrough et BelongsToMany, ainsi que les attributs de relation dans incrementOrCreate(). loadMissing() évite de construire une requête sans relation et gère les relations imbriquées dans des modèles morphTo mixtes. Eloquent Collection::findOrFail() accepte une collection d’identifiants.

incrementOrCreate() définit correctement les clés étrangères et conserve les attributs supplémentaires lors d’une création. morphTo()->withTrashed() fonctionne avec has() et whereHasMorph(). FilesystemManager::set(), forgetDisk() et purge() acceptent les enums. La documentation de copyToDisk() et moveToDisk() décrit leur prise en charge des enums. La version corrige aussi plusieurs cas limites liés aux relations et aux chemins JSON chiffrés.

L’authentification accepte un mot de passe null dans hashPasswordForCookie. GenericUser::getAuthPassword() gère les utilisateurs sans mot de passe. Les téléchargements prennent en charge les noms de fichiers sans équivalent ASCII. Les erreurs liées aux champs inconnus ignorent _token et _method. Les modèles d’URL restent inchangés sans paramètres d’URL. Les modèles recyclés ne se propagent plus aux appels ultérieurs d’une même factory.

Les tests parallèles fonctionnent avec PHPUnit 13.4. Les attributs AsHtmlString sont sérialisés correctement, et un test de l’API pwnedpasswords utilise un service simulé. Les suites de tests générales et de base de données reçoivent des améliorations. L’implémentation de defaults() est disponible via un trait activé explicitement. La dépendance source-map-js passe de 1.2.1 à 1.2.2.