Skip to content

Commit 69fff37

Browse files
committed
Merge branch 'master' into internal_vm_interrupt
2 parents c8d9d2c + 1e3d918 commit 69fff37

File tree

210 files changed

+2939
-1352
lines changed

Some content is hidden

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

210 files changed

+2939
-1352
lines changed

.github/workflows/nightly.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -883,13 +883,13 @@ jobs:
883883
matrix:
884884
include: ${{ fromJson(needs.GENERATE_MATRIX.outputs.windows-matrix-include) }}
885885
name: "${{ matrix.branch.name }}_WINDOWS_${{ matrix.x64 && 'X64' || 'X86' }}_${{ matrix.zts && 'ZTS' || 'NTS' }}"
886-
runs-on: windows-2019
886+
runs-on: ${{ (matrix.branch.version.minor >= 4) && 'windows-2022' || 'windows-2019' }}
887887
env:
888888
PHP_BUILD_CACHE_BASE_DIR: C:\build-cache
889889
PHP_BUILD_OBJ_DIR: C:\obj
890890
PHP_BUILD_CACHE_SDK_DIR: C:\build-cache\sdk
891891
PHP_BUILD_SDK_BRANCH: php-sdk-2.3.0
892-
PHP_BUILD_CRT: vs16
892+
PHP_BUILD_CRT: ${{ (matrix.branch.version.minor >= 4) && 'vs17' || 'vs16' }}
893893
PLATFORM: ${{ matrix.x64 && 'x64' || 'x86' }}
894894
THREAD_SAFE: "${{ matrix.zts && '1' || '0' }}"
895895
INTRINSICS: "${{ matrix.zts && 'AVX2' || '' }}"

.github/workflows/push.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ jobs:
166166
MYSQL_ROOT_PASSWORD: root
167167
steps:
168168
- name: git checkout
169-
uses: actions/checkout@v3
169+
uses: actions/checkout@v4
170170
- name: apt
171171
uses: ./.github/actions/apt-x32
172172
- name: ccache
@@ -236,13 +236,13 @@ jobs:
236236
WINDOWS:
237237
if: github.repository == 'php/php-src' || github.event_name == 'pull_request'
238238
name: WINDOWS_X64_ZTS
239-
runs-on: windows-2019
239+
runs-on: windows-2022
240240
env:
241241
PHP_BUILD_CACHE_BASE_DIR: C:\build-cache
242242
PHP_BUILD_OBJ_DIR: C:\obj
243243
PHP_BUILD_CACHE_SDK_DIR: C:\build-cache\sdk
244244
PHP_BUILD_SDK_BRANCH: php-sdk-2.3.0
245-
PHP_BUILD_CRT: vs16
245+
PHP_BUILD_CRT: vs17
246246
PLATFORM: x64
247247
THREAD_SAFE: "1"
248248
INTRINSICS: AVX2

NEWS

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,64 @@ PHP NEWS
22
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
33
?? ??? ????, PHP 8.4.0beta1
44

5+
- Core:
6+
. Updated build system scripts config.guess to 2024-07-27 and config.sub to
7+
2024-05-27. (Peter Kokot)
8+
. Fixed bug GH-15240 (Infinite recursion in trait hook). (ilutov)
9+
. Fixed bug GH-15140 (Missing variance check for abstract set with asymmetric
10+
type). (ilutov)
11+
. Fixed bug GH-15181 (Disabled output handler is flushed again). (cmb)
12+
. Passing E_USER_ERROR to trigger_error() is now deprecated. (Girgias)
13+
14+
- Date:
15+
. Constants SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING, and SUNFUNCS_RET_DOUBLE
16+
are now deprecated. (Jorg Sowa)
17+
18+
- DBA:
19+
. Passing null or false to dba_key_split() is deprecated. (Grigias)
20+
21+
- DOM:
22+
. Fixed bug GH-15192 (Segmentation fault in dom extension
23+
(html5_serializer)). (nielsdos)
24+
. Deprecated DOM_PHP_ERR constant. (nielsdos)
25+
. Removed DOMImplementation::getFeature(). (nielsdos)
26+
27+
- Hash:
28+
. Deprecated passing incorrect data types for options to ext/hash functions.
29+
(nielsdos)
30+
. Added SSE2 and SHA-NI implementation of SHA-256. (timwolla, Colin Percival,
31+
Graham Percival)
32+
533
- PHPDBG:
634
. array out of bounds, stack overflow handled for segfault handler on windows.
735
(David Carlier)
836

37+
- Random:
38+
. lcg_value() is now deprecated. (timwolla)
39+
40+
- Readline:
41+
. Fixed bug #51558 (Shared readline build fails). (Peter Kokot)
42+
43+
- Session:
44+
. INI settings session.sid_length and session.sid_bits_per_character are now
45+
deprecated. (timwolla)
46+
47+
- SPL:
48+
. The SplFixedArray::__wakeup() method has been deprecated as it implements
49+
__serialize() and __unserialize() which need to be overwritten instead.
50+
(TysonAndre)
51+
52+
- Standard:
53+
. Unserializing the uppercase 'S' tag is now deprecated. (timwolla)
54+
55+
- Streams:
56+
. Implemented GH-15155 (Stream context is lost when custom stream wrapper is
57+
being filtered). (Quentin Dreyer)
58+
59+
- XML:
60+
. The xml_set_object() function has been deprecated. (Girgias)
61+
. Passing non-callable strings to the xml_set_*_handler() functions is now
62+
deprecated. (Girgias)
963

1064
01 Aug 2024, PHP 8.4.0alpha4
1165

README.REDIST.BINS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
18. avifinfo (ext/standard/libavifinfo) see ext/standard/libavifinfo/LICENSE
1919
19. xxHash (ext/hash/xxhash)
2020
20. Lexbor (ext/dom/lexbor/lexbor) see ext/dom/lexbor/LICENSE
21-
21+
21. Portions of libcperciva (ext/hash/hash_sha_{ni,sse2}.c) see the header in the source file
2222

2323
3. pcre2lib (ext/pcre)
2424

UPGRADING

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ PHP 8.4 UPGRADE NOTES
3333
now 13 bytes longer. Total length is platform-dependent.
3434
. Encountering recursion during comparison now results in a Error exception,
3535
rather than a fatal error.
36+
. Indirect modification of readonly properties within __clone() is no longer
37+
allowed, e.g. $ref = &$this->readonly. This was already forbidden for
38+
readonly initialization, and was an oversight in the "readonly
39+
reinitialization during cloning" implementation.
3640

3741
- DOM:
3842
. Added DOMNode::compareDocumentPosition() and DOMNode::DOCUMENT_POSITION_*
@@ -189,7 +193,7 @@ PHP 8.4 UPGRADE NOTES
189193
This means that xml_set_object() must now always be called prior to setting
190194
method names as callables.
191195
Passing an empty string to disable the handler is still allowed,
192-
but not recommended.
196+
but deprecated.
193197

194198
- XMLReader:
195199
. Passing an invalid character encoding to XMLReader::open() or
@@ -397,13 +401,31 @@ PHP 8.4 UPGRADE NOTES
397401
- Core:
398402
. Implicitly nullable parameter types are now deprecated.
399403
RFC: https://wiki.php.net/rfc/deprecate-implicitly-nullable-types
404+
. Passing E_USER_ERROR to trigger_error() is now deprecated.
405+
RFC: https://wiki.php.net/rfc/deprecations_php_8_4#deprecate_passing_e_user_error_to_trigger_error
400406

401407
- Curl:
402408
. The CURLOPT_BINARYTRANSFER constant is deprecated.
403409

404410
- Date:
405411
. Calling DatePeriod::__construct(string $isostr, int $options = 0) is
406412
deprecated. Use DatePeriod::createFromISO8601String() instead.
413+
. Constants SUNFUNCS_RET_TIMESTAMP, SUNFUNCS_RET_STRING, and
414+
SUNFUNCS_RET_DOUBLE are now deprecated, following the deprecation of
415+
the associated date_sunset() and date_sunrise() functions in PHP 8.1.
416+
RFC: https://wiki.php.net/rfc/deprecations_php_8_4
417+
418+
- DBA:
419+
. Passing null or false to dba_key_split() is deprecated.
420+
RFC: https://wiki.php.net/rfc/deprecations_php_8_4#deprecate_passing_null_and_false_to_dba_key_split
421+
422+
- DOM:
423+
. Deprecated DOM_PHP_ERR constant.
424+
RFC: https://wiki.php.net/rfc/deprecations_php_8_4#deprecate_dom_php_err_constant
425+
426+
- Hash:
427+
. Deprecated passing incorrect data types for options to ext/hash functions.
428+
RFC: https://wiki.php.net/rfc/deprecations_php_8_4
407429

408430
- Intl:
409431
. Calling intlcal_set() as well as calling IntlCalendar::set() with
@@ -434,18 +456,40 @@ PHP 8.4 UPGRADE NOTES
434456
3-parameter signature with a null $row parameter instead.
435457
. Added pg_result_memory_size to get the visibility the memory used by a query result.
436458

459+
- Random:
460+
. lcg_value() is deprecated, as the function is broken in multiple ways.
461+
Use \Random\Randomizer::getFloat() instead.
462+
RFC: https://wiki.php.net/rfc/deprecations_php_8_4
463+
437464
- Reflection:
438465
. Calling ReflectionMethod::__construct() with 1 argument is deprecated.
439466
Use ReflectionMethod::createFromMethodName() instead.
440467

441468
- Session:
442469
. Calling session_set_save_handler() with more than 2 arguments is
443470
deprecated. Use the 2-parameter signature instead.
471+
. Changing the INI settings session.sid_length and session.sid_bits_per_character
472+
is deprecated. Update the session storage backend to accept 32 character
473+
hexadecimal session IDs and stop changing these two INI settings.
474+
RFC: https://wiki.php.net/rfc/deprecations_php_8_4
475+
476+
- SPL:
477+
. The SplFixedArray::__wakeup() method has been deprecated as it implements
478+
__serialize() and __unserialize() which need to be overwritten instead.
444479

445480
- Standard:
446481
. Calling stream_context_set_option() with 2 arguments is deprecated.
447482
Use stream_context_set_options() instead.
448483
. Raising zero to the power of negative number is deprecated.
484+
. Unserializing strings using the uppercase 'S' tag is deprecated.
485+
RFC: https://wiki.php.net/rfc/deprecations_php_8_4
486+
487+
- XML:
488+
. The xml_set_object() function has been deprecated.
489+
RFC: https://wiki.php.net/rfc/deprecations_php_8_4#xml_set_object_and_xml_set_handler_with_string_method_names
490+
. Passing non-callable strings to the xml_set_*_handler() functions is now
491+
deprecated.
492+
RFC: https://wiki.php.net/rfc/deprecations_php_8_4#xml_set_object_and_xml_set_handler_with_string_method_names
449493

450494
========================================
451495
5. Changed Functions
@@ -742,6 +786,10 @@ PHP 8.4 UPGRADE NOTES
742786
- Date:
743787
. The class constants are typed now.
744788

789+
- DOM:
790+
. Removed DOMImplementation::getFeature().
791+
RFC: https://wiki.php.net/rfc/deprecations_php_8_4#remove_domimplementationgetfeature_feature_version
792+
745793
- Intl:
746794
. The class constants are typed now.
747795
. The behaviour of Intl class has been normalized to always throw Error
@@ -920,6 +968,10 @@ PHP 8.4 UPGRADE NOTES
920968
. Improved the performance of FTP uploads up to a factor of 10x for large
921969
uploads.
922970

971+
- Hash:
972+
. Added SSE2 and SHA-NI implementations of SHA-256. This improves the performance
973+
on supported CPUs by ~1.3x (SSE2) and 3x - 5x (SHA-NI).
974+
923975
- MBString:
924976
. The performance of strspn() and strcspn() is greatly improved.
925977
They now run in linear time instead of being bounded by quadratic time.

UPGRADING.INTERNALS

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,12 @@ PHP 8.4 INTERNALS UPGRADE NOTES
9999
zend_std_get_properties(). Use zend_std_get_properties_ex() or
100100
zend_std_get_properties() instead.
101101

102+
* Removed IS_STATIC_VAR_UNINITIALIZED constant. Check for IS_NULL in the
103+
static_variables array instead.
104+
105+
* Removed ZEND_DIM_ALTERNATIVE_SYNTAX constant. This syntax no longer has a
106+
specialized error message.
107+
102108
========================
103109
2. Build system changes
104110
========================
@@ -174,6 +180,7 @@ PHP 8.4 INTERNALS UPGRADE NOTES
174180
- M4 macro PHP_SETUP_LIBXML doesn't define the redundant HAVE_LIBXML symbol
175181
anymore.
176182
- M4 macro PHP_SETUP_ICONV doesn't define the HAVE_ICONV symbol anymore.
183+
- M4 macro PHP_OUTPUT is obsolete (use AC_CONFIG_FILES).
177184
- TSRM/tsrm.m4 file and its TSRM_CHECK_PTHREADS M4 macro have been removed.
178185
- Added pkg-config support to find libpq for the pdo_pgsql and pgsql
179186
extensions. The libpq paths can be customized with the PGSQL_CFLAGS and
@@ -182,6 +189,9 @@ PHP 8.4 INTERNALS UPGRADE NOTES
182189
used instead of the pkg-config search.
183190
- Added pkg-config support to find unixODBC and iODBC for the pdo_odbc
184191
extension.
192+
- Added pkg-config support to find GNU MP library. As a fallback default
193+
system paths are searched. When a directory argument is provided
194+
(--with-gmp=DIR), it will be used instead of the pkg-config.
185195
- Removed BC enable_pear variable check due to --enable-pear configure option
186196
once used (use with_pear variable name).
187197
- Cache variables synced to php_cv_* naming scheme. If you use them for
@@ -217,6 +227,7 @@ PHP 8.4 INTERNALS UPGRADE NOTES
217227
the openssl extension is available either as shared or built statically.
218228
- Added configure option --enable-phpdbg-debug to build phpdbg in debug mode.
219229
- The win32/build/libs_version.txt file has been removed.
230+
- MSVC builds now use the new preprocessor (/Zc:preprocessor).
220231

221232
========================
222233
3. Module changes
@@ -276,6 +287,10 @@ PHP 8.4 INTERNALS UPGRADE NOTES
276287
implementation has been improved to generate better seeds, however any
277288
users should use the opportunity to verify that seeding is first
278289
attempted using the CSPRNG for better output size flexibility.
290+
- The standalone combined_lcg engine has been removed, as the lcg_value()
291+
userland function is deprecated and as the engine is unable to return
292+
unbiased integer values. The internal php_combined_lcg() function remains
293+
available for now.
279294

280295
c. ext/xsl
281296
- The function php_xsl_create_object() was removed as it was not used
@@ -293,6 +308,7 @@ PHP 8.4 INTERNALS UPGRADE NOTES
293308
- Added php_libxml_uses_internal_errors().
294309
- Added a way to override document handlers (e.g. serialization) with
295310
php_libxml_document_handlers.
311+
- Changed the refcount fields from int to unsigned int.
296312

297313
e. ext/date
298314
- Added the php_format_date_ex() API to format instances of php_date_obj.

0 commit comments

Comments
 (0)