PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? 201?, PHP 5.3.99 - Upgraded bundled Sqlite3 to version 3.7.4. (Ilia) - Upgraded bundled PCRE to version 8.10. (Ilia) - Removed legacy features: . break/continue $var syntax. (Dmitry) . Safe mode and all related ini options. (Kalle) . register_globals and register_long_arrays ini options. (Kalle) . import_request_variables(). (Kalle) . allow_call_time_pass_reference. (Pierrick) . define_syslog_variables ini option and its associated function. (Kalle) . highlight.bg ini option. (Kalle) . Session bug compatibility mode (session.bug_compat42 and session.bug_compat_warn ini options). (Kalle) . session_is_registered(), session_register() and session_unregister() functions. (Kalle) . y2k_compliance ini option. (Kalle) - Moved extensions to PECL: (Johannes) . ext/sqlite. - Changed $_SERVER['REQUEST_TIME'] to include microsecond precision. (Ilia) - Changed default value of "default_charset" php.ini option from ISO-8859-1 to UTF-8. (Rasmus) - Changed array_combine() to return empty array instead of FALSE when both parameter arrays are empty. FR #34857. (joel.perras@gmail.com) - Changed third parameter of preg_match_all() to optional. FR #53238. (Adam) - Changed silent casting of null/''/false into an Object when adding a property into a warning. (Scott) - General improvements: . Added multibyte suppport by default. Previosly php had to be compiled with --enable-zend-multibyte. Now it can be enabled or disabled throug zend.multibyte directive in php.ini (Dmitry) . Removed compile time dependency from ext/mbstring (Dmitry) . Added scalar typehints to the parser and the reflection API. (Ilia, Derick) . Added support for Traits. (Stefan) . Added closure $this support back. (Stas) . Added array dereferencing support. (Felipe) . Added support for object references in recursive serialize() calls. FR #36424. (Mike) . Added http_response_code() function. FR #52555. (Paul Dragoonis, Kalle) . Added header_register_callback() which is invoked immediately prior to the sending of headers and after default headers have been added. (Scott) . Added DTrace support. (David Soria Parra) . Improved output layer, see README.NEW-OUTPUT-API for internals. (Mike) . Improved unserialize() performance. (galaxy dot mipt at gmail dot com, Kalle) . Improved unix build system to allow building multiple PHP binary SAPIs and one SAPI module the same time. FR #53271, FR #52410. (Jani) - Improved Zend Engine memory usage: (Dmitry) . 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. - Changed the structure of op_array.opcodes. The constant values are moved from opcode operands into a separate literal table. (Dmitry) - Improved Zend Engine, performance tweaks and optimizations: (Dmitry) . 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. . Added caches to eliminate repeatable run-time bindings of functions, classes, constants, methods and properties. . Added concept of interned strings. All strings constants known at compile time are allocated in a single copy and never changed. . Added an optimization which saves memory and emalloc/efree calls for empty HashTables. (Stas, Dmitry) . ZEND_RECV now always has IS_CV as its result. . ZEND_CATCH now has to be used only with constant class names. . ZEND_FETCH_DIM_? may fetch array and dimension operands in different order. . Simplified ZEND_FETCH_*_R operations. They can't be used with the EXT_TYPE_UNUSED flag any more. This is a very rare and useless case. ZEND_FREE might be required after them instead. . Split ZEND_RETURN into two new instructions ZEND_RETURN and ZEND_RETURN_BY_REF. . Optimized access to global constants using values with pre-calculated hash_values from the literals table. . Optimized access to static properties using executor specialization. A constant class name may be used as a direct operand of ZEND_FETCH_* instruction without previous ZEND_FETCH_CLASS. . zend_stack and zend_ptr_stack allocation is delayed until actual usage. - Improved CLI SAPI: (Johannes) . Added command line option --rz which shows information of the named Zend extension. . Interactive readline shell improvements: . Added "cli.pager" php.ini setting to set a pager for output. . Added "cli.prompt" php.ini setting to configure the shell prompt. . Added shortcut #inisetting=value to change ini settings at run-time. . Changed shell not to terminate on fatal errors. . Interactive shell works with shared readline extension. FR #53878. - Improved FastCGI SAPI: (Dmitry) . Added apache compatible functions: apache_child_terminate(), getallheaders(), apache_request_headers() and apache_response_headers() . Improved performance of FastCGI request parsing. - Improved core functions: . number_format() no longer truncates multibyte decimal points and thousand separators to the first byte. FR #53457. (Adam) - Improved CURL extension: . Added support for CURLOPT_MAX_RECV_SPEED_LARGE and CURLOPT_MAX_SEND_SPEED_LARGE. FR #51815. (Pierrick) - Improved Date extension: . Added the + modifier to parseFromFormat to allow trailing text in the string to parse without throwing an error. (Stas, Derick) - Improved DBA extension: . Added Tokyo Cabinet abstract DB support. (Michael Maclean) . Added Berkeley DB 5 support. (Johannes, Chris Jones) - Improved filesystem functions: . scandir() now accepts SCANDIR_SORT_NONE as a possible sorting_order value. FR #53407. (Adam) - Improved HASH extension: . Added Jenkins's one-at-a-time hash support. (Martin Jansen) . Added FNV-1 hash support. (Michael Maclean) . Made Adler32 algorithm faster. FR #53213. (zavasek at yandex dot ru) - Improved intl extension: . Added Spoofchecker, allows checking for visibly confusable characters and other security issues. (Scott) - Improved JSON extension: . Added JsonSerializable interface. (Sara) . Added JSON_BIGINT_AS_STRING, extended json_decode() sig with $options. (Sara) . Added support for JSON_NUMERIC_CHECK option in json_encode() that converts numeric strings to integers. (Ilia) . Added new json_encode() option JSON_PRETTY_PRINT. FR #44331. (Adam) . Added new json_encode() option JSON_UNESCAPED_SLASHES. FR #49366. (Adam) - Improved LDAP extension: . Added paged results support. FR #42060. (ando@OpenLDAP.org, iarenuno@eteo.mondragon.edu, jeanseb@au-fil-du.net, remy.saissy@gmail.com) - Improved MySQL extensions: . MySQL: Deprecated mysql_list_dbs(). FR #50667. (Andrey) . mysqlnd: Added named pipes support. FR #48082. (Andrey) . MySQLi: Added iterator support in MySQLi. mysqli_result implements Traversable. (Andrey, Johannes) . PDO_mysql: Removed support for linking with MySQL client libraries older than 4.1. (Johannes) - Improved OpenSSL extension: . Added AES support. FR #48632. (yonas dot y at gmail dot com, Pierre) . Added a "no_ticket" SSL context option to disable the SessionTicket TLS extension. FR #53447. (Adam) - Improved PDO DB-LIB: (Stanley) . Added nextRowset support. . Fixed bug #50755 (PDO DBLIB Fails with OOM). - Improved PostgreSQL extension: . Added support for "extra" parameter for PGNotify(). (r dot i dot k at free dot fr, Ilia) - Improved Reflection extension: (Johannes) . Added ReflectionExtension::isTemporary() and ReflectionExtension::isPersistent() methods. . Added ReflectionZendExtension class. . Added ReflectionClass::isCloneable(). (Felipe) - Improved Session extension: . Added support for storing upload progress feedback in session data. (Arnaud) . Changed session.entropy_file to default to /dev/urandom or /dev/arandom if either is present at compile time. (Rasmus) - Improved SPL extension: . Added RegexIterator::getRegex() method. (Joshua Thijssen) . Added SplObjectStorage::getHash() hook. (Etienne) . Added SplFileInfo::getExtension(). FR #48767. (Peter Cowburn) - Improved ZLIB extension: . Re-implemented non-file related functionality. (Mike) - Improved SNMP extension: . Added OO API. FR #53594. . Sanitized return values of existing functions. Now it returns FALSE on failure. . Allow ~infinite OIDs in GET/GETNEXT/SET queries. Autochunk them to max_oids upon request. . Introducing unit tests for extension with ~full coverage. . Fixed bugs #44193, #44193, #45893, #46065, #51336, #53862. ## UNSORTED ## - Fixed PDO objects binary incompatibility. (Dmitry) - Fixed bug #52211 (iconv() returns part of string on error). (Felipe) <<< NOTE: Insert NEWS from last stable release here prior to actual release! >>>