> On Sep 19, 2021, at 8:55 AM, tyson andre <tysonandre...@hotmail.com> wrote: > > Hi Mike Schinkel, >> >> Hmm. I must have missed that thread as I was definitely following the list >> at that time. >> >> But I found the thread, which only had three (3) comments from others: >> >> https://externals.io/message/112639 >> >> From Levi Morrison it seems his objection was to adding `push()` and `pop()` >> to a class including the name "Fixed." Levi suggested soft-deprecating >> `SplStack` because it was implemented as a linked-list, but he proposed >> adding `Spl\ArrayStack` or similar, so it seems he was open to iterating on >> the `Spl` classes in general (no pun intended.) >> >> From Nikita is seemed that he did not object so much as comment on Levi's >> suggestion of adding `Spl\ArrayStack` and suggested instead an `SqlDeque` >> that would handle queue usage more efficiently that plain PHP arrays. >> >> So I think those responses were promising, but that you did not followed up >> on them. I mean no disrespect — we all get busy, our priorities change, and >> things fall off our radar — but it feels to me like you might have more >> success pursing your use-cases related to the `Spl` classes than via a pure >> `Vector` class. > > Experience in past RFCs gave me the impression that if: > > 1. All of the responses are suggesting using a different approach(php-ds, > arrays), > 2. Other comments are negative or uninterested. > 3. None of the feedback on the original idea is positive or interested in it. > > When feedback was like that, voting would typically have mostly "no" results.
Understood, but for clarity I was implying that wanting to change `SplFixedArray` was an "XY problem" and that maybe the way to address your actually use-cases was to pursue other approaches that people were suggesting, which _is_ what you did yesterday. :-) >> Maybe propose an `SplVector` class that extends `SplFixedArray`, or >> something similar that addresses the use-case and with a name that people >> can agree on? > > I'd be stuck with all of the features in `SplFixedArray` that get introduced > later and its design deisions. You wouldn't be stuck with all the feature of `SplFixedArray` if you did "something similar." (I make this point only as it seems you have dismiss one aspect of my suggestion while not acknowledging the alternatives I present. Twice now, at least.) >> I wavered on whether or not to propose a configurable growth factor, but >> ironically I did so to head off the potential complaint from anyone who >> cares deeply about memory usage (isn't that you?) that not allowing the >> growth factor to be configurable would mean that either the class would use >> too much memory for some use-cases, or would need to reallocate more memory >> too frequently for other use-cases, depending on what the default growth >> factor would be. >> >> That said, I don't see how a configurable growth factor should be >> problematic for PHP? For those who don't need/care to optimize memory usage >> or reallocation frequency they can simply ignore it; no harm done. But for >> those who do care, it would give them the ability to fine tune their memory >> usage, which for selected use-cases could mean the difference between being >> able to implement something in PHP, or not. >> >> Note that someone could easily argue that adding a memory-optimized data >> structure when we already have a perfectly flexible data structure with PHP >> arrays that can be used for the same algorithms is "excessive for a >> high-level language." But then I don't think you would make that argument, >> so why make it for a configurable growth factor? #honestquestion > > The growth factor is even lower level than shrinkToFit/reserve, and requires > extra memory to store the float, > extra cpu time to do floating point multiplication rather than doubling, > and additional API methods for something that 99% of applications wouldn't > use. > I consider it more suitable for a low level language. I respect your points here, but disagree. > And if we discover a different resizing strategy is better, it prevents us > from changing it. This is not true. We could easily no-op the GrowthFactor method and it would not break anything in 99.9...% percent of use-cases. The relevant question here should be, what is the likelihood of us discovering a better resizing strategy that would not benefit at all from a growth factor? Is there evidence of one anywhere else? I know that Go — designed to be performant to the extent it does not add complexity — uses a growth factor. >> And finally I think when you conveyed the intent of the author of `ext-ds` >> you omitted part of his full statement. When seen in full I believe his >> statement conveys a different interest than the partial one implies: >> >> https://github.com/php-ds/ext-ds/issues/156 >> >> While he did say "My long-term intention has been to not merge this >> extension into php-src" he immediately also said "I would like to see it >> become available as a default extension at the distribution level." >> >> Based on his full statement I assume that an RFC that would propose adding >> an uncommented `extension=ext-ds.so` in the default `php.ini` would have >> the author of ext-ds' backing. Assuming 2/3rd of voters would agree, that >> seems like a really easy lift, implementation-wise? >> >> Adding an apparently well-respected extension to default `php.ini` and >> mentioning in the release notes so that userland PHP developers would become >> aware of it, start using it, writing blog posts about it, and asking >> questions on StackOverflow about it would be a net plus. And those who use >> managed PHP hosts that stick with the officially-blessed extensions would >> actually finally have access to it; those who use WordPress managed hosts, >> for example. > > Do you mean "commented" (with `;extension=ext-ds`) or "uncommented"? Definitely uncommented. Otherwise it would not be available in a default install and thus not available at for most web hosts. > I read the response in a totally different way. Which is why it is helpful to have multiple people interpret online communication when the communication is from someone not currently participating in the discussion. :-) > See https://externals.io/message/116048#116054 for more details,I've been > busy answering emails and haven't had time to collect all of the feedback and > update this RFC with that, > but I'd planned to. > >> There have been no proposals from the maintainer to do that so far, > that was what the maintainer mentioned as a long term plan. >> **I personally doubt having it developed separately from php's release cycle >> would be accepted by voters > (e.g. if unpopular decisions couldn't be voted against), or how backwards > compatibility would be handled in that model, and had other concerns.** > (e.g. API debates such as https://externals.io/message/93301#93301) >> With php-ds itself getting merged anytime soon seeming unlikely to me, > I decided to start independently working on efficient data structure > implementations. > > If you look at the bottom of the thread, the maintainer had closed the > request > and Benjamin Morel had asked about reconsidering 8 months ago > https://github.com/php-ds/ext-ds/issues/156#issuecomment-752179461 Yes, I had read that before sending my reply. > Since the maintainer hadn't responded since then (and due to above points), > I don't see a point in repeating the same request to reconsider when nothing > has changed. > (Also, they're working on a v2 major release, and there's no timeline for > that that I know of. It could be several years.) Maybe I am missing something, but since he published it as open-source and said he wants it to be included in distribution I would not think it would requires the maintainer to have to be the one to do the work to get it into PHP. I think it would be perfectly acceptable for supporters of his library to do the work to get into PHP. Why would that not be an option? And rather than make a wrong assumption we could minimally you could submit an issue on his repo asking the specific question of whether or not he would support adding `ext-ds` to `php.ini`. Then we would know explicitly. (#fwiw I don't plan to do that myself because I don't currently have a strong need for these data structures so am not one to write then champion such an RFC.) >> Of course including it would not preclude adding new data structures into >> core in the future. Heck, with more people using `ext-ds` there will likely >> be greater awareness of such functionality and better recognition of its >> short-comings — assuming it has them — and thus facilitate more interest in >> adding better data structures to PHP core later on. >> >> Also, I noticed in that 5-year old link you referenced that a few vocal >> members on the list bikeshedded over some of the finer details of the >> `ext-ds` API. If an RFC to include `ext-ds` in `php.ini` were to be >> submitted I would implore those people and others to consider that this is >> the inclusion of an extension to `php.ini` and not a feature in PHP core, >> and thus to please not let the perfect be the enemy of the good. >> >> ===== >> >> Given the above, I think you have one of two (2) potential directions to >> pursue (or both) that each might bring more fruit than the RFC discussed on >> this thread: >> >> 1. Propose an additional Spl class. > > This is an additional class **in** Spl. Nothing is forcing all future > functionality to use Spl as a prefix, > `ArrayObject` already exists without a prefix (Iterators also exist without > an `Spl` prefix), > and as an end user, my personal preference is short names. > And functionality has moved from Spl to core before (e.g. `Iterator` > originated in Spl and moved to core) > > Those data structures were all added in php 5.3. > PHP has had significantly stricter discussion and voting threshold > requirements for the introduction of new functionality since then, > performance and memory usage improvements, etc., and using a different naming > pattern for new data structures that fill in missing functionality > or add better functionality is something I feel is worth proposing to > distinguish new additions from the old data structures. Yes, all true — and I dislike Spl too — but my point was you'd probably more likely see success quicker if you proposed in Spl. But if that's not something you would do, then it a moot point. >> 2. Propose addition of ext-ds to the default php.ini > > I feel like it would be inappropriate for someone who isn't a maintainer of > ext-ds to propose that, > especially when I'm unclear about the exact form of their long-term goals, > project plans, or when ext-ds 2.0 would be out. I already commented on that above so won't repeat it here. -Mike -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: https://www.php.net/unsub.php