On Thu, Feb 14, 2019 at 12:17 PM Rowan Collins <rowan.coll...@gmail.com>
wrote:

> On Thu, 14 Feb 2019 at 09:43, Zeev Suraski <z...@php.net> wrote:
>
>> Does it mean that when PHP 8.0 comes out (in roughly two years' time most
>> probably), we'd be saying this is experimental?  Or that only in the
>> meantime, for the brave folks that want to experiment PHP 8.0 ~2yrs before
>> it's released, we'd say it's experimental but will remove that tag by the
>> time 8.0 is released?
>>
>
>
> The latter. Every new feature is experimental until it's released; scalar
> type hints were experimental in master until 7.0 was released; typed
> properties are experimental until 7.4 is released; I don't see why this
> should be any different.
>

I'm pretty sure we've had experimental features in released versions.  To
me tagging something as experimental in master while it's in early
development stages is somewhat superfluous - the whole of master should be
considered pre-alpha / alpha until it goes to beta.  That's why I was
asking.


> Offering it as
>> something experimental (i.e. not for production) in 7.4 can help us with
>> that goal, as it will make it easier for a wider range of people to
>> experiment with it and provide feedback.
>>
>
>
> As I mentioned in a previous e-mail, I'm not clear who these extra users
> are, or what value their feedback will be.
>

I'm not sure who they are either, but much like we've had several folks
here on internals report back their experimentation with JIT, I think
casting a wider net will likely result in more feedback.

On one hand, if someone tests their application on a stale version of the
> JIT engine released with 7.4.0, and says "it segfaults when I foo" or "I'm
> surprised it doesn't optimise bar", the answer is likely to be "we fixed
> that 6 months ago in master".
>

And that could be a very reasonable answer;  Given that it's an
experimental feature that someone purposely decided to build and enable,
telling them that they can get a more recent version of JIT by using master
is not an unreasonable response.


> On the other hand, if someone is confident enough to enable an
> experimental JIT feature on a server, they're probably fine with running a
> pre-alpha snapshot, or building it from source (e.g. by downloading
> Rasmus's vagrant box).
>

We seem to agree, but there's no doubt in my mind that 7.4 will reach a
much wider audience than folks who are here on internals.  In a nutshell,
the fact that they can get a pre-alpha PHP 8 that has JIT, doesn't mean
they know it even exists.  Including it in 7.4 can help advertise that - of
course, other than the fact that I'm sure in many cases it will actually
work, enabling them to provide us with real world feedback without having
to upgrade to master/8.  If we thought that all of them would be bumping
into trouble, we wouldn't be proposing it as an option.


> If the feature was "mostly finalised but needs more testing", then an
> experimental release might make sense; but that's not the impression I get
> here, as it's been said over and over that deeper changes are needed to get
> the full advantage, and that's why we need PHP 8 in the first place.
>

Actually, I think it's closer to being "mostly finalized' than it is to
requiring a major overhaul.  It's our 3rd attempt at it after spending the
better part of a decade working on it, and while there's always room for
improvement - and there are some specific areas that aren't yet done
(platform support, ZTS, etc.) - I don't think we're likely to see
fundamental ground-breaking changes.  The most common PHP use case - Linux
x86/x86_64 single threaded - is probably fairly close to what it will be.

Again, like I told Nikita I think that whether or not we include it in 7.4
is a tactical decision (and I'm not sure myself where I stand on it), but I
do think there's a reasonable case for both directions.

Zeev

Reply via email to