Re: [RFC] Typed array declarations
| From: | Michał Marcin Brzuchalski | Date: | Tue, 21 Jul 2026 12:03:34 +0000 |
| Subject: | Re: [RFC] Typed array declarations | ||
| References: | 1 2 3 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-132065@lists.php.net to get a copy of this message | ||
pon., 20 lip 2026 o 13:48 Wendell Adriel <wendelladriel.ti@gmail.com>
napisał(a):
> Hey Michał,
>
> This raises a broader architectural question:
>
>
>> Should Level 3 typed arrays rely on function-specific guards for these
>> APIs, or should internal APIs gradually move towards a model where the
>> result is built in a temporary zval and only assigned through a single
>> typed assignment after construction?
>
>
>> That approach would naturally preserve atomicity and would work not only
>> for list, but also for future typed arrays.
>
>
>> I'm not claiming this makes Level 3 impossible. Quite the opposite - I
>> think it highlights an implementation issue that any persistent refinement
>> over mutable arrays will eventually have to solve, regardless of whether
>> the refinement is list, array<T>, or something else.
>
>
>> I'd be interested to hear whether this has already been considered during
>> the design of Level 3, or whether this class of internal APIs simply hasn't
>> been explored yet.
>
>
> This is very interesting.
> I thought about it, but didn't dive too much into it.
>
> However, from some checks I've done myself, when you say: "or should
> internal APIs gradually move towards a model where the result is built in a
> temporary zval and only assigned through a single typed assignment after
> construction?"
> That going into this direction would be very beneficial, however, I think
> this would imply touching a lot of things that can have a broader impact.
> If this is something that people would agree to follow, I think it would
> be great.
>
> I've been implementing a prototype of persistent list-typed properties
>> (where list is a structural refinement of array, i.e. array_is_list() must
>> always hold),
>
> BTW, on this, is this already an RFC, or is the implementation somewhere
> I can take a look at?
>
I actually moved away from the direction I originally suggested (adding
element constraints to arrays). I'm now exploring a separate approach based
on dedicated immutable value types, but it's still too early to discuss as
a concrete proposal. I'd rather wait until the design has stabilized.
Cheers,
Michał Marcin Brzuchalski