mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Prepare for PHP 8.1
Closes GH-6305.
This commit is contained in:
parent
503999910b
commit
14806e0824
11 changed files with 15 additions and 1907 deletions
|
@ -327,7 +327,8 @@ Currently we have the following branches in use:
|
|||
|
||||
| Branch | |
|
||||
| --------- | --------- |
|
||||
| master | Active development branch for PHP 8.0, which is open for backwards incompatible changes and major internal API changes. |
|
||||
| master | Active development branch for PHP 8.1, which is open for backwards incompatible changes and major internal API changes. |
|
||||
| PHP-8.0 | Is used to release the PHP 8.0.x series. This is a current stable version and is open for bugfixes only. |
|
||||
| PHP-7.4 | Is used to release the PHP 7.4.x series. This is a current stable version and is open for bugfixes only. |
|
||||
| PHP-7.3 | Is used to release the PHP 7.3.x series. This is a current stable version and is open for bugfixes only. |
|
||||
| PHP-7.2 | Is used to release the PHP 7.2.x series. This is an old stable version and is open for security fixes only. |
|
||||
|
|
385
NEWS
385
NEWS
|
@ -1,388 +1,5 @@
|
|||
PHP NEWS
|
||||
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||
?? ??? ????, PHP 8.0.0rc2
|
||||
|
||||
- Curl:
|
||||
. Fixed bug #80121 (Null pointer deref if CurlHandle directly instantiated).
|
||||
(Nikita)
|
||||
|
||||
- Opcache:
|
||||
. Fixed bug #80184 (Complex expression in while / if statements resolves to
|
||||
false incorrectly). (Nikita)
|
||||
|
||||
- Reflection:
|
||||
. Fixed bug #80190 (ReflectionMethod::getReturnType() does not handle static
|
||||
as part of union type). (Nikita)
|
||||
|
||||
- SPL:
|
||||
. Fixed bug #65387 (Circular references in SPL iterators are not garbage
|
||||
collected). (Nikita)
|
||||
|
||||
- Standard:
|
||||
. Fixed bug #64060 (lstat_stat_variation7.phpt fails on certain file systems).
|
||||
(M. Voelker, cmb)
|
||||
|
||||
01 Oct 2020, PHP 8.0.0rc1
|
||||
|
||||
- CLI:
|
||||
. Allow debug server binding to an ephemeral port via `-S localhost:0`. (Sara)
|
||||
|
||||
- Core:
|
||||
. Fixed bug #80109 (Cannot skip arguments when extended debug is enabled).
|
||||
(Nikita)
|
||||
|
||||
- ODBC:
|
||||
. Fixed bug #22986 (odbc_connect() may reuse persistent connection). (cmb)
|
||||
|
||||
- PDO_Firebird:
|
||||
. Fixed bug #64937 (Firebird PDO preprocessing sql). (Simonov Denis)
|
||||
|
||||
- SPL:
|
||||
. SplFixedArray is now IteratorAggregate rather than Iterator. (alexdowad)
|
||||
|
||||
- Zlib:
|
||||
. Fixed bug #78792 (zlib.output_compression disabled by Content-Type: image/).
|
||||
(cmb)
|
||||
|
||||
17 Sep 2020, PHP 8.0.0beta4
|
||||
|
||||
- Core:
|
||||
. Implement #[Attr] Attribute syntax as per final vote in RFC
|
||||
https://wiki.php.net/rfc/shorter_attribute_syntax_change
|
||||
. Fixed bug #80045 (memleak after two set_exception_handler calls with
|
||||
__call). (Nikita)
|
||||
. Fixed bug #80096 (Segmentation fault with named arguments in nested call).
|
||||
(Nikita)
|
||||
. Fixed faulty generator cleanup with yield from. (Bob)
|
||||
|
||||
- Date:
|
||||
. Fixed bug #80057 (DateTimeImmutable::createFromFormat() does not populate
|
||||
time). (Derick)
|
||||
|
||||
- FFI:
|
||||
. Added FFI\CType::getName() method. (chopins)
|
||||
|
||||
03 Sep 2020, PHP 8.0.0beta3
|
||||
|
||||
- Calendar:
|
||||
. Fixed bug #80007 (Potential type confusion in unixtojd() parameter parsing).
|
||||
(Andy Postnikov)
|
||||
|
||||
- COM:
|
||||
. Fixed bug #55847 (DOTNET .NET 4.0 GAC new location). (cmb)
|
||||
|
||||
- DOM:
|
||||
. Fixed bug #79968 (DOMChildNode API crash on unattached nodes). (Benjamin)
|
||||
|
||||
- Fileinfo:
|
||||
. Upgrade to libmagic 5.39. (Anatol)
|
||||
|
||||
- Opcache:
|
||||
. Fixed bug #80030 (Optimizer segfault with isset on static property with
|
||||
undef dynamic class name). (Nikita)
|
||||
|
||||
20 Aug 2020, PHP 8.0.0beta2
|
||||
|
||||
- SPL:
|
||||
. Fixed bug #79987 (Memory leak in SplFileInfo because of missing
|
||||
zend_restore_error_handling()). (Dmitry)
|
||||
|
||||
06 Aug 2020, PHP 8.0.0beta1
|
||||
|
||||
- Core:
|
||||
. Fixed bug #78236 (convert error on receiving variables when duplicate [).
|
||||
(cmb)
|
||||
. Fixed bug #79108 (Referencing argument in a function makes it a reference
|
||||
in the stack trace). (Nikita)
|
||||
. Fixed bug #79897 (Promoted constructor params with attribs cause crash).
|
||||
(Deus Kane)
|
||||
. Fixed bug #79946 (Build fails due to undeclared UINT32_C). (Nikita)
|
||||
. Fixed bug #77561 (Shebang line not stripped for non-primary script).
|
||||
(Nikita)
|
||||
. Fixed bug #79948 (Exit in auto-prepended file does not abort PHP execution).
|
||||
(Nikita)
|
||||
. Fixed bug #65275 (Calling exit() in a shutdown function does not change the
|
||||
exit value in CLI). (Nikita)
|
||||
. Fixed bug #62294 (register_shutdown_function() does not correctly handle
|
||||
exit code). (Nikita)
|
||||
. Fixed bug #79927 (Generator doesn't throw exception after multiple yield
|
||||
from iterable). (Nikita)
|
||||
. Fixed bug #78770 (Incorrect callability check inside internal methods).
|
||||
(Nikita)
|
||||
|
||||
- Date:
|
||||
. Fixed bug #60302 (DateTime::createFromFormat should new static(), not new
|
||||
self()). (Derick)
|
||||
. Implemented FR #79903 (datetime: new format "p", same as "P" but returning
|
||||
"Z" for UTC). (gharlan)
|
||||
|
||||
- JIT:
|
||||
. Fixed bug #79864 (JIT segfault in Symfony OptionsResolver). (Dmitry)
|
||||
. Fixed bug #79888 (Incorrect execution with JIT enabled). (Dmitry)
|
||||
|
||||
- LDAP:
|
||||
. Fixed memory leaks. (ptomulik)
|
||||
|
||||
- OCI8:
|
||||
. Modernized oci_register_taf_callback() callable argument parsing
|
||||
implementation. (girgias)
|
||||
|
||||
23 Jul 2020, PHP 8.0.0alpha3
|
||||
|
||||
- Core:
|
||||
. Fixed bug #79790 ("Illegal offset type" exception during AST evaluation
|
||||
not handled properly). (Nikita)
|
||||
. Fixed bug #79791 (Assertion failure when unsetting variable during binary
|
||||
op). (Nikita)
|
||||
. Fixed bug #79841 (Syntax error in configure / unescaped "[]" in php.m4).
|
||||
(Nikita)
|
||||
. Fixed bug #79828 (Segfault when trying to access non-existing variable).
|
||||
(Nikita)
|
||||
. Fixed bug #79852 (count(DOMNodeList) doesn't match
|
||||
count(IteratorIterator(DOMNodeList))). (Nikita)
|
||||
. Fixed bug #79867 (Promoted untyped properties should get null default
|
||||
value). (Nikita)
|
||||
|
||||
- Standard:
|
||||
. Fixed bug #79868 (Sorting with array_unique gives unwanted result). (Nikita)
|
||||
|
||||
09 Jul 2020, PHP 8.0.0alpha2
|
||||
|
||||
- FFI:
|
||||
. Fixed bug #79749 (Converting FFI instances to bool fails). (cmb)
|
||||
|
||||
- JIT:
|
||||
. Fixed bug #79743 (Fatal error when assigning to array property
|
||||
with JIT enabled). (Laruence)
|
||||
|
||||
- PCRE:
|
||||
. Updated to PCRE2 10.35. (cmb)
|
||||
|
||||
25 Jun 2020, PHP 8.0.0alpha1
|
||||
|
||||
- Core:
|
||||
. Removed the pdo_odbc.db2_instance_name php.ini directive. (Kalle)
|
||||
. Fixed bug #77619 (Wrong reflection on MultipleIterator::__construct).
|
||||
(Fabien Villepinte)
|
||||
. Fixed bug #65274 (Enhance undefined class constant error with class name).
|
||||
(Nikita)
|
||||
. Fixed bug #49555 (Fatal error "Function must be a string" message should be
|
||||
renamed). (Nikita)
|
||||
. Fixed bug #70839 (Converting optional argument to variadic forbidden by LSP
|
||||
checks). (Nikita)
|
||||
. Fixed bug #69084 (Unclear error message when not implementing a renamed
|
||||
abstract trait function). (Nikita)
|
||||
. Fixed bug #62609 (Allow implementing Traversable on abstract classes).
|
||||
(Nikita)
|
||||
. Fixed bug #79462 (method_exists and property_exists incoherent behavior).
|
||||
(cmb)
|
||||
. Fixed bug #79368 ("Unexpected end of file" is not an acceptable error
|
||||
message). (Alex Dowad)
|
||||
. Fixed bug #36365 (scandir duplicates file name at every 65535th file).
|
||||
(cmb)
|
||||
. Use SSE2 instructions do locale independent strtolower. (Laruence)
|
||||
. Fixed bug #79521 (Check __set_state structure). (carusogabriel)
|
||||
. Fixed bug #79467 (data:// wrappers are writable). (cmb)
|
||||
. Implemented FR #47074 (phpinfo() reports "On" as 1 for the some
|
||||
extensions). (cmb)
|
||||
. Implemented FR #72089 (require() throws fatal error instead of exception).
|
||||
(Nikita)
|
||||
. Fixed bug #77966 (Cannot alias a method named "namespace"). (Nikita)
|
||||
|
||||
- BZ2:
|
||||
. Fixed bug #71263 (fread() does not report bzip2.decompress errors). (cmb)
|
||||
|
||||
- CURL:
|
||||
. Bumped required libcurl version to 7.29.0. (cmb)
|
||||
|
||||
- Date:
|
||||
. Fixed bug #65547 (Default value for sunrise/sunset zenith still wrong).
|
||||
(cmb)
|
||||
. Fixed bug #69044 (discrepancy between time and microtime). (krakjoe)
|
||||
|
||||
- DOM:
|
||||
. Add property DOMXPath::$registerNodeNamespaces and constructor argument
|
||||
that allow global flag to configure query() or evaluate() calls.
|
||||
|
||||
- Enchant:
|
||||
. Add LIBENCHANT_VERSION macro.
|
||||
. Deprecate enchant_broker_set_dict_path, enchant_broker_get_dict_path,
|
||||
enchant_dict_add_to_personal and enchant_dict_is_in_session.
|
||||
. Add enchant_dict_add and enchant_dict_is_added functions.
|
||||
. Use libenchant-2 when available.
|
||||
|
||||
- FPM:
|
||||
. Fixed bug #64865 (Search for .user.ini files from script dir up to
|
||||
CONTEXT_DOCUMENT_ROOT). (Will Bender)
|
||||
. Add pm.status_listen option. (Jakub Zelenka)
|
||||
|
||||
- GD:
|
||||
. Fixed bug #55005 (imagepolygon num_points requirement). (cmb)
|
||||
. Replaced gd resources with objects. (Mark Randall)
|
||||
. Made the $num_points parameter of php_imagepolygon optional. (cmb)
|
||||
. Removed deprecated image2wbmp(). (cmb)
|
||||
. Removed deprecated png2wbmp() and jpeg2wbmp(). (cmb)
|
||||
. Added imagegetinterpolation(). (cmb)
|
||||
|
||||
- Iconv:
|
||||
. Dropped support for iconv without proper errno setting. (cmb)
|
||||
|
||||
- Intl:
|
||||
. Removed deprecated INTL_IDNA_VARIANT_2003. (cmb)
|
||||
|
||||
- JIT:
|
||||
. Fixed bug #79582 (Crash seen when opcache.jit=1235 and
|
||||
opcache.jit_debug=2). (Laruence)
|
||||
. Fixed bug #77857 (Wrong result if executed with JIT). (Laruence)
|
||||
. Fixed bug #79255 (PHP cannot be compiled with enable JIT).
|
||||
(Laruence, Dmitry)
|
||||
|
||||
- JSON:
|
||||
. The JSON extension is now an integral part of PHP and cannot be disabled
|
||||
as per RFC: https://wiki.php.net/rfc/always_enable_json (tandre)
|
||||
|
||||
- LDAP:
|
||||
. Removed deprecated ldap_sort. (mcmic)
|
||||
|
||||
- MBString:
|
||||
. Fixed bug #76999 (mb_regex_set_options() return current options). (cmb)
|
||||
. Removed the unused $is_hex parameter from mb_decode_numericentity(). (cmb)
|
||||
|
||||
- MySQLi:
|
||||
. Fixed bug #76809 (SSL settings aren't respected when persistent connections
|
||||
are used). (fabiomsouto)
|
||||
|
||||
- mysqlnd:
|
||||
. Fixed #60594 (mysqlnd exposes 160 lines of stats in phpinfo). (PeeHaa)
|
||||
|
||||
- OCI8:
|
||||
. Deprecated old OCI8 function aliases. (Jens de Nies)
|
||||
. Removed obsolete no-op function oci_internal_debug(). (Jens de Nies)
|
||||
|
||||
- OpCache:
|
||||
. Fixed bug #78654 (Incorrectly computed opcache checksum on files with
|
||||
non-ascii characters). (mhagstrand)
|
||||
. Fixed bug #76535 (Opcache does not replay compile-time warnings). (Nikita)
|
||||
. Fixed bug #79665 (ini_get() and opcache_get_configuration() inconsistency).
|
||||
(cmb)
|
||||
|
||||
- OpenSSL:
|
||||
. Added Cryptographic Message Syntax (CMS) support. (Eliot Lear)
|
||||
|
||||
- PCRE:
|
||||
. Don't ignore invalid escape sequences. (sjon)
|
||||
|
||||
- PGSQL:
|
||||
. Bumped required libpq version to 9.1. (cmb)
|
||||
|
||||
- PDO:
|
||||
. Changed default PDO error mode to exceptions. (AllenJB)
|
||||
. Fixed bug #77849 (Disable cloning of PDO handle/connection objects).
|
||||
(camporter)
|
||||
|
||||
- PDO_OCI:
|
||||
. Added support for setting and getting the oracle OCI 18c call timeout.
|
||||
(camporter)
|
||||
|
||||
- PDO_PGSQL:
|
||||
. Bumped required libpq version to 9.1. (cmb)
|
||||
|
||||
- phpdbg:
|
||||
. Fixed bug #76596 (phpdbg support for display_errors=stderr). (kabel)
|
||||
. Fixed bug #76801 (too many open files). (alekitto)
|
||||
. Fixed bug #77800 (phpdbg segfaults on listing some conditional breakpoints).
|
||||
(krakjoe)
|
||||
. Fixed bug #77805 (phpdbg build fails when readline is shared). (krakjoe)
|
||||
|
||||
- Reflection:
|
||||
. Fixed bug #78697 (ReflectionClass::implementsInterface - inaccurate error
|
||||
message with traits). (villfa)
|
||||
. Implement ReflectionProperty::hasDefaultValue and
|
||||
Reflection::getDefaultValue (beberlei)
|
||||
. Fixed bug #64592 (ReflectionClass::getMethods() returns methods out of
|
||||
scope). (Nikita)
|
||||
. Fixed bug #77325 (ReflectionClassConstant::$class returns wrong class when
|
||||
extending). (Nikita)
|
||||
. Fixed bug #69180 (Reflection does not honor trait conflict resolution /
|
||||
method aliasing). (Nikita)
|
||||
. Fixed bug #74939 (Nested traits' aliased methods are lowercased). (Nikita)
|
||||
. Implement #79628 (Add $filter parameter for ReflectionClass::getConstants
|
||||
and ReflectionClass::getReflectionConstants) (carusogabriel)
|
||||
|
||||
- Session:
|
||||
. Fixed bug #78624 (session_gc return value for user defined session
|
||||
handlers). (bshaffer)
|
||||
. Fixed bug #73529 (session_decode() silently fails on wrong input). (cmb)
|
||||
|
||||
- Shmop:
|
||||
. Converted shmop resources to objects. (cmb)
|
||||
|
||||
- SimpleXML:
|
||||
. Fixed bug #75245 (Don't set content of elements with only whitespaces).
|
||||
(eriklundin)
|
||||
. Fixed bug #63575 (Root elements are not properly cloned). (cmb)
|
||||
|
||||
- sodium:
|
||||
. Fixed bug #77646 (sign_detached() strings not terminated). (Frank)
|
||||
|
||||
- SQLite3:
|
||||
. Added SQLite3::setAuthorizer() and respective class constants. (bohwaz)
|
||||
|
||||
- SPL:
|
||||
. Fixed bug #71236 (Second call of spl_autoload_register() does nothing if it
|
||||
has no arguments). (Nikita)
|
||||
. Fixed bug #65006 (spl_autoload_register fails with multiple callables using
|
||||
self, same method). (Nikita)
|
||||
|
||||
- Standard:
|
||||
. Implemented FR #78638 (__PHP_Incomplete_Class should be final). (Laruence)
|
||||
. Fixed bug #77204 (getimagesize(): Read error! should mention file path).
|
||||
(peter279k)
|
||||
. Fixed bug #76859 (stream_get_line skips data if used with data-generating
|
||||
filter). (kkopachev)
|
||||
. Fixed bug #78385 (parse_url() does not include 'query' when question mark
|
||||
is the last char). (Islam Israfilov)
|
||||
. Fixed bug #75902 (str_replace should warn when misused with nested arrays).
|
||||
(Nikita)
|
||||
. Fixed bug #47983 (mixed LF and CRLF line endings in mail()). (cmb)
|
||||
. Made quoting of cmd execution functions consistent. (cmb)
|
||||
|
||||
- tidy:
|
||||
. Removed the unused $use_include_path parameter from tidy_repair_string().
|
||||
(cmb)
|
||||
|
||||
- XML:
|
||||
. Fixed bug #76874 (xml_parser_free() should never leak memory). (Nikita)
|
||||
|
||||
- XMLWriter:
|
||||
. Changed functions to accept/return XMLWriter objects instead of resources.
|
||||
(cmb)
|
||||
. Implemented FR #79344 (xmlwriter_write_attribute_ns: $prefix should be
|
||||
nullable). (cmb)
|
||||
|
||||
- Zip:
|
||||
. Fixed bug #72374 (remove_path strips first char of filename). (tyage, Remi)
|
||||
. Add ZipArchive::setMtimeName and ZipArchive::setMtimeIndex methods. (Remi)
|
||||
. Add ZipArchive::setProgressCallback method (since libzip 1.3.0). (Remi)
|
||||
. Add ZipArchive::setCancelCallback method (since libzip 1.6.0). (Remi)
|
||||
. Add optional "flags" parameter to ZipArchive::addEmptyDir, addFile and
|
||||
addFromString methods. (Remi)
|
||||
. Add "flags" options to ZipArchive::addGlob and addPattern methods
|
||||
keeping previous behavior having FL_OVERWRITE by default. (Remi)
|
||||
. Add ZipArchive::replaceFile() method. (Remi)
|
||||
. Add lastId property to ZipArchive. (Remi)
|
||||
. ZipArchive::status and ZipArchive::statusSys properties and
|
||||
ZipArchive::getStatusString() method stay valid after the archive
|
||||
is closed. (Remi)
|
||||
. Fixed bug #50678 (files extracted by ZipArchive class lost their
|
||||
original modified time). (Remi)
|
||||
. Implemented FR #77960 (add compression / encryption options for
|
||||
ZipArchive::addGlob and ZipArchive::addPattern). (Remi)
|
||||
. Add ZipArchive::EM_UNKNOWN and ZipArchive::EM_TRAD_PKWARE constants. (Remi)
|
||||
. Add ZipArchive::isCompressionMethodSupported() and
|
||||
ZipArchive::isEncryptionMethodSupported() method (libzip 1.7.0). (Remi)
|
||||
|
||||
- Zlib:
|
||||
. Fixed bug #71417 (fread() does not report zlib.inflate errors). (cmb)
|
||||
?? ??? ????, PHP 8.1.0alpha1
|
||||
|
||||
<<< NOTE: Insert NEWS from last stable release here prior to actual release! >>>
|
||||
|
|
|
@ -1,35 +1,8 @@
|
|||
PHP 8.0 INTERNALS UPGRADE NOTES
|
||||
PHP 8.1 INTERNALS UPGRADE NOTES
|
||||
|
||||
1. Internal API changes
|
||||
a. Object Handlers API
|
||||
b. ZEND_OVERLOADED_FUNCTION and corresponding call_method() object handler
|
||||
c. TSRM changes
|
||||
d. get() and set() object handlers
|
||||
e. zend_parse_parameters 'L' specifier
|
||||
f. Arginfo argument types
|
||||
g. zend_free_op type and should_free argument of zend_get_zval_ptr()
|
||||
h. zend_value_error()
|
||||
i. get_closure() object handler
|
||||
j. compare_objects() and compare() object handlers
|
||||
k. The 'I' length modifier
|
||||
l. Some VM instructions switched to IS_TMP_VAR result instead of IS_VAR
|
||||
m. All internal functions must have arginfo
|
||||
n. zend_hash_sort compare function and zend_hash_sort signature change
|
||||
o. cast_object() object handler is now required
|
||||
p. ARG_COUNT() macro removed
|
||||
q. GC_COLLECTABLE flag
|
||||
r. Cannot implement Traversable only
|
||||
s. zend_fcall_info no_separation flag removed
|
||||
t. Signature changes
|
||||
u. Error Notification callbacks to replace zend_error_cb overwrite use-cases
|
||||
v. Removed Zend APIs
|
||||
w. Renamed Zend APIs
|
||||
x. ZEND_EXT_NOP no longer emitted
|
||||
|
||||
2. Build system changes
|
||||
a. Abstract
|
||||
b. Unix build system changes
|
||||
c. Windows build system changes
|
||||
|
||||
3. Module changes
|
||||
|
||||
|
@ -37,425 +10,10 @@ PHP 8.0 INTERNALS UPGRADE NOTES
|
|||
1. Internal API changes
|
||||
========================
|
||||
|
||||
a. The Object Handlers API was changed to receive zend_object* instead of
|
||||
zval* and zend_string* instead of zval* for property names. See also
|
||||
section t for other similar changes.
|
||||
|
||||
b. ZEND_OVERLOADED_FUNCTION and corresponding call_method() object handler
|
||||
were removed. ZEND_INTERNAL_FUNCTION with ZEND_ACC_CALL_VIA_HANDLER and
|
||||
defined "handler" callback should be used instead. This "handler" callback
|
||||
should also take care about function cleanup. See ext/zend_test/test.c
|
||||
for example.
|
||||
|
||||
c. The following things have been removed from TSRM:
|
||||
- TSRMLS_DC
|
||||
- TSRMLS_D
|
||||
- TSRMLS_CC
|
||||
- TSRMLS_C
|
||||
- TSRMLS_FETCH
|
||||
- TSRMLS_FETCH_FROM_CTX
|
||||
- TSRMLS_SET_CTX
|
||||
- tsrm_new_interpreter_context
|
||||
- tsrm_set_interpreter_context
|
||||
- tsrm_free_interpreter_context
|
||||
- support for GNUPTH, SGI ST, and BETHREADS
|
||||
|
||||
d. The get() and set() object handlers have been removed. The get() handler
|
||||
can generally be replaced with cast_object(). Some uses of set() may be
|
||||
replaced by do_operation(). If set() was used to overload direct
|
||||
assignments using "=", then this is no longer supported and the
|
||||
functionality should be provided in some other way (for example, as
|
||||
modification of an object property).
|
||||
|
||||
e. The zend_parse_parameters 'L' specifier and the Z_PARAM_STRICT_LONG()
|
||||
family of macros have been removed. Use 'l' and Z_PARAM_LONG() instead,
|
||||
which, despite the confusing name, actually have stricter input validation.
|
||||
|
||||
f. Arginfo argument types for internal functions are no longer checked.
|
||||
Instead type checks should be performed using the zend_parse_parameters()
|
||||
or ZEND_PARSE_PARAMETERS_*() APIs.
|
||||
|
||||
g. The zend_free_op type and the "should_free" and "type" arguments of
|
||||
zend_get_zval_ptr() were removed. It's possible to get the old
|
||||
"should_free" value using the following code:
|
||||
|
||||
zval *ret = zend_get_zval_ptr(
|
||||
opline, opline->op1_type, &opline->op1, execute_data);
|
||||
zval *should_free = (op_type & (IS_TMP_VAR|IS_VAR)) ? ret : NULL;
|
||||
|
||||
h. Added the zend_value_error() function, which is intended to be used
|
||||
to raise ValueError when inappropriate argument values are passed
|
||||
to functions.
|
||||
|
||||
i. get_closure() object handlers now accept an additional zend_bool parameter
|
||||
`check_only`. If it is true, the handler is called to check whether the
|
||||
object is callable; in this case the handler should not throw an exception.
|
||||
|
||||
j. compare_objects() handler was removed. Extensions should use compare() object
|
||||
handler instead and check if both arguments are objects and have the same
|
||||
compare handler, using ZEND_COMPARE_OBJECTS_FALLBACK() macro.
|
||||
|
||||
k. The 'I' length modifier, used to denote 32 and 64bit integer from the custom
|
||||
snprintf and spprintf implementations has been removed.
|
||||
Use the ZEND_LONG_FMT, ZEND_ULONG_FMT and ZEND_XLONG_FMT macros defined in
|
||||
php-src/Zend/zend_long.h
|
||||
|
||||
The 'v' format from the custom snprintf and spprintf implementations has
|
||||
been removed. Use the standard 's' format instead.
|
||||
|
||||
l. Some VM instructions switched to IS_TMP_VAR result instead of IS_VAR.
|
||||
Actually, all assignments (ZEND_ASSIGN, ZEND_ASSIGN_DIM, ZEND_ASSIGN_OBJ,
|
||||
ZEND_ASSIGN_STATIC_PROP), all compound assignments (ZEND_ASSIGN_OP,
|
||||
ZEND_ASSIGN_DIM_OP, ZEND_ASSIGN_OBJ_OP, ZEND_ASSIGN_STATIC_PROP_OP) and all
|
||||
pre increments/decrements (ZEND_PRE_INC, ZEND_PRE_DEC, ZEND_PRE_INC_OBJ
|
||||
ZEND_PRE_DEC_OBJ, ZEND_PRE_INC_STATIC_PROP ZEND_PRE_DEC_STATIC_PROP).
|
||||
|
||||
m. All internal functions and methods are now required to specify arginfo
|
||||
information, otherwise warnings will be thrown on startup.
|
||||
|
||||
n. The zend_hash_sort and zend_hash_minmax APIs now accept a comparison
|
||||
function with the following signature:
|
||||
|
||||
typedef int (*bucket_compare_func_t)(Bucket *a, Bucket *b);
|
||||
|
||||
Previously compare_func_t was used, which accepted void pointers.
|
||||
Furthermore, the return type of zend_hash_sort and zend_ts_hash_sort has
|
||||
been changed from int to void; these functions always succeed.
|
||||
|
||||
o. The cast_object() handler is now required, i.e. must be non-null. You can
|
||||
indicate that casting is not supported by always returning FAILURE.
|
||||
|
||||
p. The ARG_COUNT() macro has been removed use ZEND_NUM_ARGS() instead.
|
||||
|
||||
q. GC_COLLECTABLE flag was inverted into GC_NOT_COLLECTABLE.
|
||||
Assignments to GC_TYPE_INFO() might need to be changed to properly
|
||||
set the value of the GC_NOT_COLLECTABLE flag.
|
||||
|
||||
r. Just for for userland classes, it is no longer allowed to implement only
|
||||
the Traversable interface. Instead, it is necessary to implement either
|
||||
Iterator or IteratorAggregate. You can do the latter by implementing
|
||||
zend_ce_aggregate and providing the following method implementation:
|
||||
|
||||
ZEND_METHOD(MyClass, getIterator) {
|
||||
ZEND_PARSE_PARAMETERS_NONE();
|
||||
zend_create_internal_iterator_zval(return_value, ZEND_THIS);
|
||||
}
|
||||
|
||||
s. The zend_fcall_info no_separation flag has been removed, and separation is
|
||||
never allowed. If you wish to pass (or allow passing) arguments by
|
||||
reference, explicitly create those arguments as references using
|
||||
ZEND_MAKE_REF. This removal also affects call_user_function_ex(), which
|
||||
should be replaced by call_user_function().
|
||||
|
||||
t. The following ZEND_API function have changed signature:
|
||||
1. Void in Zend Engine 4.0:
|
||||
- add_assoc_*()
|
||||
- add_index_*()
|
||||
- add_property_*()
|
||||
- object_init()
|
||||
- zend_declare_class_constant*()
|
||||
- zend_declare_property*()
|
||||
- zend_startup_modules()
|
||||
- zend_wrong_parameters_none_error()
|
||||
- zend_fcall_info_argp()
|
||||
- zend_fcall_info_argv()
|
||||
- zend_fcall_info_argn()
|
||||
- zend_startup()
|
||||
- zend_set_memory_limit()
|
||||
- pass_two()
|
||||
- zend_startup_constants()
|
||||
- zend_shutdown_constants()
|
||||
- zend_startup_extensions_mechanism()
|
||||
- zend_startup_extensions()
|
||||
- zend_register_extension()
|
||||
- highlight_string()
|
||||
- zend_ini_startup()
|
||||
- zend_ini_shutdown()
|
||||
- zend_ini_global_shutdown()
|
||||
- zend_ini_deactivate()
|
||||
- zend_copy_ini_directives()
|
||||
- zend_prepare_string_for_scanning()
|
||||
- zend_init_rsrc_list()
|
||||
- zend_list_close()
|
||||
- zend_signal()
|
||||
- zend_sigaction()
|
||||
- zend_stack_init()
|
||||
- zend_stack_del_top()
|
||||
- zend_stack_destroy()
|
||||
2. Argument int to uint32_t in Zend Engine 4.0:
|
||||
- _zend_get_parameters_array_ex()
|
||||
- zend_copy_parameters_array()
|
||||
- zend_fcall_info_args_save()
|
||||
- zend_fcall_info_args_restore()
|
||||
- zend_fcall_info_argp()
|
||||
- zend_fcall_info_argv()
|
||||
- zend_fcall_info_argn()
|
||||
- zend_wrong_parameter*()
|
||||
- zend_wrong_callback_error()
|
||||
- zend_parse_arg_class()
|
||||
3. Argument int to bool in Zend Engine 4.0:
|
||||
- add_next_index_bool()
|
||||
- zend_register_class_alias_ex()
|
||||
- add_assoc_bool_ex()
|
||||
- add_index_bool()
|
||||
- zend_fcall_info_args_clear()
|
||||
- zend_set_local_var()
|
||||
- zend_set_local_var_str()
|
||||
- zend_parse_arg_*()
|
||||
- shutdown_memory_manager()
|
||||
- zend_memory_usage()
|
||||
- zend_memory_peak_usage()
|
||||
- zend_mm_shutdown()
|
||||
- zend_eval_string*()
|
||||
- zend_set_timeout()
|
||||
- _zend_hash_append_ex()
|
||||
- _zend_hash_append_ptr_ex()
|
||||
- zend_alter_ini_entry_ex()
|
||||
- (*zend_encoding_list_parser) typedef
|
||||
- zend_multibyte_parse_encoding_list()
|
||||
- zend_safe_address()
|
||||
- zend_string_tolower_ex()
|
||||
- zend_string_alloc()
|
||||
- zend_string_safe_alloc()
|
||||
- zend_string_init()
|
||||
- zend_string_dup()
|
||||
- zend_string_realloc()
|
||||
- zend_string_extend()
|
||||
- zend_string_truncate()
|
||||
- zend_string_safe_realloc()
|
||||
- zend_string_release_ex()
|
||||
- zend_ts_hash_merge()
|
||||
- zend_ts_hash_sort()
|
||||
4. Argument int to size_t in Zend Engine 4.0:
|
||||
- zend_set_hash_symbol()
|
||||
5. Argument zval* to zend_object* in Zend Engine 4.0:
|
||||
- zend_read_property()
|
||||
- zend_update_property()
|
||||
- zend_unset_property()
|
||||
- zend_call_method()
|
||||
- zend_objects_clone_obj()
|
||||
- zend_get_closure_method_def()
|
||||
- zend_throw_exception_hook()
|
||||
- zend_throw_exception_internal()
|
||||
- zend_get_exception_base()
|
||||
6. Argument zval* to zend_long in Zend Engine 4.0:
|
||||
- _php_math_longtobase()
|
||||
7. Return type from int to zend_result in Zend Engine 4.0:
|
||||
- (*stream_open_function) in _zend_utility_functions
|
||||
- (*zend_post_startup_cb)
|
||||
- (*zend_preload_autoload)
|
||||
- zend_execute_scripts()
|
||||
- zend_post_startup()
|
||||
- _zend_get_parameters_array_ex()
|
||||
- zend_copy_parameters_array()
|
||||
- zend_parse_parameters()
|
||||
- zend_parse_parameters_ex()
|
||||
- zend_parse_method_parameters()
|
||||
- zend_parse_method_parameters_ex()
|
||||
- zend_parse_method_parameters()
|
||||
- zend_register_functions()
|
||||
- zend_startup_module()
|
||||
- zend_startup_module_ex()
|
||||
- zend_register_class_alias_ex()
|
||||
- zend_disable_function()
|
||||
- zend_disable_class()
|
||||
- zend_update_class_constants()
|
||||
- zend_update_static_property*()
|
||||
- object_init_ex()
|
||||
- object_and_properties_init()
|
||||
- add_index_zval()
|
||||
- add_next_index_long_*()
|
||||
- array_set_zval_key()
|
||||
- _call_user_function_impl()
|
||||
- zend_fcall_info_*()
|
||||
- zend_call_function()
|
||||
- zend_set_hash_symbol()
|
||||
- zend_delete_global_variable()
|
||||
- zend_set_local_var()
|
||||
- zend_set_local_var_str()
|
||||
- zend_forbid_dynamic_call()
|
||||
- zend_get_default_from_internal_arg_info()
|
||||
- zend_try_assign_typed_ref*()
|
||||
- zend_ast_evaluate()
|
||||
- zend_startup_builtin_functions()
|
||||
- do_bind_function()
|
||||
- do_bind_class()
|
||||
- zend_unmangle_property_name_ex()
|
||||
- zend_register_auto_global()
|
||||
- zend_register_constant()
|
||||
- zend_exception_error()
|
||||
- zend_eval_string*()
|
||||
- zend_undefined_offset_write()
|
||||
- zend_undefined_index_write()
|
||||
- zval_update_constant(_ex)()
|
||||
- zend_load_extension()
|
||||
- zend_load_extension_handle()
|
||||
- zend_hash_del(_ind)()
|
||||
- zend_hash_str_del(_ind)()
|
||||
- zend_hash_index_del()
|
||||
- zend_hash_move_forward_ex()
|
||||
- zend_hash_move_backward_ex()
|
||||
- zend_hash_get_current_key_ex()
|
||||
- zend_hash_get_current_key_type_ex()
|
||||
- zend_symtable_del(_ind)()
|
||||
- zend_symtable_str_del(_ind)()
|
||||
- highlight_file()
|
||||
- zend_do_link_class()
|
||||
- zend_alter_ini_entry*()
|
||||
- zend_restore_ini_entry()
|
||||
- zend_ini_register_displayer()
|
||||
- zend_ini_open_file_for_scanning()
|
||||
- zend_ini_prepare_string_for_scanning()
|
||||
- zend_user_it_valid()
|
||||
- zend_create_internal_iterator_zval()
|
||||
- zend_multibyte_set_filter()
|
||||
- zend_lex_tstring()
|
||||
- _zend_module_entry module_startup_func, module_shutdown_func,
|
||||
request_startup_func, request_shutdown_func, and post_deactivate_func function pointers
|
||||
- (*zend_encoding_list_parser) typedef
|
||||
- (*zend_encoding_internal_encoding_setter) typedef
|
||||
- zend_multibyte_set_functions()
|
||||
- zend_multibyte_set_script_encoding_by_string()
|
||||
- add_function()
|
||||
- sub_function()
|
||||
- mul_function()
|
||||
- pow_function()
|
||||
- div_function()
|
||||
- mod_function()
|
||||
- boolean_xor_function()
|
||||
- boolean_not_function()
|
||||
- bitwise_not_function()
|
||||
- bitwise_or_function()
|
||||
- bitwise_and_function()
|
||||
- bitwise_xor_function()
|
||||
- shift_left_function()
|
||||
- shift_right_function()
|
||||
- concat_function()
|
||||
- is_equal_function(
|
||||
- is_identical_function()
|
||||
- is_not_identical_function()
|
||||
- is_not_equal_function()
|
||||
- is_smaller_function()
|
||||
- is_smaller_or_equal_function(zv
|
||||
- increment_function()
|
||||
- decrement_function()
|
||||
- zend_stream_open()
|
||||
- zend_stream_fixup()
|
||||
- zend_ts_hash_del()
|
||||
- zend_ts_hash_index_del()
|
||||
8. Return type from int to bool in Zend Engine 4.0:
|
||||
- zend_make_printable_zval()
|
||||
- zend_parse_arg_*()
|
||||
- is_zend_mm()
|
||||
- is_zend_ptr()
|
||||
- zend_mm_is_custom_heap()
|
||||
- (*zend_mm_chunk_truncate_t)
|
||||
- (*zend_mm_chunk_extend_t)
|
||||
- zend_bitset_empty()
|
||||
- zend_is_smart_branch()
|
||||
- zend_check_arg_send_type()
|
||||
- zend_verify_const_access()
|
||||
- zend_gdb_register_code()
|
||||
- zend_gdb_present()
|
||||
- _zend_handle_numeric_str(_ex)()
|
||||
- zend_hash_exists_ind()
|
||||
- zend_hash_str_exists_ind()
|
||||
- zend_symtable_exists(_ind)()
|
||||
- zend_symtable_str_exists()
|
||||
- (*zend_encoding_lexer_compatibility_checker)
|
||||
- zend_object_is_true()
|
||||
- i_zend_is_true()
|
||||
- zendi_smart_streq()
|
||||
- zend_stack_is_empty()
|
||||
- zend_ts_hash_exists()
|
||||
- zend_ts_hash_index_exists()
|
||||
9. Argument void to const char* in Zend Engine 4.0:
|
||||
- zend_get_op_array_extension_handle()
|
||||
10. Argument zend_extension to const char* in Zend Engine 4.0:
|
||||
- zend_get_resource_handle()
|
||||
11. Argument const char * to HMODULE in Zend Engine 4.0:
|
||||
- php_win32_image_compatible()
|
||||
12. const char * argument dropped in Zend Engine 4.0:
|
||||
- php_win32_crt_compatible()
|
||||
|
||||
u. Instead of overwriting zend_error_cb extensions with debugging, monitoring
|
||||
use-cases catching Errors/Exceptions are strongly encouraged to use
|
||||
the new error observer API instead.
|
||||
|
||||
Error observering callbacks are guaranteed to be called regardless of
|
||||
the users error_reporting setting or userland error handler return values.
|
||||
|
||||
Register observer callbacks during MINIT of an extension:
|
||||
|
||||
void my_error_observer_cb(int type,
|
||||
const char *error_filename,
|
||||
uint32_t error_lineno,
|
||||
zend_string *message) {
|
||||
}
|
||||
zend_observer_error_register(my_error_observer_cb);
|
||||
|
||||
v. The following APIs have been removed from the Zend Engine:
|
||||
- zend_ts_hash_init_ex(), drop the last argument and use zend_ts_hash_init() instead
|
||||
- zend_hash_init_ex(), drop the last argument and use zend_hash_init() instead
|
||||
- zval_internal_dtor(), use zval_internal_ptr_dtor() instead
|
||||
- zval_dtor_func(), use rc_dtor_func() instead
|
||||
- zval_ptr_dtor_wrapper(), use zval_ptr_dtor() instead
|
||||
- zval_internal_ptr_dtor_wrapper(), use zval_internal_ptr_dtor() instead
|
||||
|
||||
w. The following APIs have been renamed:
|
||||
- _zend_ts_hash_init() to zend_ts_hash_init()
|
||||
|
||||
x. In COMPILE_EXTENDED_STMT mode, a ZEND_EXT_NOP opcode will no longer be
|
||||
generated at the start of a function. Use the new observer APIs or hook
|
||||
into zend_execute_ex instead.
|
||||
|
||||
========================
|
||||
2. Build system changes
|
||||
========================
|
||||
|
||||
a. Abstract
|
||||
1. Symbol HAVE_HASH_EXT is removed and is no longer defined. It should be
|
||||
considered to have hash extension always available since PHP 7.4.
|
||||
|
||||
2. Symbol HAVE_PCRE is removed and is no longer defined. It should be
|
||||
considered to have pcre extension always available since PHP 7.4.
|
||||
|
||||
3. Symbol HAVE_LOCALE_H has been removed and is no longer defined.
|
||||
|
||||
4. --disable-inline-optimization (which actually disabled all compiler
|
||||
optimizations) has been removed. If you wish to build PHP on a host
|
||||
with extremely constrained memory, and compilation fails with an "out
|
||||
of memory" message, add "-O0" to CFLAGS.
|
||||
|
||||
5. build system and provider are displayed in phpinfo from environment:
|
||||
- PHP_BUILD_SYSTEM (default is same as PHP_UNAME)
|
||||
- PHP_BUILD_PROVIDER (no default)
|
||||
|
||||
b. Unix build system changes
|
||||
|
||||
1. --enable-maintainer-zts is renamed --enable-zts for parity with Windows
|
||||
and as recognition that ZTS is not a "maintainer" or experimental
|
||||
feature.
|
||||
|
||||
2. The PHP_CHECK_GCC_ARG() m4 macro has been removed in favor of
|
||||
AX_CHECK_COMPILE_FLAG().
|
||||
|
||||
3. The 6th argument of PHP_ADD_SOURCES_X has been removed.
|
||||
|
||||
4. The 'special-flags' (3rd) argument of PHP_ADD_SOURCES_X are
|
||||
now appended instead of prepended to previous compiler flags.
|
||||
This means compiler flags passed to PHP_NEW_EXTENSION and PHP_ADD_SOURCES
|
||||
are now appended, this allows to disable compiler flags set by Zend/Zend.m4
|
||||
(e.g. disable certain compiler flags enabled by -Wextra)
|
||||
|
||||
c. Windows build system changes
|
||||
|
||||
- The configuration option --enable-crt-debug has been removed. The VC
|
||||
debug heap can now be enabled for debug builds by setting the environment
|
||||
variable PHP_WIN32_DEBUG_HEAP to a non-negative number before PHP process
|
||||
startup.
|
||||
|
||||
========================
|
||||
3. Module changes
|
||||
========================
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
#ifndef ZEND_H
|
||||
#define ZEND_H
|
||||
|
||||
#define ZEND_VERSION "4.0.0-dev"
|
||||
#define ZEND_VERSION "4.1.0-dev"
|
||||
|
||||
#define ZEND_ENGINE_3
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ You can use the following macro to check the extension API version for compatibi
|
|||
|
||||
/* The first number is the engine version and the rest is the date (YYYYMMDD).
|
||||
* This way engine 2/3 API no. is always greater than engine 1 API no.. */
|
||||
#define ZEND_EXTENSION_API_NO 420200930
|
||||
#define ZEND_EXTENSION_API_NO 420201009
|
||||
|
||||
typedef struct _zend_extension_version_info {
|
||||
int zend_extension_api_no;
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
#define ZEND_MODULE_INFO_FUNC_ARGS zend_module_entry *zend_module
|
||||
#define ZEND_MODULE_INFO_FUNC_ARGS_PASSTHRU zend_module
|
||||
|
||||
#define ZEND_MODULE_API_NO 20200930
|
||||
#define ZEND_MODULE_API_NO 20201009
|
||||
#ifdef ZTS
|
||||
#define USING_ZTS 1
|
||||
#else
|
||||
|
|
|
@ -17,7 +17,7 @@ dnl Basic autoconf initialization, generation of config.nice.
|
|||
dnl ----------------------------------------------------------------------------
|
||||
|
||||
AC_PREREQ([2.68])
|
||||
AC_INIT([PHP],[8.0.0-dev],[https://bugs.php.net],[php],[https://www.php.net])
|
||||
AC_INIT([PHP],[8.1.0-dev],[https://bugs.php.net],[php],[https://www.php.net])
|
||||
AC_CONFIG_SRCDIR([main/php_version.h])
|
||||
AC_CONFIG_AUX_DIR([build])
|
||||
AC_PRESERVE_HELP_ORDER
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
#include <dmalloc.h>
|
||||
#endif
|
||||
|
||||
#define PHP_API_VERSION 20200930
|
||||
#define PHP_API_VERSION 20201009
|
||||
#define PHP_HAVE_STREAMS
|
||||
#define YYDEBUG 0
|
||||
#define PHP_DEFAULT_CHARSET "UTF-8"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* automatically generated by configure */
|
||||
/* edit configure.ac to change version number */
|
||||
#define PHP_MAJOR_VERSION 8
|
||||
#define PHP_MINOR_VERSION 0
|
||||
#define PHP_MINOR_VERSION 1
|
||||
#define PHP_RELEASE_VERSION 0
|
||||
#define PHP_EXTRA_VERSION "-dev"
|
||||
#define PHP_VERSION "8.0.0-dev"
|
||||
#define PHP_VERSION_ID 80000
|
||||
#define PHP_VERSION "8.1.0-dev"
|
||||
#define PHP_VERSION_ID 80100
|
||||
|
|
|
@ -94,10 +94,10 @@ if (typeof(CWD) == "undefined") {
|
|||
|
||||
/* defaults; we pick up the precise versions from configure.ac */
|
||||
var PHP_VERSION = 8;
|
||||
var PHP_MINOR_VERSION = 0;
|
||||
var PHP_MINOR_VERSION = 1;
|
||||
var PHP_RELEASE_VERSION = 0;
|
||||
var PHP_EXTRA_VERSION = "";
|
||||
var PHP_VERSION_STRING = "8.0.0";
|
||||
var PHP_VERSION_STRING = "8.1.0";
|
||||
|
||||
/* Get version numbers and DEFINE as a string */
|
||||
function get_version_numbers()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue