Broadcasting con Mercure in Laravel 13.32
Il team di Laravel ha rilasciato la v13.32.0 con un nuovo driver di broadcasting Mercure, i metodi copyToDisk() e moveToDisk() sul filesystem, il supporto agli enum nella pausa e ripresa delle queue e altro ancora:
Driver di Broadcasting Mercure
Kévin Dunglas ha contribuito con un driver di broadcasting per Mercure, un protocollo real-time che funziona su SSE invece che su WebSockets:
// config/broadcasting.php
'mercure' => [
'driver' => 'mercure',
'url' => env('MERCURE_URL'),
'public_url' => env('MERCURE_PUBLIC_URL'),
'secret' => env('MERCURE_JWT_SECRET'),
'encryption_key' => env('MERCURE_ENCRYPTION_KEY'),
],
Con FrankenPHP, l'hub integrato non necessita di url o secret. Il driver supporta anche i presence channel e i canali private-encrypted-* con crittografia end-to-end. Una patch di Echo complementare aggiunge il supporto lato client.
Per maggiori dettagli, consulta la #61474 e il supporto dell'installer di broadcasting nella #61587.
Storage copyToDisk() e moveToDisk()
Jack Bayliss ha contribuito con copyToDisk() e moveToDisk() a FilesystemAdapter, sostituendo il pattern manuale di lettura e scrittura degli stream per spostare i file tra i dischi:
// Copia sul disco di backup, mantenendo il file sul disco locale
Storage::disk('local')->copyToDisk('backup', 'reports/report.csv');
// Copia sul disco di backup, eliminando il file dal disco locale
Storage::disk('local')->moveToDisk('backup', 'reports/report.csv');
// Specifica un percorso di destinazione diverso
Storage::disk('local')->copyToDisk('s3', 'reports/report.csv', '2026/report.csv');
Una PR successiva consente di passare un'istanza filesystem invece del nome di un disco.
Per maggiori dettagli, consulta la #61511.
Enum nella pausa e nella ripresa delle Queue
Jack Bayliss ha contribuito con il supporto agli enum per Queue::pause(), Queue::resume() e Queue::pauseFor(), in linea con il supporto agli enum già disponibile sugli attributi Queue/Connection dei job e sui metodi del manager come route() e forward():
Queue::pause(Queues::notifications, Connections::Redis);
Queue::resume(Queues::notifications, Connections::Redis);
Queue::pauseFor(Queues::notifications, Connections::Redis, 60);
Per maggiori dettagli, consulta la #61464.
Note di rilascio
Qui sotto puoi vedere l'elenco completo delle nuove funzionalità e degli aggiornamenti, oltre al diff tra 13.31.0 e 13.32.0 su GitHub. Le seguenti note di rilascio provengono direttamente dal changelog:
v13.32.0
- [12.x] Default memoryExceededExitCode per Cloud by @jackbayliss in #61432
- Avvolge il tipo di ritorno della closure in
withFreshQueryLog()by @SanderMuller in #61458 - Avvolge il tipo di ritorno della callback dell'autocompleter in
askWithCompletion()by @SanderMuller in #61487 - [13.x] Consente gli enum nei metodi pause/resume delle queue by @jackbayliss in #61464
- [13.x] Confronta i nomi degli indici in minuscolo in hasIndex by @dwjordan in #61506
- [13.x] Corregge containsStrict() che restituiva false quando una closure corrisponde a un valore null by @bunyaminbilenkaratas in #61507
- [13.x] Passa l'eccezione alle callback di violazione di Eloquent by @jackbayliss in #61504
- [13.x] Trasforma le variabili inutilizzate in argomenti nominati by @imanghafoori1 in #61513
- [13.x] Aggiorna SupportBinaryCodecTest by @jackbayliss in #61512
- [13.x] Corregge Factory::raw() con un conteggio pari a zero by @OpadaAlzaiede in #61510
- [13.x] Aggiunge l'implementazione mancante di
SessionHandlerInterfaceper PHP 9 by @crynobone in #61517 - [13.x] Aggiunge copyToDisk & moveToDisk a FilesystemAdapter by @jackbayliss in #61511
- [13.x] Aggiunge un driver di broadcasting Mercure by @dunglas in #61474
- [13.x] Accetta un'istanza filesystem nei metodi
copyToDisk()emoveToDisk()by @ziadoz in #61519 - [13.x] Corregge Str::password() che restituiva caratteri extra e generava errori di validazione by @bunyaminbilenkaratas in #61521
- [13.x] Corregge Str::camel() che non convertiva in minuscolo i primi caratteri multibyte by @rayblair06 in #61545
- [13.x] Corregge collapseWithKeys() che andava in crash quando la collection esterna aveva chiavi stringa by @rayblair06 in #61539
- [13.x] Corregge il TypeError in SessionGuard::userFromRecaller() quando getAuthPassword() è null by @irabbi360 in #61532
- Rafforza i test con i mock usando il codice reale by @jasonmccreary in #61563
- [13.x] Corregge appendToPriorityList() quando il middleware di riferimento è il primo elemento by @GabeSilvaDev in #61567
- [13.x] Migliora i tipi di ritorno delle collection per i metodi che mutano by @axlon in #61571
- [13.x] Aggiunge
isManagedQueuea CloudManager by @jackbayliss in #61568 - [13.x] Corregge la cache taggata di Redis che non sincronizzava la scadenza della voce del tag al touch by @Ashot1995 in #61574
- [13.x] Decodifica il payload del job una sola volta by @jackbayliss in #61526
- [13.x] Corregge il tipo di ritorno di
sum()quando la chiave corrisponde al nome di una funzione globale by @crishoj in #61578 - [13.x] Aggiunge UnitEnum al contract Authorizable by @hosni in #61589
- [13.x] Aggiunge il supporto per installare Mercure tramite il comando broadcasting install by @Lea-Bar in #61587
- [13.x] Preserva i valori non modificati durante la crittografia dei file di ambiente leggibili by @mathiasgrimm in #61503
Fonte originale:
https://laravel-news.com/laravel-13-32-0Altri articoli recenti
Laravel AI 1.1 e 1.2: Agent Skills, Cohere e structured output più solidi
Le release 1.1.0 e 1.2.0 di laravel/ai portano gli Agent Skills, l'approvazione obbligatoria per i tool built-in e nuovi provider come Cohere e Laya self-hosted. Sul fronte qualità arrivano i fix allo structured output per Bedrock e il supporto alle provider options. Aggiornati anche i modelli di default, con Claude 4.7+ che ignora i sampling params.
Laravel 13.35.0: scheduler più controllabile, code più flessibili e response Markdown
Laravel 13.35.0 porta Schedule::alwaysOnOneServer(), il supporto a schedule:interrupt per i comandi di lunga durata, --memory in percentuale per queue:work e il nuovo metodo markdown() sulla response factory. Tante piccole migliorie anche a test, view compilate in parallelo e dischi local.
BashBox: un interprete Bash in sandbox per agenti AI in PHP
BashBox è un interprete bash scritto in puro PHP che permette di eseguire gli script generati dagli agenti AI senza mai ricorrere a proc_open, exec o shell_exec. Ogni comando è una classe PHP che lavora su un filesystem virtuale, con limiti di esecuzione, quote disco e accesso di rete configurabili. Ideale per chi sviluppa agenti con il Laravel AI SDK o altre librerie simili.