mirror of
https://github.com/php/php-src.git
synced 2024-12-01 05:43:38 +08:00
b7091aaf01
Per https://wiki.php.net/rfc/mysql_deprecation, connecting to a MySQL database via ext/mysql now generates an E_DEPRECATED error. This commit includes the minimal EXPECTF updates required for the test suite to pass: it may be preferable to refactor some of the tests to suppress deprecation errors in situations where no other error is expected from mysql_[p]connect(), but I'm not enough of a MySQL expert to want to get my hands that dirty in a long standing test suite.
204 lines
10 KiB
Plaintext
204 lines
10 KiB
Plaintext
PHP NEWS
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
?? ??? 201?, PHP 5.5.0
|
|
|
|
- General improvements:
|
|
. Added generators and coroutines (https://wiki.php.net/rfc/generators).
|
|
(Nikita Popov)
|
|
. Added "finally" keyword (https://wiki.php.net/rfc/finally). (Laruence)
|
|
. Added simplified password hashing API
|
|
(https://wiki.php.net/rfc/password_hash). (Anthony Ferrara)
|
|
. Added systemtap support by enabling systemtap compatible dtrace probes on
|
|
linux. (David Soria Parra)
|
|
. 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)
|
|
. Improved set_exception_handler while doing reset.(Laruence)
|
|
. Removed php_logo_guid(), php_egg_logo_guid(), php_real_logo_guid(),
|
|
zend_logo_guid(). (Adnrew Faulds)
|
|
. Dropped support for Windows XP and 2003. (Pierre)
|
|
. 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)
|
|
|
|
- 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)
|
|
|
|
- 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. (Adam)
|
|
|
|
- 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)
|
|
. 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)
|
|
|
|
<<< NOTE: Insert NEWS from last stable release here prior to actual release! >>>
|