Представлен бета-выпуск новой ветки языка программирования PHP 8

Представлен бета-выпуск новой ветки языка программирования PHP 8
27.08.2020
20735

Опубликован тестовый выпуск PHP 8.0.0, Beta 2. Официальный релиз стабильной версии PHP 8 запланирован на 26 ноября. В нее будет внесен ряд критических изменений, функций и улучшений производительности.

PHP 8 предлагает набор новых функций, таких как JIT-компилятор, типы объединения, атрибуты и многое другое.

Новые возможности

JIT

PHP – это интерпретируемый язык: он не компилируется как программа на C, Java или Rust. Вместо этого он транслируется в машинный код во время выполнения. JIT – это метод, который компилирует части кода так, что вместо них можно использовать скомпилированную версию. Этот процесс можно описать как «кэшированную версию» интерпретируемого кода.

«Монитор» JIT будет анализировать код во время его выполнения. Если части кода выполняются повторно, он помечает их как «теплые» или «горячие», в зависимости от частоты. «Горячие» части можно скомпилировать как оптимизированный машинный код и использовать вместо оригинального. Это должно значительно увеличить производительность PHP при работе с повторяющимися кусками кода.

Демонстрация JIT с генерацией фракталов: https://youtu.be/dWH65pmnsrI

Атрибуты

Атрибуты в PHP – аналог аннотаций или декораторов в других языках. Они предлагают способ указывать полную информации о типе без необходимости синтаксического анализа. Атрибуты могут применяться к:

  • функциям (включая закрытие и короткое закрытие)
  • классам (включая анонимные классы), интерфейсы, черты характера
  • константам класса
  • свойствам класса
  • методам класса
  • параметрам функции / метода

Продолжаются споры по поводу принятого на текущий момент синтаксиса <<Attr>> – он считается слишком многосимвольным и сложночитаемым при использовании вложенных аннотаций. В качестве альтернативы предлагаются варианты: @@Attr, #[Attr], @[Attr], @:Attr или @{Attr}. Окончательный вариант пока не определен – на странице, посвященной синтаксису, проходит голосование, итоги которого будут подведены 2 сентября.

Выражение соответствия

PHP 8 представляет новое выражение match – эту функцию стоит использовать в качестве альтернативы switch. 

Синтаксис выражения match значительно короче, не требует заявления break, позволяет комбинировать условия, использует строгие сравнения типов и не выполняет приведения типов.

Продвижение свойств 

Когда параметр метода использован с одним из ключевых слов видимости public, protected или private, он считается «продвигаемым». Для каждого продвигаемого параметра будет добавлено свойство с тем же именем и переадресация этого свойства, включенного в тело конструктора, в соответствии с подробными правилами.

Отмена проверки наследования частных методов

Ранее в PHP применялись одинаковые проверки наследования к общедоступным, защищенным и частным методам. Частные методы должны были следовать тем же правилам подписи, что и защищенные и общедоступные методы. Это бессмысленно, поскольку закрытые методы не доступны дочерним классам.

Теперь проверка наследования не будет выполняться для частных методов. 

WeakMap

С помощью WeakMap можно организовывать карты «слабых ссылок» (ссылок на объекты, которые не предотвращают сборку мусора для этих объектов). Таким образом реализуется ресурсосберегающее кэширование объектов, не приводящее к утечкам памяти.

Завершающая запятая в списках параметров

В PHP 8 теперь поддерживается завершающая запятая при указании списка параметров в вызовах функций и конструкторах методов. Также завершающие запятые поддерживаются и в списке замыканий use.

ext-json доступен всегда 

PHP больше нельзя скомпилировать без включенного расширения JSON. Разработчикам теперь не требуется делать проверку, что расширение существует –  они смогут рассчитывать на присутствие JSON всегда.

Критические изменения

Ошибки согласованного типа

Пользовательские функции в PHP будут вызывать TypeError, а внутренние – нет, они теперь выдают предупреждения и возвращают null. 

Режим ошибки PDO по умолчанию

Ранее при возникновении ошибки SQL не выдавал предупреждения и не создавал исключения, если разработчик не реализует свою собственную явную обработку ошибок. Теперь режим PDO исправлен.

Разумный результат при сравнении чисел и строк

Исправление ситуации в PHP, когда 0 == "foo" давало результат true. 

Ожидания

Существует вероятность, что программистам потребуется внести некоторые изменения в свой код, чтобы он работал на PHP 8. Однако, обновление не должно вызвать сложностей, так как большинство изменений были уже реализованы в предыдущих версиях. 

Согласно плану выпуска следующую версию Beta 3 стоит ожидать 3 сентября. Это будет последняя бета перед основной стабильной версией PHP 8.0 в ноябре 2020 года. Следует отметить, что бета-версия не подходит для использования в продакшене и предназначена только для ознакомления.

Напомним также, что в июле представитель Microsoft заявил, что компания не собирается выпускать официальные сборки для PHP 8 и более поздних версий.


Полный список новых функций PHP 8

Полный список критических исправлений

Автор:
Обозреватель

См. также

Минцифры подготовило проект постановления по запуску платформы, на которой ИТ-специалисты могут пройти добровольное тестирование и подтвердить свою квалификацию.

11.12.2024    997    user1915669    3       

2

Федеральная налоговая служба запустила интерактивный сервис, позволяющий формировать в машиночитаемом виде договоры, контракты, соглашения и спецификации. Чтобы создать документ и скачать получившийся файл, регистрация не требуется.

03.12.2024    795    user2114475    0       

2

Российский Альянс по искусственному интеллекту обновил требования к специалистам по ИИ: вышла новая модель с основными профессиями и навыками. Теперь базовых профессий в сфере ИИ осталось только четыре.

01.11.2024    954    user1915669    0       

3

Система платежей «Волна» по планам сделает возможной бесконтактную оплату для владельцев IPhone в России, а BRICS Pay позволит совершать безналичные расчеты иностранцам по картам Visa и Mastercard.

23.10.2024    1262    AnastasiaKl    0       

4

Конструктор сайтов Wix уходит из России с 12 сентября 2024 года – перестанут работать все российский аккаунты. Сайты, привязанные к аккаунтам, также перестанут работать.

11.09.2024    1242    user1915669    2       

2

ИИ научат разработке цифровых интегральных микросхем – несколько российских научных институтов заявили об участии в проекте. Проект рассчитан на 3 года – с 2024 по 2026.

23.07.2024    876    user1915669    0       

2

Развитие искусственного интеллекта и цифровых сервисов в России стало причиной роста потребности в мощных центрах обработки данных. Эксперты прогнозируют, что дефицит ЦОД, который уже наблюдается сегодня, в ближайшие годы будет только усиливаться.

18.07.2024    988    AnastasiaKl    0       

1

В сентябре 2024 года видеоигры в России начнут маркировать – пока на добровольной основе. Геймерам будут сообщать о семи видах чувствительного (неприятного) контента в игре.

17.07.2024    1066    user1915669    0       

1

Комментарии

Инфостарт бот
1. sikuda 28.08.20 09:17 Сейчас в теме
Ну когда же мы узреем JIT-компиляцию в 1С?
SKravchenko; +1 Ответить

Оставьте свое сообщение