Proposal: shorthand syntax for initializing arbitrary-precision ("bigint") numbers?

From: Date: Sat, 08 Aug 2020 00:50:46 +0000
Subject: Proposal: shorthand syntax for initializing arbitrary-precision ("bigint") numbers?
Groups: php.internals 
Request: Send a blank email to internals+get-111372@lists.php.net to get a copy of this message
Hi internals, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt was a similar approach another dynamically typed language recently took to support convenient arbitrary precision. What are your thoughts on making 123_456_000_000_000_000_000_000n a shorthand for gmp_init('123456000000000000000000') (or a call with equivalent results) (similar to existing backtick string syntax is a shorthand for shell_exec()) GMP objects already overrides numeric operators. (but having number-like syntax would make code using those more readable) Supporting bigints as anything other than explicitly different objects in PHP's type system seemed from a discussion thread 5 years ago to have several drawbacks - https://externals.io/message/77863 : - Native bigints by default as a result of integer operations would cause a B.C. break for extensions for php user code relying on float behavior. The way that division would be handled would change, for example. - Decrease in performance was seen during a patch being worked on 5 years ago to automatically convert overflowing integer operations to big integers - Requirement to update opcache's inferences to support big integers A prototype implementation is available at https://github.com/php/php-src/pull/5930 which goes into more details about implementation concerns, licensing of GMP, and other drawbacks of representing them as a GMP/BigInt class instance instead of something separate from regular objects. - Tyson

« previous php.internals (#111372) next »