PHP                                                                        NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
21 Mar 2013, PHP 5.5.0 Beta 1

- Core:
  . Added Zend Opcache extension and enable building it by default. 
    More details here: https://wiki.php.net/rfc/optimizerplus. (Dmitry)
  . Added array_column function which returns a column in a multidimensional
    array. https://wiki.php.net/rfc/array_column. (Ben Ramsey)
  . Fixed bug #64354 (Unserialize array of objects whose class can't
    be autoloaded fail). (Laruence)
  . Added support for changing the process's title in CLI/CLI-Server SAPIs.
    The implementation is more robust that the proctitle PECL module. More
    details here: https://wiki.php.net/rfc/cli_process_title. (Keyur)
  . Fixed bug #64370 (microtime(true) less than $_SERVER['REQUEST_TIME_FLOAT']).
    (Anatol)
  . Added support for non-scalar Iterator keys in foreach
    (https://wiki.php.net/rfc/foreach-non-scalar-keys). (Nikita Popov)

- mysqlnd
  . Fixed bug #63530 (mysqlnd_stmt::bind_one_parameter crashes, uses wrong alloc
    for stmt->param_bind). (Andrey)

- DateTime
  . Fixed bug #53437 (Crash when using unserialized DatePeriod instance).
    (Gustavo, Derick, Anatol)
  . Fixed bug #62852 (Unserialize Invalid Date causes crash). (Anatol)

- SPL:
  . Implement FR #48358 (Add SplDoublyLinkedList::add() to insert an element
    at a given offset). (Mark Baker, David Soria Parra)

- Zip:
  . Bug #64452 (Zip crash intermittently). (Anatol)

07 Mar 2013, PHP 5.5.0 Alpha 6

- Core:
  . Fixed bug #61025 (__invoke() visibility not honored). (Laruence)
  . Fixed bug #49348 (Uninitialized ++$foo->bar; does not cause a notice).
    (Stas)

- Sockets:
  . Fixed bug #64287 (sendmsg/recvmsg shutdown handler causes segfault).
    (Gustavo)

- PCRE:
  . Merged PCRE 8.32. (Anatol)

- DateTime:
  . Fixed bug #64359 (strftime crash with VS2012). (Anatol)

- SNMP:
  . Fixed bug #61981 (OO API, walk: $suffix_as_key is not working correctly).
	(Boris Lytochkin)

21 Feb 2013, PHP 5.5.0 Alpha 5

- Core:
  . Implemented FR #64175 (Added HTTP codes as of RFC 6585). (Jonh Wendell)
  . Fixed bug #64135 (Exceptions from set_error_handler are not always
    propagated). (Laruence)
  . Fixed bug #63830 (Segfault on undefined function call in nested generator).
    (Nikita Popov)
  . Fixed bug #60833 (self, parent, static behave inconsistently
    case-sensitive). (Stas, mario at include-once dot org)
  . Implemented FR #60524 (specify temp dir by php.ini). (ALeX Kazik).
  . Fixed bug #64142 (dval to lval different behavior on ppc64). (Remi)
  . Added ARMv7/v8 versions of various Zend arithmetic functions that are
    implemented using inline assembler (Ard Biesheuvel)
  . Fix undefined behavior when converting double variables to integers.
    The double is now always rounded towards zero, the remainder of its division
	by 2^32 or 2^64 (depending on sizeof(long)) is calculated and it's made
	signed assuming a two's complement representation. (Gustavo)

- CLI server:
  . Fixed bug #64128 (buit-in web server is broken on ppc64). (Remi)

- cURL:
  . Implemented FR #46439 - added CURLFile for safer file uploads.
    (Stas)

- Intl:
  . Cherry-picked UConverter wrapper, which had accidentaly been committed only
    to master.

- mysqli
  . Added mysqli_begin_transaction()/mysqli::begin_transaction(). Implemented
    all options, per MySQL 5.6, which can be used with START TRANSACTION, COMMIT
	and ROLLBACK through options to mysqli_commit()/mysqli_rollback() and their
	respective OO counterparts. They work in libmysql and mysqlnd mode. (Andrey)
  . Added mysqli_savepoint(), mysqli_release_savepoint(). (Andrey)

- mysqlnd
  . Add new begin_transaction() call to the connection object. Implemented all
    options, per MySQL 5.6, which can be used with START TRANSACTION, COMMIT
	and ROLLBACK. (Andrey)
  . Added mysqlnd_savepoint(), mysqlnd_release_savepoint(). (Andrey)

- Sockets:
  . Added recvmsg() and sendmsg() wrappers. (Gustavo)
    See https://wiki.php.net/rfc/sendrecvmsg

- Filter:
  . Implemented FR #49180 - added MAC address validation. (Martin)

- Phar:
  . Fixed timestamp update on Phar contents modification. (Dmitry)

- SPL:
  . Fixed bug #64264 (SPLFixedArray toArray problem). (Laruence)
  . Fixed bug #64228 (RecursiveDirectoryIterator always assumes SKIP_DOTS).
    (patch by kriss@krizalys.com, Laruence)
  . Fixed bug #64106 (Segfault on SplFixedArray[][x] = y when extended). 
    (Nikita Popov)
  . Fixed bug #52861 (unset fails with ArrayObject and deep arrays).
    (Mike Willbanks)

- SNMP:
  . Fixed bug #64124 (IPv6 malformed). (Boris Lytochkin)

24 Jan 2013, PHP 5.5.0 Alpha 4

- Core:
  . Fixed bug #63980 (object members get trimmed by zero bytes). (Laruence)
  . Implemented RFC for Class Name Resolution As Scalar Via "class" Keyword.
    (Ralph Schindler, Nikita Popov, Lars)

- DateTime
  . Added DateTimeImmutable - a variant of DateTime that only returns the
    modified state instead of changing itself. (Derick)

- FPM:
  . Fixed bug #63999 (php with fpm fails to build on Solaris 10 or 11). (Adam)

- pgsql:
  . Bug #46408: Locale number format settings can cause pg_query_params to
    break with numerics. (asmecher, Lars)

- dba:
  . Bug #62489: dba_insert not working as expected.
    (marc-bennewitz at arcor dot de, Lars)

- Reflection:
  . Fixed bug #64007 (There is an ability to create instance of Generator by
    hand). (Laruence)

10 Jan 2013, PHP 5.5.0 Alpha 3

- General improvements:
  . Fixed bug #63874 (Segfault if php_strip_whitespace has heredoc). (Pierrick)
  . Fixed bug #63822 (Crash when using closures with ArrayAccess).
    (Nikita Popov)
  . Add Generator::throw() method. (Nikita Popov)
  . Bug #23955: allow specifying Max-Age attribute in setcookie() (narfbg, Lars)
  . Bug #52126: timestamp for mail.log (Martin Jansen, Lars)

- mysqlnd
  . Fixed return value of mysqli_stmt_affected_rows() in the time after
    prepare() and before execute(). (Andrey)

- cURL:
  . Added new functions curl_escape, curl_multi_setopt, curl_multi_strerror
    curl_pause, curl_reset, curl_share_close, curl_share_init,
    curl_share_setopt curl_strerror and curl_unescape. (Pierrick)
  . Addes new curl options CURLOPT_TELNETOPTIONS, CURLOPT_GSSAPI_DELEGATION,
    CURLOPT_ACCEPTTIMEOUT_MS, CURLOPT_SSL_OPTIONS, CURLOPT_TCP_KEEPALIVE,
    CURLOPT_TCP_KEEPIDLE and CURLOPT_TCP_KEEPINTVL. (Pierrick)

18 Dec 2012, PHP 5.5.0 Alpha 2

- General improvements:
  . Added systemtap support by enabling systemtap compatible dtrace probes on
    linux. (David Soria Parra)
  . Added support for using empty() on the result of function calls and
    other expressions (https://wiki.php.net/rfc/empty_isset_exprs).
    (Nikita Popov)
  . Optimized access to temporary and compiled VM variables. 8% less memory
    reads. (Dmitry)
  . The VM stacks for passing function arguments and syntaticaly nested calls
    were merged into a single stack. The stack size needed for op_array
    execution is calculated at compile time and preallocated at once. As result
    all the stack push operatins don't require checks for stack overflow
    any more. (Dmitry)

- MySQL
  . This extension is now deprecated, and deprecation warnings will be generated
    when connections are established to databases via mysql_connect(),
    mysql_pconnect(), or through implicit connection: use MySQLi or PDO_MySQL
    instead (https://wiki.php.net/rfc/mysql_deprecation). (Adam)

- Fileinfo:
  . Fixed bug #63590 (Different results in TS and NTS under Windows).
    (Anatoliy)

- Apache2 Handler SAPI:
  . Enabled Apache 2.4 configure option for Windows (Pierre, Anatoliy)

13 Nov 2012, PHP 5.5.0 Alpha 1

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

- 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)

- General improvements:
  . Implemented FR #46487 (Dereferencing process-handles no longer waits on
    those processes). (Jille Timmermans)

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