Hello!

Most of PHP's symbols are case insensitive. This means extensions that
need to do things with function and method names end up lowercasing
and hashing the lowercased names, often having to do more memory
allocations too. Since case insensitive symbols is language dictated
behavior, it makes sense to expose the correctly cased symbols to
extensions. In PHP 8.0 (and possibly older, I did not check), the
engine is already interning the lowercased name of user defined
functions; it's just not made available to extensions.

In my ideal world, we'd actually switch all symbols to be case
sensitive. However, that won't be happening for PHP 8 due to BC.

So, instead, I propose adding an `.lcname` member (or some other name
indicating it's been normalized to the preferred PHP case) to at least
zend_op_array and zend_class_entry, but preferably for internal
functions too. Note that many internal functions will already be
lowercase, so the data can be shared.

I could make this change in the main engine, but I strongly suspect it
will not play correctly with opcache.

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to