From 618d99bed4d670039e7bd348110fa8ac10081588 Mon Sep 17 00:00:00 2001 From: Calvin Buckley Date: Tue, 11 Aug 2026 05:10:29 -0300 Subject: [PATCH 1/5] TSRM: don't use initial-exec on AIX (#23145) If building for ZTS, it seems that local-exec can sneak in: ``` PHP Warning: PHP Startup: Unable to load dynamic library 'intl' (tried: /QOpenSys/pkgs/lib/php-8.6/extensions/intl ( 0509-022 Cannot load module /QOpenSys/pkgs/lib/php-8.6/extensions/intl. 0509-026 System error: A file or directory in the path name does not exist.), /QOpenSys/pkgs/lib/php-8.6/extensions/intl.so ( 0509-130 Symbol resolution failed for /QOpenSys/pkgs/lib/php-8.6/extensions/intl.so because: 0509-189 Module /QOpenSys/pkgs/lib/php-8.6/extensions/intl.so is loaded dynamically, but the initial-exec model is used by the module to refer to its own thread-local variables. 0509-191 Examine .loader section relocation entries with the 'dump -Rv' command. 0509-192 Examine .loader section symbols with the 'dump -Tv' command.)) in Unknown on line 0 ``` When inspecting the module for initial-exec: ``` $ dump -Rv /QOpenSys/pkgs/lib/php-8.6/extensions/intl.so | grep TLS_In 0x20014370 0x000001fb TLS_InExc 0x0003 _tsrm_ls_cache ``` It seems it only was in `ext/intl/timezone/timezone_class.cpp`. However, it seems prudent to just not use local-exec for this case since it seems to be an optimization only really possible on glibc; play it safe elsewhere. (Perhaps this should be really an ifdef GLIBC check?) --- TSRM/TSRM.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/TSRM/TSRM.h b/TSRM/TSRM.h index 80d6cbad0443..4911233d948f 100644 --- a/TSRM/TSRM.h +++ b/TSRM/TSRM.h @@ -152,7 +152,8 @@ TSRM_API bool tsrm_is_managed_thread(void); # define __has_attribute(x) 0 #endif -#if !__has_attribute(tls_model) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__MUSL__) || defined(__HAIKU__) +#if !__has_attribute(tls_model) || defined(__FreeBSD__) || defined(__NetBSD__) \ + || defined(__MUSL__) || defined(__HAIKU__) || defined(_AIX) # define TSRM_TLS_MODEL_ATTR # define TSRM_TLS_MODEL_DEFAULT #elif __PIC__ From b48a1595eb40cbddb24e527d43bc7b6be7203452 Mon Sep 17 00:00:00 2001 From: Weilin Du Date: Tue, 11 Aug 2026 16:13:44 +0800 Subject: [PATCH 2/5] [skip ci] Better NEWS entry for the metaphone deprecation This aligns with what other deprecation entries read. --- NEWS | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 35d78d928995..df22c2cea467 100644 --- a/NEWS +++ b/NEWS @@ -122,7 +122,8 @@ PHP NEWS . Added the "filter.max_filter_count" stream context option for php://filter URLs. Using more than 16 filters without configuring this option is now deprecated. (Sjoerd Langkemper) - . metaphone() is now deprecated. (Weilin Du) + . The metaphone() function is now deprecated, use a userland phonetic + matching library instead. (Weilin Du) . Improved performance of array_intersect(). (mehmetcansahin) . Fixed bug GH-23006 (phpcredits() full-page HTML title says phpinfo()). (Weilin Du) From 44f564c32105e2f9601a2e9c219d19238945c9ec Mon Sep 17 00:00:00 2001 From: Weilin Du Date: Tue, 11 Aug 2026 17:06:28 +0800 Subject: [PATCH 3/5] ext/opcache: Name map ptr chunk size constants (#23212) This is a missing case of #23109 --- ext/opcache/ZendAccelerator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/opcache/ZendAccelerator.c b/ext/opcache/ZendAccelerator.c index 8685fb564150..cf62765d9e1d 100644 --- a/ext/opcache/ZendAccelerator.c +++ b/ext/opcache/ZendAccelerator.c @@ -4742,11 +4742,11 @@ static void preload_load(size_t orig_map_ptr_static_last) size_t old_map_ptr_last = CG(map_ptr_last); if (zend_map_ptr_static_last != ZCSG(map_ptr_static_last) || old_map_ptr_last != ZCSG(map_ptr_last)) { CG(map_ptr_last) = ZCSG(map_ptr_last); - CG(map_ptr_size) = ZEND_MM_ALIGNED_SIZE_EX(ZCSG(map_ptr_last) + 1, 4096); + CG(map_ptr_size) = ZEND_MM_ALIGNED_SIZE_EX(ZCSG(map_ptr_last) + 1, ZEND_MAP_PTR_CHUNK_SIZE); zend_map_ptr_static_last = ZCSG(map_ptr_static_last); /* Grow map_ptr table as needed, but allocate once for static + regular map_ptrs */ - size_t new_static_size = ZEND_MM_ALIGNED_SIZE_EX(zend_map_ptr_static_last, 4096); + size_t new_static_size = ZEND_MM_ALIGNED_SIZE_EX(zend_map_ptr_static_last, ZEND_MAP_PTR_CHUNK_SIZE); if (zend_map_ptr_static_size != new_static_size) { void *new_base = pemalloc((new_static_size + CG(map_ptr_size)) * sizeof(void *), 1); if (CG(map_ptr_real_base)) { From 8a90e02f1516b9db18791cd7ea2d9b21e7f64d9f Mon Sep 17 00:00:00 2001 From: NickSdot <32384907+NickSdot@users.noreply.github.com> Date: Tue, 11 Aug 2026 16:55:30 +0700 Subject: [PATCH 4/5] perf: speed up benchmark checkout (#23211) --- .github/workflows/test-suite.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-suite.yml b/.github/workflows/test-suite.yml index 2046a3d816c8..b444caf6b820 100644 --- a/.github/workflows/test-suite.yml +++ b/.github/workflows/test-suite.yml @@ -919,6 +919,7 @@ jobs: with: ref: ${{ fromJson(inputs.branch).ref }} fetch-depth: 0 + filter: blob:none # ASLR can cause a lot of noise due to missed sse opportunities for memcpy # and other operations, so we disable it during benchmarking. - name: Disable ASLR From 1f1570906ea65e5bc479ed9b9ec5d6510230406e Mon Sep 17 00:00:00 2001 From: NickSdot <32384907+NickSdot@users.noreply.github.com> Date: Tue, 11 Aug 2026 17:06:12 +0700 Subject: [PATCH 5/5] docs: Clarify `--CREDITS--` section (GH-23215) --- docs/source/miscellaneous/writing-tests.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/source/miscellaneous/writing-tests.rst b/docs/source/miscellaneous/writing-tests.rst index 4339e042e6a4..40e273b6fd71 100644 --- a/docs/source/miscellaneous/writing-tests.rst +++ b/docs/source/miscellaneous/writing-tests.rst @@ -596,9 +596,10 @@ Example 1 (full): :ref:`sample001.phpt` on the first line. If the test was part of a TestFest event, then # followed by the name of the event and the date (YYYY-MM-DD) on the second line. -**Required:** No. For newly created tests this section should no longer be included, as test -authorship is already accurately tracked by Git. If multiple authors should be credited, the -`Co-authored-by` tag in the commit message may be used. +**Required:** No. For newly created tests the section should no longer be used for simple authorship +claims or listing all contributors who edited the test; as it is already accurately tracked by Git. +It may be used if more specific attribution is useful, for example to credit the original reporter +of a bug or a contributor who is not credited via `Co-authored-by` tag. **Format:** Name Email [Event]