Re: [PHP-DEV] [RFC] Introduce Abstract Syntax Tree

[email protected] (Dmitry Stogov)
Newsgroups php.internals
Message-ID <CA+9eiLtAru=03rp8biSsdpxRoyvEgu+7akrYs3k5VRbmuE+ZVg@mail.gmail.com>
Magento doesn't work with AST patch.

500 response on home page, no crash.

Other applications I tested seem to work.

Thanks. Dmitry.


On Mon, Aug 18, 2014 at 11:32 AM, Dmitry Stogov <[email protected]> wrote:

> Hi Nikita,
>
> I think RFC misses few important notes about behavior changes:
>
> 1) The behavior of $a->$b[$c] is changed. PHP apps that used such syntax
> have to be changed into $a->{$b[$c]}.
>
> 2) The evaluation order of left and right parts of assignment is changed.
> $a[$i++] = $a[$i++]; It wasn't guaranteed before, but it may break some
> code anyway.
>
> 3) $a=[1,2]; list($a,$b) = $a; won't work in the same way as before
>
> 4) Usage of undefined constants now leads to fatal errors? (see
> Zend/tests/use_const/no_global_fallback.php)
>
> 5) The patch also enables expressions on constant arrays e.g.
> isset(arra(1,2,3)[$x]);
>
> Personally, I would prefer to separate syntax and behavior changes from
> the AST patch itself or at least don't miss such changes, because they must
> be very significant from users point of view.
>
> Also some implementation related notes:
>
> - Changes to Zend/tests/bug43450.phpt are unrelated to AST. It's just a
> bad test that may be fixed separately.
>
> - I didn't get why you deleted Zend/tests/errmsg_014.php
>
> - ZEND_INIT_FCALL_BY_NAME handler shouldn't check if constant operand is
> a string. Compiler must not provide non-string constant operand. (All the
> changes to ZEND_INIT_FCALL_BY_NAME need to be verified more careful)
>
> - The same in ext/opcache/Optimizer/optimize_func_calls.c, but it's not
> critical here.
>
> - I think you don't need IS_CONST operand for ZEND_ISSET_ISEMPTY_PROP_OBJ
> handler.
>
> - Can OPcahce always keep AST in shared memory and don't copy it into
> process memory on each request? (ext/opcache/zend_accelerator_util_funcs.c)
>
>
> Thanks. Dmitry.
>
>
> On Thu, Jul 31, 2014 at 10:11 PM, Nikita Popov <[email protected]>
> wrote:
>
>> Hi internals!
>>
>> I've created a draft RFC and implementation for the introduction of an
>> Abstract Syntax Tree (AST) as an intermediate structure in our compilation
>> process:
>>
>>      https://wiki.php.net/rfc/abstract_syntax_tree
>>
>> The RFC outlines why an AST is beneficial, how it impacts performance and
>> memory usage of the compile process and what changes to syntax or behavior
>> it introduces.
>>
>> Furthermore the RFC contains an outline of how the current implementation
>> works and what APIs it provides. This section is just an overview and I
>> hope to extend it in the future.
>>
>> Note: I'm on vacation as of tomorrow and wanted to put this up to
>> discussion beforehand. I won't be able to implement any feedback while I'm
>> away, but can of course answer questions :)
>>
>> Thanks,
>> Nikita
>>
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.