Начало альфа-тестирования PHP 7. Новые выпуски PHP 5 с устранением уязвимостей
12 июня 2015 года
Доступна для тестирования первая альфа-версия новой ветки языка программирования PHP 7, отличающейся кардинальной переработкой некоторых подсистем. Релиз запланирован на 12 ноября.
Ключевые улучшения:
- Существенное увеличение производительности, благодаря применению новых методов организации работы с памятью и переходу на новые структуры хранения данных. В некоторых тестах PHP 7 до двух раз быстрее PHP 5.6;
- Целостная поддержка 64-разрядных типов на 64-разрядных системах. В том числе возможность использования строк, размером до 2^31 байт, поддержка 64-разрядных значений integer при работе в Windows, поддержка больших файлов в 64-разрядных сборках.
- Возможность обработки через исключения многих ошибок, ранее приводивших к принудительному завершению работы;
- Новый оператор "??", позволяющий определить альтернативное значение, в случае если неопределён первичный объект присвоения. Например, для присвоения пустой строки, если не заполнен элемент ассоциативного массива теперь вместо isset($_GET['mykey']) ? $_GET['mykey'] : можно указать $_GET['mykey'] ?? "";
- Возможность явного определения скалярных типов int, float, string и bool для аргументов и значений функций (например, "function foo(int $abc): int").
- Режим жесткой проверки типов, включаемый директивой "declare(strict_types=1)", при котором несоответствие типа передаваемого функции или возвращаемого функцией значения будет приводить к ошибке.
- Новый оператор комбинированного сравнения "" с реализацией поведения, похожего на strcmp() и version_compare(), но через использование типового синтаксиса операторов сравнения. В частности, новый оператор позволяет не только проверить идентичность операндов, но и оценить какой из них больше другого (0 - равны, 1 - левый больше, -1 - правый больше);
- Поддержка анонимных классов;
- Поддержка группировки определений в операторе use (например, use Doctrine\\Common\\Collections\\Expr\\{ Comparison, Value, CompositeExpression };);
- Новый метод Closure::call();
- Дополнительный синтакс для встраивания unicode-строк \\u{xxxxxx};
- Поддержка задания массивов констант в операторе define();
- Возможность использования зарезервированных ключевых слов в новых контекстах (например, можно определить функцию forEach и она не будет пересекаться с оператором foreach);
- Новый синтаксис "yield from выражение" для делегирования фукциями-генераторами операций в перемещаемые объекты и массивы.
- В дополнение openssl добавлена поддержка TLS-расширения я ALPN (Application-Layer Protocol Negotiation) для согласования протоколов уровня приложений, используемых для обеспечения защищённого соединения. Используется в SPDY и HTTP/2;
- Унификация синтаксиса определения переменных и переход к использованию AST (Abstract Syntax Tree). Изменение некоторой редко используемой семантики комбинирования переменных (например, $foo-$bar['baz'] теперь интерпретируется как ($foo-$bar)['baz'], а не $foo-{$bar['baz']}). Достаточно большая порция изменений, нарушающих совместимость;
- Прекращение поддержки старых и не поддерживаемых вызовов SAPI и расширений:
sapi/aolserver, sapi/apache sapi/apache_hooks, sapi/apache2filter, sapi/caudium, sapi/continuity, sapi/isapi, sapi/milter, sapi/nsapi, sapi/phttpd, sapi/pi3web, sapi/roxen , sapi/thttpd, sapi/tux, sapi/webjames, ext/mssql и ext/sybase_ct;
Дополнительно можно отметить выход корректирующих выпусков языка программирования PHP 5.6.10, 5.5.26 и 5.4.42, в которых устранены восемь уязвимостей и исправлено около десяти ошибок. В функцию mail() добавлена защита от подстановки дополнительных заголовков. В расширении FTP устранено целочисленное переполнение, которое может привести к выполнению кода. В функции escapeshellarg устранена уязвимость позволяющая осуществить подстановку команд операционной системы при экранировании спецсимволов в аргументах к функции system(). Две уязвимости устранены в расширении PCRE (CVE-2015-2325, CVE-2015-2326) и три в Sqlite3 (CVE-2015-3414, CVE-2015-3415, CVE-2015-3416).
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.