The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Начало бета-тестирования PHP 5.4

27.09.2011 11:36

Новая ветка интерпретатора языка программирования PHP 5.4 перешла на стадию бета-тестирования. В новой ветке добавлены новые языковые конструкции и удалены устаревшие возможности, поэтому версия 5.4 не обеспечивает полную совместимость на уровне API и конфигурации. При использовании PHP 5.4 может потребоваться модификация приложений и серверных настроек (например, удалена поддержка Safe mode и register_globals).

Основные новшества:

  • Возможности, удаленные по причине их устаревания:
    • Прекращение поддержки всех опций, связанных с режимом "Safe mode";
    • Прекращение поддержки синтаксиса "break/continue $var"
    • Удаление конфигурационных опций register_globals, define_syslog_variables, highlight.bg, session.bug_compat42, session.bug_compat_warn, y2k_compliance, allow_call_time_pass_reference и register_long_arrays;
    • Удаление функций session_is_regisitered(), session_registered() и session_unregister().
  • Увеличение производительности и оптимизация потребления памяти в Zend Engine. Работа по оптимизации проведена большая, улучшений очень много и они затрагивают различные части внутренностей PHP. Например, в тесте bench.php производительность PHP возросла на 19%, а в тесте micro_bench.php на 26%. При оценке скорости выполнения реальных приложений (c использованием акселератора APC) отмечается ускорение работы CMS typo3 на 6%, WordPress на 8%, drupal на 2%, xoops на 14% и scrum на 13%;
  • Поддержка языковой конструкции "Traits", предназначенной для организации повторного использования объектов без изменений существующих объектов;
  • Поддержка разыменования массивов (например, возвращающую массив функцию можно использовать как "func()['key']");
  • Поддержка сокращенного синтаксиса задания массивов, например, можно указывать func(["id" => 500, "type" => "account"]) вместо func(array("id" => 500, "type" => "account"));
  • Интеграция поддержки системы динамической трассировки DTrace;
  • Перемещение встроенного расширения ext/sqlite во внешний каталог PECL (изменение не касается sqlite3, поддержка которого будет по прежнему встроена);
  • Для сборки PHP 5.4 требуется установка пакета autoconf 2.59 или более новой версии (рекомендуется Autoconf 2.60+). Расширены возможности сборки для unix-подобных систем, например, теперь можно одновременно собрать несколько бинарных SAPI из PHP и внешних SAPI-модулей;
  • Увеличена производительность парсинга запросов в FastCGI;
  • В $_SERVER['REQUEST_TIME'] теперь передается время с указанием микросекунд;
  • Изменено значение по умолчанию для опции "default_charset", вместо ISO-8859-1 теперь указано UTF-8;
  • По умолчанию активирован режим поддержки многобайтовых кодировок (php больше не нужно специально собирать с опцией "--enable-zend-multibyte"). Для выключения поддержки в php.ini добавлена директива zend.multibyte;
  • Возвращена поддержка замыкания "$this";
  • Добавлена возможность косвенного вызова методов через массив;
  • Добавлена поддержка использования ссылок на объекты при рекурсивном вызове serialize();
  • Добавлены новые функции: http_response_code(), header_register_callback();
  • Увеличена производительность функции unserialize();
  • Добавлена поддержка "stream metadata API: в класс stream_metadata();
  • Разнообразные улучшения отмечаются почти во всех стандартных расширениях;
  • Добавлен вызываемый typehint;
  • Удален алгоритм угадывания часового пояса. Отныне если часовой пояс не задан явно, используется "UTC";
  • Расширения mysql, mysqli и pdo_mysql теперь по умолчанию базируются на mysqlnd.

Разработка PHP 5.4 ведется в рамках нового регламента подготовки релизов, подразумевающего плановую подготовку выпусков через фиксированные промежутки времени с оформлением тестовых версий в процессе разработки. В соответствии с новым регламентом, значительные релизы PHP, содержащие новшества, будут выходить раз в год, а время поддержки новой ветки составит три года. Более подробно с особенностями нового регламента можно познакомиться в данном обзоре.

  1. Главная ссылка к новости (http://www.php.net/index.php#i...)
  2. OpenNews: Релиз PHP 5.3.8 с устранением серьёзной проблемы безопасности
  3. OpenNews: Релиз PHP 5.3.7 с устранением 6 уязвимостей
  4. OpenNews: Разработчики PHP планируют упразднить классическое расширение ext/MySQL
  5. OpenNews: PHP-транслятор HipHop позволил Facebook использовать в разы меньше оборудования
  6. OpenNews: Представлен регламент подготовки новых релизов PHP
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/31864-php
Ключевые слова: php
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (29) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, jedie (?), 11:42, 27/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Язык эволюционирует.
     
  • 1.2, Аноним (-), 13:07, 27/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > версия 5.4 не обеспечивает полную совместимость на уровне API

    Вот за это я очень не люблю этот язык. в Python 2.6 и Python 2.7 прекрасно запускается Zope3, в которой оставлена поддержка Python 2.4

     
     
  • 2.3, Аноним (-), 13:15, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Вот за это я очень не люблю этот язык. в Python 2.6 и Python 2.7 прекрасно запускается Zope3, в которой оставлена поддержка Python 2.4

    Т.е. ты совместимость по версиям сравниваешь? ГСМ детектед. Кто сказал, что Питоноподобное версионирование правильное?

     
     
  • 3.10, Аноним (-), 16:59, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >> Вот за это я очень не люблю этот язык. в Python 2.6 и Python 2.7 прекрасно запускается Zope3, в которой оставлена поддержка Python 2.4
    > Т.е. ты совместимость по версиям сравниваешь? ГСМ детектед. Кто сказал, что Питоноподобное
    > версионирование правильное?

    потому что при каждом апгрейде версии необходимо думать, будет ли мелкий у клиентов на хостинге работать так же хорошо, как и в php5.4

     
  • 2.4, Аноним (-), 13:34, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Толи дело ява совместима до 1.0.2
     
     
  • 3.9, Аноним (-), 16:57, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    я посмотрю, как ты на Java 7 запустишь что-нибудь из Java 5, Java 6. Ты почти сразу получишь откат, поскольку не совместимо. Уже жаловались на это (http://www.opennet.me/opennews/art.shtml?num=31340)
     
     
  • 4.13, humanoid (?), 17:16, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то там были не проблемы с запуском, а проблемы с ключами оптимизации, в результате которого терялись циклы, точно такую же багу можно поймать и на 5й и на 6й яве, главное знать ключи (раньше по дефолту они были выключены, в 7ке по дефолту включили).

    А по поводу совместимости всё пучком, собирал 6й явой сорцы которые писались ещё для 1.2 и всё работает, это же кровавый энтерпрайз, там совместимость идёт в первую очередь и это одна из причин по которой дотнет так тяжело входит в эту область, вот там ты свежим дотнетом точно старые сорцы не соберёшь, уже не один раз на это натыкался.

     
  • 4.17, Аноним (-), 17:51, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    У меня ничего не падает на 7, это какой-то специфичный баг, и его таки исправят.
     

  • 1.5, Ку (?), 13:59, 27/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Зачастили что-то. Тут ещё на 5.3 в продакшене не перешли, а уже 5.4.
     
     
  • 2.6, Pro (??), 14:12, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Неправда, php5.3 давно уже а продакшне.
     
  • 2.7, fi (ok), 14:37, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Смотрим версию на RHEL6: php-5.3.2

    Так что уже год как перешли.

     
     
  • 3.16, Аноним (-), 17:47, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    С RHEL5 ещё никто не переходил, только новые установки если.
     

  • 1.8, Аноним (-), 16:26, 27/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    у хостеров опять нервно задергался глазик
     
     
  • 2.12, Аноним (-), 17:03, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Что хостеры? Хостеры не будут дергаться и чесаться, пока популярные движки (тот же Вордпресс, ну или Zend для начала) не будут ТРЕБОВАТЬ PHP 5.4. Произойдет это еще эх нескоро (версии фреймворков для 5.3 только на подходе). До этого времени - это будет удел энтузиастов-стартаперов, которые пусть ставят что хотят на своих VDS и дедиках (ну, я и сам такой:) )
     

  • 1.11, jedie (?), 17:00, 27/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Вообще, самой "вкусной" версией должна быть шестая. Ибо там полная поддержка Unicode. Такого пожалуй нигде нет. Но его еще минимум год ждать.
     
     
  • 2.18, Sylvia (ok), 18:07, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    http://www.phpclasses.org/discuss/blog/PHP-Classes-blog/post/126/thread/1/
    вот только отложили ее на неопределенный срок, все что планировали в 6 - реализовали в 5.4, кроме юникода разумеется


    --------------------------------------

    от себя добавлю по тестированию sapi fpm-fcgi php5.4-svn (бета в тарболле меня не устроила, т.к. периодически с вордпрессом сегфолтится)

    из проблем -

    1) несколько модулей Drupal выдали вот такую ошибку в лог -
    "Only variables can be passed by reference in" , один модуль исправила, один деинсталлировала ( все равно не нужен никому кроме спамеров )

    2) APC-3.1.9 выдавал ошибку с double free() при запуске php-fpm, текущий SVN снапшот из PECL такой проблемы не имеет. XCache 1 и EAccelerator по прежнему пока не собираются с 5.4.

    из хорошего -
    1) По скорости работы вордпресс - работать стало намного быстрее, от времени генерации странички в ~200 мс в новой версии стало ~ 120 мс (это не обещаные 8%, а гораздо больше, сюда же включено и ускорение FastCGI, так что все стало гораздо интереснее)

    2) потребление памяти - на генерацию страницы теперь идет 3.5 Мб памяти (APC-3.1.9+svn) вместо 4.5 Mb (PHP5.3 + EAccelerator) или 5.5 Mb (PHP5.3 + APC)
    значения маленькие в целом, потому что скрипты уже скомпилированы и сохранены в кеше.

    PS: хоть APC и обещали включить в основной комплект поставки расширений PHP, пока нет его в тарболлах.

    кто будет тестировать - удачи.


     
     
  • 3.19, Аноним (-), 20:00, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > "Only variables can be passed by reference in"

    Давно запланировано. В PHP5.3 честный E_DEPRECATED.
    Достаточно удалить амперсанд при _вызове_ функции.

     
  • 2.20, Аноним (-), 20:03, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Ибо там полная поддержка Unicode.

    Поясните, пожалуйста. Побайтовая проверка UTF-8 и поддержка модификаторов планируется?

     
     
  • 3.21, jedie (?), 20:13, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    К сожалению точного ответа не знаю.
     
  • 3.23, Аноним (-), 21:32, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Поясню для интересующихся.

    1) Каждый символ, кодированный в UTF-8 состоит из идентификатора (по которому определяется количество байт на символ) и хвоста. Если не проверять каждый байт, то при пропуске любого байта (кроме ASCII) часть следующих за ним символов будут неверными — содержать часть соседнего им символа. Согласно стандарту UTF-8 парсер должен пропустить поломанный символ и продолжить корректную обработку остальных.

    2) Каждый код Юникода (который не собрать без обработки каждого байта), соответствующий символу UTF-8 следует проверять на нахождение в диапазоне суррогатных пар UTF-16 (убранных в UTF-32), в пределах Юникода, а также проверять чтобы количество используемых символом байт соответствовало нужному (например, ASCII можно закодировать 4-мя байтами). Согласно стандарту UTF-8 парсер должен пропустить такой символ.

    3) Символ вместе с модификатором должны считаться парсером за один символ.

     
  • 2.29, vasek (?), 01:55, 12/11/2011 [^] [^^] [^^^] [ответить]  
  • +/
    perl же
     
  • 2.30, Siberianlaika (ok), 01:48, 12/01/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Ибо там полная поддержка Unicode. Такого пожалуй нигде нет.

    Полной поддержки юникода нет нигде? А питон как же? В нём изначально поддержка юникода в языке, строки хранятся в UCS-2/UCS-4 и работа с ними безо всяких доп. извращений вроде пхпшного mbstring.

     

  • 1.14, luserz (?), 17:25, 27/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    неужели костыль с типа вкорячили ... какой вариант то хоть?
     
     
  • 2.15, luserz (?), 17:26, 27/09/2011 [^] [^^] [^^^] [ответить]  
  • +/
    типами
     

  • 1.24, KOL (ok), 14:42, 28/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >В $_SERVER['REQUEST_TIME'] теперь передается время с указанием микросекунд;

    А вот это они какашки.
    Все остальное - годно.

    Вот это тоже важно, на мой взгляд:

    ><?= is now always available regardless of the short_open_tag setting

     
  • 1.25, Аноним (-), 15:28, 28/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    func()['key'] - очень радует!
     
  • 1.26, sagifire (?), 01:09, 29/09/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Лучше бы сделали перегрузку операторов, потому что даже нельзя нормально завернуть в класс зоопарк строкових функций
     
  • 1.27, aTz (?), 23:34, 27/10/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну а вот это новшество что пропустили? По-моему оно не менее важное, я его по-крайней мере пару лет ждал

    - add short array syntax as defined in https://wiki.php.net/rfc/shortsyntaxforarrays, 2nd solution using => only

    Ну т.е. теперь можно будет писать к примеру
    func1(["id" => 500, "type" => "account"]);
    вместо
    func1(array("id" => 500, "type" => "account"));

     
  • 1.28, Yankee (??), 13:01, 11/11/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Изменено значение по умолчанию для опции "default_charset", вместо ISO-8859-1 теперь указано UTF-8;

    Ну, наконец-то... В XXI веке давно пора было.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру