-
Notifications
You must be signed in to change notification settings - Fork 8k
Expand file tree
/
Copy pathNEWS
More file actions
863 lines (716 loc) · 33.7 KB
/
NEWS
File metadata and controls
863 lines (716 loc) · 33.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
PHP NEWS
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
23 Oct 2025, PHP 8.5.0RC3
- Core:
. Fixed bug GH-20113 (Missing new Foo(...) error in constant expressions).
(ilutov)
. Fixed bug GH-19844 (Don't bail when closing resources on shutdown). (ilutov)
. Fixed deprecation for default case statement followed by semicolon not
being emitted. (theodorejb)
. Fixed bug GH-20177 (Accessing overridden private property in
get_object_vars() triggers assertion error). (ilutov)
- DOM:
. Fix getNamedItemNS() incorrect namespace check. (nielsdos)
- FPM:
. Fixed bug GH-19817 (Decode SCRIPT_FILENAME issue in php 8.5).
(Jakub Zelenka)
. Fixed bug GH-19989 (PHP 8.5 FPM access log lines also go to STDERR).
(Jakub Zelenka)
- Opcache:
. Fixed bug GH-20081 (access to uninitialized vars in preload_load()).
(Arnaud)
. Fixed bug GH-20121 (JIT broken in ZTS builds on MacOS 15).
(Arnaud, Shivam Mathur)
. Fixed bug GH-19875 (JIT 1205 segfault on large file compiled in subprocess).
(Arnaud)
- OpenSSL:
. Fixed bug GH-19994 (openssl_get_cipher_methods inconsistent with fetching).
(Jakub Zelenka)
- PDO:
. Fixed bug GH-20095 (Incorrect class name in deprecation message for PDO
mixins). (timwolla)
- Phar:
. Fix potential buffer length truncation due to usage of type int instead
of type size_t. (Girgias)
- SPL:
. Fixed bug GH-20101 (SplHeap/SplPriorityQueue serialization
exposes INDIRECTs). (nielsdos)
. Improve __unserialize() hardening for SplHeap/SplPriorityQueue. (nielsdos)
- Tidy:
. Fixed GH-19021 (improved tidyOptGetCategory detection).
(arjendekorte, David Carlier, Peter Kokot)
- URI:
. Fixed bug GH-20088 (Heap-use-after-free in PHP URI WHATWG parser
during malformed URL processing). (lexborisov)
. Fixed bug GH-19868 (Unable to use uri_parser_rfc3986.h from external
extensions). (timwolla)
. Make php_uri_parser structs available to extensions directly. (timwolla)
09 Oct 2025, PHP 8.5.0RC2
- Core:
. Fix OSS-Fuzz #447521098 (Fatal error during sccp shift eval). (ilutov)
. Fixed bug GH-20002 (Broken build on *BSD with MSAN). (outtersg)
. Fixed bug GH-19352 (Cross-compilation with musl C library).
(henderkes, Peter Kokot)
. Revert deprecation of __sleep() and __wakeup().
They're now soft-deprecated. (Nicolas Grekas)
- CLI:
. Fix useless "Failed to poll event" error logs due to EAGAIN in CLI server
with PHP_CLI_SERVER_WORKERS. (leotaku)
- BcMath:
. Fixed bug GH-20006 (Power of 0 of BcMath number causes UB). (nielsdos)
- Opcache:
. Fixed segfault in function JIT due to NAN to bool warning. (Girgias)
. Fixed bug GH-19984 (Double-free of EG(errors)/persistent_script->warnings on
persist of already persisted file). (ilutov, Arnaud)
. Fixed bug GH-19889 (race condition in zend_runtime_jit(),
zend_jit_hot_func()). (Arnaud)
- SOAP:
. Fixed bug GH-19773 (SIGSEGV due to uninitialized soap_globals->lang_en).
(nielsdos, KaseyJenkins)
- Standard:
. Fixed bug GH-19926 (reset internal pointer earlier while splicing array
while COW violation flag is still set). (alexandre-daubois)
- URI:
. Fixed Uri\WhatWg\Url::withPort() when an invalid value is passed.
(timwolla)
. Fixed Uri\WhatWg\Url::parse() when resolving a relative URL
against a base URL with query or fragment. (timwolla)
. Fixed normalization of paths starting with two slashes for
Uri\Rfc3986\Uri. (timwolla)
25 Sep 2025, PHP 8.5.0RC1
- Core:
. Fixed bug GH-19765 (object_properties_load() bypasses readonly property
checks). (timwolla)
. The __sleep() and __wakeup() magic methods have been deprecated. (Girgias)
. Fixed hard_timeout with --enable-zend-max-execution-timers. (Appla)
. Fixed bug GH-19839 (Incorrect HASH_FLAG_HAS_EMPTY_IND flag on userland
array). (ilutov)
. Fixed bug GH-19823 (register_argc_argv deprecation emitted twice when
using OPcache). (timwolla)
. Fixed bug GH-19480 (error_log php.ini cannot be unset when open_basedir is
configured). (nielsdos)
. Fixed bug GH-19719 (Allow empty statements before declare(strict_types)).
(nielsdos)
. Casting floats that are not representable as ints now emits a warning.
(Girgias)
. Casting NAN to other types now emits a warning. (Girgias)
. Fixed bug GH-19934 (CGI with auto_globals_jit=0 causes uouv). (ilutov)
- Bz2:
. Fixed bug GH-19810 (Broken bzopen() stream mode validation). (ilutov)
- Curl:
. Fix cloning of CURLOPT_POSTFIELDS when using the clone operator instead
of the curl_copy_handle() function to clone a CurlHandle. (timwolla)
- Date:
. Fixed GH-17159: "P" format for ::createFromFormat swallows string literals.
(nielsdos)
. The __wakeup() magic method of DateTimeInterface, DateTime,
DateTimeImmutable, DateTimeZone, DateInterval, and DatePeriod has been
deprecated in favour of the __unserialize() magic method. (Girgias)
- Exif:
. Fix OSS-Fuzz #442954659 (zero-size box in HEIF file causes infinite loop).
(nielsdos)
. Fix OSS-Fuzz #442954659 (Crash in exif_scan_HEIF_header). (nielsdos)
. Various hardening fixes to HEIF parsing. (nielsdos)
- FPM:
. Fixed GH-8157 (post_max_size evaluates .user.ini too late in php-fpm).
(Jakub Zelenka)
- Iconv:
. Extends the ICONV_CONST preprocessor for illumos/solaris. (jMichaelA)
- Opcache:
. Fixed bug GH-19669 (assertion failure in zend_jit_trace_type_to_info_ex).
(Arnaud)
. Fixed bug GH-19831 (function JIT may not deref property value). (Arnaud)
- OpenSSL:
. Fixed build when --with-openssl-legacy-provider set. (Jakub Zelenka)
- MBstring:
. Updated Unicode data tables to Unicode 17.0. (Yuya Hamada)
- Reflection:
. ReflectionConstant is no longer final. (sasezaki)
- SAPI:
. Fixed bug GH-18582 and #81451: http_response_code() does not override the
status code generated by header(). (ilutov, Jakub Zelenka)
- Standard:
. Passing strings which are not one byte long to ord() is now deprecated.
(Girgias)
. Fixed bug GH-19801 (leaks in var_dump() and debug_zval_dump()).
(alexandre-daubois)
. Fixed GH-14402 (SplPriorityQueue, SplMinHeap, and SplMaxHeap lost their
data on serialize()). (alexandre-daubois)
- URI:
. Fixed bug GH-19780 (InvalidUrlException should check $errors argument).
(nielsdos)
. Prevent modifying Uri\WhatWg\Url and Uri\Rfc3986\Uri objects by manually
calling __construct() or __unserialize(). (timwolla)
. Add new Uri\UriError exception that is thrown for internal error
conditions. (timwolla)
. Further clean up the internal API. (timwolla)
. Fixed bug GH-19892 (Refcounting on zend_empty_array). (ilutov, timwolla)
. Fixed handling of port numbers > 65535 with the internal
`php_uri_parse_to_struct()` API. (timwolla)
. Fix Uri\WhatWg\Url::withHost(). (timwolla)
- Windows:
. Fix GH-19722 (_get_osfhandle asserts in debug mode when given a socket).
(dktapps)
11 Sep 2025, PHP 8.5.0beta3
- Core:
. Destructing non-array values (other than NULL) using [] or list() now
emits a warning. (Girgias)
. Fixed bug GH-19637 (Incorrect Closure scope for FCC in constant
expression). (timwolla)
. Fixed bug GH-19613 (Stale array iterator pointer). (ilutov)
. Fixed bug GH-19679 (zend_ssa_range_widening may fail to converge). (Arnaud)
. Using null as an array offset or when calling array_key_exists() is now
deprecated. (alexandre-daubois)
. Fixed bug GH-19681 (PHP_EXPAND_PATH broken with bash 5.3.0). (Remi)
. Marks the stack as non-executable on Haiku. (David Carlier)
. Deriving $_SERVER['argc'] and $_SERVER['argv'] from the query string is
now deprecated. (timwolla, nicolasgrekas)
- CLI:
. Fixed bug GH-19461 (Improve error message on listening error with IPv6
address). (alexandre-daubois)
- Date:
. Fixed date_sunrise() and date_sunset() with partial-hour UTC offset.
(ilutov)
- EXIF:
. Added support to retrieve Exif from HEIF file. (Benstone Zhang)
- FPM:
. Fixed failed debug assertion when php_admin_value setting fails. (ilutov)
- Filter:
. Fixed bug GH-16993 (filter_var_array with FILTER_VALIDATE_INT|FILTER_NULL_ON_FAILURE
should emit warning for invalid filter usage). (alexandre-daubois)
- Intl:
. Added grapheme_strpos(), grapheme_stripos(), grapheme_strrpos(),
grapheme_strripos(), grapheme_substr(), grapheme_strstr(), grapheme_stristr() and
grapheme_levenshtein() functions add $locale parameter (Yuya Hamada).
. Fixed bug GH-11952 (Fix locale strings canonicalization for IntlDateFormatter
and NumberFormatter). (alexandre-daubois)
- ODBC:
. Removed driver-specific build flags and support. (Calvin Buckley)
- Opcache:
. Fixed bug GH-19486 (Incorrect opline after deoptimization). (Arnaud)
. Fixed bug GH-19601 (Wrong JIT stack setup on aarch64/clang). (Arnaud)
. Fixed bug GH-19388 (Broken opcache.huge_code_pages). (Arnaud)
. Fixed bug GH-19657 (Build fails on non-glibc/musl/freebsd/macos/win
platforms). (Arnaud)
- PCRE:
. Upgraded to pcre2lib from 10.45 to 10.46. (nielsdos)
- PDO:
. Driver specific methods in the PDO class are now deprecated. (Arnaud)
- PDO_SQLITE:
. Add PDO\Sqlite::ATTR_TRANSACTION_MODE connection attribute.
(Samuel Štancl)
- Reflection:
. Fix GH-19691 (getModifierNames() not reporting asymmetric visibility).
(DanielEScherzer)
- Session:
. Fix RC violation of session SID constant deprecation attribute. (ilutov)
- Standard:
. Fix GH-19610 (Deprecation warnings in functions taking as argument).
(Girgias)
. Fixed bug GH-19577 (Avoid integer overflow when using a small offset
and PHP_INT_MAX with LimitIterator). (alexandre-daubois)
. Implement GH-19188: Add support for new INI mail.cr_lf_mode.
(alexandre-daubois)
- Streams:
. Fixed bug GH-14506 (Closing a userspace stream inside a userspace handler
causes heap corruption). (nielsdos)
. Avoid double conversion to string in php_userstreamop_readdir(). (nielsdos)
- URI:
. Added support for Uri\Rfc3986\Uri::with*() methods. (kocsismate)
. Fixed memory management of Uri\WhatWg\Url objects. (timwolla)
. Fixed memory management of the internal "parse_url" URI parser.
(timwolla)
. Fixed double-free when assigning to $errors fails when using
the Uri\WhatWg\Url parser. (timwolla)
. Reject out-of-range ports when using the Uri\Rfc3986\Uri parser.
(timwolla)
. Return null instead of 0 for Uri\Rfc3986\Uri::getPort() when the
URI contains an empty port. (timwolla)
. Fixed creation of the InvalidUrlException when not passing an
errors zval to the internal whatwg parser. (timwolla)
. Clean up naming of internal API. (timwolla)
28 Aug 2025, PHP 8.5.0beta2
- Core:
. Fixed bug GH-18850 (Repeated inclusion of file with __halt_compiler()
triggers "Constant already defined" warning). (ilutov)
. Fixed bug GH-19476 (pipe operator fails to correctly handle returning
by reference). (alexandre-daubois)
. The report_memleaks INI directive has been deprecated. (alexandre-daubois)
. Constant redeclaration has been deprecated. (alexandre-daubois)
. Fixed OSS-Fuzz #439125710 (Pipe cannot be used in write context).
(nielsdos)
. Added support for configuring the URI parser for the FTP/FTPS as well as
the SSL/TLS stream wrappers as described in
https://wiki.php.net/rfc/url_parsing_api#plugability. (kocsismate)
. Fixed bug GH-19548 (Shared memory violation on property inheritance).
(alexandre-daubois)
. Fixed bug GH-19544 (GC treats ZEND_WEAKREF_TAG_MAP references as WeakMap
references). (Arnaud, timwolla)
. Introduced the TAILCALL VM, enabled by default when compiling with Clang>=19
on x86_64 or aarch64. (Arnaud)
. Enacted the follow-up phase of the "Path to Saner Increment/Decrement
operators" RFC, meaning that incrementing non-numeric strings is now
deprecated. (Girgias).
. Various closure binding issues are now deprecated. (alexandre-daubois)
. Fixed bug GH-18373 (Don't substitute self/parent with anonymous class).
(ilutov)
. Prohibit pipe & arrow function combination that leads to confusing parse
trees. (ilutov)
. The disable_classes INI directive has been removed. (Girgias)
. The locally predefined variable $http_response_header is deprecated.
(Girgias)
- Filter:
. Added support for configuring the URI parser for FILTER_VALIDATE_URL
as described in https://wiki.php.net/rfc/url_parsing_api#plugability.
(kocsismate)
- ODBC:
. Remove ODBCVER and assume ODBC 3.5. (Calvin Buckley)
- Opcache:
. Fixed bug GH-19493 (JIT variable not stored before YIELD). (Arnaud)
- OpenSSL:
. Implement #81724 (openssl_cms_encrypt only allows specific ciphers).
(Jakub Zelenka)
- PDO:
. Driver specific constants in the PDO class are now deprecated. (Arnaud)
- Phar:
. Fixed memory leaks when verifying OpenSSL signature. (Girgias)
- Session:
. Added support for partitioned cookies. (nielsdos)
- SOAP:
. Added support for configuring the URI parser for SoapClient::_doRequest()
as described in https://wiki.php.net/rfc/url_parsing_api#plugability.
(kocsismate)
- SPL:
. Deprecate ArrayObject and ArrayIterator with objects. (Girgias)
- Standard:
. Fixed bug GH-16649 (UAF during array_splice). (alexandre-daubois)
. Passing integers outside the interval [0, 255] to chr() is now deprecated.
(Girgias)
. Added support for partitioned cookies. (nielsdos)
- Tokenizer:
. Fixed bug GH-19507 (Corrupted result after recursive tokenization during
token_get_all()). (kubawerlos, nielsdos, Arnaud)
- URI:
. Clean up naming of internal API (header names, symbol names).
(Máté Kocsis, timwolla)
14 Aug 2025, PHP 8.5.0beta1
- Core:
. Non-canonical cast names (boolean), (integer), (double), and (binary) have
been deprecated. (Girgias)
. The $exclude_disabled parameter of the get_defined_functions() function has
been deprecated, as it no longer has any effect since PHP 8.0. (Girgias)
. Terminating case statements with a semicolon instead of a colon has
been deprecated. (theodorejb)
. The backtick operator as an alias for shell_exec() has been deprecated.
(timwolla)
. Returning null from __debugInfo() has been deprecated. (DanielEScherzer)
. Support #[\Override] on properties. (Jiří Pudil)
- Curl:
. The curl_close() function has been deprecated. (DanielEScherzer)
. The curl_share_close() function has been deprecated. (DanielEScherzer)
- Date:
. The DATE_RFC7231 and DateTimeInterface::RFC7231 constants have been
deprecated. (jorgsowa)
- DOM:
. Fixed bug GH-18877 (\Dom\HTMLDocument querySelectorAll selecting only the
first when using ~ and :has). (nielsdos, lexborisov)
- FileInfo
. The finfo_close() function has been deprecated. (timwolla)
. The $context parameter of the finfo_buffer() function has been deprecated
as it is ignored. (Girgias)
- GD:
. The imagedestroy() function has been deprecated. (DanielEScherzer)
- Intl:
. Intl's internal error mechanism has been modernized so that it
indicates more accurately which call site caused what error.
Moreover, some ext/date exceptions have been wrapped inside a
IntlException now. (Girgias)
. The intl.error_level INI setting has been deprecated. (Girgias)
- MySQLi:
. The mysqli_execute() alias function has been deprecated. (timwolla)
- OpenSSL:
. Fixed bug GH-19369 (8.5 | Regression in openssl_sign() - support for alias
algorithms appears to be broken). (Jakub Zelenka)
. The $key_length parameter for openssl_pkey_derive() has been deprecated.
(Girgias)
. Implement #80495 (Enable to set padding in openssl_(sign|verify).
(Jakub Zelenka)
. Implement #47728 (openssl_pkcs7_sign ignores new openssl flags).
(Jakub Zelenka)
- PDO:
. The "uri:" DSN scheme has been deprecated due to security concerns with
DSNs coming from remote URIs. (timwolla)
- Reflection:
. Fixed bug GH-17927 (Reflection: have some indication of property hooks in
`_property_string()`). (DanielEScherzer)
. The setAccessible() methods of various Reflection objects have been
deprecated, as those no longer have an effect. (timwolla)
. ReflectionClass::getConstant() for constants that do not exist has been
deprecated. (DanielEScherzer)
. ReflectionProperty::getDefaultValue() for properties without default values
has been deprecated. (DanielEScherzer)
- SPL:
. Unregistering all autoloaders by passing the spl_autoload_call() function
as a callback argument to spl_autoload_unregister() has been deprecated.
Instead if this is needed, one should iterate over the return value of
spl_autoload_functions() and call spl_autoload_unregister() on each
value. (Girgias)
. The SplObjectStorage::contains(), SplObjectStorage::attach(), and
SplObjectStorage::detach() methods have been deprecated in favour of
SplObjectStorage::offsetExists(), SplObjectStorage::offsetSet(), and
SplObjectStorage::offsetUnset() respectively. (Girgias)
- Standard:
. The socket_set_timeout() alias function has been deprecated. (timwolla)
. Passing null to to readdir(), rewinddir(), and closedir() to use the last
opened directory has been deprecated. (Girgias)
. Fixed bug GH-19153 (#[\Attribute] validation should error on
trait/interface/enum/abstract class). (DanielEScherzer)
- XML:
. The xml_parser_free() function has been deprecated. (DanielEScherzer)
31 Jul 2025, PHP 8.5.0alpha4
- Core:
. Add clone-with support to the clone() function. (timwolla, edorian)
. Fix support for non-userland stream notifiers. (timwolla)
. Added PHP_BUILD_PROVIDER constant. (timwolla)
. Fixed bug GH-19305 (Operands may be being released during comparison).
(Arnaud)
. Fixed bug GH-19306 (Generator can be resumed while fetching next value from
delegated Generator). (Arnaud)
. Fixed bug GH-19326 (Calling Generator::throw() on a running generator with
a non-Generator delegate crashes). (Arnaud)
- Curl:
. Add support for CURLINFO_CONN_ID in curl_getinfo() (thecaliskan)
. Add support for CURLINFO_QUEUE_TIME_T in curl_getinfo() (thecaliskan)
. Add support for CURLOPT_SSL_SIGNATURE_ALGORITHMS. (Ayesh Karunaratne)
- FPM:
. Make FPM access log limit configurable using log_limit. (Jakub Zelenka)
- GD:
. Fix incorrect comparison with result of php_stream_can_cast(). (Girgias)
- Intl:
. Fix return value on failure for resourcebundle count handler. (Girgias)
. Fixed bug GH-19307 (PGO builds of shared ext-intl are broken). (cmb)
- OPcache:
. Disallow changing opcache.memory_consumption when SHM is already set up.
(timwolla)
. Fixed bug GH-15074 (Compiling opcache statically into ZTS PHP fails).
(Arnaud)
. Make OPcache non-optional (Arnaud, timwolla)
. Fixed bug GH-17422 (OPcache bypasses the user-defined error handler for
deprecations). (Arnaud, timwolla)
. Fixed bug GH-19301 (opcache build failure). (Remi)
- OpenSSL:
. Add $digest_algo parameter to openssl_public_encrypt() and
openssl_private_decrypt() functions. (Jakub Zelenka)
- POSIX:
. posix_kill and posix_setpgid throws a ValueError on invalid process_id.
(David Carlier)
. posix_setpgid throws a ValueError on invalid process_group_id,
posix_setrlimit throws a ValueError on invalid soft_limit and hard_limit
arguments. (David Carlier)
- Reflection:
. Fixed bug GH-19187 (ReflectionNamedType::getName() prints nullable type when
retrieved from ReflectionProperty::getSettableType()). (ilutov)
- Session:
. Fixed GH-19197: build broken with ZEND_STRL usage with memcpy
when implemented as macro. (David Carlier)
- Soap:
. Fixed bug GH-19226 (Segfault when spawning new thread in soap extension).
(Florian Engelhardt)
- Sockets:
. socket_set_option for multicast context throws a ValueError
when the socket family is not of AF_INET/AF_INET6 family. (David Carlier)
- Standard:
. Add HEIF/HEIC support to getimagesize. (Benstone Zhang)
. Implement #71517 (Implement SVG support for getimagesize() and friends).
(nielsdos)
. Optimized PHP html_entity_decode function. (Artem Ukrainskiy)
. Minor optimization to array_chunk(). (nielsdos)
- URI:
. Empty host handling is fixed. (Máté Kocsis)
. Error handling of Uri\WhatWg\Url::withHost() is fixed when the input
contains a port. Now, it triggers an exception; previously, the error
was silently swallowed. (Máté Kocsis)
. Support empty URIs with Uri\Rfc3986\Uri. (timwolla)
17 Jul 2025, PHP 8.5.0alpha2
- Core:
. Fix OSS-Fuzz #427814452 (pipe compilation fails with assert).
(nielsdos, ilutov)
- DOM:
. Make cloning DOM node lists, maps, and collections fail. (nielsdos)
. Added Dom\Element::getElementsByClassName(). (nielsdos)
- PDO_ODBC
. Fetch larger block sizes and better handle SQL_NO_TOTAL when calling
SQLGetData. (Calvin Buckley, Saki Takamachi)
- Standard:
. Optimized pack(). (nielsdos, divinity76)
. Fixed bug GH-19070 (setlocale($type, NULL) should not be deprecated).
(nielsdos)
- URI:
. Return the singleton UrlValidationErrorType instances from Uri\WhatWg\Url
instead of creating new objects that are different from the singleton.
(timwolla)
03 Jul 2025, PHP 8.5.0alpha1
- BCMath:
. Simplify `bc_divide()` code. (SakiTakamachi)
. If the result is 0, n_scale is set to 0. (SakiTakamachi)
. If size of BC_VECTOR array is within 64 bytes, stack area is now used.
(SakiTakamachi)
- CLI:
. Add --ini=diff to print INI settings changed from the builtin default.
(timwolla)
. Drop support for -z CLI/CGI flag. (nielsdos)
. Fixed GH-17956 - development server 404 page does not adapt to mobiles.
(pascalchevrel)
- CURL:
. Added CURLFOLLOW_ALL, CURLFOLLOW_OBEYCODE and CURLFOLLOW_FIRSTONLY
values for CURLOPT_FOLLOWLOCATION curl_easy_setopt option. (David Carlier)
- COM:
. Fixed property access of PHP objects wrapped in variant. (cmb)
. Fixed method calls for PHP objects wrapped in variant. (cmb)
- Core:
. Fixed bug GH-16665 (\array and \callable should not be usable in
class_alias). (nielsdos)
. Added PHP_BUILD_DATE constant. (cmb)
. Added support for Closures and first class callables in constant
expressions. (timwolla, Volker Dusch)
. Use `clock_gettime_nsec_np()` for high resolution timer on macOS
if available. (timwolla)
. Implement GH-15680 (Enhance zend_dump_op_array to properly represent
non-printable characters in string literals). (nielsdos, WangYihang)
. Add support for backtraces for fatal errors. (enorris)
. Fixed bug GH-17442 (Engine UAF with reference assign and dtor). (nielsdos)
. Improved error message of UnhandledMatchError for
zend.exception_string_param_max_len=0. (timwolla)
. Fixed bug GH-17959 (Relax missing trait fatal error to error exception).
(ilutov)
. Fixed bug GH-18033 (NULL-ptr dereference when using register_tick_function
in destructor). (nielsdos)
. Fixed bug GH-18026 (Improve "expecting token" error for ampersand). (ilutov)
. Added the #[\NoDiscard] attribute to indicate that a function's return
value is important and should be consumed. (timwolla, Volker Dusch)
. Added the (void) cast to indicate that not using a value is intentional.
(timwolla, Volker Dusch)
. Added get_error_handler(), get_exception_handler() functions. (Arnaud)
. Fixed bug GH-15753 and GH-16198 (Bind traits before parent class). (ilutov)
. Added support for casts in constant expressions. (nielsdos)
. Fixed bugs GH-17711 and GH-18022 (Infinite recursion on deprecated attribute
evaluation) and GH-18464 (Recursion protection for deprecation constants not
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)
. Fixed bug GH-19081 (Wrong lineno in property error with constructor property
promotion). (ilutov)
- Curl:
. Added curl_multi_get_handles(). (timwolla)
. Added curl_share_init_persistent(). (enorris)
. Added CURLINFO_USED_PROXY, CURLINFO_HTTPAUTH_USED, and CURLINFO_PROXYAUTH_USED
support to curl_getinfo. (Ayesh Karunaratne)
- Date:
. Fix undefined behaviour problems regarding integer overflow in extreme edge
cases. (nielsdos, cmb, ilutov)
- DOM:
. Added Dom\Element::$outerHTML. (nielsdos)
. Added Dom\Element::insertAdjacentHTML(). (nielsdos)
. Added $children property to ParentNode implementations. (nielsdos)
- Enchant:
. Added enchant_dict_remove_from_session(). (nielsdos)
. Added enchant_dict_remove(). (nielsdos)
. Fix missing empty string checks. (nielsdos)
- EXIF:
. Add OffsetTime* Exif tags. (acc987)
- Fileinfo:
. Upgrade to file 5.46. (nielsdos)
. Change return type of finfo_close() to true. (timwolla)
- FPM:
. Fixed GH-17645 (FPM with httpd ProxyPass does not decode script path).
(Jakub Zelenka)
- GD:
. Fixed bug #68629 (Transparent artifacts when using imagerotate). (pierre,
cmb)
. Fixed bug #64823 (ZTS GD fails to to find system TrueType font). (cmb)
- Intl:
. Bumped ICU requirement to ICU >= 57.1. (cmb)
. IntlDateFormatter::setTimeZone()/datefmt_set_timezone() throws an exception
with uninitialised classes or clone failure. (David Carlier)
. Added DECIMAL_COMPACT_SHORT/DECIMAL_COMPACT_LONG for NumberFormatter class.
(BogdanUngureanu)
. Added Locale::isRightToLeft to check if a locale is written right to left.
(David Carlier)
. Added null bytes presence in locale inputs for Locale class. (David Carlier)
. Added grapheme_levenshtein() function. (Yuya Hamada)
. Added Locale::addLikelySubtags/Locale::minimizeSubtags to handle
adding/removing likely subtags to a locale. (David Carlier)
. Added IntlListFormatter class to format a list of items with a locale,
operands types and units. (BogdanUngureanu)
. Fixed bug GH-18566 ([intl] Weird numeric sort in Collator). (nielsdos)
- LDAP:
. Allow ldap_get_option to retrieve global option by allowing NULL for
connection instance ($ldap). (Remi)
- MySQLi:
. Fixed bugs GH-17900 and GH-8084 (calling mysqli::__construct twice).
(nielsdos)
- MySQLnd:
. Added mysqlnd.collect_memory_statistics to ini quick reference.
(hauk92)
- Opcache:
. Fixed ZTS OPcache build on Cygwin. (cmb)
. Added opcache.file_cache_read_only. (Samuel Melrose)
. Updated default value of opcache.jit_hot_loop. (Arnaud)
. Log a warning when opcache lock file permissions could not be changed.
(Taavi Eomäe)
- OpenSSL:
. Added openssl.libctx INI that allows to select the OpenSSL library context
type and convert various parts of the extension to use the custom libctx.
(Jakub Zelenka)
- Output:
. Fixed calculation of aligned buffer size. (cmb)
- PCNTL:
. Extend pcntl_waitid with rusage parameter. (vrza)
- PCRE:
. Upgraded to pcre2lib from 10.44 to 10.45. (nielsdos)
. Remove PCRE2_EXTRA_ALLOW_LOOKAROUND_BSK from pcre compile options.
(mvorisek)
- PDO_PGSQL:
. Added Iterable support for PDO::pgsqlCopyFromArray. (KentarouTakeda)
. Implement GH-15387 Pdo\Pgsql::setAttribute(PDO::ATTR_PREFETCH, 0) or
Pdo\Pgsql::prepare(…, [ PDO::ATTR_PREFETCH => 0 ]) make fetch() lazy
instead of storing the whole result set in memory (Guillaume Outters)
- PDO_SQLITE:
. throw on null bytes / resolve GH-13952 (divinity76).
. Implement GH-17321: Add setAuthorizer to Pdo\Sqlite. (nielsdos)
. PDO::sqliteCreateCollation now throws a TypeError if the callback
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
its name to be reused. (David Carlier)
. Added Iterable support for pgsql_copy_from. (David Carlier)
. pg_connect checks if connection_string contains any null byte,
pg_close_stmt check if the statement contains any null byte.
(David Carlier)
. Added pg_service to get the connection current service identifier.
(David Carlier)
- POSIX:
. Added POSIX_SC_OPEN_MAX constant to get the number of file descriptors
a process can handle. (David Carlier)
. posix_ttyname() sets last_error to EBADF on invalid file descriptors,
posix_isatty() raises E_WARNING on invalid file descriptors,
posix_fpathconf checks invalid file descriptors. (David Carlier)
- Random:
. Moves from /dev/urandom usage to arc4random_buf on Haiku. (David Carlier)
- Reflection:
. Added ReflectionConstant::getExtension() and ::getExtensionName().
(DanielEScherzer)
. Fixed bug GH-12856 (ReflectionClass::getStaticPropertyValue() returns UNDEF
zval for uninitialized typed properties). (nielsdos)
. Fixed bug GH-15766 (ReflectionClass::__toString() should have better output
for enums). (DanielEScherzer)
. Added ReflectionProperty::getMangledName() method. (alexandre-daubois)
- Session:
. session_start() throws a ValueError on option argument if not a hashmap
or a TypeError if read_and_close value is not compatible with int.
(David Carlier)
- SimpleXML:
. Fixed bug GH-12231 (SimpleXML xpath should warn when returning other return
types than node lists). (nielsdos)
- SNMP:
. snmpget, snmpset, snmp_get2, snmp_set2, snmp_get3, snmp_set3 and
SNMP::__construct() throw an exception on invalid hostname, community
timeout and retries arguments. (David Carlier)
- SOAP:
. Fixed bug #49169 (SoapServer calls wrong function, although "SOAP action"
header is correct). (nielsdos)
. Fix namespace handling of WSDL and XML schema in SOAP,
fixing at least GH-16320 and bug #68576. (nielsdos)
. 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.
(David Carlier)
. Added TCP_FUNCTION_BLK to change the TCP stack algorithm on FreeBSD.
(David Carlier)
. socket_set_option() catches possible overflow with SO_RCVTIMEO/SO_SNDTIMEO
with timeout setting on windows. (David Carlier)
. Added TCP_FUNCTION_ALIAS, TCP_REUSPORT_LB_NUMA, TCP_REUSPORT_LB_NUMA_NODOM,
TCP_REUSPORT_LB_CURDOM, TCP_BBR_ALGORITHM constants.
. socket_create_listen() throws an exception on invalid port value.
(David Carlier)
. socket_bind() throws an exception on invalid port value.
(David Carlier)
. socket_sendto() throws an exception on invalid port value.
(David Carlier)
. socket_addrinfo_lookup throws an exception on invalid hints value types.
(David Carlier)
. socket_addrinfo_lookup throws an exception if any of the hints value
overflows. (David Carlier)
. socket_addrinfo_lookup throws an exception if one or more hints entries
has an index as numeric. (David Carlier)
. socket_set_option with the options MCAST_LEAVE_GROUP/MCAST_LEAVE_SOURCE_GROUP
will throw an exception if its value is not a valid array/object.
(David Carlier)
. socket_getsockname/socket_create/socket_bind handled AF_PACKET family socket.
(David Carlier)
. Added IP_BINDANY for a socket to bind to any address. (David Carlier)
. Added SO_BUSY_POOL to reduce packets poll latency. (David Carlier)
- Added UDP_SEGMENT support to optimise multiple large datagrams over UDP
if the kernel and hardware supports it. (David Carlier)
- Added SHUT_RD, SHUT_WR and SHUT_RDWR constants for socket_shutdown().
(David Carlier)
- Sodium:
. Fix overall theoretical 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).
(cmb)
- Tests:
. Allow to shuffle tests even in non-parallel mode. (dhuang00)
- Tidy:
. tidy::__construct/parseFile/parseString methods throw an exception if
the configuration argument is invalid. (David Carlier)
- Windows:
. Fixed bug GH-10992 (Improper long path support for relative paths). (cmb,
nielsdos)
. Fixed bug GH-16843 (Windows phpize builds ignore source subfolders). (cmb)
- XMLWriter:
. Improved performance and reduce memory consumption. (nielsdos)
- XSL:
. Implement request #30622 (make $namespace parameter functional). (nielsdos)
- Zlib:
. gzfile, gzopen and readgzfile, their "use_include_path" argument
is now a boolean. (David Carlier)
. Fixed bug GH-16883 (gzopen() does not use the default stream context when
opening HTTP URLs). (nielsdos)
. Implemented GH-17668 (zlib streams should support locking). (nielsdos)
<<< NOTE: Insert NEWS from last stable release here prior to actual release! >>>