Commit 4aba862339c for php
commit 4aba862339c11b0a319690ac4f405c8a49fb232a
Author: Gina Peter Banyard <girgias@php.net>
Date: Sat Nov 14 00:32:24 2026 +0000
Add subsections in UPGRADING.INTERNALS
Following the format of the PHP 8.6 file
diff --git a/UPGRADING.INTERNALS b/UPGRADING.INTERNALS
index b5134705b37..f1848040fb2 100644
--- a/UPGRADING.INTERNALS
+++ b/UPGRADING.INTERNALS
@@ -14,52 +14,61 @@ PHP 8.7 INTERNALS UPGRADE NOTES
1. Internal API changes
========================
-- Added zend_module_entry.child_init_func, an optional void callback invoked by
- php_child_init() in the child process after core child initialization. It runs
- in module dependency order for started modules and may run before a request
- starts or during an active request. Initialize it with a designated
- initializer such as `.child_init_func = callback` after
- STANDARD_MODULE_PROPERTIES_EX.
-- Removed the ZEND_LOG_XOR() macro.
-- Removed the ZEND_TRUTH() macro.
-- Removed zend_execute_scripts(). Manually call zend_execute_script() in a loop
- instead.
-- Removed ZEND_STATIC_ASSERT(). Use C11 static_assert() directly instead.
-- Removed zend_atomic.h and the zend_atomic_* types and functions.
- Use the standard C11 atomic_* types and functions instead.
-- The sapi_terminate_process() function was removed.
-- The sapi_force_http_10() function was removed.
-- The sapi_get_fd() function was removed.
-- The sapi_get_target_uid() and sapi_get_target_gid() functions were removed.
-- Removed HAVE_NORETURN and HAVE_NORETURN_ALIAS. ZEND_NORETURN is guaranteed to
- work.
-- Redefined ZEND_NORETURN to make use of the [[noreturn]] attribute for C++
- and C23, which means that ZEND_NORETURN needs to come first in the modifier
- list. Consider using noreturn (C11) / [[noreturn]] (C23) directly if
- header interoperability is not required.
-- The signature of zend_is_callable() has been changed to
- zend_is_callable(const zval *callable, zend_fcall_info_cache *fcc, char **error)
- from zend_is_callable(const zval *callable, uint32_t check_flags, zend_string **callable_name).
- This new signature covers the most common parameters used with zend_is_callable_ex().
-- Removed zend_hrtime_posix_clock_id. zend_hrtime() always uses CLOCK_MONOTONIC
- on POSIX platforms.
-- Function pointer signature for interface_gets_implemented has been made void.
- Implementations are expected to use zend_error_noreturn upon failure.
-- Added a new zend_object_copy() function which increases the refcount of
- a zend_object* and returns it. Allowing more descriptive code rather than
- doing an assignment followed by GC_ADDREF().
-- Added zend_call_method_if_exists_ex() which accepts named parameters and
- retrieving the callability failure error message.
-- The INIT_CLASS_ENTRY_INIT_METHODS() macro, which was previously used as
- part of handling disabled classes, was removed following the removal of
- the `disable_classes` INI setting in PHP 8.5.
-- Using zend_array_destroy() on HashTables with a custom pDestructor is not
- allowed anymore. User-facing HashTables must have pDestructor = ZVAL_PTR_DTOR
- or NULL, and must be freed with zend_array_destroy(). Other HashTables can be
- freed with zend_hash_destroy() + pefree().
-- The ZTS symbols compiler_globals_offset and executor_globals_offset have been
- removed: CG()/EG() now reach the globals through a __thread struct.
-- Removed zend_error_noreturn_unchecked().
+- Breaking changes:
+ . Added zend_module_entry.child_init_func, an optional void callback invoked
+ by php_child_init() in the child process after core child initialization.
+ It runs in module dependency order for started modules and may run before a
+ request starts or during an active request. Initialize it with a designated
+ initializer such as `.child_init_func = callback` after
+ STANDARD_MODULE_PROPERTIES_EX.
+ . Function pointer signature for interface_gets_implemented has been made
+ void. Implementations are expected to use zend_error_noreturn upon failure.
+ . Redefined ZEND_NORETURN to make use of the [[noreturn]] attribute for C++
+ and C23, which means that ZEND_NORETURN needs to come first in the modifier
+ list. Consider using noreturn (C11) / [[noreturn]] (C23) directly if
+ header interoperability is not required.
+ . Using zend_array_destroy() on HashTables with a custom pDestructor is not
+ allowed anymore. User-facing HashTables must have pDestructor = ZVAL_PTR_DTOR
+ or NULL, and must be freed with zend_array_destroy(). Other HashTables can
+ be freed with zend_hash_destroy() + pefree().
+
+- Removed:
+ . The ZEND_LOG_XOR() macro was removed.
+ . The ZEND_TRUTH() macro was removed.
+ . Removed zend_execute_scripts(). Manually call zend_execute_script() in a
+ loop instead.
+ . Removed ZEND_STATIC_ASSERT(). Use C11 static_assert() directly instead.
+ . Removed zend_atomic.h and the zend_atomic_* types and functions.
+ Use the standard C11 atomic_* types and functions instead.
+ . The zend_error_noreturn_unchecked() function was removed.
+ . The sapi_terminate_process() function was removed.
+ . The sapi_force_http_10() function was removed.
+ . The sapi_get_fd() function was removed.
+ . The sapi_get_target_uid() function was removed.
+ . The sapi_get_target_gid() function was removed.
+ . Removed zend_hrtime_posix_clock_id. zend_hrtime() always uses
+ CLOCK_MONOTONIC on POSIX platforms.
+ . The INIT_CLASS_ENTRY_INIT_METHODS() macro, which was previously used as
+ part of handling disabled classes, was removed following the removal of
+ the `disable_classes` INI setting in PHP 8.5.
+ . Removed HAVE_NORETURN and HAVE_NORETURN_ALIAS. ZEND_NORETURN is guaranteed
+ to work.
+ . The ZTS symbols compiler_globals_offset and executor_globals_offset have
+ been removed: CG()/EG() now reach the globals through a __thread struct.
+
+- Changed:
+ . The signature of zend_is_callable() has been changed to
+ zend_is_callable(const zval *callable, zend_fcall_info_cache *fcc, char **error)
+ from zend_is_callable(const zval *callable, uint32_t check_flags, zend_string **callable_name).
+ This new signature covers the most common parameters used with
+ zend_is_callable_ex().
+
+- Added:
+ . The zend_object_copy() function was added to increases the refcount of a
+ zend_object* and returns it. Allowing more descriptive code rather than
+ doing an assignment followed by GC_ADDREF().
+ . The zend_call_method_if_exists_ex() was added to accepts named parameters
+ and retrieving the callability failure error message.
========================
2. Build system changes