PHP 8.4.0RC1: Downloads, Changelog, News

Release Information

Release
8.4.0RC1
PHP Version
PHP 8.4
Release Date
Release Type
Bug Fix Release
Release Status
QA Release Latest
Branch Status
Upcoming Release

PHP 8.4 is a development version, and is not recommended for production use. PHP 8.4 is scheduled to reach General Availability on 2024-11-21. This is the latest QA release in the series.

Downloads

Source Code

Git Clone
Use Git to clone the 8.4.0RC1 tag from the PHP Git repository.
git clone https://github.com/php/php-src.git --depth 1 --branch php-8.4.0RC1
How to compile PHP
PHP can be compiled by setting up the dependencies, building the configure script (./buildconf), configuring the build ./configure, and running make.
Detailed articles on how to compile PHP are available for Ubuntu/Debian based systems and Fedora/RHEL based systems.

Windows binaries

Non-Thread Safe Builds
Non-Thread Safe (NTS) builds are single-threaded PHP builds. They can be used on web servers that integrate PHP over FastCGI protocol, such as Nginx, Caddy, and IIS.
Thread-Safe Builds
Thread-Safe (TS) builds are multi-thread PHP builds, often used to integrate PHP as a Server API for multithreaded servers. The most common use case is using PHP as an Apache module.

Docker/Podman Containers

PHP CLI
PHP CLI Containers images only include the PHP CLI, and no FPM or Apache modules. The Alpine builds are lightweight, but may introduce incompatibilities due to their musl builds. Albeit their larger size, the Debian-based (without the "-alpine" suffix) images are more complete, and widely used.

Alpine-based: Lightweight, but may introduce incompatibilities due to their musl builds.
docker pull php:8.4.0RC1-cli-alpine

Debian-based: More compatible with other components, complete, and are widely used.
docker pull php:8.4.0RC1-cli
PHP CLI + Web Server Integration
These container images include PHP CLI, and a web server integration. FPM container images can be integrated with web servers such as Nginx, Caddy, and Apache with Event MPM. The Apache container images include Apache web server, integrating PHP as an Apache module.

Alpine-based: Lightweight, but may introduce incompatibilities due to their musl builds.
docker pull php:8.4.0RC1-fpm-alpine

Debian-based ZTS Apache: Includes Apache web server integrating PHP as an Apache module.
docker pull php:8.4.0RC1-apache

Debian-based NTS FPM: PHP-FPM, can be integrated with Nginx, Caddy, and other web servers over Fast CGI.
docker pull php:8.4.0RC1-fpm

ChangeLog

BcMath

  • bcpow() performance improvement.
  • ext/bcmath: Check for scale overflow.
  • [RFC] ext/bcmath: Added bcdivmod.
  • Fix GH-15968 (Avoid converting objects to strings in operator calculations).

Curl

  • Added CURLOPT_DEBUGFUNCTION as a Curl option.

Debugging

  • Fixed bug GH-15923 (GDB: Python Exception <class 'TypeError'>: exceptions must derive from BaseException).

DOM

  • Fix XML serializer errata: xmlns="" serialization should be allowed.
  • Fixed bug GH-15910 (Assertion failure in ext/dom/element.c).
  • Fix unsetting DOM properties.

MBString

  • Fixed bug GH-15824 (mb_detect_encoding(): Argument $encodings contains invalid encoding "UTF8").
  • Updated Unicode data tables to Unicode 16.0.

Opcache

  • Fixed bug GH-15657 (Segmentation fault in dasm_x86.h).
  • Added opcache_jit_blacklist() function.

PHPDBG

  • Fixed bug GH-15901 (phpdbg: Assertion failure on i funcs).

PCRE

  • Fix UAF issues with PCRE after request shutdown.

PDO_PGSQL

  • Fixed GH-15986 (Double-free due to Pdo`Pgsql::setNoticeCallback()`).
  • Fixed GH-12940 (Using PQclosePrepared when available instead of the DEALLOCATE command to free statements resources).

Reflection

  • Add missing ReflectionProperty::hasHook[s]() methods.
  • Add missing ReflectionProperty::isFinal() method.

SimpleXML

  • Fixed bug GH-15837 (Segmentation fault in ext/simplexml/simplexml.c).

SOAP

  • Fixed bug #73182 (PHP SOAPClient does not support stream context HTTP headers in array form).
  • Fixed bug #62900 (Wrong namespace on xsd import error message).
  • Fixed bug GH-15711 (SoapClient can't convert BackedEnum to scalar value).

SPL

  • Fixed bug GH-15918 (Assertion failure in ext/spl/spl_fixedarray.c).

Standard

  • Add support for backed enums in http_build_query().
  • Fixed bug GH-15982 (Assertion failure with array_find when references are involved).

Streams

  • Fixed bugs GH-15908 and GH-15026 (leak / assertion failure in streams.c).
  • Fixed bug GH-15980 (Signed integer overflow in main/streams/streams.c).

TSRM

  • Prevent closing of unrelated handles.

Windows

  • Fixed minimal Windows version.

Zip

  • Added ZipArchive::ER_TRUNCATED_ZIP added in libzip 1.11.

Commit List

Arnaud Le Blanc

  • Alpine/Musl nightly job in GH-13925
  • Do not scan generator frames more than once in GH-15330
  • Lazy objects in 58aa6fc830
  • Fix removal of optimization cflags in debug builds in GH-9647
  • Do not remove -O0 in the middle of a flag in c639614346
  • Fix zend_get_property_info_for_slot() for lazy objects in GH-15855
  • Fix oss-fuzz #71382 (#15854) in 17d46bb3b2
  • Fix zend_lazy_object_get_properties for object with prop ht, when init fails in GH-15825

Ayesh Karunaratne

  • ext/curl: Add CURLOPT_PREREQFUNCTION in GH-13255
  • ext/curl: libcurl CURLOPT_{FTP_RESPONSE_TIMEOUT,ENCODING} replacements in GH-15126
  • ext/curl: Update UPGRADING and NEWS for GH-13255 in GH-15668
  • ext/curl: No-op CURLOPT_DNS_USE_GLOBAL_CACHE constant (GH-15127) in 24d4ae9d2f
  • ext/gd: enable avif tests on GH-Actions in GH-15850
  • ext/mbstring: Update to Unicode 16 in 3afb96184e
  • CI: Update actions/cache in nightly run to v4 in GH-15933
  • ext/curl: mark certain tests as xfail on curl 8.10.0 in 0bdc4b8c24
  • ext/curl: Add CURLOPT_DEBUGFUNCTION option (GH-15674) in ba748e7bb5
  • ext/curl: Add CURLINFO_POSTTRANSFER_TIME_T support (GH-15849) in 99bceda0b3

Bernd Kuhls

Bob Weinand

  • Make internal run_time_cache a persistent allocation in GH-15040
  • Add API to exempt function from being traced in JIT in GH-15559

Calvin Buckley

  • Cast big endian byte shuffling to uint in 792a0e6dec
  • Fix regression on systems built without JIT in GH-16024

Christoph M. Becker

DanielEScherzer

  • Generated arginfo header files: remove empty zend_function_entry arrays in GH-15705
  • Generated arginfo header files: combine preprocessor conditional blocks in GH-15736
  • zend_get_constant_ex() - remove commented out handling of class constants in GH-15728
  • #[AllowDynamicProperties] validation: improve error messages in GH-15734
  • Fix GH-15731: Prevent #[AllowDynamicProperties] on enums in GH-15733
  • userland_declaration_error_class_const.phpt: fix test name in GH-15784
  • Rename ZEND_STR_DEPRECATED to ZEND_STR_DEPRECATED_CAPITALIZED in GH-15831
  • Add ReflectionProperty::isDynamic() as an alternative to isDefault() in GH-15758
  • readline: inline _readline_long_zval() function in GH-15840
  • Fix some misleading comments about __clone() never being executed in GH-15926
  • php_reflection.c: make a bunch of pointers const in GH-15927
  • zend_inheritance.c: make a bunch of pointers const (GH-15934) in a3583d7eef
  • zend_enum.c: make a bunch of pointers const in GH-15932
  • zend_assert_valid_class_name(): use double quotes around names in GH-15990
  • GH-15976: don't say "type alias" in GH-15996
  • zend_resolve_const_class_name_reference(): use double quotes around names in GH-15998
  • Zend/*: fix a bunch of typos (GH-16017) in ea297654f4

Daniel Ruf

Daniel Scherzer

David CARLIER

David Carlier

Derick Rethans

Dmitry Stogov

Flavio Heleno

  • Add PHP-FPM memory peak to the scoreboard in 67aac59cfc

Florian Engelhardt

  • Export opcache shared globals in GH-15543
  • Add OPcache restart hook in GH-15590

Gina Peter Banyard

  • ext/opcache/ZendAccelerator.c: Restrict MD5 header include to Windows in GH-15418
  • ext/standard: Throw a RequestParseBodyException instead of InvalidArgumentException in GH-15468
  • ext/standard: Improve checking of allowed_classes option in GH-15267
  • ext/mysqli: Minor clean-up in GH-15526
  • main/network: Use more appropriate types in GH-15511
  • Zend: Voidify virtualcwd(de)activate() in GH-15554
  • Phar offset exist issue with entry classes not based on PharFileInfo in GH-14503
  • Make CSV deprecation less annoying to deal with in GH-15569
  • ext/standard/browscap.c: Minor refactorings in GH-15885
  • Inlines the behaviour of php_mkdir_ex() into plain wrapper mkdir handler in GH-15520
  • ext/gmp: Use zend_result for type instead of int in b039af0120
  • ext/bcmath: null should not be supported for operator overloading & fix some comparison issues in GH-15875

Gina Peter Bnayard

  • Zend/zend_object_handlers.c: Remove unused include in 4a4aae540b
  • ext/phar: Use standard C types in 04320d2fba
  • ext/standard: Remove deprecated php_uint32 and php_int32 typedefs in 3e05c86c35
  • Remove unused ext/standard/basic_functions.h header inclusions in 3813ad10dc
  • ext/standard/mail.c: Reduce scope of some variable declarations in 962aba3b12
  • ext/standard/mail.c: change return type of php_mail() to bool in 312c919a2d
  • ext/standard/mail.c: Move macros out of the header in a171b20c7c
  • ext/standard/mail.c: Move php_mail_header_value_error_type enum out of header in ebfef2505d
  • ext/standard/crc32: Use zend_result return type and remove unused header in 775ca03eb8
  • ext/standard/file.c: Use RETURN_BOOL() instead of if-else in 369eeb73ca
  • ext/standard/file.c: Use more appropriate types in 9147687b6d
  • Zend: Add helper for "cannot be empty" ValueError in 96d572a18e
  • Use new helper function for "cannot be empty" ValueErrors in e7c4d54d65
  • ext/standard/exec.c: Use ZPP path modifier to check for nul bytes in 10738141d7
  • ext/gettext: Remove duplicate domain length checks in f6c464fee5
  • ext/dba: Remove duplicate check for empty mode in ad8480304d
  • ext/dom: Use standard wording for ValueError in 6d9a74cde0
  • ext/standard/string.c: use standard wording for ValueError in str_pad() in 997199e938
  • ext/mbstring: Use standard wording for ValueError in 9a2fdbec48
  • ext/pcntl: Use standard wording for ValueError in c811d58953
  • Use "must not" instead of "cannot" wording in 5853cdb73d
  • ext/hash: Specialize copy function typedef in c26e77c4c5
  • ext/hash: Make return type zend_result for serialize function typedef in 937c4e4ac6
  • ext/phar: Use standard naming for PHP functions in 947f72c181
  • ext/phar: Use size_t for string lenghts in 009039d447
  • ext/phar: Refactor part of tar.c in 03be1ac0ad
  • ext/phar: Adjust return types for methods that always return true in d015af60df
  • ext/phar: Move some header functions into util.c in 81d232fed5
  • ext/phar: Use more specialized types instead of int in 20f7e08687
  • ext/phar: Simplify a return condition in Phar::offsetExists() in 6f986837ec
  • ext/phar: Add some const qualifiers in 51bb8cfcb5
  • ext/phar: Use zend_string instead of char* len pair in d55074ede4
  • ext/phar: Reorganise some headers in f9c69bc392
  • ext/standard/quot_print.c: Minor refactoring to php_hex2int() in 5c191a45d9
  • ext/standard/quot_print.c: Mark readonly string as const in 312f789e22
  • ext/standard/string.c: Refactor php_spn_common_handler() in 1b87772f40
  • ext/standard/string.c: Remove to(upper|lower) PHP API in favour of Zend APIs in 85e6688791
  • ext/standard/type.c: Remove unused include in d45eb46c97
  • ext/standard/url.c: Stop exposing php_replace_controlchars_ex() in 8109d21065
  • ext/standard/versioning.c: Slightly refactor compare_special_version_forms() in ab99161444
  • ext/phar: Use zend_result as return value in 6adffebeb8
  • ext/phar: Reduce scope of some variables in d486d65962
  • ext/phar: Add comment about include in ae9d8099c2
  • ext/phar: Use normal variable instead of macro in 1facbc385a
  • ext/phar: Refactor flushing of archive to only take string stub file in 03e2cfdad1
  • ext/phar: Use bool instead of int in b75c79ee1d
  • ext/standard: Make char* of php_stristr() const in 3f1a4441bd
  • ext/phar: Mark constant string as static const in 290fb920f2
  • ext/phar: Move variable to inner scope in 4f9fdf841e
  • ext/phar: Voidify flush function as it always returns EOL in 2513258a2b

Go Kudo

  • libtool: Don't remove gcov *.gcno files in GH-15441
  • Fix MSan false-positive in zend_max_execution_timer in GH-15408
  • zend_max_execution_timer: fix gcc compatibility in GH-15447
  • zend_max_execution_timer: fix gcc compatibility in GH-15447
  • Update extension skeleton .gitignore in GH-15542
  • standard: supress msan in GH-15665
  • Fix OPcache tests under specific conditions in bca5f6e74f
  • Fix OPcache tests under specific conditions in d966c296d0

Ilija Tovilo

Jakub Zelenka

Jorg Adam Sowa

  • ext/session: session_create_id() now throws a ValueError for large prefix in GH-15338
  • ext/session: Warn when providing invalid values for session.gc_probability and session.gc_divisor in ff69f334f1
  • Add type indicator to array/arg unpack error messages (GH-15448) in 2a30f2ffc4
  • ext/bcmath: bcpow() performance improvement in GH-15790

Juliette

  • PHP 8.4 | Exit as function: fix incorrect parameter name in GH-15433

Kamil Tekiela

  • Remove PHP 6 leftovers and fix mysqli tests in GH-15464
  • Clean up mysqli tests in GH-15473
  • Remove mysqli_change_user_get_lock.phpt in GH-15482
  • Remove MYSQLI_STMT_ATTR_PREFETCH_ROWS constant in GH-15485
  • Drop mysqli_stmt_result_metadata_sqltests.phpt in GH-15488
  • Fix error message and add UPGRADING entry in 4baf6a643b
  • Drop MYSQLI_CURSOR_TYPE_FOR_UPDATE & MYSQLI_CURSOR_TYPE_SCROLLABLE in GH-15486
  • Fix a mistake in mysqli test in 144c086c46
  • MySQL 9: Add support for VECTOR type in GH-15431
  • Update UPGRADING in c5ae122b2f
  • Fix mysqli_stmt_get_result.phpt in GH-15495
  • Remove MYSQLI_TYPE_INTERVAL constant in c290996db6
  • Fix mysqli_fetch_field_types.phpt in 0775b99d5e
  • Deprecate disabling use_only_cookies in GH-13578
  • Remove ifdefs from stub file in 082b964dfa
  • Remove unsupported mysqlnd options in 2446500d97
  • Remove dead code in 195d59a83c

Levi Morrison

  • Interrupt while internal frame is on the stack in GH-14627

Marc Bennewitz

Michael Voříšek

  • Deprecate E_STRICT constant and remove error level in d313ad6098

Máté Kocsis

  • Suppress deprecation notices when ext/dom properties are accessed by the get_debug_info handler in GH-15530
  • Fix registration of internal readonly child classes in GH-15459
  • Use ZEND_UNCOMPARABLE for consistency in 09c498233e
  • Add missing return for DatePeriod::__unserialize in 6cab76986d
  • Add missing returns in ext/date for PHP 8.3+ in GH-15735

Niels Dossche

  • Fix NULL pointer dereference with NULL content in legacy nodes in GH-15546
  • Correctly specify secret instead of seed in ext/hash deprecation message in GH-15557
  • Fix NULL pointer dereference with NULL content in legacy nodes in title getting in GH-15558
  • Fix GH-15551: Segmentation fault (access null pointer) in ext/dom/xml_common.h in 9af574c26e
  • Fix GH-15565: --disable-ipv6 during compilation produces error EAI_SYSTEM not found in 4b6575a1f9
  • Update Lexbor in GH-15573
  • Fix GH-15570: Segmentation fault (access null pointer) in ext/dom/html5_serializer.c in 690ce6d5d4
  • Allow ZEND_ACC_VIRTUAL to be used to not have property backing storage without resorting to hooks in f78d5cfcd2
  • Use virtual annotation in XMLReader in 6c63c48a7e
  • Improve virtual property error message in baac01f594
  • Fix GH-13988: Storing DOMElement consume 4 times more memory in PHP 8.1 than in PHP 8.0 in 88393cfaf7
  • Avoid string duplication if possible in SimpleXMLElement::addAttribute() in GH-15606
  • Cleanup php_sxe_count_elements_helper() in 7f37c22d22
  • Remove unused parameter of php_sxe_reset_iterator() in 2fe8dd1054
  • Remove unused parameter from match_ns() in 9979f4748c
  • Remove failure paths for infallible code in simplexml in 51d93c1947
  • Optimize DOM property access in GH-15626
  • Fix GH-15654: Signed integer overflow in ext/dom/nodelist.c in 9cb23a3dec
  • Fix GH-15670: Polymorphic cache slot issue in DOM in GH-15676
  • Remove redundant 'zobj->ce->__isset' check in GH-15699
  • Fix GH-15690: ext-dba failures on 32-bit in GH-15691
  • Fix GH-15693: Unnecessary include in main.c bloats binary in 0d616d1b82
  • Simplify bcmath_check_scale() in f1b4e1276c
  • Move bcmath_check_scale() in 2e88916b58
  • Reuse bcmath_check_scale() in ac0931d37a
  • Fix bug #61525: SOAP functions require at least one space after HTTP header colon in 7771ec07e5
  • Deduplicate URI building code in soap schema code in GH-15799
  • Fix SOAP test failure on libxml2 2.13 in 979e68a2ec
  • Implement request #47317: SoapServer::__getLastResponse() in 8bcfc8cc13
  • Fix GH-15661: Access null pointer in Zend/Optimizer/zend_inference.c in 86ef8d5466
  • Fix GH-15658: Segmentation fault in Zend/zend_vm_execute.h in c1ffd4b484
  • Fix merge into master in 23db89538b
  • Fix buffer size configuration for AArch64 in bcd1f23b30
  • Fix bug #73182: PHP SOAPClient does not support stream context HTTP headers in array form in 72a2cbcc7f
  • Deduplicate Proxy-Authorization code from php_stream_url_wrap_http_ex() in GH-15818
  • Fix GH-15657: Segmentation fault in ext/opcache/jit/ir/dynasm/dasm_x86.h in 3665ab0118
  • Fix bug #62900: Wrong namespace on xsd import error message in 7a67fb0315
  • Fix UAF issues with PCRE after request shutdown in ded8fb79bd
  • Fix GH-15837: Segmentation fault in ext/simplexml/simplexml.c in b5834c12d4
  • Avoid allocating memory in soap get_function() in GH-15843
  • Avoid copying the local name in SOAP's parse_namespace() in GH-15862
  • Update libxml test for the directory field behaviour change in f74f9b073a
  • Update error message for libxml 2.13 in 3ec5919e14
  • Update test for changed error message format in libxml 2.13 in 3354cc6e89
  • Fix short-lived phar regression in cd232ed328
  • Fix GH-15868: Assertion failure in xml_parse_into_struct after exception in ac8db36543
  • Fix GH-15868: Assertion failure in xml_parse_into_struct after exception in 6c82ca2182
  • Fix XML serializer errata: xmlns="" serialization should be allowed in ed54d6de49
  • Fix GH-15910: Assertion failure in ext/dom/element.c in 55aa5f3ffb
  • Introduce get_serialization_string_from_zval() and use it in to_xml_string() in 56fea5995d
  • Use get_serialization_string_from_zval() in all encoding functions in ca66a11c36
  • Fix GH-15711: SoapClient can't convert BackedEnum to scalar value in 25289dd08e
  • Fix GH-15923: GDB: Python Exception <class 'TypeError'>: exceptions must derive from BaseException in 31e2ec63d8
  • Fix unsetting DOM properties in c9a4abadcc
  • NEWS for 306dedcf5e in e2da65de2a
  • Use cache slot for dom_property_exists() in GH-15941
  • Small optimization in dom_local_name_compare_ex() in GH-15950
  • Fix GH-15918: Assertion failure in ext/spl/spl_fixedarray.c in 9774cedb01
  • Fix GH-15982: Assertion failure with array_find when references are involved in 27b3131422
  • Fix GH-15908 and GH-15026: leak / assertion failure in streams.c in 018c0b3d14

Orlando Thöny

  • FPM: Remove usage of non-existing MAX_LINE_LENGTH constant in GH-5634

Peter Kokot

  • Autotools: Sync CS in sapi/fuzzer in GH-15417
  • Autotools: Sync CS in fpm SAPI in GH-15412
  • Autotools: Fix PHP_EMBED_TYPE variable substitution in GH-15414
  • Autotools: Add note about PHP_ADD_EXTENSION_DEP usage in 8853cf3ae9
  • Autotools: Sync CS in sapi/cgi in GH-15407
  • Autotools: Use AS_* macros in apache2handler SAPI in GH-15423
  • Autotools: Fix external PCRE JIT check in GH-15430
  • Autotools: Simplify PHP_SELECT_SAPI in apache2handler SAPI in GH-15444
  • Add hash extension to soap dependencies in GH-15449
  • Autotools: Remove redundant SAPI_SHARED assignment in GH-15453
  • Remove php_win32_init_gettimeofday declaration in GH-15451
  • Autotools: Replace obsolete backticks with $(...) in apache2handler in GH-15454
  • Autotools: Simplify PHP_PDO_DBLIB conditions in 0064c42215
  • Autotools: Sync CS in pdo_odbc in GH-15466
  • Autotools: Remove PHP_LIBDIR adjustment in pdo_dblib in GH-15463
  • Update ext/mbstring and ext/snmp dependencies in GH-15469
  • Autotools: Move AWK finder to PHP_INIT_BUILD_SYSTEM in GH-15478
  • Add date extension to dependencies in GH-15475
  • Autotools: Move auto_cflags marker to PHP_INIT_BUILD_SYSTEM in GH-15487
  • Fix GH-15501: Windows HAVE_<header>_H macros defined to 1 or undefined in GH-15508
  • Fix GH-15515: Configure error grep illegal option q in GH-15516
  • Fix bug GH-15514 (Configure error: genif.sh: syntax error) in 48a18e5be7
  • Autotools: Fix stack direction check in GH-15528
  • Autotools: Move Zend/zend_config.h to AC_CONFIG_COMMANDS in GH-15538
  • Autotools: Move abs_srcdir and abs_builddir to init macro in GH-15537
  • Autotools: Add min-version argument to PHP_PROG_PHP macro in GH-15477
  • Autotools: Check re2c version with AS_VERSION_COMPARE in GH-15465
  • Fix Solaris 10 build: missing libproc.h in GH-15525
  • Remove unused buffer variables in GH-15550
  • Autotools: Remove obsolete compiler reset in GH-15549
  • Autotools: Sync CS in ext/standard in GH-15560
  • Autotools: Use a no-op command in PKG_CHECK_MODULES in GH-15562
  • Fix GH-15534: Bump minimum libxml2 version to 2.9.4 in GH-15536
  • Autotools: Replace break 2 with break in GH-15563
  • Autotools: Sync CS in ext/tidy in GH-15561
  • Autotools: Simplify adding tidy cflags in GH-15577
  • Autotools: Sync CS in ext/phar in GH-15586
  • Autotools: Fix tidy library checks in GH-15576
  • Fix iconv_open basic test in GH-15611
  • Autotools: Sync CS in ext/dba in GH-15608
  • Autotools: Normalize PHP_INSTALL_HEADERS arguments in GH-15620
  • Autotools: Normalize PHP_ADD_BUILD_DIR 1st argument in GH-15612
  • Autotools: Sync CS in ext/odbc in GH-15625
  • Autotools: Normalize 2nd arg in PHP_ADD_SOURCES_X in GH-15088
  • Remove redundant HAVE_LIBREADLINE check in GH-15623
  • Autotools: Remove redundant double quotes in GH-15634
  • Autotools: Use SED variable for sed command in GH-15641
  • Autotools: Replace backticks command substitutions with $(...) in GH-15639
  • Autotools: Sync CS in ext/dba (part 2) in GH-15621
  • Trim trailing whitespace in GH-15649
  • Fix -Wunused-function warning in ext/pdo_firebird in GH-15646
  • Autotools: Replace backticks with $(...) in php.m4 in GH-15642
  • Autotools: Refactor ODBC type checks in GH-15651
  • Autotools: Add 3rd argument to dba PHP_TEMP_LDFLAGS in 558ccf7362
  • Autotools: Fix pdo_mysql build with mysql client library in GH-15450
  • Autotools: Normalize flags arguments in GH-15671
  • Autotools: Fix iconv shared build with external library in GH-15686
  • Autotools: Document PHP environment build configuration vars in GH-15684
  • Autotools: Sync CS in ext/openssl in 45ebe47569
  • Autotools: Sync CS in configure.ac in GH-15706
  • Autotools: Enhance appending -lrt in GH-15719
  • Remove Travis artefacts in GH-15714
  • Autotools: Document the EXTENSION_DIR environment variable in GH-15743
  • Autotools: Sync CS in PHP_EVAL_LIBLINE in GH-15737
  • Autotools: Mark always-shared extensions with ext_shared variable in GH-15739
  • Update skeleton extension .gitignore in GH-15738
  • Autotools: Sync CS for PHP_RUNPATH_SWITCH in GH-15768
  • Sync Zend/asm/make_ppc64_sysv_macho_gas.S with upstream in GH-15769
  • Autotools: Replace uname with host_alias for finding Solaris in GH-15770
  • Autotools: Sync CS in php.m4 in GH-15771
  • Autotools: Sync CS in PHP_PROG_AWK in GH-15772
  • Autotools: s/M4 macros/Autoconf macros in GH-15778
  • Autotools: Fix gd extension -I flag for bundled libgd in GH-15786
  • Convert CRLF line endings to LF in GH-15767
  • Autotools: Sync CS for PHP_PWRITE_TEST and PHP_PREAD_TEST in GH-15774
  • Sync Zend/*_i386_sysv_elf_gas.S with upstream in GH-15788
  • Autotools: Enable adding a list of paths in PHP_ADD_INCLUDE in GH-15777
  • Autotools: Move extension setup to main check in GH-15797
  • Autotools: Check Apache version with apxs and HTTPD_VERSION variable in GH-15476
  • Autotools: Refactor PHP_TEST_BUILD checks in GH-15798
  • Autotools: Obsolete PHP_TEST_BUILD, PHP_BUILD_THREAD_SAFE, and PHP_DEF_HAVE in GH-15802
  • Autotools: Check copy_file_range with AC_COMPILE_IFELSE in GH-15858
  • Fix -Wundef/C4668 warnings in GH-15853
  • Autotools: Fix CS in undefined sanitizer check in GH-15892
  • Remove redundant Kerberos library installation in GH-15889
  • Remove redundant spell libraries on Alpine in GH-15890

Remi Collet

  • exit_as_funtion RFC follow-up: ensure default INI settings used in status test in GH-15420
  • Implement GH-13514 PASSWORD_ARGON2 from OpenSSL 3.2 in GH-13635
  • add ZipArchive::ER_TRUNCATED_ZIP added in libzip 1.11 in GH-15959

Saki Takamachi

  • ext/bcmath: Optimize bcdiv processing in GH-14660
  • Fixed the sign to be PLUS if the result is 0 in GH-15599
  • ext/bcmath: Fixed bcdiv() div by one in GH-15629
  • Fixed LONG_MAX in BCMath ext in GH-15663
  • NEWS for ext/bcmath: Fixed bcdiv() div by one in GH-15629
  • [RFC] Support object types in BCMath in GH-13741
  • ext/bcmath: Check for scale overflow in GH-15741
  • [RFC] ext/bcmath: Added bcdivmod in GH-15740
  • Fix GH-15968: Avoid converting objects to strings in operator calculations. in GH-16021
  • update API/ABI versions in 7225a11e59
  • Update versions for PHP 8.4.0RC1 in cc09e3f8d0

Simonov Denis

tekimen

Tim Düsterhus

  • Add some entries to the performance section of UPGRADING in GH-16019

^_^

  • mysqlnd: support ER_CLIENT_INTERACTION_TIMEOUT in GH-13618

武田 憲太郎

Subscribe to PHP.Watch newsletter for monthly updates

You will receive an email on last Wednesday of every month and on major PHP releases with new articles related to PHP, upcoming changes, new features and what's changing in the language. No marketing emails, no selling of your contacts, no click-tracking, and one-click instant unsubscribe from any email you receive.

Support PHP.Watch — If you find the articles, version information, Codex, and other PHP.Watch contributions useful, consider supporting through GitHub Sponsors. Your sponsorship helps dedicate more time to creating valuable content and improving the PHP community. Together, we can keep the momentum going — thank you for your support!

Thanks to the highest tier sponsor: @TomasVotruba for your generous support to keep PHP.Watch moving 💜