Re: [RFC] [Discussion] Bound-Erased Generic Types
| From: | Larry Garfield | Date: | Mon, 18 May 2026 16:50:55 +0000 |
| Subject: | Re: [RFC] [Discussion] Bound-Erased Generic Types | ||
| References: | 1 2 3 4 5 6 7 8 9 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-130943@lists.php.net to get a copy of this message | ||
On Mon, May 18, 2026, at 3:33 AM, Seifeddine Gmati wrote:
> The
~~Type proposal raises two questions I don't see clean
> answers to:
>
> 1. *Lexical grammar inside ~~?* Whitespace breaks conditional
> types
> ($var is Foo ? A : B). $ breaks
> variable-using expressions. {
> breaks array shapes. < breaks generics. Every plausible
> stopping rule
> breaks a class of type expressions SA tools currently support.
>
> 2. *AST shape?* Either an opaque string (tools still parse it
> themselves, still disagree, gain over docblocks is just location) or
> structured (PHP has committed to an AST for type expressions it doesn't
> enforce, which is the architectural pattern you wanted to avoid).
>
> The speed advantage of docblocks comes from PHP not parsing them at
> all. Moving syntax into the language reduces that velocity regardless
> of whether PHP enforces semantics. The RFC's trade-off is to move the
> *enforceable* parts into the standard and leave the *innovation* parts
> in docblocks. Future RFCs will incrementally move what's stable enough
> to standardize, the docblock channel stays open for fast iteration.
Rowan's "erased user-extensible type system" is an interesting idea, and I think
it's worth exploring. But I don't think this RFC is the place for it. This is a
partially-enforced-generics proposal, so using an "ignored by the engine" flag for its
syntax would make things more confusing, not less.
I'd rather move the discussion of a user-extensible type system to its own discussion. I
don't think it's necessary for generics, which are already extensible in a well-defined
and industry-standard way.
--Larry Garfield