Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:121249 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 35864 invoked from network); 6 Oct 2023 14:12:46 -0000 Received: from unknown (HELO php-smtp4.php.net) (45.112.84.5) by pb1.pair.com with SMTP; 6 Oct 2023 14:12:46 -0000 Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 8A3A51804F5 for ; Fri, 6 Oct 2023 07:12:45 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=BAYES_00,BODY_8BITS, HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.2 X-Spam-ASN: AS34011 80.237.132.0/24 X-Spam-Virus: No X-Envelope-From: Received: from wp160.webpack.hosteurope.de (wp160.webpack.hosteurope.de [80.237.132.167]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Fri, 6 Oct 2023 07:12:44 -0700 (PDT) Received: from [176.95.78.98] (helo=[192.168.3.113]); authenticated by wp160.webpack.hosteurope.de running ExIM with esmtpsa (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) id 1qolZK-0001RZ-RR; Fri, 06 Oct 2023 16:12:42 +0200 Message-ID: <773cf24d-c6a6-4660-b41c-ee8f2165c89f@mabe.berlin> Date: Fri, 6 Oct 2023 16:12:42 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: internals@lists.php.net References: Content-Language: en-US Autocrypt: addr=marc@mabe.berlin; keydata= xsBNBFby8roBCAD4qHjbk9+V3SmB5DfpkTtX58jYJ9VXVfF54MDoI0fQiYvKyrrghfO78alH c12RsEZxLH2F5kEfu8WO4wA4apg2gBnRRxqPj7krsct1ySOAdMrRVp8Wtaeaznpdcn2gJZyA MSI6LTzebT25N77ksvSrUi1BuCKyOa7SmYff3xGgOwYsHQlT5opMNGPCVegiPmO/K37anwts gj6L7RVtjXtp2Z3wAs6r3EmO318PL48xDLUgYMvEFAPJglth5FGH2En6n6HFIhxh43LqXQiN eHVjLjS2y8huNBswwc9ZVxk3ip5z/GCmpWnNkgGBOSJ7loJRsq2tOaU6yU8KWb5rhOoFABEB AAHNIU1hcmMgQmVubmV3aXR6IDxtYXJjQG1hYmUuYmVybGluPsLAeAQTAQIAIgUCVvLyugIb AwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQOTar91O8iM6jzggAwvV6MqU/hcAI6ldp xVjucGz2J9cAWtva8GL+rm9zvEs7EENtamehJiZob/CTw50WiI/zsJzPblktpT0D2AFBEp9k P5/8CmCpZzxYPsxnLtsFM52fOBpO+aP0PSStBpJjndjBH7HPqKcTCXM3ZM+SL6lyRweAJR7G +JXIZbuUrbjB2lbGx3itNZ6TeXqqnE6KTXNKLEbNHfVdzE4sPDkmuZRo/M2h+gmeS1iQb29W BmhvL6czugCQI9rYl7C4Nci9wPii1lTYyfCWQfQKID4/F2HiOv+N/vDMCK1xV8TUeCy8w4X+ nYj+wDog046ki9lUM60oPij6WoSJLqfsXr1kNc7ATQRW8vK6AQgAq7QYLB1Dz+8RSi5AGJP1 tOFQXtcxyOhNVQZsI1mCQiHay4wteQ+5m4EOUuR+FrFIlnbSrPdTkKD2wvQDHVqpZivThBpJ vara/ick0wi2R3dasu1sPMu1P6h1EwUsydhviNJB07aLfPAWD6eoqmGTd8236znIIq7mbnNp OnxIQxviTyELUekrNw38uQtVzR6XZv9PAThA2o1J1JZID7QUpKcNyo9ebYlwxyS+xzhA4DLD qfD6O5sKoKvxEf2fIZeP0ETPpHNYk0WiWnmNoPy8eEY07LriYALVidBwPBcxus0wGoKf8Nun y2aE13SHmj0ioBI1bXMGJx3hEbvzXK6WrwARAQABwsBfBBgBAgAJBQJW8vK6AhsMAAoJEDk2 q/dTvIjOkowIAI70P8U4j3eqyK/7x1bnCZZRcpwZ1aH+LR1yMKTINo9NDqlOBWQTLT69YMfV 4UN+nTSiD/uLw1fSeLSzBwpoalCMLPVOX/d3Mq5JtL5cKtWUTIVf3Vb7VbN4Rvb8HgWjeSnM 1PiG9yQBmLKI68sG/gdgvA/xANdUatkDgG0yj8PCdt+Vy4EblXbIAXZXJ6eRugSKowTjst7i HXKOJxivomHFcmqmkiqjwGTGx/jrhbDtEpPDRk+U9W45D4CbUcyPR6lMSrje5JPGQDv/45M5 wPe286YelBjnb0cWRJpA7GZCWDKZOsQ2H6cCRBi8i4m+vfRk7GLA536XnmvWxKFVP9U= In-Reply-To: Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------pZXTtdMfj9ph0d4KZmzPz02J" X-bounce-key: webpack.hosteurope.de;marc@mabe.berlin;1696601565;5f40a9ca; X-HE-SMSGID: 1qolZK-0001RZ-RR Subject: Re: [PHP-DEV] [RFC] [Discussion] Rounding Integers as int From: marc@mabe.berlin (Marc Bennewitz) --------------pZXTtdMfj9ph0d4KZmzPz02J Content-Type: multipart/mixed; boundary="------------MXGT0VM8BWTnK2EoCfv7WBCN"; protected-headers="v1" From: Marc Bennewitz To: internals@lists.php.net Message-ID: <773cf24d-c6a6-4660-b41c-ee8f2165c89f@mabe.berlin> Subject: Re: [PHP-DEV] [RFC] [Discussion] Rounding Integers as int References: In-Reply-To: --------------MXGT0VM8BWTnK2EoCfv7WBCN Content-Type: multipart/mixed; boundary="------------AX7agXkQcg3KcnUkiGv1vmPU" --------------AX7agXkQcg3KcnUkiGv1vmPU Content-Type: multipart/alternative; boundary="------------c0Uzi0rZNltsZZy2d5YRfRqj" --------------c0Uzi0rZNltsZZy2d5YRfRqj Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkgR2VvcmdlLA0KDQpPbiAwNS4xMC4yMyAxNDoxMiwgRy4gUC4gQi4gd3JvdGU6DQo+IE9u IFRodSwgNSBPY3QgMjAyMyBhdCAwNzo0MCwgTWFyYyBCZW5uZXdpdHo8bWFyY0BtYWJlLmJl cmxpbj4gIHdyb3RlOg0KPg0KPj4gSSBkb24ndCBzZWUgYSBidWcgb3IgYnJva2VuIGJlaGF2 aW9yIGhlcmUgYXMgdGhlc2UgZnVuY3Rpb25zIHdlcmUNCj4+IHByb2Nlc3NpbmcgZmxvYXRp bmcgcG9pbnQgbnVtYmVycyBzaW5jZSAuLi4uIGZvcmV2ZXIuDQo+Pg0KPj4gaHR0cHM6Ly8z djRsLm9yZy9QcnJtTw0KPj4NCj4gVGhhdCdzIG5vdCBteSBwb2ludCwgdGhlIHBvaW50IGlz IGFib3V0IHRoZSBmdW5jdGlvbiBiZWluZyBicm9rZW4gZm9yIGxhcmdlDQo+IDY0Yml0IGlu dGVnZXJzLCB3aGljaCB5b3VyIFJGQyBpcyBmaXhpbmcuDQo+DQo+IEkgd291bGQgYWxzbyBl eHBlY3QgbW9zdCBwZW9wbGUgdGhhdCBhY3R1YWxseSB1c2UgY2VpbC9mbG9vci9yb3VuZCB0 byBkdW1wDQo+IHRoZSByZXR1cm4gdmFsdWUgb2YgaXQgaW50byBhIHByb3BlcnR5L3ZhbHVl IHRoYXQgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gaW50Lg0KPiBXaGljaCBpcyBhbHNvIGNvbXBh dGlibGUgZm9yIGZsb2F0cyB0aGF0IGZpdCBpbiBhbiBpbnQgKGFuZCBzaW5jZSA4LjIgZm9y DQo+IHRob3NlIHRoYXQgaGF2ZSBhIGZyYWN0aW9uYWwgcGFydCBhIHdhcm5pbmcgaXMgZW1p dHRlZCkuDQo+DQo+IEkgc2VlIG5vIGJlbmVmaXQgaW4gZG9pbmcgdGhpcyB3ZWlyZCBhcHBy b2FjaCBpbnN0ZWFkIG9mIGp1c3QgY2hhbmdpbmcgdGhlDQo+IGJlaGF2aW91ci4NCj4gWWVz IHRoaXMgaXMgYSB0aGVvcmV0aWNhbCBCQyBicmVhayBbMV0sIGJ1dCB1bmxlc3MgeW91IGNh biBzaG93IG1lIGFuDQo+IGFjdHVhbCB1c2UgY2FzZSB0aGF0IGJyZWFrcyAoYW5kIGV2ZW4g dGhlbikgSSBkb24ndCB0aGluayB0aGUgYXBwcm9hY2ggb2YNCj4gdGhpcyBSRkMgaXMgZ29v ZC4NCg0KUnVubmluZyBhIHF1aWNrIGNvZGUgc2VhcmNoIC9yb3VuZFwoW15cKF0rXClccz09 PS8gbGFuZ3VhZ2U6UEhQIG9uIA0KR2l0SHViIGZpbmRzIHBvc3NpYmxlIGJyZWFrYWdlcyBi YXNlZCBvbiBzdHJpY3QgY29tcGFyaXNvbjoNCg0KIMKgwqDCoCAvLyBpZiB3aWR0aCBhbmQg aGVpZ2h0IGFyZSBpbnRzDQogwqDCoMKgICR4ID0gKCAkaGVpZ2h0MSAvICR3aWR0aDEgKSAq ICR3aWR0aDI7DQogwqAgwqAgaWYgKCByb3VuZCggJHggKSA9PT0gcm91bmQoICRoZWlnaHQy ICkgKSB7DQoNCiDCoMKgwqAgLy8gaWYgbnVtYmVyIGlzIGludA0KIMKgwqDCoCBwdWJsaWMg c3RhdGljIGZ1bmN0aW9uIGlzWmVybygkbnVtYmVyLCAkcHJlY2lzc2lvbiA9IDIpDQogwqDC oMKgIHsNCiDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcm91bmQoJG51bWJlciwgJHByZWNpc3Np b24pID09PSAwLjA7DQogwqDCoMKgIH0NCg0KIMKgwqDCoCAvLyB3aGVyZSBlY2IgaXMgaW50 DQogwqDCoMKgIHJldHVybiAkZWNiICYmIHJvdW5kKDUwMDAgLyAkZWNiKSA9PT0gMi4wOw0K DQoNCg0KDQo+IEdlb3JnZSBQLiBCYW55YXJkDQo+DQo+IFsxXSBBbmQgdGhpcyBpcyBjb21p bmcgZnJvbSBtZSwgd2hvIGRvZXMgbG92ZSBmaW5kaW5nIHdlaXJkIGVkZ2UgY2FzZXMgYW5k DQo+IHJlbW92ZSB0aGVtIGZyb20gdGhlIGxhbmd1YWdlLCBqdXN0IGxvb2sgYXQgdGhlIDgu MyByYW5nZSgpIFJGQw0KPg0K --------------c0Uzi0rZNltsZZy2d5YRfRqj Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

Hi George,

On 05.10.23 14:12, G. P. B. wrote:
=
On Thu, 5 Oct 2023 at 07:40,=
 Marc Bennewitz <marc@mabe.berlin> wrote:

I don't see a bug or broke=
n behavior here as these functions were
processing floating point numbers since .... forever.

https:=
//3v4l.org/PrrmO

That's not my point, the poi=
nt is about the function being broken for large
64bit integers, which your RFC is fixing.

I would also expect most people that actually use ceil/floor/round to dum=
p
the return value of it into a property/value that is expected to be an in=
t.
Which is also compatible for floats that fit in an int (and since 8.2 for=

those that have a fractional part a warning is emitted).

I see no benefit in doing this weird approach instead of just changing th=
e
behaviour.
Yes this is a theoretical BC break [1], but unless you can show me an
actual use case that breaks (and even then) I don't think the approach of=

this RFC is good.

Running a quick code search /round\([^\(]+\)\s=3D=3D=3D/ language:= PHP=C2=A0 on GitHub finds possible breakages based on strict comparison:

=C2=A0=C2=A0=C2=A0 // if wid= th and height are ints
=C2=A0=C2=A0=C2=A0 $x =3D ( $height1 / $width1 ) * $width2;
=C2=A0 =C2=A0 if
( round( $x
) =3D=3D=3D round( $height2 ) ) = {

=C2=A0=C2=A0=C2=A0 // if number is int
=C2=A0=C2=A0=C2=A0 public static function isZero($number, $precissi= on =3D 2)
=C2=A0=C2=A0=C2=A0 {
=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return round($number, $p= recission) =3D=3D=3D 0.0;
=C2=A0=C2=A0=C2=A0 }=C2=A0=C2=A0=C2=A0

=C2=A0=C2=A0=C2=A0 // where ecb is int
=C2=A0=C2=A0=C2=A0 return $ecb && round(5000 / $ecb) =3D=3D= =3D 2.0;




George P. Banyard

[1] And this is coming from me, who does love finding weird edge cases an=
d
remove them from the language, just look at the 8.3 range() RFC

--------------c0Uzi0rZNltsZZy2d5YRfRqj-- --------------AX7agXkQcg3KcnUkiGv1vmPU Content-Type: application/pgp-keys; name="OpenPGP_0x3936ABF753BC88CE.asc" Content-Disposition: attachment; filename="OpenPGP_0x3936ABF753BC88CE.asc" Content-Description: OpenPGP public key Content-Transfer-Encoding: quoted-printable -----BEGIN PGP PUBLIC KEY BLOCK----- xsBNBFby8roBCAD4qHjbk9+V3SmB5DfpkTtX58jYJ9VXVfF54MDoI0fQiYvKyrrg hfO78alHc12RsEZxLH2F5kEfu8WO4wA4apg2gBnRRxqPj7krsct1ySOAdMrRVp8W taeaznpdcn2gJZyAMSI6LTzebT25N77ksvSrUi1BuCKyOa7SmYff3xGgOwYsHQlT 5opMNGPCVegiPmO/K37anwtsgj6L7RVtjXtp2Z3wAs6r3EmO318PL48xDLUgYMvE FAPJglth5FGH2En6n6HFIhxh43LqXQiNeHVjLjS2y8huNBswwc9ZVxk3ip5z/GCm pWnNkgGBOSJ7loJRsq2tOaU6yU8KWb5rhOoFABEBAAHNIU1hcmMgQmVubmV3aXR6 IDxtYXJjQG1hYmUuYmVybGluPsLAeAQTAQIAIgUCVvLyugIbAwYLCQgHAwIGFQgC CQoLBBYCAwECHgECF4AACgkQOTar91O8iM6jzggAwvV6MqU/hcAI6ldpxVjucGz2 J9cAWtva8GL+rm9zvEs7EENtamehJiZob/CTw50WiI/zsJzPblktpT0D2AFBEp9k P5/8CmCpZzxYPsxnLtsFM52fOBpO+aP0PSStBpJjndjBH7HPqKcTCXM3ZM+SL6ly RweAJR7G+JXIZbuUrbjB2lbGx3itNZ6TeXqqnE6KTXNKLEbNHfVdzE4sPDkmuZRo /M2h+gmeS1iQb29WBmhvL6czugCQI9rYl7C4Nci9wPii1lTYyfCWQfQKID4/F2Hi Ov+N/vDMCK1xV8TUeCy8w4X+nYj+wDog046ki9lUM60oPij6WoSJLqfsXr1kNc7A TQRW8vK6AQgAq7QYLB1Dz+8RSi5AGJP1tOFQXtcxyOhNVQZsI1mCQiHay4wteQ+5 m4EOUuR+FrFIlnbSrPdTkKD2wvQDHVqpZivThBpJvara/ick0wi2R3dasu1sPMu1 P6h1EwUsydhviNJB07aLfPAWD6eoqmGTd8236znIIq7mbnNpOnxIQxviTyELUekr Nw38uQtVzR6XZv9PAThA2o1J1JZID7QUpKcNyo9ebYlwxyS+xzhA4DLDqfD6O5sK oKvxEf2fIZeP0ETPpHNYk0WiWnmNoPy8eEY07LriYALVidBwPBcxus0wGoKf8Nun y2aE13SHmj0ioBI1bXMGJx3hEbvzXK6WrwARAQABwsBfBBgBAgAJBQJW8vK6AhsM AAoJEDk2q/dTvIjOkowIAI70P8U4j3eqyK/7x1bnCZZRcpwZ1aH+LR1yMKTINo9N DqlOBWQTLT69YMfV4UN+nTSiD/uLw1fSeLSzBwpoalCMLPVOX/d3Mq5JtL5cKtWU TIVf3Vb7VbN4Rvb8HgWjeSnM1PiG9yQBmLKI68sG/gdgvA/xANdUatkDgG0yj8PC dt+Vy4EblXbIAXZXJ6eRugSKowTjst7iHXKOJxivomHFcmqmkiqjwGTGx/jrhbDt EpPDRk+U9W45D4CbUcyPR6lMSrje5JPGQDv/45M5wPe286YelBjnb0cWRJpA7GZC WDKZOsQ2H6cCRBi8i4m+vfRk7GLA536XnmvWxKFVP9U=3D =3Doi2m -----END PGP PUBLIC KEY BLOCK----- --------------AX7agXkQcg3KcnUkiGv1vmPU-- --------------MXGT0VM8BWTnK2EoCfv7WBCN-- --------------pZXTtdMfj9ph0d4KZmzPz02J Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature.asc" -----BEGIN PGP SIGNATURE----- wsB5BAABCAAjFiEENJIbKB0SAX2RmUKbOTar91O8iM4FAmUgFdoFAwAAAAAACgkQOTar91O8iM5D lQf+I6uuxSH+4Yx9cz+X7vdNGsinHLbOTxyItD/faiTkUnm/OcKzr5m7WeopInbpVtN65DDgrpYx 4RP/dhVVSLTVkEndxoaap3fU0EIoJ9xzKI2UB9hru5sPxXvZu254UD71OuuOtrAb25fRaTmBw6kP b7deVzujSts9PhKp7+OsdtNKqS+KUqluFtwDVEd7MEmrNnrLiE5P1XsMqHU5k59LhPA7dJCB4KCS Mo40iJUOye8G4howju7PQiLnWlQjKaRqCTPZnxMIdmjmyXNdkf9BzIvaiaMDwLQQ/MCGMI6gtFdo PX6oIpsTStCQVkDZhUuhr8pWPBC6A4xtxZxw5AKZAw== =b+9C -----END PGP SIGNATURE----- --------------pZXTtdMfj9ph0d4KZmzPz02J--