Skip to content

Ext url6 test #7

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 169 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
169 commits
Select commit Hold shift + click to select a range
3399235
Add Uri\WhatWg classes to ext/uri (#18672)
kocsismate Jun 10, 2025
5f9a0b5
gen_stub: Fix undefined variable warning (#18821)
TimWolla Jun 10, 2025
8f3e555
Use zval_try_get_string_func() in concat_function() (#18815)
nielsdos Jun 10, 2025
594221f
cli: Fix tests/bug80092.phpt expectation for `PHP_BUILD_PROVIDER` (#1…
TimWolla Jun 10, 2025
eb151e3
Properly handle reference return value from __toString()
nielsdos Jun 9, 2025
5740607
Merge branch 'PHP-8.4'
TimWolla Jun 10, 2025
0cd3ebf
Fix 'phpdbg --help' segfault on shutdown with USE_ZEND_ALLOC=0
nielsdos Jun 9, 2025
6685414
Merge branch 'PHP-8.3' into PHP-8.4
nielsdos Jun 10, 2025
7f3a2bc
Merge branch 'PHP-8.4'
nielsdos Jun 10, 2025
0a95b2f
Fix GH-18820: Windows compilation issue: php-src\Zend\zend_exceptions…
nielsdos Jun 10, 2025
559858c
Improve performance of unpack() with nameless repetitions (#18803)
nielsdos Jun 10, 2025
dbabbe1
Remove dead code from openssl_spki_new() implementation (#18752)
nielsdos Jun 10, 2025
2a77e28
ext/standard/pack: Inline constant single use variables
Girgias Jun 10, 2025
e96a7f0
ext/standard/pack: Remove useless casts
Girgias Jun 10, 2025
34e22c5
ext/standard/pack: Reduce scope of variable
Girgias Jun 10, 2025
a297a44
ext/standard/pack: Remove unused header includes
Girgias Jun 10, 2025
def3a95
[skip ci] ext/standard/pack: Fix indentation to use tabs
Girgias Jun 10, 2025
029a788
Simplify callers of zval_try_get_long() (#18830)
nielsdos Jun 12, 2025
28a083b
Use zend_string_release_ex() in concat_function() (#18827)
nielsdos Jun 12, 2025
42b9b2f
[ci skip] Fix pipe optimization test wrt temps for observers
nielsdos Jun 12, 2025
afb1c57
Fix GH-14551: PGO build fails with xxhash
nielsdos Jun 9, 2025
f8e2adf
Merge branch 'PHP-8.3' into PHP-8.4
nielsdos Jun 12, 2025
5740038
Merge branch 'PHP-8.4'
nielsdos Jun 12, 2025
71a2544
ext/pdo_sqlite: EXPLAIN mode support for SQL statements.
devnexen Jun 10, 2025
058c034
ext/sqlite3: adding busy() call.
devnexen Jun 12, 2025
43c18f3
Fix GH-18823: setlocale's 2nd and 3rd argument ignores strict_types
nielsdos Jun 10, 2025
7361a12
ext/pdo_sqlite: explain statement prefixing with its class for errors…
devnexen Jun 13, 2025
7e59769
Move pipe test with opcache dump to ext/opcache
iluuu1994 Jun 14, 2025
0a9697f
Fix unused variable in pdo_sqlite_stmt_set_attribute() (GH-18851)
iluuu1994 Jun 14, 2025
2e2494f
[skip ci] Fix whitespace in ext/pdo_sqlite/sqlite_statement.c
iluuu1994 Jun 14, 2025
a674904
PHP-8.4 is now for PHP 8.4.10-dev
SakiTakamachi Jun 17, 2025
50606f8
PHP 8.3 is now for PHP 8.3.24-dev
ericmann Jun 17, 2025
4d303e7
Merge branch 'PHP-8.3' into PHP-8.4
ericmann Jun 17, 2025
ee1bbcf
Merge branch 'PHP-8.4'
ericmann Jun 17, 2025
5f67bac
ext/intl: Fix compile issues with ICU versions lower than 67 (#18868)
BogdanUngureanu Jun 18, 2025
5ff5ee0
Fix iconv tests skipped on windows
hyh19962008 Jun 8, 2025
55b9d0a
Merge branch 'PHP-8.3' into PHP-8.4
nielsdos Jun 18, 2025
412d691
Merge branch 'PHP-8.4'
nielsdos Jun 18, 2025
5cf3c26
Fix use after free during shutdown destruction
danog Jun 11, 2025
bb6263a
Merge branch 'PHP-8.3' into PHP-8.4
nielsdos Jun 18, 2025
bc7d00e
Merge branch 'PHP-8.4'
nielsdos Jun 18, 2025
f129586
ext/pdo_sqlite: fix minimal version for EXPLAIN feature support. (#18…
devnexen Jun 18, 2025
3ff6874
Remove HAVE_GETLOGIN from win32/config.w32.h.in template (#18865)
petk Jun 19, 2025
49dd619
Autotools: Move PHP_ODBC_* defines to configuration header (#15708)
petk Jun 19, 2025
2f55291
Sync to lexbor/lexbor@0eac579f (#18882)
nielsdos Jun 19, 2025
be70f42
Add HAVE_MEMMOVE to ext/pcre (#18862)
petk Jun 19, 2025
9cacc57
Track heap->real_size for USE_TRACKED_ALLOC
iluuu1994 Jun 19, 2025
7841c8a
Merge branch 'PHP-8.1' into PHP-8.2
iluuu1994 Jun 20, 2025
dfc4caa
Merge branch 'PHP-8.2' into PHP-8.3
iluuu1994 Jun 20, 2025
0ee73cc
Merge branch 'PHP-8.3' into PHP-8.4
iluuu1994 Jun 20, 2025
feb1d63
Merge branch 'PHP-8.4'
iluuu1994 Jun 20, 2025
edfd55c
ext/bcmath: use vector in compare (#18859)
SakiTakamachi Jun 20, 2025
9404411
ext/dom: Fix new MSVC compiler warning
Girgias Jun 20, 2025
27e485d
Merge branch 'PHP-8.4'
Girgias Jun 20, 2025
391bd2a
Remove bug61371 test
iluuu1994 Jun 20, 2025
2ecdde0
Merge branch 'PHP-8.1' into PHP-8.2
iluuu1994 Jun 20, 2025
64bc12c
Merge branch 'PHP-8.2' into PHP-8.3
iluuu1994 Jun 20, 2025
a68f1e7
Merge branch 'PHP-8.3' into PHP-8.4
iluuu1994 Jun 20, 2025
ed2bebd
Merge branch 'PHP-8.4'
iluuu1994 Jun 20, 2025
9859d83
Implement request #61105: Support Soap 1.2 SoapFault Reason Text lang…
nielsdos May 29, 2025
c6b058b
Fix memory leaks when returning refcounted value from curl callback
nielsdos Jun 19, 2025
ca487ae
Merge branch 'PHP-8.3' into PHP-8.4
nielsdos Jun 20, 2025
89be689
Merge branch 'PHP-8.4'
nielsdos Jun 20, 2025
5bd18e3
ext/zlib: Refactor tests (#18887)
Girgias Jun 21, 2025
a36b8fd
Fix GH-13264: fgets() and stream_get_line() do not return false on fi…
bukka Jun 5, 2025
bbac591
Merge branch 'PHP-8.3' into PHP-8.4
bukka Jun 21, 2025
89934b4
Merge branch 'PHP-8.4'
bukka Jun 21, 2025
4fadf64
Refactor dom_nnodemap_objects_new()
nielsdos Jun 20, 2025
ff0a2cf
Refactor implementation of DOM nodelists, named maps, and iterators
nielsdos Jun 21, 2025
0ab5f70
ext/spl: Remove bool type coercions in tests
Girgias Jun 21, 2025
091308c
ext/soap: Remove bool type coercions in tests
Girgias Jun 21, 2025
8316ff2
ext/dba: Remove bool type coercions in tests
Girgias Jun 21, 2025
5f3e10d
ext/bz2: Remove bool type coercions in tests
Girgias Jun 21, 2025
fa81a23
ext/exif: Remove bool type coercions in tests
Girgias Jun 21, 2025
37549e4
ext/gmp: Remove bool type coercions in tests
Girgias Jun 21, 2025
8526de8
Move common obj_map API functions to obj_map.c
nielsdos Jun 21, 2025
26aea0e
Tweak sizes of some dom_nnodemap_object fields
nielsdos Jun 21, 2025
8736342
Pack dom_nnodemap_object fields together with a union that can't be a…
nielsdos Jun 21, 2025
479e9be
Store hash table entry directly in dom_nnodemap_object
nielsdos Jun 21, 2025
9b6df10
Don't use the obj_map cache for attributes (#18895)
nielsdos Jun 22, 2025
2694eb9
Fixed GH-18902: ldap_exop/ldap_exop_sync assert triggered on empty re…
devnexen Jun 22, 2025
0afe0bb
Merge branch 'PHP-8.3' into PHP-8.4
devnexen Jun 22, 2025
a246102
Merge branch 'PHP-8.4'
devnexen Jun 22, 2025
a5f21ca
Fix GH-18901: integer overflow mb_split
nielsdos Jun 22, 2025
2577e3a
Merge branch 'PHP-8.3' into PHP-8.4
nielsdos Jun 22, 2025
b727821
Merge branch 'PHP-8.4'
nielsdos Jun 22, 2025
3df665a
[Windows build] Remove redundant flags definitions (#18890)
petk Jun 22, 2025
4f1b005
Autotools: Enable tsrmls cache in hash extension on big endian (#15303)
petk Jun 22, 2025
01c3001
ext/tidy: zend_parse_parameters_none -> ZEND_PARSE_PARAMETERS_NONE ma…
devnexen Jun 22, 2025
4dfba7a
[RFC] Final Property Promotion
DanielEScherzer Jun 22, 2025
ddd33fd
Generated arginfo headers: combine preprocessor conditional blocks (2…
DanielEScherzer Jun 22, 2025
e931017
[skip ci] Add myself to EXTENSIONS (#18918)
SakiTakamachi Jun 23, 2025
22bd2ae
ext/sqlite3: explain statement support addition.
devnexen Jun 14, 2025
375316d
ext/sqlite3: Sqlite3Result::fetchAll()
devnexen Jun 19, 2025
81865ec
uri: Improve exceptions for Uri\WhatWg\Url (#18855)
TimWolla Jun 23, 2025
2ccd2b0
ext/calendar: jewishtojd overflow on year argument.
devnexen Jun 14, 2025
e3fe9a9
Merge branch 'PHP-8.3' into PHP-8.4
devnexen Jun 23, 2025
0f55c20
Merge branch 'PHP-8.4'
devnexen Jun 23, 2025
67bbf9c
ext/filter: Remove ZPP test
Girgias Jun 20, 2025
c03f606
ext/calendar: Remove ZPP test
Girgias Jun 20, 2025
c777864
ext/mbstring: Remove ZPP tests
Girgias Jun 20, 2025
b068bef
ext/dom: Remove bool type coercions in tests
Girgias Jun 23, 2025
8cd4f95
ext/pcntl: Remove bool type coercions in tests
Girgias Jun 23, 2025
c26105d
ext/posix: Remove ZPP tests
Girgias Jun 23, 2025
4ff8d9f
ext/uri: Remove bool type coercions in tests (#18921)
Girgias Jun 23, 2025
40be5fa
ext/sockets: Remove bool type coercions in tests
Girgias Jun 23, 2025
4baecc1
ext/simplexml: Remove bool type coercions in tests
Girgias Jun 23, 2025
7f80d4d
ext/session: Remove bool type coercions in tests
Girgias Jun 23, 2025
c7f0ac1
ext/random: Remove useless tests (#18920)
Girgias Jun 23, 2025
fe504d3
Fix leak when creating cycle in hook
iluuu1994 Jun 22, 2025
ddfa743
Merge branch 'PHP-8.4'
iluuu1994 Jun 23, 2025
b508988
Unbreak PRINTF_DEBUG macro usages
nielsdos Jun 22, 2025
799ec7b
Fix misleading errors in printf()
nielsdos Jun 22, 2025
eb78a0b
Merge branch 'PHP-8.3' into PHP-8.4
nielsdos Jun 23, 2025
8493495
Merge branch 'PHP-8.4'
nielsdos Jun 23, 2025
8e731ca
Fix GH-18639: Internal class aliases can break preloading + JIT
nielsdos Jun 22, 2025
ee2c0d7
Merge branch 'PHP-8.3' into PHP-8.4
nielsdos Jun 23, 2025
9b7252b
Merge branch 'PHP-8.4'
nielsdos Jun 23, 2025
56c4ddf
Fix GH-18899: JIT function crash when emitting undefined variable war…
nielsdos Jun 22, 2025
6eed02b
Merge branch 'PHP-8.4'
nielsdos Jun 23, 2025
591b324
Do not use RTLD_DEEPBIND if dlmopen is available (#18612)
danog Jun 23, 2025
1e3d92f
Fix GH-14082: Segmentation fault on unknown address 0x600000000018 in…
nielsdos Jun 22, 2025
3664f4a
Merge branch 'PHP-8.3' into PHP-8.4
nielsdos Jun 23, 2025
d8c4890
Merge branch 'PHP-8.4'
nielsdos Jun 23, 2025
29e94f8
Autotools: Remove obsole Autoconf macros (#18914)
petk Jun 23, 2025
ecc602e
Remove non-existing INI directive detect_unicode (#18909)
petk Jun 23, 2025
d6fc743
zend_string: Simplify logic in `zend_interned_strings_init()` (#18922)
TimWolla Jun 24, 2025
c5e7490
mail: fix exit code handling of sendmail cmd
lollipopman Jun 3, 2025
6a75612
mail: add logging on errors
lollipopman Jun 3, 2025
fc04966
Add NEWS and UPGRADING for sendmail error handling changes
bukka Jun 24, 2025
537ae4f
removed `ZEND_IS_XDIGIT()` (#18926)
SakiTakamachi Jun 24, 2025
39cf276
php_gdb: Print some numeric fields as hexadecimal (#18925)
TimWolla Jun 24, 2025
5ed8b2b
Fix GH-18897: printf: empty precision is interpreted as precision 6, …
nielsdos Jun 24, 2025
ca49a7b
RFC: Turn `clone()` into a function (#18919)
TimWolla Jun 24, 2025
aea3ade
ext/pcntl: Added rusage parameter to pcntl_waitid
vrza Sep 16, 2024
41d3440
NEWS: add a missing backtick [skip ci]
DanielEScherzer Jun 24, 2025
e7678cd
sqlite3: Use Z_TRY_ADDREF
nielsdos Jun 24, 2025
6d15475
sqlite3: Split off column name cache generation
nielsdos Jun 24, 2025
6233dc6
Switch to windows-2022 in CI (#18927)
shivammathur Jun 24, 2025
91f2458
Merge branch 'PHP-8.1' into PHP-8.2
shivammathur Jun 24, 2025
dc79f4c
Merge branch 'PHP-8.2' into PHP-8.3
shivammathur Jun 24, 2025
d2a30ac
Merge branch 'PHP-8.3' into PHP-8.4
shivammathur Jun 24, 2025
720917f
Merge branch 'PHP-8.4'
shivammathur Jun 24, 2025
2965fb8
ext/pcntl: following up #15921 rework SYS_pidfd_open configure detect…
devnexen Jun 24, 2025
359a21f
Fix RCN violations in array functions
nielsdos Jun 24, 2025
f77c04d
Merge branch 'PHP-8.3' into PHP-8.4
nielsdos Jun 24, 2025
be23be0
Merge branch 'PHP-8.4'
nielsdos Jun 24, 2025
ea6a7a9
Fix CI for windows-2022
shivammathur Jun 24, 2025
ac15486
Fix CI for windows-2022
shivammathur Jun 24, 2025
a8bd3ba
Merge branch 'PHP-8.3' into PHP-8.4
shivammathur Jun 24, 2025
9adc949
Merge branch 'PHP-8.4'
shivammathur Jun 24, 2025
e892356
Merge branch 'PHP-8.2' into PHP-8.3
iluuu1994 Jun 24, 2025
86e5c67
Merge branch 'PHP-8.3' into PHP-8.4
iluuu1994 Jun 24, 2025
aab2815
Merge branch 'PHP-8.4'
iluuu1994 Jun 24, 2025
8b61c49
Allowed the use of formats like `@param array<>` (#18924)
SakiTakamachi Jun 25, 2025
cc8ae13
Add Uri\Rfc3986\Uri class to ext/uri
kocsismate Jun 11, 2025
dfa41c4
Review round 1 fixes
kocsismate Jun 11, 2025
4129b3f
Another batch of fixes
kocsismate Jun 13, 2025
964d2ef
Fix memory management
kocsismate Jun 14, 2025
e8c4a49
Fix Windows build
kocsismate Jun 14, 2025
3bd9167
Install uriparser header on Windows
kocsismate Jun 15, 2025
9a2e89a
Improve and simplify exceptions
kocsismate Jun 15, 2025
2ca8252
Remove accidentally added extra ;
kocsismate Jun 15, 2025
52d424d
Try to incorporate uriparser_copy_uri into uriparser
kocsismate Jun 15, 2025
7fe9270
Try to fix Windows build again
kocsismate Jun 16, 2025
1904e5a
uriparser improvements
kocsismate Jun 18, 2025
6e27188
More improvements
kocsismate Jun 22, 2025
9b63691
Allocate on stack
kocsismate Jun 26, 2025
19fb8ca
Readd benchmark
kocsismate Jun 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 3 additions & 1 deletion .github/scripts/windows/build.bat
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,9 @@ if not exist "%SDK_RUNNER%" (
exit /b 3
)

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

exit /b 0
49 changes: 49 additions & 0 deletions .github/scripts/windows/find-vs-toolset.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
@echo off

setlocal enabledelayedexpansion

if "%~1"=="" (
echo ERROR: Usage: %~nx0 [vc14^|vc15^|vs16^|vs17]
exit /b 1
)

set "toolsets_vc14=14.0"
set "toolsets_vc15="
set "toolsets_vs16="
set "toolsets_vs17="


for /f "usebackq tokens=*" %%I in (`vswhere.exe -latest -find "VC\Tools\MSVC"`) do set "MSVCDIR=%%I"

if not defined MSVCDIR (
echo ERROR: could not locate VC\Tools\MSVC
exit /b 1
)

for /f "delims=" %%D in ('dir /b /ad "%MSVCDIR%"') do (
for /f "tokens=1,2 delims=." %%A in ("%%D") do (
set "maj=%%A" & set "min=%%B"
if "!maj!"=="14" (
if !min! LEQ 9 (
set "toolsets_vc14=%%D"
) else if !min! LEQ 19 (
set "toolsets_vc15=%%D"
) else if !min! LEQ 29 (
set "toolsets_vs16=%%D"
) else (
set "toolsets_vs17=%%D"
)
)
)
)

set "KEY=%~1"
set "VAR=toolsets_%KEY%"
call set "RESULT=%%%VAR%%%"
if defined RESULT (
echo %RESULT%
exit /b 0
) else (
echo ERROR: no toolset found for %KEY%
exit /b 1
)
3 changes: 2 additions & 1 deletion .github/scripts/windows/test.bat
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ if not exist "%SDK_RUNNER%" (
exit /b 3
)

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

exit /b 0
2 changes: 1 addition & 1 deletion .github/workflows/root.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
ubuntu_version: ${{
(((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 5) || matrix.branch.version[0] >= 9) && '24.04')
|| '22.04' }}
windows_version: ${{ ((matrix.branch.version[0] == 8 && matrix.branch.version[1] >= 4) || matrix.branch.version[0] >= 9) && '2022' || '2019' }}
windows_version: '2022'
skip_laravel: ${{ matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1 }}
skip_symfony: ${{ matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1 }}
skip_wordpress: ${{ matrix.branch.version[0] == 8 && matrix.branch.version[1] == 1 }}
Expand Down
1 change: 1 addition & 0 deletions EXTENSIONS
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,7 @@ SINCE: 5.0
-------------------------------------------------------------------------------
EXTENSION: bcmath
PRIMARY MAINTAINER: Andi Gutmans <[email protected]> (2000 - 2004)
Saki Takamachi <[email protected]> (2024 - 2025)
MAINTENANCE: Maintained
STATUS: Working
-------------------------------------------------------------------------------
Expand Down
27 changes: 27 additions & 0 deletions NEWS
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,12 @@ PHP NEWS
released on bailout). (DanielEScherzer and ilutov)
. Fixed AST printing for immediately invoked Closure. (Dmitrii Derepko)
. Properly handle __debugInfo() returning an array reference. (nielsdos)
. Properly handle reference return value from __toString(). (nielsdos)
. Added the pipe (|>) operator. (crell)
. Added support for `final` with constructor property promotion.
(DanielEScherzer)
. Do not use RTLD_DEEPBIND if dlmopen is available. (Daniil Gentili)
. Make `clone()` a function. (timwolla, edorian)

- Curl:
. Added curl_multi_get_handles(). (timwolla)
Expand Down Expand Up @@ -129,6 +134,9 @@ PHP NEWS
- Output:
. Fixed calculation of aligned buffer size. (cmb)

- PCNTL:
. Extend pcntl_waitid with rusage parameter. (vrza)

- PCRE:
. Upgraded to pre2lib from 10.44 to 10.45. (nielsdos)
. Remove PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK from pcre compile options.
Expand All @@ -147,6 +155,9 @@ PHP NEWS
has a wrong return type. (David Carlier)
. Added Pdo_Sqlite::ATTR_BUSY_STATEMENT constant to check
if a statement is currently executing. (David Carlier)
. Added Pdo_Sqlite::ATTR_EXPLAIN_STATEMENT constant to set a statement
in either EXPLAIN_MODE_PREPARED, EXPLAIN_MODE_EXPLAIN,
EXPLAIN_MODE_EXPLAIN_QUERY_PLAN modes. (David Carlier)

- PGSQL:
. Added pg_close_stmt to close a prepared statement while allowing
Expand Down Expand Up @@ -198,6 +209,8 @@ PHP NEWS
. Fixed bug #70951 (Segmentation fault on invalid WSDL cache). (nielsdos)
. Implement request #55503 (Extend __getTypes to support enumerations).
(nielsdos, datibbaw)
. Implement request #61105 (Support Soap 1.2 SoapFault Reason Text lang
attribute). (nielsdos)

- Sockets:
. Added IPPROTO_ICMP/IPPROTO_ICMPV6 to create raw socket for ICMP usage.
Expand Down Expand Up @@ -236,12 +249,26 @@ PHP NEWS
. Fix overall theorical overflows on zend_string buffer allocations.
(David Carlier/nielsdos)

- Sqlite:
. Added Sqlite3Stmt::busy to check if a statement is still being executed.
(David Carlier)
. Added Sqlite3Stmt::explain to produce a explain query plan from
the statement. (David Carlier)
. Added Sqlite3Result::fetchAll to returns all results at once from a query.
(David Carlier)

- Standard:
. Fixed crypt() tests on musl when using --with-external-libcrypt
(Michael Orlitzky).
. Fixed bug GH-18062 (is_callable(func(...), callable_name: $name) for first
class callables returns wrong name). (timwolla)
. Added array_first() and array_last(). (nielsdos)
. Fixed bug GH-18823 (setlocale's 2nd and 3rd argument ignores strict_types).
(nielsdos)
. Fixed exit code handling of sendmail cmd and added warnings.
(Jesse Hathaway)
. Fixed bug GH-18897 (printf: empty precision is interpreted as precision 6,
not as precision 0). (nielsdos)

- Streams:
. Fixed bug GH-16889 (stream_select() timeout useless for pipes on Windows).
Expand Down
36 changes: 36 additions & 0 deletions UPGRADING
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,11 @@ PHP 8.5 UPGRADE NOTES
. SplFileObject::fwrite's parameter $length is now nullable. The default
value changed from 0 to null.

- Standard:
. Using a printf-family function with a formatter that did not specify the
precision previously incorrectly reset the precision instead of treating
it as a precision of 0. See GH-18897.

========================================
2. New Features
========================================
Expand Down Expand Up @@ -146,6 +151,8 @@ PHP 8.5 UPGRADE NOTES
RFC: https://wiki.php.net/rfc/attributes-on-constants
. Added the pipe (|>) operator.
RFC: https://wiki.php.net/rfc/pipe-operator-v3
. Constructor property promotion can now be used for final properties.
RFC: https://wiki.php.net/rfc/final_promotion

- Curl:
. Added support for share handles that are persisted across multiple PHP
Expand Down Expand Up @@ -198,9 +205,28 @@ PHP 8.5 UPGRADE NOTES

- PDO_Sqlite:
. Added class constant Pdo_Sqlite::ATTR_BUSY_STATEMENT.
. Added class constants Pdo_Sqlite::ATTR_EXPLAIN_STATEMENT,
Pdo_Sqlite::EXPLAIN_MODE_PREPARED, Pdo_Sqlite::EXPLAIN_MODE_EXPLAIN,
Pdo_Sqlite::EXPLAIN_MODE_EXPLAIN_QUERY_PLAN.

- SOAP:
. Enumeration cases are now dumped in __getTypes().
. Implemented request #61105:
support for Soap 1.2 Reason Text xml:lang attribute.
The signature of SoapFault::__construct() and SoapServer::fault() therefore
now have an optional $lang parameter.
This support solves compatibility with .NET SOAP clients.

- Sqlite:
. Added class constants Sqlite3Stmt::EXPLAIN_MODE_PREPARED,
Sqlite3Stmt::EXPLAIN_MODE_EXPLAIN and
Sqlite3Stmt::EXPLAIN_MODE_EXPLAIN_QUERY_PLAN.

- Standard:
. mail() now returns the actual sendmail error and detects if the sendmail
process was terminated unexpectedly. In such cases, a warning is emitted
and the function returns false. Previously, these errors were silently
ignored. This change affects only the sendmail transport.

- XSL:
. The $namespace argument of XSLTProcessor::getParameter(),
Expand Down Expand Up @@ -263,6 +289,8 @@ PHP 8.5 UPGRADE NOTES

- PCNTL:
. pcntl_exec() now has a formal return type of false.
. pcntl_waitid() takes an additional resource_usage argument to
gather various platform specific metrics about the child process.

- PDO_PGSQL:
. PDO::pgsqlCopyFromArray also supports inputs as Iterable.
Expand Down Expand Up @@ -348,6 +376,8 @@ PHP 8.5 UPGRADE NOTES
. get_exception_handler() allows retrieving the current user-defined exception
handler function.
RFC: https://wiki.php.net/rfc/get-error-exception-handler
. The clone language construct is now a function.
RFC: https://wiki.php.net/rfc/clone_with_v2

- Curl:
. curl_multi_get_handles() allows retrieving all CurlHandles current
Expand Down Expand Up @@ -390,6 +420,10 @@ PHP 8.5 UPGRADE NOTES
. ReflectionConstant::getAttributes() was introduced.
RFC: https://wiki.php.net/rfc/attributes-on-constants

- Sqlite:
. Sqlite3Stmt::busy to check if a statement had been fetched
but not completely.

- Standard:
. Added array_first() and array_last().
RFC: https://wiki.php.net/rfc/array_first_last
Expand Down Expand Up @@ -582,6 +616,8 @@ PHP 8.5 UPGRADE NOTES
. Improved performance of array functions with callbacks
(array_find, array_filter, array_map, usort, ...).
. Improved performance of urlencode() and rawurlencode().
. Improved unpack() performance with nameless repetitions by avoiding
creating temporary strings and reparsing them.

- XMLReader:
. Improved property access performance.
Expand Down
22 changes: 21 additions & 1 deletion UPGRADING.INTERNALS
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ PHP 8.5 INTERNALS UPGRADE NOTES
- Core
. PG(arg_separator).input and PG(arg_separator).output are now `zend_string*`
instead of `char*`.
. DL_LOAD now doesn't use RTLD_DEEPBIND deepbind anymore on platforms
where dlmopen with LM_ID_NEWLM is available:
this means shared library symbol isolation (if needed) must be enabled on
the user side when requiring libphp.so, by using dlmopen with LM_ID_NEWLM
instead of dlopen.
RTLD_DEEPBIND is still enabled when the Apache SAPI is in use.

- Zend
. Added zend_safe_assign_to_variable_noref() function to safely assign
Expand All @@ -34,6 +40,11 @@ PHP 8.5 INTERNALS UPGRADE NOTES
. Added ZEND_NONSTRING attribute macro for character arrays that do not
represent strings. This allows to silence the GCC 15.x
`-Wunterminated-string-initialization` warning.
. Added the zend_update_exception_properties() function for instantiating
Exception child classes. It updates the $message, $code, and $previous
properties.
. ZEND_IS_XDIGIT() macro was removed because it was unused and its name
did not match its actual behavior.

========================
2. Build system changes
Expand All @@ -46,9 +57,18 @@ PHP 8.5 INTERNALS UPGRADE NOTES
without duplicate build rules. It is up to the SAPI maintainers to ensure
that appropriate build rules are created.

- Linux build system changes
- Unix build system changes
. libdir is properly set when --libdir (ex: /usr/lib64) and --with-libdir (ex lib64)
configure options are used to ${libdir}/php (ex: /usr/lib64/php)
. PHP_ODBC_CFLAGS, PHP_ODBC_LFLAGS, PHP_ODBC_LIBS, PHP_ODBC_TYPE preprocessor
macros defined by ext/odbc are now defined in php_config.h instead of the
build-defs.h header.
. Autoconf macro PHP_AP_EXTRACT_VERSION has been removed.
. Autoconf macro PHP_BUILD_THREAD_SAFE has been removed (set enable_zts
manually).
. Autoconf macro PHP_DEF_HAVE has been removed (use AC_DEFINE).
. Autoconf macro PHP_OUTPUT has been removed (use AC_CONFIG_FILES).
. Autoconf macro PHP_TEST_BUILD has been removed (use AC_* macros).

========================
3. Module changes
Expand Down
8 changes: 1 addition & 7 deletions Zend/Optimizer/zend_func_infos.h
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/* This is a generated file, edit the .stub.php files instead. */

static const func_info_t func_infos[] = {
F1("clone", MAY_BE_OBJECT),
F1("zend_version", MAY_BE_STRING),
FN("func_get_args", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_ANY),
F1("get_class_vars", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
Expand Down Expand Up @@ -394,8 +395,6 @@ static const func_info_t func_infos[] = {
F1("compact", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
FN("array_fill", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_ANY),
F1("array_fill_keys", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
F1("array_replace", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
F1("array_replace_recursive", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
FN("array_keys", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_LONG|MAY_BE_ARRAY_OF_STRING),
FN("array_values", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
F1("array_count_values", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_LONG),
Expand All @@ -404,13 +403,8 @@ static const func_info_t func_infos[] = {
F1("array_flip", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_LONG|MAY_BE_ARRAY_OF_STRING),
F1("array_change_key_case", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
F1("array_intersect_key", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
F1("array_intersect_ukey", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
F1("array_intersect", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
F1("array_uintersect", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
F1("array_intersect_assoc", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
F1("array_uintersect_assoc", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
F1("array_intersect_uassoc", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
F1("array_uintersect_uassoc", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
F1("array_diff_key", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
F1("array_diff_ukey", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
F1("array_udiff", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_ARRAY_OF_REF),
Expand Down
2 changes: 1 addition & 1 deletion Zend/tests/assert/expect_015.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ assert(0 && ($a = function () {
$x = $a ?? $b;
[$a, $b, $c] = [1, 2 => 'x', 'z' => 'c'];
@foo();
$y = clone $x;
$y = \clone($x);
yield 1 => 2;
yield from $x;
}))
Expand Down
3 changes: 3 additions & 0 deletions Zend/tests/bug40770.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ Bug #40770 (Apache child exits when PHP memory limit reached)
memory_limit=8M
--SKIPIF--
<?php
if (PHP_OS_FAMILY === 'Windows' && version_compare(PHP_VERSION, '8.4', '<')) {
die("xfail fails on Windows Server 2022 and newer.");
}
$zend_mm_enabled = getenv("USE_ZEND_ALLOC");
if ($zend_mm_enabled === "0") {
die("skip Zend MM disabled");
Expand Down
3 changes: 3 additions & 0 deletions Zend/tests/bug70258.phpt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ Bug #70258 (Segfault if do_resize fails to allocated memory)
memory_limit=2M
--SKIPIF--
<?php
if (PHP_OS_FAMILY === 'Windows') {
die("xfail fails on Windows Server 2022 and newer.");
}
$zend_mm_enabled = getenv("USE_ZEND_ALLOC");
if ($zend_mm_enabled === "0") {
die("skip Zend MM disabled");
Expand Down
31 changes: 31 additions & 0 deletions Zend/tests/clone/ast.phpt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
--TEST--
Ast Printing
--FILE--
<?php

$x = new stdClass();


try {
assert(false && $y = clone $x);
} catch (Error $e) {
echo $e->getMessage(), PHP_EOL;
}

try {
assert(false && $y = clone($x));
} catch (Error $e) {
echo $e->getMessage(), PHP_EOL;
}

try {
assert(false && $y = clone(...));
} catch (Error $e) {
echo $e->getMessage(), PHP_EOL;
}

?>
--EXPECT--
assert(false && ($y = \clone($x)))
assert(false && ($y = \clone($x)))
assert(false && ($y = \clone(...)))
Loading
Loading