Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:128456 X-Original-To: internals@lists.php.net Delivered-To: internals@lists.php.net Received: from php-smtp4.php.net (php-smtp4.php.net [45.112.84.5]) by lists.php.net (Postfix) with ESMTPS id A27E11A00BC for ; Wed, 13 Aug 2025 09:00:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1755075545; bh=y2RBRhs8cJBtDe0MMACEq0bXpqENqzlgbR8+wUsp+l8=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=IXZR4lXWbeRIF2cqUzTFesDGpBGaiSHKh/4NvwU9KeQl8dwqx71h4cUO+JNWd7B0C IiK0ifEreprKh2Nons/1uy2dUN1RdQzoQw0MwmOl5R6a6K547UcB1xsiVYi/D3agG8 A8IVqs/+O1XfuxVLlnr/x00SL+AE4rh1gtwHwkZHKBrZIxVSV4QMbn0XHEIO45yPJL 57yg2HkL+AiSoJKLNCAHztEMeKX850lt9D0D6lg8V9O/IjFEUiBEK2qYEPrSw6N5hL 3oCVpSnUUrbchE/6FlUgBGVKmGyKzLGOSeHpWK547gqPCChc0vQUAzGA6IKtrAB/Ey uuFmZvQgLSr2w== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 14919180077 for ; Wed, 13 Aug 2025 08:59:05 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS,FREEMAIL_FROM, HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: No X-Envelope-From: Received: from mail-qt1-f178.google.com (mail-qt1-f178.google.com [209.85.160.178]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Wed, 13 Aug 2025 08:59:04 +0000 (UTC) Received: by mail-qt1-f178.google.com with SMTP id d75a77b69052e-4b104fd2bcfso348611cf.0 for ; Wed, 13 Aug 2025 02:00:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1755075641; x=1755680441; darn=lists.php.net; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=y2RBRhs8cJBtDe0MMACEq0bXpqENqzlgbR8+wUsp+l8=; b=kBlpl+1ZQr589YadLVXHnkMj2UzOR1/vkGan43QZ0eeTp/Ci+sQNkCa87RP/EK3i6a H65z2A9Ho60ck/ib/XixR9gWfTGAgr1k0TO4Z9/9Q+E2lEv33YN6PMyuz/t5ZUuUWJqk pgNIrnw6DB1Ym9elOhPtN72FG//vFowN+iJFZSWfai5AchQRu11RB2TXzMrfF56eppni 5w6H5QgOoTxZ3hfr34QgEYCKK03qyTR0f9JEYPuuuxBvOc5pIPfCa3Xzy2XpGMnZdCeV WGDBep+XuXFjfLvsh5q3qBQC9/TFgvzZv56Q2yzXZqnla+fYAGHEj8L8u1z/v2fPqZLS ntdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1755075641; x=1755680441; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=y2RBRhs8cJBtDe0MMACEq0bXpqENqzlgbR8+wUsp+l8=; b=qK8KVP5+2zbshGUGmbDsrAYaecPRcZZXBr+9L18ix3d84bcJo5qpP9B3Ot+35Dw4eo dOiBb4Js8qjac+hNyyI/LfZJvPCSNSVyjQLgL2OgRDZQD0p+NRb1YQu0CDHJlwl6A4fM PTJebO5aVpJZZZciFuFsRHhJLSpX4AphAILXO6rtuKgzBfWANeYtMqKPSSWHt0Pg1nrL NXX+9Bfu2CYBb5dRgOgqdvgn4x3OPfdXNVfuj2ehRx3sk1rPo+githB0QrFSWdYQBdCW n9zpXCyLrwj2gKFrcCjCcEJviRaueHrN8mX0BvBtRCWSnj99PPGjxlyuAl2pi957A8Ap kqDw== X-Gm-Message-State: AOJu0YxGh6KtkjDciQjo07zOyvaEmd7/9oOhD+oKsE2fieMu6zRPGk71 WL8+MoNwNP0bmISnAeOOrojR+QMyAtbOsXohHDVeTb5JTKFyXxyVc/miUeJ5emlvm23pLXVFRnX ZUvCJlu7ZKKVxelxYmwE/MTj0ZwYXcgw= X-Gm-Gg: ASbGncuYbfVfZ3X1OOmpn2ud0EzZyrcWc3bDOfQ5JZ5duANoR1heDFjSoxoB5BLNoE+ RqMcSG6q/T090PnWXOgVtZLqmuzUYw/cdl6B2ZpENLP+jV6xETdrnMKUh3D/ArbT7XlMeo+cM8W RCjEeZxm2SQPP2dkfsz14U5sRNP1ah3vIV+vIHbeEfpHZi7SW2cznm75l/Ho+7qxm2M9xhhNGCp 4Q5I8e5CPYXS5fDRUXCQZUVQT+mKwL46ilZ7dJTeQ== X-Google-Smtp-Source: AGHT+IHhaKN/Q09j+9J4Wskk9CCrhiQYKAbQWOv7dRdMjz3Z6hq/EQLmjOykn0IrSLzEEzYuAZXfU95O/41CnvJubwA= X-Received: by 2002:ac8:6f10:0:b0:4b0:7915:9765 with SMTP id d75a77b69052e-4b0fc8acc36mr32269831cf.49.1755075641321; Wed, 13 Aug 2025 02:00:41 -0700 (PDT) Precedence: list list-help: list-post: List-Id: x-ms-reactions: disallow MIME-Version: 1.0 References: In-Reply-To: Date: Wed, 13 Aug 2025 11:00:29 +0200 X-Gm-Features: Ac12FXwc4osPArZ36SsVtohrgUV4MxjBjc2oRP5-3131Jt0u-qqkvcDQ0l53kKc Message-ID: Subject: Re: [PHP-DEV] [RFC] [VOTE] Deprecations for PHP 8.5 To: "Gina P. Banyard" Cc: PHP internals Content-Type: multipart/alternative; boundary="00000000000027abaf063c3b6495" From: nicolas.grekas+php@gmail.com (Nicolas Grekas) --00000000000027abaf063c3b6495 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Le ven. 8 ao=C3=BBt 2025 =C3=A0 22:10, Gina P. Banyard = a =C3=A9crit : > On Friday, 25 July 2025 at 13:56, Gina P. Banyard > wrote: > > > Hello internals, > > > > As Tim announced a few days ago, I've opened the votes for the > deprecations: > > https://wiki.php.net/rfc/deprecations_php_8_5 > > > > Please remember that the wiki is only capable to handle a single vote a= t > a time, > > so please submit each vote you intend on casting individually. > > > > Hello internals, > > After two weeks of voting, I closed the votes of the "Deprecations for PH= P > 8.5" RFC at 19:45 UTC. > > The following proposals have been accepted: > > - Deprecate semicolon after case in switch statement (22 yay, 10 nay, > 68.8%) > - Deprecate non-standard cast names (32 yay, 0 nay, 100%) > - Deprecate backticks as an alias for shell_exec (21 yay, 8 nay, 72.4%) > - Deprecate the __sleep() and __wakeup() magic methods (18 yay, 9 nay, > 66.7%) > - Deprecate using values null as an array offset and when calling > array_key_exists() (25 yay, 3 nay, 89.3%) > - Deprecate __debugInfo() returning null (22 yay, 5 nay, 81.5%) > - Deprecate constant redeclaration (31 yay, 0 nay, 100%) > - Deprecate closure binding issues (29 yay, 0 nay, 100%) > - Enact follow-up phase of the "Path to Saner Increment/Decrement > operators" RFC (23 yay, 4 nay, 85.2%) > - Deprecate the report_memleaks INI directive (23 yay, 2 nay, 92.0%) > - Deprecate the register_argc_argv INI directive (27 yay, 0 nay, 100%) > - Remove disable_classes INI setting (26 yay, 0 nay, 100%) > - Deprecate Reflection*::setAccessible() (24 yay, 0 nay, 100%) > - Deprecate ReflectionClass::getConstant() for missing constants (25 yay, > 0 nay, 100%) > - Deprecate ReflectionProperty::getDefaultValue() for properties without > default values (21 yay, 2 nay, 89.5%) > - Deprecate ArrayObject and ArrayIterator with objects (26 yay, 0 nay, > 100%) > - Deprecate SplObjectStorage::contains(), SplObjectStorage::attach(), and > SplObjectStorage::detach() (17 yay, 2 nay, 89.5%) > - Deprecate passing spl_autoload_call() to spl_autoload_unregister() (23 > yay, 0 nay, 100%) > - Deprecate the $exclude_disabled parameter of get_defined_functions() (2= 3 > yay, 0 nay, 100%) > - Deprecate passing null to readdir(), rewinddir(), and closedir() (24 > yay, 3 nay, 88.9%) > - Deprecate passing string which are not one byte long to ord() (20 yay, = 4 > nay, 83.3%) > - Deprecate passing integers outside the interval [0, 255] to chr() (21 > yay, 1 nay, 95.5%) > - Formally deprecate socket_set_timeout (22 yay, 0 nay, 100%) > - Deprecate the $http_response_header predefined variable (22 yay, 2 nay, > 91.7%) > - [ODBC] Remove flags for building against specific drivers directly (16 > yay, 0 nay, 100%) > - Remove support for older ODBC versions (15 yay, 0 nay, 100%) > - Deprecate PDO's 'uri:' scheme (22 yay, 0 nay, 100%) > - Deprecate driver specific PDO constants and methods (17 yay, 6 nay, > 73.9%) > - Deprecate Pdo\Pgsql constants related to statement transaction state (1= 7 > yay, 0 nay, 100%) > - Deprecate finfo_close() (24 yay, 2 nay, 92.3%) > - Deprecate xml_parser_free() (22 yay, 2 nay, 91.7%) > - Deprecate curl_close() (23 yay, 3 nay, 88.5%) > - Deprecate curl_share_close() (23 yay, 3 nay, 88.5%) > - Deprecate imagedestroy() (23 yay, 2 nay, 92.0%) > - Deprecate key_length parameter of openssl_pkey_derive() (24 yay, 0 nay, > 100%) > - Deprecate intl.error_level INI setting (22 yay, 0 nay, 100%) > - Formally deprecate mysqli_execute() (22 yay, 0 nay, 100%) > - Deprecate building ext/ldap against Oracle LDAP (19 yay, 0 nay, 100%) > - Deprecate the $context parameter for finfo_buffer() (24 yay, 0 nay, 100= %) > - Deprecate DATE_RFC7231 and DateTimeInterface::RFC7231 (22 yay, 0 nay, > 100%) > > And the following proposals have been rejected: > > - Deprecate attributes applying to multiple class properties/constants (5 > yay, 19 nay, 20.8%) > - Deprecate ReflectionParameter::allowsNull() (9 yay, 10 nay, 47.4%) > - Deprecate non-canonical type names for settype() (8 yay, 10 nay, 44.4%) > - Deprecate FILTER_DEFAULT constant (12 yay, 10 nay, 54.5%) > - Make $filter parameter mandatory for filter_*() functions (9 yay, 10 > nay, 47.4%) > - Deprecate PDO::ERRMODE_WARNING error mode (8 yay, 12 nay, 40.0%) > > Thank you to everyone that has voted and participated in the discussions. > > Best regards, > > Gina P. Banyard > I=E2=80=99d like to raise some concerns about the decision to deprecate __s= leep() and __wakeup(). While I understand the intention behind moving toward __serialize() and __unserialize(), in practice the migration path is often non-trivial. For example, in Symfony=E2=80=99s codebase there are numerous cases where switc= hing requires deep knowledge of PHP=E2=80=99s serialization format to maintain compatibility with existing payloads. This is essential so that updated applications can still communicate with older versions. For many projects, this will be a significant burden, especially given that __sleep() and __wakeup() have historically worked well for these use cases. I=E2=80=99m concerned that the practical cost to the community may outweigh= the benefits, particularly since the rationale for removal seems, at least from a user=E2=80=99s perspective, debatable. I don=E2=80=99t know if there is room to reconsider the deprecation, but I = wanted to share this perspective from the field. Cheers, Nicolas --00000000000027abaf063c3b6495 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable


Le=C2=A0ven. 8 = ao=C3=BBt 2025 =C3=A0=C2=A022:10, Gina P. Banyard <internals@gpb.moe>= a =C3=A9crit=C2=A0:
On Friday, 25 July 2025 at 13:56, Gina P. Banyard <internals@gpb.mo= e> wrote:

> Hello internals,
>
> As Tim announced a few days ago, I've opened the votes for the dep= recations:
> https://wiki.php.net/rfc/deprecations_php_8_5<= br> >
> Please remember that the wiki is only capable to handle a single vote = at a time,
> so please submit each vote you intend on casting individually.
>

Hello internals,

After two weeks of voting, I closed the votes of the "Deprecations for= PHP 8.5" RFC at 19:45 UTC.

The following proposals have been accepted:

- Deprecate semicolon after case in switch statement (22 yay, 10 nay, 68.8%= )
- Deprecate non-standard cast names (32 yay, 0 nay, 100%)
- Deprecate backticks as an alias for shell_exec (21 yay, 8 nay, 72.4%)
- Deprecate the __sleep() and __wakeup() magic methods (18 yay, 9 nay, 66.7= %)
- Deprecate using values null as an array offset and when calling array_key= _exists() (25 yay, 3 nay, 89.3%)
- Deprecate __debugInfo() returning null (22 yay, 5 nay, 81.5%)
- Deprecate constant redeclaration (31 yay, 0 nay, 100%)
- Deprecate closure binding issues (29 yay, 0 nay, 100%)
- Enact follow-up phase of the "Path to Saner Increment/Decrement oper= ators" RFC (23 yay, 4 nay, 85.2%)
- Deprecate the report_memleaks INI directive (23 yay, 2 nay, 92.0%)
- Deprecate the register_argc_argv INI directive (27 yay, 0 nay, 100%)
- Remove disable_classes INI setting (26 yay, 0 nay, 100%)
- Deprecate Reflection*::setAccessible() (24 yay, 0 nay, 100%)
- Deprecate ReflectionClass::getConstant() for missing constants (25 yay, 0= nay, 100%)
- Deprecate ReflectionProperty::getDefaultValue() for properties without de= fault values (21 yay, 2 nay, 89.5%)
- Deprecate ArrayObject and ArrayIterator with objects (26 yay, 0 nay, 100%= )
- Deprecate SplObjectStorage::contains(), SplObjectStorage::attach(), and S= plObjectStorage::detach() (17 yay, 2 nay, 89.5%)
- Deprecate passing spl_autoload_call() to spl_autoload_unregister() (23 ya= y, 0 nay, 100%)
- Deprecate the $exclude_disabled parameter of get_defined_functions() (23 = yay, 0 nay, 100%)
- Deprecate passing null to readdir(), rewinddir(), and closedir() (24 yay,= 3 nay, 88.9%)
- Deprecate passing string which are not one byte long to ord() (20 yay, 4 = nay, 83.3%)
- Deprecate passing integers outside the interval [0, 255] to chr() (21 yay= , 1 nay, 95.5%)
- Formally deprecate socket_set_timeout (22 yay, 0 nay, 100%)
- Deprecate the $http_response_header predefined variable (22 yay, 2 nay, 9= 1.7%)
- [ODBC] Remove flags for building against specific drivers directly (16 ya= y, 0 nay, 100%)
- Remove support for older ODBC versions (15 yay, 0 nay, 100%)
- Deprecate PDO's 'uri:' scheme (22 yay, 0 nay, 100%)
- Deprecate driver specific PDO constants and methods (17 yay, 6 nay, 73.9%= )
- Deprecate Pdo\Pgsql constants related to statement transaction state (17 = yay, 0 nay, 100%)
- Deprecate finfo_close() (24 yay, 2 nay, 92.3%)
- Deprecate xml_parser_free() (22 yay, 2 nay, 91.7%)
- Deprecate curl_close() (23 yay, 3 nay, 88.5%)
- Deprecate curl_share_close() (23 yay, 3 nay, 88.5%)
- Deprecate imagedestroy() (23 yay, 2 nay, 92.0%)
- Deprecate key_length parameter of openssl_pkey_derive() (24 yay, 0 nay, 1= 00%)
- Deprecate intl.error_level INI setting (22 yay, 0 nay, 100%)
- Formally deprecate mysqli_execute() (22 yay, 0 nay, 100%)
- Deprecate building ext/ldap against Oracle LDAP (19 yay, 0 nay, 100%)
- Deprecate the $context parameter for finfo_buffer() (24 yay, 0 nay, 100%)=
- Deprecate DATE_RFC7231 and DateTimeInterface::RFC7231 (22 yay, 0 nay, 100= %)

And the following proposals have been rejected:

- Deprecate attributes applying to multiple class properties/constants (5 y= ay, 19 nay, 20.8%)
- Deprecate ReflectionParameter::allowsNull() (9 yay, 10 nay, 47.4%)
- Deprecate non-canonical type names for settype() (8 yay, 10 nay, 44.4%) - Deprecate FILTER_DEFAULT constant (12 yay, 10 nay, 54.5%)
- Make $filter parameter mandatory for filter_*() functions (9 yay, 10 nay,= 47.4%)
- Deprecate PDO::ERRMODE_WARNING error mode (8 yay, 12 nay, 40.0%)

Thank you to everyone that has voted and participated in the discussions.
Best regards,

Gina P. Banyard

I=E2=80=99d like to raise so= me concerns about the decision to deprecate __sleep() and __wakeup().
While I understand the intention behind moving toward __serialize() and _= _unserialize(), in practice the migration path is often non-trivial. For ex= ample, in Symfony=E2=80=99s codebase there are numerous cases where switchi= ng requires deep knowledge of PHP=E2=80=99s serialization format to maintai= n compatibility with existing payloads. This is essential so that updated a= pplications can still communicate with older versions.

For many proj= ects, this will be a significant burden, especially given that __sleep() an= d __wakeup() have historically worked well for these use cases. I=E2=80=99m= concerned that the practical cost to the community may outweigh the benefi= ts, particularly since the rationale for removal seems, at least from a use= r=E2=80=99s perspective, debatable.

I don=E2=80=99t know if there is= room to reconsider the deprecation, but I wanted to share this perspective= from the field.

Cheers,
Nicolas
--00000000000027abaf063c3b6495--