Вышла первая бета-версия PHP 5.5, в которую интегрирован Zend Optimizer+

23 марта 2013 года

Представлена первая бета-версия новой значительной ветки интерпретатора языка программирования PHP 5.5, в которой добавлены новые языковые конструкции, удалены устаревшие возможности и интегрирован Zend Optimizer+ (новое название - Zend OPcache). Релиз PHP 5.5 ожидается в течение нескольких месяцев.

Среди новшеств PHP 5.5:

  • В состав включена система кэширования и оптимизации байткода Zend Optimizer+, ранее поставляемая в составе проприетарного пакета Zend Server, но недавно переведённая компанией Zend Technologies в разряд свободных проектов. Zend Optimizer+ предоставляет средства для ускорения выполнения скриптов на языке PHP за счёт использования техники кэширования опкода и применения дополнительных оптимизаций. Предкомпилированный код скриптов кэшируется в разделяемой памяти, что позволяет избежать выполнения стадий чтения с диска, разбора и компиляции исходного кода скриптов при их повторном запуске.

Кроме того, Zend Optimizer+ включает дополнительные методы оптимизации при генерации байткода, что позволяет достичь ускорения и за счёт более быстрого выполнения байткода. По сравнению с конкурирующей системой APC, Zend Optimizer+ выигрывает по производительности в среднем на 5-20%, обеспечивает лучшую совместимость с различными ветками и возможностями языка PHP, а также содержит средства для выявления повреждения данных (например, из-за некорректно написанной PHP-функции на языке C).

  • Добавлен новый API для хэширования паролей, предоставляющий застрахованные от ошибок разработчиков и более простые в использовании высокоуровневые функции для генерации и проверки валидности паролей по хэшам. Основное отличие нового API в том, что он берёт на себя генерацию надёжных хэшей, скрывая от разработчика операции ручного указания salt-а и выбора алгоритма хэширования (по умолчанию используется Bcrypt). Создание хэша сведено к выполнению "$hash = password_hash($password, PASSWORD_DEFAULT);", а проверка к вызову "password_verify($password, $hash)". В качестве причины внедрения нового API называется безалаберное отношение многих разработчиков к генерации salt-ов и повсеместный выбор нестойких к перебору алгоритмов хэширования;
  • Поддержка сопрограмм (coroutine) и генераторов (generator), предоставляющих простой и не требующий создания шаблонов способ реализации итераторов;
  • Поддержка расширяющего возможности блоков исключений try/catch ключевого слова "finally", выполняемого после завершения выполнения блока try, что гарантирует, что заданный в секции finally код будет выполнен в последнюю очередь после всех остальных обработчиков исключений;
  • Поддержка указания list() внутри блока foreach (), что позволяет организовать не требующий создания отдельных временных переменных перебор масивов;
  • Возможность разыменования констант для строк и массивов;
  • Улучшение модуля ext/intl со средствами интернационализации;
  • Возможность использования empty() и isset() над результатом работы функции и произвольными выражениями (например, empty(foo()));
  • Прекращение поддержки Windows XP и Windows 2003.
  • Прекращение поддержки устаревших функций: php_logo_guid(), php_egg_logo_guid(), php_real_logo_guid(),

zend_logo_guid();

  • Добавлен метод Generator::throw();
  • Реализована серия новых функций в расширении cURL;
  • Добавлена поддержка атрибута Max-Age в setcookie();
  • Поддержка системы трассировки Systemtap на платформе Linux;
  • Оптимизация доступа к временным и компилированным переменным на уровне VM, что позволило сократить число обращений к памяти на 8%;
  • Расширение ext/mysql объявлено устаревшим, вместо него следует использовать MySQLi или PDO_MySQL.
  • Добавлена опция php.ini для изменения пути к временной директории PHP;
  • Добавлены функции mysqli_begin_transaction()/mysqli::begin_transaction();
  • Реализованы все опции mysqli_commit()/mysqli_rollback(), которые могут быть использованы с START TRANSACTION, COMMIT и ROLLBACK в MySQL 5.6;
  • Добавлены функции-врапперы recvmsg() и sendmsg() для ext/sockets;
  • Добавлена функций array_column, которая возвращает запрошенный столбец из многомерного массива;
  • Добавлена возможность использования нескалярных итераторов в качестве ключа в цикле foreach (например, "foreach ($iter as $k = $v)");
  • Добавлена поддержка изменения названия процесса через CLI/CLI-Server SAPI функцию cli_set_process_title($title).

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Вышла первая бета-версия PHP 5.5, в которую интегрирован Zend Optimizer+», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.