Fixed the formatting. Sorry about that. :-s

I really want to have a discussion prior to creating, to make sure there is
consensus on what should be implemented. However, I will create a patch
prior to voting.

The implementation I have in mind is;
1. add a flag to `CG(active_op_array)->fn_flags` (similar to
`strict_types`) *.
2. split function `get_binary_op` into `get_binary_op_standard` and a new
function `get_binary_op_strict`, where `get_binary_op` calls either based
on the op flag **.
3. add new functions for strict operators to zend_operators.c

*
https://github.com/php/php-src/blob/065559828022b37e88fc8eae4194efafea1b1506/Zend/zend_compile.c#L5127
**
https://github.com/php/php-src/blob/e18c60cd8dfed02311ebb3d11e3543d9a99c7c2a/Zend/zend_opcode.c#L1023

As proof of concept, I've created a test where the `strict_types` directive
affects the `==` and `!=` operators, making them do an 'identical', resp
'not identical' operation.
https://github.com/jasny/php-src/compare/PHP-7.4...jasny:strict_types-affect-operators-test
( to test build branch and run
https://gist.github.com/jasny/eacd187c949459b70d8f8f0818411f0a )

I've added this information to the RFC. Any suggestions or remarks on the
way to implement this are appreciated.

On Tue, Jun 25, 2019 at 11:32 PM Joe Watkins <krak...@gmail.com> wrote:

> Evening,
>
> There doesn't seem to be a patch or implementation.
>
> Aside from the proposed semantics, which I can't really read because the
> document is malformed, the most important questions for me are: How is this
> going to work? Can it be done without significant complexity in the
> compiler or VM?
>
> Without an implementation I can't really consider the ideas proposed,
> because they are just ideas without proof that they are reasonably
> implementable.
>
> While you can technically move forward with an RFC without implementation,
> in this case the implementation should inform our decision at vote time.
>
> Cheers
> Joe
>
>
> On Tue, 25 Jun 2019, 23:19 Benjamin Morel, <benjamin.mo...@gmail.com>
> wrote:
>
>> Impressive work indeed, this would be a perfect addition to strict_types
>> that would remove a lot of WTFs while preserving BC with older code.
>>
>> Please note that the formatting of the RFC is broken after the Bitwise
>> Operators section.
>>
>> Ben
>>
>

Reply via email to