Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
2f2fb1f
Skip lc_ctype_inheritance.phpt on macos 15+
shivammathur Oct 13, 2025
9a2113a
Disable inlining and inter-procedure-analyses for zend_string_equal_v…
dstogov Jan 9, 2024
c2fd6d6
Merge branch 'PHP-8.1' into PHP-8.2
iluuu1994 Oct 15, 2025
ff3a12b
Merge branch 'PHP-8.2' into PHP-8.3
iluuu1994 Oct 15, 2025
4b0ad46
Merge branch 'PHP-8.3' into PHP-8.4
iluuu1994 Oct 15, 2025
d63be3f
Merge branch 'PHP-8.4' into PHP-8.5
iluuu1994 Oct 15, 2025
cfcfc6f
Merge branch 'PHP-8.5'
iluuu1994 Oct 15, 2025
e3e37c8
Upgrade nightly macOS version to macos 15 (#20159)
shivammathur Oct 15, 2025
56af25c
exif: Fix possible memory leak when tag is empty
ndossche Oct 14, 2025
d1018be
Merge branch 'PHP-8.3' into PHP-8.4
ndossche Oct 15, 2025
f238665
Merge branch 'PHP-8.4' into PHP-8.5
ndossche Oct 15, 2025
108b90d
Merge branch 'PHP-8.5'
ndossche Oct 15, 2025
472f2fe
Fix GH-8978: MySQLi: SSL certificate verification fails (port doubled)
ndossche Sep 30, 2025
aa82c9c
Merge branch 'PHP-8.3' into PHP-8.4
ndossche Oct 15, 2025
dd60911
Merge branch 'PHP-8.4' into PHP-8.5
ndossche Oct 15, 2025
f9678e7
Merge branch 'PHP-8.5'
ndossche Oct 15, 2025
bbe2191
ROR the callable_convert_cache key for better hash distribution (#20052)
ndossche Oct 15, 2025
94625a0
Fix GH-19722: Windows: _get_osfhandle asserts in debug mode when give…
dktapps Sep 5, 2025
8dd117f
Merge branch 'PHP-8.3' into PHP-8.4
ndossche Oct 15, 2025
0ef96a2
Merge branch 'PHP-8.4' into PHP-8.5
ndossche Oct 15, 2025
8dc1a3d
Merge branch 'PHP-8.5'
ndossche Oct 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 9 additions & 6 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ on:
libmysqlclient_with_mysqli:
required: true
type: boolean
macos_arm64_version:
required: true
type: string
run_alpine:
required: true
type: boolean
Expand Down Expand Up @@ -366,11 +369,11 @@ jobs:
matrix:
debug: [true, false]
zts: [true, false]
os: ['13', '14']
arch: ['X64', 'ARM64']
exclude:
- os: ${{ !inputs.run_macos_arm64 && '14' || '*never*' }}
name: "MACOS_${{ matrix.os == '13' && 'X64' || 'ARM64' }}_${{ matrix.debug && 'DEBUG' || 'RELEASE' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}"
runs-on: macos-${{ matrix.os }}
- arch: ${{ !inputs.run_macos_arm64 && 'ARM64' || '*never*' }}
name: "MACOS_${{ matrix.arch }}_${{ matrix.debug && 'DEBUG' || 'RELEASE' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}"
runs-on: macos-${{ matrix.arch == 'X64' && '15-intel' || inputs.macos_arm64_version }}
steps:
- name: git checkout
uses: actions/checkout@v5
Expand All @@ -393,7 +396,7 @@ jobs:
- name: Test
uses: ./.github/actions/test-macos
- name: Test Tracing JIT
if: matrix.os != '14' || !matrix.zts
if: matrix.arch == 'X64' || !matrix.zts
uses: ./.github/actions/test-macos
with:
jitType: tracing
Expand All @@ -405,7 +408,7 @@ jobs:
runTestsParameters: >-
-d opcache.enable_cli=1
- name: Test Function JIT
if: matrix.os != '14' || !matrix.zts
if: matrix.arch == 'X64' || !matrix.zts
uses: ./.github/actions/test-macos
with:
jitType: function
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/root.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ jobs:
branch: ${{ matrix.branch.ref }}
community_verify_type_inference: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
libmysqlclient_with_mysqli: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1) }}
macos_arm64_version: ${{ ((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 5) || matrix.branch.version[0] >= 9) && '15' || '14' }}
run_alpine: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
run_linux_ppc64: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
run_macos_arm64: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
Expand Down
6 changes: 5 additions & 1 deletion Zend/zend_vm_def.h
Original file line number Diff line number Diff line change
Expand Up @@ -9720,7 +9720,11 @@ ZEND_VM_HANDLER(202, ZEND_CALLABLE_CONVERT, UNUSED, UNUSED, NUM|CACHE_SLOT)
if (closure) {
ZVAL_OBJ_COPY(EX_VAR(opline->result.var), closure);
} else {
zval *closure_zv = zend_hash_index_lookup(&EG(callable_convert_cache), (zend_ulong)(uintptr_t)call->func);
/* Rotate the key for better hash distribution. */
const int shift = sizeof(size_t) == 4 ? 6 : 7;
zend_ulong key = (zend_ulong)(uintptr_t)call->func;
key = (key >> shift) | (key << ((sizeof(key) * 8) - shift));
zval *closure_zv = zend_hash_index_lookup(&EG(callable_convert_cache), key);
if (Z_TYPE_P(closure_zv) == IS_NULL) {
zend_closure_from_frame(closure_zv, call);
}
Expand Down
12 changes: 10 additions & 2 deletions Zend/zend_vm_execute.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion ext/ctype/tests/lc_ctype_inheritance.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ Do not inherit LC_CTYPE from environment
ctype
--SKIPIF--
<?php
if (PHP_OS_FAMILY === 'Darwin') die('skip Fails for macOS 15');
if (PHP_OS_FAMILY === 'Darwin' && version_compare(php_uname('r'), '24.0.0', '>=')) {
die('skip macOS 15 inherits LC_CTYPE into the thread locale');
}
if (setlocale(LC_ALL, 'invalid') === 'invalid') { die('skip setlocale() is broken /w musl'); }
if (!setlocale(LC_CTYPE, "de_DE", "de-DE")) die("skip requires de_DE locale");
?>
Expand Down
1 change: 1 addition & 0 deletions ext/exif/exif.c
Original file line number Diff line number Diff line change
Expand Up @@ -3261,6 +3261,7 @@ static bool exif_process_IFD_in_MAKERNOTE(image_info_type *ImageInfo, char * val

#define REQUIRE_NON_EMPTY() do { \
if (byte_count == 0) { \
EFREE_IF(outside); \
exif_error_docref("exif_read_data#error_ifd" EXIFERR_CC, ImageInfo, E_WARNING, "Process tag(x%04X=%s): Cannot be empty", tag, exif_get_tagname_debug(tag, tag_table)); \
return false; \
} \
Expand Down
9 changes: 8 additions & 1 deletion ext/mysqlnd/mysqlnd_connection.c
Original file line number Diff line number Diff line change
Expand Up @@ -552,7 +552,14 @@ MYSQLND_METHOD(mysqlnd_conn_data, get_scheme)(MYSQLND_CONN_DATA * conn, MYSQLND_
if (hostname.s[0] != '[' && mysqlnd_fast_is_ipv6_address(hostname.s)) {
transport.l = mnd_sprintf(&transport.s, 0, "tcp://[%s]:%u", hostname.s, port);
} else {
transport.l = mnd_sprintf(&transport.s, 0, "tcp://%s:%u", hostname.s, port);
/* Not ipv6, but could already contain a port number, in which case we should not add an extra port.
* See GH-8978. In a port doubling scenario, the first port would be used so we do the same to keep BC. */
if (strchr(hostname.s, ':')) {
/* TODO: Ideally we should be able to get rid of this workaround in the future. */
transport.l = mnd_sprintf(&transport.s, 0, "tcp://%s", hostname.s);
} else {
transport.l = mnd_sprintf(&transport.s, 0, "tcp://%s:%u", hostname.s, port);
}
}
}
DBG_INF_FMT("transport=%s", transport.s? transport.s:"OOM");
Expand Down