Найти в Дзене

Laravel v12.53.0: Гибкость схем, работа с очередями и производительность

Команда Laravel выпустила обновление v12.53.0. Этот релиз получился насыщенным: он добавляет новые возможности для работы с JSON-схемами и очередями, исправляет ряд неприятных багов и содержит несколько важных внутренних улучшений. Итог: Это мощный минорный релиз, который будет полезен практически всем. Обновление настоятельно рекомендуется, особенно если вы используете JSON Schema, очереди или сложную валидацию. Полный список изменений и PR на GitHub Заметки разработчика
Оглавление

Команда Laravel выпустила обновление v12.53.0. Этот релиз получился насыщенным: он добавляет новые возможности для работы с JSON-схемами и очередями, исправляет ряд неприятных багов и содержит несколько важных внутренних улучшений.

Ключевые нововведения

  • Контроль параллелизма с любым кэшем: Добавлен метод Cache::funnel() для ограничения одновременного выполнения задач (throttling) с использованием любого драйвера кэша. Раньше такая возможность была только у Redis через RedisThrottle, теперь она универсальна (#58439).
  • Улучшена работа с JSON Schema: Добавлена поддержка ключей multipleOf для числовых типов (#58903) и uniqueItems для массивов (#58922). Это делает генерацию и валидацию сложных JSON-схем более точной и стандартизированной.
  • Полнотекстовый поиск по векторам: В whereFullText() добавлена опция для работы с предварительно вычисленными tsvector колонками в PostgreSQL. Это ускоряет поиск, если векторы обновляются не в реальном времени (#58893).
  • Именованные аргументы в событиях: Теперь при диспатче событий и их трансляции можно использовать именованные аргументы, что повышает читаемость кода при работе с конструкторами событий (#58913).
  • Поддержка сериализуемых классов в кэше: Внесены доработки для корректной работы с классами, реализующими интерфейс Serializable, при помещении их в кэш (#58911).

Существенные исправления

  • Исправлена сериализация моделей в очередях: Устранена проблема, из-за которой при определенных условиях сериализация модели в задании очереди могла работать некорректно (#58939).
  • Исправлена работа RetryCommand для SQS FIFO: Команда повторной обработки проваленных заданий теперь корректно работает с очередями SQS FIFO (#58936).
  • Устранена проблема с deadlock в транзакциях: Добавлен откат "зависшей" PDO-транзакции перед повторной попыткой коммита при deadlock. Это повышает надежность работы с БД в высоконагруженных сценариях (#58906).
  • Исправлена гонка при создании кэша real-time фасадов: Устранен редкий баг, который мог приводить к ошибкам при конкурентном создании файла кэша для фасадов (#58947).

Улучшения для разработчиков

  • Тестирование сессий: Метод assertSessionHasAll() при провале теста теперь показывает все несовпадающие значения, а не только первое. Это экономит время при отладке (#58946).
  • Очереди: В выводе команды queue:monitor теперь гарантированно отображается значение oldest_pending для лучшего мониторинга "застрявших" заданий (#58952).
  • JSONP Check: Добавлена проверка для корректной работы с JSONP-запросами, повышающая безопасность и совместимость (#58971).
  • Команда down: Теперь поддерживает обновление опций режима обслуживания без необходимости повторного ввода всех флагов (#58918).

Итог: Это мощный минорный релиз, который будет полезен практически всем. Обновление настоятельно рекомендуется, особенно если вы используете JSON Schema, очереди или сложную валидацию.

Полный список изменений и PR на GitHub

Заметки разработчика