Релиз php 5.5.0. Краткий обзор новшеств


Релиз новой версии php, за номером 5.5.0, был представлен на днях. С момента релиза предыдущей значимой версии языка прошло около полутора лет. В версии 5.5.0 есть интересные изменения, которые порадуют разработчиков и вселят надежду на светлое будущее языка 🙂

PHP — один из самых массовых интерпретируемых языков программирования и на нем написано подавляющее большинство сайтов в просторах сети Интернет. И не смотря на все его «несовершенство», php развивается и предлагает новые возможности. Давайте кратко рассмотрим основные изменения, которые появились в новой версии.

API хэширования паролей

Команда php решила, что пора прекратить с повальной недобросовестностью разработчиков в отношении работы с паролями пользователей. Обновленный API для хэширования паролей полностью скрывает процесс от разработчика, берет на себя выбор соли и алгоритма хэширования. По умолчанию используется Bcrypt.

С точки зрения разработчика, все сводится к более простым высокоуровневым функциям. Создание хэши сведено к выполнению:

А проверка, в свою очередь к:

Zend OPcache

Система кэширования и оптимизации байткода Zend OPcahce, бывшая ранее Zend Optimizer+ и поставлявшаяся в составе проприетарного пакета Zend Server, была переведена компанией Zend Technologies в разряд свободных проектов. Теперь она включена в состав php 5.5.0.

Предкомпилированный код скриптов кэшируется в разделяемой памяти, что предотвращает чтение с диска, разбор и компиляцию при последующих запусках. Дополнительные методы оптимизации при генерации байткода позволяют достичь ускорения выполнения. В итоге можно рассчитывать на прирост производительности в 5-20%, в среднем.

Реализация итераторов

Для более простой реализации итераторов, без создания шаблонов, включена поддержка сопрограмм и генераторов.

finally

Поддержка ключевого слова finally расширяет возможности использования блоков исключений try/catch. Выполнение происходит после завершения выполнения блока try, что гарантирует исполнение кода в секции finally с самую последнюю очередь.

Далее совсем кратко

  • Поддержка атрибута Max-Age в setcookie();
  • Поддержка трассировки Systemtap в Linux
  • Серия новых функций в cURL
  • Функция array_column, возвращающая запрошенный столбец и многомерного массива
  • Нескалярные итераторы в качестве ключа в foreach()
  • Поддержка SAPI-обработчика Apache 2.4 на Windows

Так же есть изменения нарушающие совместимость. По ним так же коротко:

  • Прекращена поддержка Windows XP/2003
  • Реализация игнорирования регистра символов в именах функций, классов и констант теперь не привязывается к локали, а определяется в соответствии с правилами ASCII
  • Прекращена поддержка устаревших функций: php_logo_guid(), php_egg_logo_guid(), php_real_logo_guid(), zend_logo_guid()
  • Расширение ext/mysql объявлено устаревшим, ему на смену, предсказуемо, стремятся MySQLi и PDO_MySQL

Для тех, кому интересно более подробно ознакомиться со списком изменения даю линк: что нового в php 5.5.0