Начало альфа-тестирования PHP 7. Новые выпуски PHP 5 с устранением уязвимостей
Доступна для тестирования первая альфа-версия новой ветки языка программирования 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).
© OpenNet