Re: [PHP-DEV] [Concept] declare(strict_identifiers=1)

سپهر محمودی <[email protected]>
Newsgroups gmane.comp.php.devel
Message-ID <CA+Jcf5uB_A5K4D9gW6twc0sVSOaMDduP0mHC6w9N6VTqz+UFLA@mail.gmail.com>
در تاریخ پنجشنبه ۲۷ اوت ۲۰۲۶، ۰۱:۲۳ Derick Rethans <[email protected]> نوشت:

> On 26 August 2026 22:24:06 BST, Larry Garfield <[email protected]>
> wrote:
> >On Wed, Aug 26, 2026, at 2:42 PM, [email protected] wrote:
> >
> >> The survey answers a different question: if a maintainer adds the
> declare
> >> to a file they already have, does it still compile? That is adoption
> >> friction, not breakage. It is also a calibration check -- a rule that
> >> rejected a lot of legitimate existing code would be the wrong rule, and
> I
> >> wanted to know that before proposing it rather than after.
> >>
> >>  > Do I understand it correctly that by adding that declare to 168604
> you
> >>  > would uncover a single risky identifier? Not that convincing...
> >>
> >> That number is the cost, not the benefit, and I should have separated
> the
> >> two more clearly.
> >>
> >> The single Packagist finding is what would stop compiling: symfony/cache
> >> declares a class whose entire name is the single byte 0xA9. That is the
> >> whole measured adoption cost across the 250 most-installed packages.
> >
> >If this is so rarely seen in the wild (something that should be verified
> with more than 250 packages), why make it an option?  Just plan that PHP 9
> will enforce UTF-8-or-GTFO rules on identifiers, Symfony updates one
> oddball class, and we move on with life.  99.99% of developers won't notice
> anything happened.
> >
> >--Larry Garfield
>
> Is it important enough to have this memory footprint added to each PHP
> process though?
>
> > About 13.7 KiB of generated tables
>
> cheers
> Derick



------------

Hi Derick,

Good point. The ~13.7 KiB footprint comes from the static lookup tables
generated for fast classification.

A couple of aspects regarding how this is handled / can be optimized:
1. Shared Memory (`.rodata`): Since these tables are declared as `static
const`, in standard multi-process setups (e.g. PHP-FPM), they reside in
read-only memory pages shared across processes rather than allocating
per-process heap memory.
2. Compacting / Range Encoding: We can definitely look into compressing the
lookup tables (e.g., using run-length/interval encoding or two-stage lookup
tables) to bring the table size well under a few kilobytes if the raw table
footprint is a concern.

I’m happy to explore compressing the tables or benchmarking the memory
impact across different setups to ensure the footprint remains negligible.

Best regards,
Sepehr


>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.