Hi Internals,
I have limited the RFC to disabling autovivification on false only, which
was the initial scope of the RFC. The only two possible cases remaining
will be undefined and null. After what Tyson Andre clearly explained, null
is commonly used and leads to many more complex situations.
I have opened voting on https://wiki.php.net/rfc/autovivification_false
which will end on 2021-06-23T20:00:00Z
Link to the discussion thread: https://externals.io/message/114595
The implementation is pending, but if someone wants to suggest one, please
feel free.
Regards,
Kamil
hi,
I wouldn't care about disabling autovivification on false, but I vote "No",
because I'm against the deprecation.
Thanks. Dmitry.
Hi Internals,
I have limited the RFC to disabling autovivification on false only, which
was the initial scope of the RFC. The only two possible cases remaining
will be undefined and null. After what Tyson Andre clearly explained, null
is commonly used and leads to many more complex situations.I have opened voting on https://wiki.php.net/rfc/autovivification_false
which will end on 2021-06-23T20:00:00ZLink to the discussion thread: https://externals.io/message/114595
The implementation is pending, but if someone wants to suggest one, please
feel free.Regards,
Kamil
I wouldn't care about disabling autovivification on false, but I vote "No",
because I'm against the deprecation.
Do you mean, you wouldn’t care if it went directly from “working without notice” in PHP 8.0 to “fatal error” in PHP 8.1? That would be extremely hostile for large code bases in their upgrading process, as it is in general not a feature that can be checked and corrected statically.
—Claude
On Fri, Jun 11, 2021 at 12:19 PM Claude Pache claude.pache@gmail.com
wrote:
I wouldn't care about disabling autovivification on false, but I vote
"No",
because I'm against the deprecation.Do you mean, you wouldn’t care if it went directly from “working without
notice” in PHP 8.0 to “fatal error” in PHP 8.1? That would be extremely
hostile for large code bases in their upgrading process, as it is in
general not a feature that can be checked and corrected statically.
The RFC doesn't provide implementation, and I see that the implementation
of this deprecation may be not as simple as expected.
Thanks. Dmitry.
—Claude
Hi Dmitry,
Thanks for voicing your concerns.
I have started writing implementation and it is definitely challenging for
me, because I am not that experienced with PHP internals yet.
https://github.com/php/php-src/pull/7131
Almost every implementation requires some amount of work. I would like to
ask you for more details on why you think this particular change is
infeasible. Do you see any problems that the implementation of this
deprecation message would cause? Would it be better to wait for PHP 9.0 and
remove it without deprecation?
As I see it, we already have an error for other scalar types. For false, we
will just need to throw a deprecation notice in the same places. It doesn't
require a major rewrite of PHP engine from what I can tell.
Regards,
Kamil
Hi Kamil,
PHP warnings are tricky, error handlers may cause side effects, throw
exceptions, etc.
Especially, for this deprecation you'll have to handle a new "slow" path
(in VM and JIT) that should return back to the main path.
Thanks. Dmitry.
Hi Dmitry,
Thanks for voicing your concerns.
I have started writing implementation and it is definitely challenging for
me, because I am not that experienced with PHP internals yet.
https://github.com/php/php-src/pull/7131Almost every implementation requires some amount of work. I would like to
ask you for more details on why you think this particular change is
infeasible. Do you see any problems that the implementation of this
deprecation message would cause? Would it be better to wait for PHP 9.0 and
remove it without deprecation?
As I see it, we already have an error for other scalar types. For false,
we will just need to throw a deprecation notice in the same places. It
doesn't require a major rewrite of PHP engine from what I can tell.Regards,
Kamil
Hi All,
The voting on https://wiki.php.net/rfc/autovivification_false has been
closed. The RFC is accepted with score 34:2 (94%)
Thanks,
Kamil