O time do Laravel anunciou a versão 13.39.0 em 28 de outubro de 2026, trazendo um conjunto de aprimoramentos que afetam rotinas de manutenção, modelagem de dados, filas e validação. Entre as novidades, destaca‑se o comando Artisan session:garbage-collect, que permite agendar a limpeza de sessões expiradas, substituindo o antigo mecanismo de "lottery" que rodava aleatoriamente em requisições.
Para usar a nova coleta, basta registrar no scheduler: Schedule::command('session:garbage-collect')->hourly(); O comando respeita o valor session.lifetime definido na aplicação, garantindo que apenas sessões ultrapassadas sejam removidas. Caso deseje desativar a limpeza automática por requisição, basta ajustar lottery para [0, 100]. Essa mudança reduz a carga inesperada em picos de tráfego e dá maior controle ao desenvolvedor.
Outra adição importante é o atributo PHP #[Table(key: false)], que permite desativar a chave primária padrão de um modelo Eloquent. Antes, era necessário sobrescrever a propriedade $primaryKey com null, o que ainda fazia o framework fallback para id. Com a nova sintaxe, modelos como Activity podem ser criados sem coluna id, facilitando tabelas de logs ou pivot tables sem chave artificial. Além disso, os relacionamentos BelongsToMany ganharam os métodos forceCreate() e forceCreateQuietly(), bem como restoreOrCreate() e createOrRestore(), corrigindo problemas de associação automática.
Na camada de filas, o evento JobAttempted agora inclui a propriedade duration (em milissegundos), permitindo monitorar o tempo gasto por jobs que falham ou são reenviados. Isso completa a informação já presente em JobProcessed. O construtor de regras de validação Rule::array() recebeu os métodos min(), max(), between() e exactly(), alinhando‑se ao conjunto de regras disponíveis para strings e simplificando a definição de limites de tamanho de arrays.
Vários ajustes de teste foram incorporados: o novo atributo #[WithoutMigrationEvents] impede que eventos de migração alcancem DB::listen() durante testes que utilizam LazilyRefreshDatabase; o MailFake agora suporta Mail::html() e Mail::plain(); e o BusFake aceita withoutDispatchingAfterResponses(). Por fim, os comandos config:cache, route:cache e event:cache passaram a escrever arquivos de cache de forma atômica, evitando que processos concorrentes leiam arquivos vazios e causem falhas até o reinício do PHP‑FPM.
"v13.39.0 – Rebuild the phpredis client when a broken pipe surfaces as a warning; Register the session:garbage-collect command; Write config, route and event cache files atomically." – Release notes, Laravel GitHub.
- Versão afetada: 13.39.0 (e todas as 13.x anteriores que não incluíam essas mudanças).
- Correções incluídas nas versões 13.38.x e anteriores permanecem válidas; a atualização recomenda migrar para 13.39.0 para obter os novos recursos e correções.
Fonte: Laravel News