Релиз языка программирования PHP 7.3

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

Ключевые улучшения в PHP 7.3:

• Реализован гибкий синтаксис многострочной вставки (строки heredoc и nowdoc), не требующий обязательного перевода строк после маркера окончания блока и допускающий выравнивание отступами;

• Добавлена поддержка назначения ссылок в list(): теперь поддерживается синтаксис «list($a, &$b) = $array;», эквивалентный присвоению «$a = $array[0]; $b =& $array[1];». Предложен также упрощённый синтаксис присвоения, позволяющий указывать вместо «list()» квадратные скобки, например «[$a, &$b] = $array;»

• При вызове функций и методов теперь допускается оставление запятых в конце списка аргументов, например, «unset($foo, $bar, $baz,)»;

• Расширение PCRE переведено на ветку PCRE2;

• Выражение «instanceof» теперь допускает указание литералов в качестве первого операнда (в такой ситуации результат всегда будет FALSE);

• Добавлено новое исключение CompileError, наследуемое от ParseError и генерирующее для некоторых типов ошибок перехватываемое событие CompileError вместо фатальной ошибки;

• Значительно расширены возможности и увеличена производительность дополнения MBString, в том числе добавлены полноценные средства для манипуляций с регистром символов (MB_CASE_LOWER, MB_CASE_UPPER, MB_CASE_TITLE, MB_CASE_FOLD и т.п.), до версии 11 обновлена поддержка спецификаций Unicode, добавлена поддержка строк, размером больше 2 Гб, в функциях mb_ereg_*() добавлена поддержка именованного захвата элементов. Объявлены устаревшими вызовы mbereg_*(), вместо которых следует использовать corresponding mb_ereg_*();

• В SAPI-модуль FPM добавлены новые глобальные опции log_limit и log_buffering для ограничения размера выводимой в лог строки и включения режима записи в лог без буферизации. Также добавлена опция decorate_workers_output, позволяющая отключить декорирование вывода от рабочих процессов при активации режима catch_workers_output;

• В расширении LDAP в большинстве функций, таких как ldap_add и ldap_read, появился параметр serverctrls для отправки на сервер дополнительных сообщений (LDAP Controls — механизм расширения операций LDAP и передачи дополнительной информации вместе с запросом), а в ldap_parse_result для получения клиентом дополнительных сообщений от сервера. Налажена поддержка режимов LDAP_OPT_SERVER_CONTROLS и LDAP_OPT_CLIENT_CONTROLS в функциях ldap_get_option и ldap_set_option;

• В заголовок страницы phpinfo(), добавлено отображение переменной PHP_VERSION;

• В расширение Date добавлен метод DateTime::createFromImmutable();

• В расширение GD в функции imagecreatefromstring() появилась поддержка создания изображений в формате WebP;

• При сборке с опцией configure —with-password-argon2 в функциях password_hash(), password_verify(), password_get_info() и password_needs_rehash() обеспечена поддержка алгоритмов хэширования паролей Argon2i и Argon2id;

• Добавлена функция hrtime() для вывода значения времени (число секунд и наносекунд) на основании показаний монотонного таймера, отражающего неразрывно увеличивающееся время, прошедшее с определённого момента в прошлом;

• Представлена новая функция net_get_interfaces() для получения информации о доступных сетевых интерфейсах;

• Улучшена работа сборщика мусора;

• Переписана на PHP утитила ext_skel (генерирует шаблоны кода дополнений), для запуска которой теперь не нужно дополнительных зависимостей и её можно запускать в том числе в Windows (‘php ext_skel.php’);

• Объявлено устаревшим определение имён констант не чувствительных к регистру (определялись при помощи указания в define специального флага).

• Приведены к соответствию с поведением Unix операции открытия файлов в Windows: файловые дескрипторы теперь по умолчанию открываются в Windows в режиме, допускающем чтение, запись и удаление (открытые файлы теперь можно удалить);

• Прекращена поддержка платформы BeOS.

Источник: opennet.ru



Комментарии:

Добавить комментарий