Hi,

I'd started work on https://github.com/TysonAndre/pecl-weakreference_bc - it's 
nearly finished, and I'd like to add it as a PECL.

- This is a fork of the https://pecl.php.net/package/weakref pecl (using the 
WeakReference::create API instead of `new WeakRef`), which was abandoned in 
2016 because the project maintainers believed php 7.3 support was impractical. 
(standard object handler arrays became constant, but I worked around that. I 
didn't see discussion of specifics of compatibility issues on the issue 
tracker..)

  I believe the issues were fixed in this fork - many tests of php-src's 
WeakReference/WeakMap are now passing (or behaving slightly differently without 
crashing) in the PECL, and I can use simple scripts with php's development 
server (`php -S`) to test MINIT + repeated RINIT+RSHUTDOWN.
- This omits WeakReference in 7.4 because it's already declared.
- This aims to match the API of WeakReference exactly (removes acquire(), 
release(), valid(), dynamic property support, etc) - many end users would not 
want to support multiple different APIs.

https://wiki.php.net/rfc/deprecate_dynamic_properties recently passed, 
recommending using WeakMap for use cases
where extra information needs to be associated with an object instance that 
isn't owned.

> Instead, a WeakMap should be used to store the information in a non-intrusive 
> way:

However, WeakMap is new in PHP 8.0, meaning that libraries using that approach 
would have to drop support for php 7,
or use a polyfill that doesn't free unused object keys, potentially leaking 
memory.
So having a PECL providing a native polyfill would be useful when upgrading 
older installations to php 8.2+.

Thoughts?

Thanks,
Tyson
--
PECL development discussion Mailing List (https://pecl.php.net/)
To unsubscribe, visit: https://www.php.net/unsub.php

Reply via email to