PHP                                                                        NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
13 Nov 2012, PHP 5.5.0 Alpha 1

- General improvements:
  . Added support for generators. (Nikita Popov)
  . Add simplified password hashing API 
    (https://wiki.php.net/rfc/password_hash). (Anthony Ferrara)
  . Add generators and coroutines (https://wiki.php.net/rfc/generators).
    (Nikita Popov)
  . Support list in foreach (https://wiki.php.net/rfc/foreachlist). (Laruence)
  . Implemented 'finally' keyword (https://wiki.php.net/rfc/finally). (Laruence)
  . Drop Windows XP and 2003 support. (Pierre)
  . Improve set_exception_handler while doing reset.(Laruence)
  . Support constant array/string dereferencing. (Laruence)
  . Add support for using empty() on the result of function calls and
    other expressions (https://wiki.php.net/rfc/empty_isset_exprs).
    (Nikita Popov)
  . Remove php_logo_guid(), php_egg_logo_guid(), php_real_logo_guid(),
    zend_logo_guid(). (Adnrew Faulds)

- Calendar:
  . Fixed bug #54254 (cal_from_jd returns month = 6 when there is only one Adar)
    (Stas, Eitan Mosenkis)

- Core:
  . Added boolval(). (Jille Timmermans)
  . Added "Z" option to pack/unpack. (Gustavo)
  . Implemented FR #60738 (Allow 'set_error_handler' to handle NULL).
    (Laruence, Nikita Popov)
  . Added optional second argument for assert() to specify custom message. Patch
    by Lonny Kapelushnik (lonny@lonnylot.com). (Lars)
  . Fixed bug #18556 (Engine uses locale rules to handle class names). (Stas)
  . Fixed bug #61681 (Malformed grammar). (Nikita Popov, Etienne, Laruence)
  . Fixed bug #61038 (unpack("a5", "str\0\0") does not work as expected).
    (srgoogleguy, Gustavo)
  . Return previous handler when passing NULL to set_error_handler and
    set_exception_handler. (Nikita Popov)

- cURL:
  . Added support for CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOPT_APPEND, 
    CURLOPT_DIRLISTONLY, CURLOPT_NEW_DIRECTORY_PERMS, CURLOPT_NEW_FILE_PERMS, 
    CURLOPT_NETRC_FILE, CURLOPT_PREQUOTE, CURLOPT_KRBLEVEL, CURLOPT_MAXFILESIZE,
    CURLOPT_FTP_ACCOUNT, CURLOPT_COOKIELIST, CURLOPT_IGNORE_CONTENT_LENGTH,
    CURLOPT_CONNECT_ONLY, CURLOPT_LOCALPORT, CURLOPT_LOCALPORTRANGE, 
    CURLOPT_FTP_ALTERNATIVE_TO_USER, CURLOPT_SSL_SESSIONID_CACHE, 
    CURLOPT_FTP_SSL_CCC, CURLOPT_HTTP_CONTENT_DECODING, 
    CURLOPT_HTTP_TRANSFER_DECODING, CURLOPT_PROXY_TRANSFER_MODE, 
    CURLOPT_ADDRESS_SCOPE, CURLOPT_CRLFILE, CURLOPT_ISSUERCERT, 
    CURLOPT_USERNAME, CURLOPT_PASSWORD, CURLOPT_PROXYUSERNAME, 
    CURLOPT_PROXYPASSWORD, CURLOPT_NOPROXY, CURLOPT_SOCKS5_GSSAPI_NEC, 
    CURLOPT_SOCKS5_GSSAPI_SERVICE, CURLOPT_TFTP_BLKSIZE, 
    CURLOPT_SSH_KNOWNHOSTS, CURLOPT_FTP_USE_PRET, CURLOPT_MAIL_FROM, 
    CURLOPT_MAIL_RCPT, CURLOPT_RTSP_CLIENT_CSEQ, CURLOPT_RTSP_SERVER_CSEQ, 
    CURLOPT_RTSP_SESSION_ID, CURLOPT_RTSP_STREAM_URI, CURLOPT_RTSP_TRANSPORT,
    CURLOPT_RTSP_REQUEST, CURLOPT_RESOLVE, CURLOPT_ACCEPT_ENCODING, 
    CURLOPT_TRANSFER_ENCODING, CURLOPT_DNS_SERVERS and CURLOPT_USE_SSL.
    (Pierrick)
  . Fixed bug #55635 (CURLOPT_BINARYTRANSFER no longer used. The constant
    still exists for backward compatibility but is doing nothing). (Pierrick)
  . Fixed bug #54995 (Missing CURLINFO_RESPONSE_CODE support). (Pierrick)

- Datetime
  . Fixed bug #61642 (modify("+5 weekdays") returns Sunday). 
    (Dmitri Iouchtchenko) 

- Hash
  . Added support for PBKDF2 via hash_pbkdf2(). (Anthony Ferrara)

- Intl
  . The intl extension now requires ICU 4.0+.
  . Added intl.use_exceptions INI directive, which controls what happens when
    global errors are set together with intl.error_level. (Gustavo)
  . MessageFormatter::format() and related functions now accepted named
    arguments and mixed numeric/named arguments in ICU 4.8+. (Gustavo)
  . MessageFormatter::format() and related functions now don't error out when
    an insufficient argument count is provided. Instead, the placeholders will
    remain unsubstituted. (Gustavo)
  . MessageFormatter::parse() and MessageFormat::format() (and their static
    equivalents) don't throw away better than second precision in the arguments.
    (Gustavo)
  . IntlDateFormatter::__construct and datefmt_create() now accept for the
    $timezone argument time zone identifiers, IntlTimeZone objects, DateTimeZone
    objects and NULL. (Gustavo)
  . IntlDateFormatter::__construct and datefmt_create() no longer accept invalid
    timezone identifiers or empty strings. (Gustavo)
  . The default time zone used in IntlDateFormatter::__construct and
    datefmt_create() (when the corresponding argument is not passed or NULL is
    passed) is now the one given by date_default_timezone_get(), not the
    default ICU time zone. (Gustavo)
  . The time zone passed to the IntlDateFormatter is ignored if it is NULL and
    if the calendar passed is an IntlCalendar object -- in this case, the
    IntlCalendar's time zone will be used instead. Otherwise, the time zone
    specified in the $timezone argument is used instead. This does not affect
    old code, as IntlCalendar was introduced in this version. (Gustavo)
  . IntlDateFormatter::__construct and datefmt_create() now accept for the
    $calendar argument also IntlCalendar objects. (Gustavo)
  . IntlDateFormatter::getCalendar() and datefmt_get_calendar() return false
    if the IntlDateFormatter was set up with an IntlCalendar instead of the
    constants IntlDateFormatter::GREGORIAN/TRADITIONAL. IntlCalendar did not
    exist before this version. (Gustavo)
  . IntlDateFormatter::setCalendar() and datefmt_set_calendar() now also accept
    an IntlCalendar object, in which case its time zone is taken. Passing a
    constant is still allowed, and still keeps the time zone. (Gustavo)
  . IntlDateFormatter::setTimeZoneID() and datefmt_set_timezone_id() are
    deprecated. Use IntlDateFormatter::setTimeZone() or datefmt_set_timezone()
    instead. (Gustavo)
  . IntlDateFormatter::format() and datefmt_format() now also accept an
    IntlCalendar object for formatting. (Gustavo)
  . Added the classes: IntlCalendar, IntlGregorianCalendar, IntlTimeZone,
    IntlBreakIterator, IntlRuleBasedBreakIterator and
    IntlCodePointBreakIterator. (Gustavo)
  . Added the functions: intlcal_get_keyword_values_for_locale(),
    intlcal_get_now(), intlcal_get_available_locales(), intlcal_get(),
    intlcal_get_time(), intlcal_set_time(), intlcal_add(),
    intlcal_set_time_zone(), intlcal_after(), intlcal_before(), intlcal_set(),
    intlcal_roll(), intlcal_clear(), intlcal_field_difference(),
    intlcal_get_actual_maximum(), intlcal_get_actual_minimum(),
    intlcal_get_day_of_week_type(), intlcal_get_first_day_of_week(),
    intlcal_get_greatest_minimum(), intlcal_get_least_maximum(),
    intlcal_get_locale(), intlcal_get_maximum(),
    intlcal_get_minimal_days_in_first_week(), intlcal_get_minimum(),
    intlcal_get_time_zone(), intlcal_get_type(),
    intlcal_get_weekend_transition(), intlcal_in_daylight_time(),
    intlcal_is_equivalent_to(), intlcal_is_lenient(), intlcal_is_set(),
    intlcal_is_weekend(), intlcal_set_first_day_of_week(),
    intlcal_set_lenient(), intlcal_equals(),
    intlcal_get_repeated_wall_time_option(),
    intlcal_get_skipped_wall_time_option(),
    intlcal_set_repeated_wall_time_option(),
    intlcal_set_skipped_wall_time_option(), intlcal_from_date_time(),
    intlcal_to_date_time(), intlcal_get_error_code(),
    intlcal_get_error_message(), intlgregcal_create_instance(),
    intlgregcal_set_gregorian_change(), intlgregcal_get_gregorian_change() and
    intlgregcal_is_leap_year(). (Gustavo)
  . Added the functions: intltz_create_time_zone(), intltz_create_default(),
    intltz_get_id(), intltz_get_gmt(), intltz_get_unknown(),
    intltz_create_enumeration(), intltz_count_equivalent_ids(),
    intltz_create_time_zone_id_enumeration(), intltz_get_canonical_id(),
    intltz_get_region(), intltz_get_tz_data_version(),
    intltz_get_equivalent_id(), intltz_use_daylight_time(), intltz_get_offset(),
    intltz_get_raw_offset(), intltz_has_same_rules(), intltz_get_display_name(),
    intltz_get_dst_savings(), intltz_from_date_time_zone(),
    intltz_to_date_time_zone(), intltz_get_error_code(),
    intltz_get_error_message(). (Gustavo)
  . Added the methods: IntlDateFormatter::formatObject(),
    IntlDateFormatter::getCalendarObject(), IntlDateFormatter::getTimeZone(),
    IntlDateFormatter::setTimeZone(). (Gustavo)
  . Added the functions: datefmt_format_object(), datefmt_get_calendar_object(),
    datefmt_get_timezone(), datefmt_set_timezone(),
    datefmt_get_calendar_object(), intlcal_create_instance(). (Gustavo)

- MCrypt
  . mcrypt_ecb(), mcrypt_cbc(), mcrypt_cfb() and mcrypt_ofb() now throw
    E_DEPRECATED. (GoogleGuy)

- MySQLi
  . Dropped support for LOAD DATA LOCAL INFILE handlers when using libmysql.
    Known for stability problems. (Andrey)
  . Added support for SHA256 authentication available with MySQL 5.6.6+. (Andrey)

- PCRE:
  . Deprecated the /e modifier
    (https://wiki.php.net/rfc/remove_preg_replace_eval_modifier). (Nikita Popov)
  . Fixed bug #63284 (Upgrade PCRE to 8.31). (Anatoliy)

- pgsql
  . Added pg_escape_literal() and pg_escape_identifier() (Yasuo)

- SPL
  . Fix bug #60560 (SplFixedArray un-/serialize, getSize(), count() return 0,
    keys are strings). (Adam)

- Tokenizer:
  . Fixed bug #60097 (token_get_all fails to lex nested heredoc). (Nikita Popov)

- Zip:
  . Upgraded libzip to 0.10.1 (Anatoliy)

- Fileinfo:
  . Fixed bug #63248 (Load multiple magic files from a directory under Windows).
      (Anatoliy)

<<< NOTE: Insert NEWS from last stable release here prior to actual release! >>>
