Adding tentative extra data structures (Teds) as a PECL
| From: | tyson andre | Date: | Mon, 21 Jun 2021 17:34:21 +0000 |
| Subject: | Adding tentative extra data structures (Teds) as a PECL | ||
| Groups: | php.pecl.dev | ||
| Request: | Send a blank email to pecl-dev+get-17402@lists.php.net to get a copy of this message | ||
Hi,
I'd like to add my recent iterable RFC and data structure proposals I'm working on as a
PECL.
https://github.com/TysonAndre/pecl-teds/
(I plan to publish alpha releases initially)
This combines three things in the
Teds\ namespace:
1. The iterable any()/all()/etc RFC, where the largest objection was that it wasn't
a large enough collection of functionality to add to the standard library
https://wiki.php.net/rfc/any_all_on_iterable#vote
https://github.com/Tysonandre/pecl-teds/#iterable-functions
(some iterable functions are considered/planned for the PECL that will need to return data
structures to allow arbitrary, repeatable keys,
e.g. map_entries(), filter_entries(name to be determined))
2. A collection of data structures that are being considered for proposals to add data structures to
PHP.
Some have expressed interest in having a more expansive collections of data structures in the
standard library.
(E.g. Vector, Deque, etc. that are more efficient than the SPL doubly linked lists)
**Others have mentioned that any data structures being proposed for PHP may be better received if
they were tested and examined by others
before an RFC is created, and creating a PECL ensures this can be done,** e.g. https://externals.io/message/114887#114908
3. Data structures that have less common use cases that may be more suited to a PECL and are not in
php-ds already,
e.g. the recently renamed ImmutableKeyValueSequence, ImmutableSequence.
https://externals.io/message/114887#114903
Addition of php-ds's datastructures (or similar functionality) into core
had been considered several times by internals with the php-ds extension, https://externals.io/message/93301
and https://externals.io/message/112639#112641 -
but it is possible that less than 2/3 of voters would disagree
with the php-ds maintainers distribution plans, and I'm unsure when a proposal would be made by
php-ds's maintainers.
If there is disagreement, it would be useful to have an independently implemented collection of data
structures
as an alternative.
(The collections in the proposed PECL are independently implemented based on spl's source code
(e.g. SplFixedArray),
experience with igbinary/runkit7/ast, https://www.phpinternalsbook.com/ , etc)
- See https://github.com/php-ds/ext-ds/issues/156#issuecomment-686625945
My PECL account is https://pecl.php.net/user/tandre -
I'm a lead on the igbinary,
ast, and runkit7 projects.
I expect this namespace/extension choice to:
1. Be different enough from Ds\ to avoid confusion (such as memcache/memcached)
2. Follow the recent namespace policy RFC suggestion of a single CamelCase namespace name for new
functionality
3. Avoid namespaces that would conflict with PHP's own potential namespace for future data
structures
(e.g. Collections\, DataStructures\, StdLib\,
Util\)
4. Make sense for potential lazy data structures, e.g. a lazily evaluated alternative version of
ImmutableKeyValueSequence as an iterable (CachedIterable?)
(which seems better described as a data structure than a collection)
Any objections?
Thanks,
Tyson