Микро-толки — дайджест #10

После огромного перерыва в полгода таки решили провести новый микро-толк. Основным поводом послужил выход PHP 7.3, но были и другие новости для обсуждения.

Например, Microsoft решил перевести свой браузер Edge на базу Chromium и первые сборки должны появиться уже в начале 2019 года. Видимо не потянули разработку своего движка EdgeHTML. С одной стороны - больше совместимости, а с другой стороны - монополизация одним движком. Хотя фрагментация еще сохраняется. Из популярных браузеров — есть Firefox на базе движка Gecko, есть Safari на базе WebKit и есть куча браузеров (Opera, Chrome, Яндекс-Браузер и новоиспеченный Edge) на основе браузера Chromium с движком Blink.

Итак, переходя к основной новости — 6 декабря 2018 года вышел PHP 7.3.

Среди новых возможностей — следующие:

  • улучшения синтаксиса Heredoc и Nowdoc, добавилась возможность использовать отступы;
  • добавлено предупреждение (warning) при использовании continue внутри switch;
  • функции json_encode() и json_decode() будут бросать исключение в случае ошибки и наличия соответствующего флага;
  • теперь можно использовать запятую после последнего аргумента функции;
  • добавлены функции array_key_first() и array_key_last();
  • новая функция hrtime(), которая возвращает время высокой точности (high-resolution) и не зависит от системного времени;
  • добавлена функция is_countable() для проверки на перечислимость, что может помочь обрабатывать ошибки вызова count() на неперечислимых данных, которые добавились в PHP 7.2;
  • можно использовать ссылки в list();
  • улучшена работа сборщика мусора, особенно с больши́м количеством объектов;
  • движок регулярных выражений обновлен до PCRE2.

Подробный список всех изменений можно найти в PHP 7.3 upgrade notes или в руководстве по миграции с PHP 7.2 до 7.3.

Ну и раз уж зашла речь о новой версии PHP, то стоит упомянуть, что PHP 5.6 и PHP 7.0 уже официально не поддерживаются, а PHP 7.1 перешел в режим поддержки безопасности. А это в свою очередь сильно подталкивает к переходу на 7.2, а еще лучше — сразу на PHP 7.3.

Здесь интересно посмотреть статистику использования версий PHP:

При этом нужно иметь в виду, что статистика от Packagist покрывает только относительно новые проекты, которые используют composer, а статистика от Wordpress скорее всего имеет обратное покрытие, поэтому нужно рассматривать их совместно. 

Кроме того интересно узнать планы на PHP 8, которые озвучил Zeev Suraski:

  • JIT (возможно не улучшит типичные веб-сайты, но может позволить использовать PHP не только для веба и возможно откроет новые горизонты).
  • Поддержка модели выполнения долгих асинхронных запросов. Ключевые слова здесь — это Node.js, ReactPHP и Swoole.
  • FFI (Foreign Function Interface). Упростит связывание PHP с нативными библиотеками (искусственный интеллект, машинное обучение, нейронные сети и прочее).
  • Поддержка предзагрузки (preloading). Подробнее — в этом RFC. Уже подтверждено, что это будет в PHP 7.4!

PHP 8 планируется к выходу в конце 2020 года.

И напоследок грустные новости о PHP FIG и стандартах PSR. Из PHP FIG уходит Symfony (кстати, не уверен, что оригинальный твит сохранился, кажется он уже удален) в след за Doctrine, Guzzle, Propel и Laravel. Так или иначе создатели фреймворков не довольны, что стандарты PSR порой не учитывают существующие реализации.

Предыдущий дайджест: Микро-толки — дайджест #9