Hi Levi Morrison, > > "Maximum size" shouldn't be an issue for `Deque` specifically, it's a > > `size_t`. It isn't an issue for SplFixedArray and ArrayObject. > > (or for > > PHP would just encounter a fatal error due to either > > You wrote a lot, but unfortunately it was based on a misunderstanding. > In some languages you can set the maximum allowed number of items a > specific Deque can hold. For example (pseudo-code): > > let deque = new Deque<int>(max_capacity: 3) > deque.push_back(1) > deque.push_back(2) > deque.push_back(3) # okay, it's now full > > deque.push_back(4) # ! > > In this condition, they either error or remove the earliest. > > It's okay if the proposed Deque doesn't add this capability, but it's > the only remaining major functionality which some languages have but > not the others; it should at least be discussed, I think.
Oh, I hadn't remembered seeing that before. That makes sense. All of the implementations I'd remembered were unlimited. (https://cplusplus.com/reference/deque/deque/max_size/ was a system limit, for example) I can't think of a common use case for that in php. If there was one, though, I strongly believe it shouldn't be the same class (and shouldn't be a subclass), in order to ensure the behavior of push or other operations remains easy to reason about. This can be done in userland as a userland class. - (e.g. with a Deque instance property and runtime `count() < $this->maxCapacity` checks, to choose their own desired return value or Throwable subclass (or manual array and circular buffer in PHP) Thanks, Tyson -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php