Skip to content

Commit daba869

Browse files
authored
Merge branch 'php:master' into true-async-api-stable
2 parents ca3e57c + c9249e2 commit daba869

File tree

647 files changed

+13247
-4557
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

647 files changed

+13247
-4557
lines changed

.github/CODEOWNERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
/ext/gmp @Girgias
2828
/ext/intl @devnexen
2929
/ext/json @bukka
30+
/ext/lexbor @kocsismate @nielsdos
3031
/ext/libxml @nielsdos
3132
/ext/mbstring @alexdowad @youkidearitai
3233
/ext/mysqli @bukka @kamil-tekiela
@@ -51,6 +52,7 @@
5152
/ext/sockets @devnexen
5253
/ext/spl @Girgias
5354
/ext/standard @bukka
55+
/ext/uri @kocsismate
5456
/ext/xml @nielsdos
5557
/ext/xmlreader @nielsdos
5658
/ext/xmlwriter @nielsdos

.github/actions/freebsd/action.yml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
name: FreeBSD
2+
inputs:
3+
configurationParameters:
4+
default: ''
5+
required: false
26
runs:
37
using: composite
48
steps:
@@ -80,7 +84,9 @@ runs:
8084
--with-sodium \
8185
--enable-werror \
8286
--with-config-file-path=/etc \
83-
--with-config-file-scan-dir=/etc/php.d
87+
--with-config-file-scan-dir=/etc/php.d \
88+
${{ inputs.configurationParameters }}
89+
8490
gmake -j2
8591
mkdir /etc/php.d
8692
gmake install > /dev/null

.github/scripts/windows/build.bat

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ if not exist "%SDK_RUNNER%" (
4141
exit /b 3
4242
)
4343

44-
cmd /c %SDK_RUNNER% -t .github\scripts\windows\build_task.bat
44+
for /f "delims=" %%T in ('call .github\scripts\windows\find-vs-toolset.bat %PHP_BUILD_CRT%') do set "VS_TOOLSET=%%T"
45+
echo Got VS Toolset %VS_TOOLSET%
46+
cmd /c %SDK_RUNNER% -s %VS_TOOLSET% -t .github\scripts\windows\build_task.bat
4547
if %errorlevel% neq 0 exit /b 3
4648

4749
exit /b 0
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
@echo off
2+
3+
setlocal enabledelayedexpansion
4+
5+
if "%~1"=="" (
6+
echo ERROR: Usage: %~nx0 [vc14^|vc15^|vs16^|vs17]
7+
exit /b 1
8+
)
9+
10+
set "toolsets_vc14=14.0"
11+
set "toolsets_vc15="
12+
set "toolsets_vs16="
13+
set "toolsets_vs17="
14+
15+
16+
for /f "usebackq tokens=*" %%I in (`vswhere.exe -latest -find "VC\Tools\MSVC"`) do set "MSVCDIR=%%I"
17+
18+
if not defined MSVCDIR (
19+
echo ERROR: could not locate VC\Tools\MSVC
20+
exit /b 1
21+
)
22+
23+
for /f "delims=" %%D in ('dir /b /ad "%MSVCDIR%"') do (
24+
for /f "tokens=1,2 delims=." %%A in ("%%D") do (
25+
set "maj=%%A" & set "min=%%B"
26+
if "!maj!"=="14" (
27+
if !min! LEQ 9 (
28+
set "toolsets_vc14=%%D"
29+
) else if !min! LEQ 19 (
30+
set "toolsets_vc15=%%D"
31+
) else if !min! LEQ 29 (
32+
set "toolsets_vs16=%%D"
33+
) else (
34+
set "toolsets_vs17=%%D"
35+
)
36+
)
37+
)
38+
)
39+
40+
set "KEY=%~1"
41+
set "VAR=toolsets_%KEY%"
42+
call set "RESULT=%%%VAR%%%"
43+
if defined RESULT (
44+
echo %RESULT%
45+
exit /b 0
46+
) else (
47+
echo ERROR: no toolset found for %KEY%
48+
exit /b 1
49+
)

.github/scripts/windows/test.bat

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ if not exist "%SDK_RUNNER%" (
99
exit /b 3
1010
)
1111

12-
cmd /c %SDK_RUNNER% -t .github\scripts\windows\test_task.bat
12+
for /f "delims=" %%T in ('call .github\scripts\windows\find-vs-toolset.bat %PHP_BUILD_CRT%') do set "VS_TOOLSET=%%T"
13+
cmd /c %SDK_RUNNER% -s %VS_TOOLSET% -t .github\scripts\windows\test_task.bat
1314
if %errorlevel% neq 0 exit /b 3
1415

1516
exit /b 0

.github/workflows/nightly.yml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ on:
2323
run_macos_arm64:
2424
required: true
2525
type: boolean
26+
run_freebsd_zts:
27+
required: true
28+
type: boolean
2629
ubuntu_version:
2730
required: true
2831
type: string
@@ -1052,7 +1055,13 @@ jobs:
10521055
- name: Test
10531056
run: .github/scripts/windows/test.bat
10541057
FREEBSD:
1055-
name: FREEBSD
1058+
strategy:
1059+
fail-fast: false
1060+
matrix:
1061+
zts: [true, false]
1062+
exclude:
1063+
- zts: ${{ !inputs.run_freebsd_zts && true || '*never*' }}
1064+
name: "FREEBSD_${{ matrix.zts && 'ZTS' || 'NTS' }}"
10561065
runs-on: ubuntu-latest
10571066
steps:
10581067
- name: git checkout
@@ -1061,3 +1070,6 @@ jobs:
10611070
ref: ${{ inputs.branch }}
10621071
- name: FreeBSD
10631072
uses: ./.github/actions/freebsd
1073+
with:
1074+
configurationParameters: >-
1075+
--${{ matrix.zts && 'enable' || 'disable' }}-zts

.github/workflows/root.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,11 @@ jobs:
5555
run_alpine: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
5656
run_linux_ppc64: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
5757
run_macos_arm64: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9 }}
58+
run_freebsd_zts: ${{ (matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 3) || matrix.branch.version[0] >= 9 }}
5859
ubuntu_version: ${{
5960
(((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 5) || matrix.branch.version[0] >= 9) && '24.04')
6061
|| '22.04' }}
61-
windows_version: ${{ ((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9) && '2022' || '2019' }}
62+
windows_version: '2022'
6263
skip_laravel: ${{ matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1 }}
6364
skip_symfony: ${{ matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1 }}
6465
skip_wordpress: ${{ matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1 }}

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,13 @@ tmp-php.ini
294294
/junit.out.xml
295295
/.ccache/
296296

297+
# ------------------------------------------------------------------------------
298+
# Editor configuration directories
299+
# ------------------------------------------------------------------------------
300+
/.idea/
301+
/.vscode/
302+
/.zed/
303+
297304
# ------------------------------------------------------------------------------
298305
# Additional test build files
299306
# ------------------------------------------------------------------------------

EXTENSIONS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ SINCE: 5.0
238238
-------------------------------------------------------------------------------
239239
EXTENSION: bcmath
240240
PRIMARY MAINTAINER: Andi Gutmans <[email protected]> (2000 - 2004)
241+
Saki Takamachi <[email protected]> (2024 - 2025)
241242
MAINTENANCE: Maintained
242243
STATUS: Working
243244
-------------------------------------------------------------------------------

NEWS

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,13 @@ PHP NEWS
5353
evaluation) and GH-18464 (Recursion protection for deprecation constants not
5454
released on bailout). (DanielEScherzer and ilutov)
5555
. Fixed AST printing for immediately invoked Closure. (Dmitrii Derepko)
56+
. Properly handle __debugInfo() returning an array reference. (nielsdos)
57+
. Properly handle reference return value from __toString(). (nielsdos)
58+
. Added the pipe (|>) operator. (crell)
59+
. Added support for `final` with constructor property promotion.
60+
(DanielEScherzer)
61+
. Do not use RTLD_DEEPBIND if dlmopen is available. (Daniil Gentili)
62+
. Make `clone()` a function. (timwolla, edorian)
5663

5764
- Curl:
5865
. Added curl_multi_get_handles(). (timwolla)
@@ -67,10 +74,12 @@ PHP NEWS
6774
- DOM:
6875
. Added Dom\Element::$outerHTML. (nielsdos)
6976
. Added Dom\Element::insertAdjacentHTML(). (nielsdos)
77+
. Added $children property to ParentNode implementations. (nielsdos)
7078

7179
- Enchant:
7280
. Added enchant_dict_remove_from_session(). (nielsdos)
7381
. Added enchant_dict_remove(). (nielsdos)
82+
. Fix missing empty string checks. (nielsdos)
7483

7584
- EXIF:
7685
. Add OffsetTime* Exif tags. (acc987)
@@ -120,10 +129,15 @@ PHP NEWS
120129
. Fixed ZTS OPcache build on Cygwin. (cmb)
121130
. Added opcache.file_cache_read_only. (Samuel Melrose)
122131
. Updated default value of opcache.jit_hot_loop. (Arnaud)
132+
. Log a warning when opcache lock file permissions could not be changed.
133+
(Taavi Eomäe)
123134

124135
- Output:
125136
. Fixed calculation of aligned buffer size. (cmb)
126137

138+
- PCNTL:
139+
. Extend pcntl_waitid with rusage parameter. (vrza)
140+
127141
- PCRE:
128142
. Upgraded to pre2lib from 10.44 to 10.45. (nielsdos)
129143
. Remove PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK from pcre compile options.
@@ -138,6 +152,13 @@ PHP NEWS
138152
- PDO_SQLITE:
139153
. throw on null bytes / resolve GH-13952 (divinity76).
140154
. Implement GH-17321: Add setAuthorizer to Pdo\Sqlite. (nielsdos)
155+
. PDO::sqliteCreateCollation now throws a TypeError if the callback
156+
has a wrong return type. (David Carlier)
157+
. Added Pdo_Sqlite::ATTR_BUSY_STATEMENT constant to check
158+
if a statement is currently executing. (David Carlier)
159+
. Added Pdo_Sqlite::ATTR_EXPLAIN_STATEMENT constant to set a statement
160+
in either EXPLAIN_MODE_PREPARED, EXPLAIN_MODE_EXPLAIN,
161+
EXPLAIN_MODE_EXPLAIN_QUERY_PLAN modes. (David Carlier)
141162

142163
- PGSQL:
143164
. Added pg_close_stmt to close a prepared statement while allowing
@@ -187,6 +208,10 @@ PHP NEWS
187208
. Fix namespace handling of WSDL and XML schema in SOAP,
188209
fixing at least GH-16320 and bug #68576. (nielsdos)
189210
. Fixed bug #70951 (Segmentation fault on invalid WSDL cache). (nielsdos)
211+
. Implement request #55503 (Extend __getTypes to support enumerations).
212+
(nielsdos, datibbaw)
213+
. Implement request #61105 (Support Soap 1.2 SoapFault Reason Text lang
214+
attribute). (nielsdos)
190215

191216
- Sockets:
192217
. Added IPPROTO_ICMP/IPPROTO_ICMPV6 to create raw socket for ICMP usage.
@@ -225,12 +250,26 @@ PHP NEWS
225250
. Fix overall theorical overflows on zend_string buffer allocations.
226251
(David Carlier/nielsdos)
227252

253+
- Sqlite:
254+
. Added Sqlite3Stmt::busy to check if a statement is still being executed.
255+
(David Carlier)
256+
. Added Sqlite3Stmt::explain to produce a explain query plan from
257+
the statement. (David Carlier)
258+
. Added Sqlite3Result::fetchAll to returns all results at once from a query.
259+
(David Carlier)
260+
228261
- Standard:
229262
. Fixed crypt() tests on musl when using --with-external-libcrypt
230263
(Michael Orlitzky).
231264
. Fixed bug GH-18062 (is_callable(func(...), callable_name: $name) for first
232265
class callables returns wrong name). (timwolla)
233266
. Added array_first() and array_last(). (nielsdos)
267+
. Fixed bug GH-18823 (setlocale's 2nd and 3rd argument ignores strict_types).
268+
(nielsdos)
269+
. Fixed exit code handling of sendmail cmd and added warnings.
270+
(Jesse Hathaway)
271+
. Fixed bug GH-18897 (printf: empty precision is interpreted as precision 6,
272+
not as precision 0). (nielsdos)
234273

235274
- Streams:
236275
. Fixed bug GH-16889 (stream_select() timeout useless for pipes on Windows).
@@ -239,6 +278,10 @@ PHP NEWS
239278
- Tests:
240279
. Allow to shuffle tests even in non-parallell mode. (dhuang00)
241280

281+
- Tidy:
282+
. tidy::__construct/parseFile/parseString methods throw an exception if
283+
the configuration argument is invalid. (David Carlier)
284+
242285
- Windows:
243286
. Fixed bug GH-10992 (Improper long path support for relative paths). (cmb,
244287
nielsdos)

0 commit comments

Comments
 (0)