Reduced POST data memory usage by 200-300%. Changed INI setting always_populate_raw_post_data to throw a deprecation warning when enabling and to accept -1 for never populating the $HTTP_RAW_POST_DATA global variable, which will be the default in future PHP versions.

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 operations don't require checks for stack overflow
any more

General improvements:

Added generators and coroutines.

Added "finally" keyword.

Added simplified password hashing API.

Added support for constant array/string dereferencing.

Added Class Name Resolution As Scalar Via "class" Keyword

Added support for using empty() on the result of function calls and other expressions

Added support for non-scalar Iterator keys in foreach

Added support for list in foreach

Core:

Added Zend Opcache extension and enable building it by default.

Added array_column function which returns a column in a multidimensional array

Added boolval()

Added "Z" option to pack/unpack

Added optional second argument for assert() to specify custom message

Added support for changing the process's title in CLI/CLI-Server SAPIs. The implementation is more robust that the proctitle PECL module

Improve set_exception_handler while doing reset

Return previous handler when passing NULL to set_error_handler and set_exception_handler

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

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

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

IntlDateFormatter::__construct and datefmt_create() now accept for the
$calendar argument also IntlCalendar objects

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

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

IntlDateFormatter::setTimeZoneID() and datefmt_set_timezone_id() are
deprecated. Use IntlDateFormatter::setTimeZone() or datefmt_set_timezone()
instead

IntlDateFormatter::format() and datefmt_format() now also accept an
IntlCalendar object for formatting

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

Dropped support for LOAD DATA LOCAL INFILE handlers when using libmysql.
Known for stability problems

Added support for SHA256 authentication available with MySQL 5.6.6+

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

Added mysqli_savepoint(), mysqli_release_savepoint()

Fixed bug #64726 (Segfault when calling fetch_object on a use_result and DB
pointer has closed)

Changed silent casting of null/''/false into an Object when adding
a property into a warning.

Changed E_ALL to include E_STRICT.

Disabled windows CRT warning by default, can be enabled again using the ini
directive windows_show_crt_warnings.

Fixed bug #55378: Binary number literal returns float number though its
value is small enough.

Improved Zend Engine memory usage

Improved parse error messages.

Replaced zend_function.pass_rest_by_reference by
ZEND_ACC_PASS_REST_BY_REFERENCE in zend_function.fn_flags.

Replaced zend_function.return_reference by ZEND_ACC_RETURN_REFERENCE
in zend_function.fn_flags.

Removed zend_arg_info.required_num_args as it was only needed for internal
functions. Now the first arg_info for internal functions (which has special
meaning) is represented by zend_internal_function_info structure.

Moved zend_op_array.size, size_var, size_literal, current_brk_cont,
backpatch_count into CG(context) as they are used only during compilation.

Moved zend_op_array.start_op into EG(start_op) as it's used only for
'interactive' execution of single top-level op-array.

Replaced zend_op_array.done_pass_two by ZEND_ACC_DONE_PASS_TWO in
zend_op_array.fn_flags.

op_array.vars array is trimmed (reallocated) during pass_two.

Replaced zend_class_entry.constants_updated by ZEND_ACC_CONSTANTS_UPDATED
in zend_class_entry.ce_flags.

Reduced the size of zend_class_entry by sharing the same memory space
by different information for internal and user classes.
See zend_class_entry.info union.

Reduced size of temp_variable.

Improved Zend Engine, performance tweaks and optimizations

Inlined most probable code-paths for arithmetic operations directly into
executor.

Eliminated unnecessary iterations during request startup/shutdown.

Changed $GLOBALS into a JIT autoglobal, so it's initialized only if used.
(this may affect opcode caches!)

Improved performance of @ (silence) operator.

Simplified string offset reading. $str[1][0] is now a legal construct.

Fixed bug #53021 (In html_entity_decode, failure to convert numeric entities
with ENT_NOQUOTES and ISO-8859-1). Fixed and extended the fix of ENT_NOQUOTES
in html_entity_decode that had introduced the bug (rev #185591) to other
encodings. Additionaly, html_entity_decode() now doesn't decode &#34; if
ENT_NOQUOTES is given. (Gustavo)

Fixed forward stream seeking emulation in streams that don't support seeking
in situations where the read operation gives back less data than requested
and when there was data in the buffer before the emulation started. Also made
more consistent its behavior -- should return failure every time less data
than was requested was skipped. (Gustavo)

Added Firebird specific attributes that can be set via PDO::setAttribute()
to control formatting of date/timestamp columns: PDO::FB_ATTR_DATE_FORMAT,
PDO::FB_ATTR_TIME_FORMAT and PDO::FB_ATTR_TIMESTAMP_FORMAT. (Lars W)

Added php_pdo_sqlite_external.dll, a version of the PDO SQLite driver that links against an external sqlite3.dll. This provides Windows users to upgrade their sqlite3 version outside of the PHP release cycle. (Wez, Edin)

Added linenumbers to array returned by token_get_all(). (Johannes)

Implement #40947, allow a single filter as argument for filter_var_array (Pierre)

Version 5.0.0 Release Candidate 2

Under CLI, fclose() on php://stdin, php://stdout and php://stderr will now
close the real stream. Please update your CLI scripts to use STDIN, STDOUT
and STDERR constants instead of fopen()/fclose(). (Wez)

Moved yaz extension to PECL. (Wez)

Added pty support to proc_open(). (Wez)

Added possibility to check in which extension an internal class was defined
in using reflection API. (Marcus)

Changed tidy error handling to no longer use exceptions and
renamed the "error_buf" property to errorBuffer. (John)

Changed class and method names to use studlyCaps convention. (Marcus)

Changed language parser to throw errors when a non-empty signature is used in
a destructor definition. (Marcus)

Changed HTTP file uploads not to throw E_WARNINGs and E_NOTICEs. The error
value in the $_FILES global should be used for error handling. (Derick)

Changed __construct() to always take precedence over old style constructor.
(Dmitry)

Fixed handling of return values from storred procedures in mssql_execute()
with multiple result sets returned. (Frank)