On 2/1/19 4:23 PM, Nikita Popov wrote: > On Fri, Feb 1, 2019 at 2:12 PM Dmitry Stogov <dmi...@zend.com > <mailto:dmi...@zend.com>> wrote: > > > > On 2/1/19 11:55 AM, Joe Watkins wrote: > > Morning Dmitry, and internals, > > > > This is marvellous stuff, truly brilliant. I particularly > appreciate the > > non-intrusive approach of setting jit'd code as the opcode > handler, this > > makes life a little easier for hacky extension authors, I think. > > > > As others have said: > > > > I don't like the idea of omitting to support windows, less > worried > > about fancy architectures. > > I can provide help to people who will going to implement JIT support > for > Windows. This is not going to be easy, because MSVC doesn't support > "hybrid VM" and "global register variables", therefore the code is > going > to be more expensive. > > > I think an important point here is that this issue affects not only > Windows: It also affects any platform that uses clang as their compiler. > Notably this includes MacOS. > > Clang theoretically supports global registers, but only for > non-allocatable regs (rsp and rbp), which I think is not very useful for > this purpose.
We will have to provide a patch for CLANG, implementing PHP VM calling convention (HHVM, Erlang, Haskel did this). Thanks. Dmitry. > > So this problem needs to be solved not just for Windows support, but > also for MacOS support (and also FreeBSD and other clang-using platforms). > > Nikita > > > I'm not keen on the idea that there is no way to debug the > code this > > generates outside of GDB, and I'm not sure how useful gdb will > be: I've > > tried to debug JIT'd code in that before and it doesn't do so > well, but > > I could easily have been doing it wrong. I'd be very happy to be > > corrected about this ? > > I'm not sure, what is wrong with GDB, and if any other debuggers have > special API for run-time generated code. > > > I'm not keen on the idea of merging this into 7.4, for various > > reasons that don't need to be repeated. > > OK. It's not only your opinion. > You may vote against, and persuade others. > > Thanks. Dmitry. > > > > > Bottom line though, I love it, it's brilliant, and look forward > to PHP 8. > > > > Thank you, Dmitry. > > > > Cheers > > Joe > > > > > > On Fri, 1 Feb 2019 at 09:41, Dmitry Stogov <dmi...@zend.com > <mailto:dmi...@zend.com> > > <mailto:dmi...@zend.com <mailto:dmi...@zend.com>>> wrote: > > > > > > > > On 2/1/19 3:29 AM, Larry Garfield wrote: > > > On Thursday, January 31, 2019 12:30:52 PM CST Chase Peeler > wrote: > > >> On Thu, Jan 31, 2019 at 12:04 PM Zeev Suraski > <z...@php.net <mailto:z...@php.net> > > <mailto:z...@php.net <mailto:z...@php.net>>> wrote: > > >>> On Thu, Jan 31, 2019 at 6:47 PM Kalle Sommer Nielsen > > <ka...@php.net <mailto:ka...@php.net> <mailto:ka...@php.net > <mailto:ka...@php.net>>> > > >>> > > >>> wrote: > > >>>> Without my usual Windows bias, I do believe it is a > > considerable fact > > >>>> like Nikita pointed out as Windows is a first class > citizen in > > terms > > >>>> of operating systems we support. While PHP on Windows > may not > > have the > > >>>> speed that the Unix counterpart have, it is still a > very important > > >>>> development platform. Many developers develop on > Windows and > > deploy on > > >>>> a Unix based system, being unable to test such an important > > feature in > > >>>> a development environment is also a large question mark. > > >>> > > >>> As long as we can agree that very few actually *deploy *on > > Windows, I > > >>> think > > >>> we're on solid grounds. > > >>> As the JIT implementation is likely to have at least *some* > > significant > > >>> differences compared to Linux, I'm not sure what testing > it on > > Windows > > >>> would give you. JIT is supposed to be entirely transparent, > > and the > > >>> performance characteristics - as well as the bug > patterns - are > > likely to > > >>> be quite different on Linux vs. Windows, at least in > many cases. > > >>> Is it really that important to have? > > >>> > > >>> I'm honestly a bit perplexed by how many people here viewing > > Windows > > >>> support as a must have, while at the same time I think > we all > > agree PHP is > > >>> very scarcely found on production Windows servers, and > JIT is a > > >>> predominantly production feature. > > >>> > > >>> I'm personally interested in taking a look at it (and > I'm certain > > >>> > > >>>> Anatol does too), but simply dismissing is a no-go for me. > > >>> > > >>> It'd be interesting to evaluate the cost associated with > supporting > > >>> Windows. Bare in mind, we're proposing to vote on this as a > > production > > >>> feature for PHP 8 - which realistically means almost two > years > > from now > > >>> *at > > >>> the earliest*. I'm sure we'd have Windows support a lot > sooner > > than that > > >>> if we decide that it's a must have. I agree with Nikita > that > > the key > > >>> question is in fact, do we or do we not want to > introduce JIT > > in - with > > >>> the > > >>> main question being the maintenance cost. Let's tackle this > > question > > >>> first, otherwise - why send Dmitry (and maybe others) > for doing > > more work > > >>> (Windows support) if we are likely to flush it all down > the toilet? > > >>> > > >> Maybe we're the only ones, but we run production PHP on > Windows. > > I have no > > >> issues with the idea of not initially having support for > > Windows. I can > > >> probably even live with never having support for Windows - > > provided that we > > >> don't find ourselves in a situation like Nikita mentioned > where > > features > > >> start getting developed in PHP instead of C and require > JIT in > > order to > > >> function. > > > > > > Question from a non-compiler-engineer: Could we end up in a > > situation where > > > future language features (in 8.3 or something) are only > > performant on JIT- > > > enabled platforms? I know there were some RFCs rejected > in the > > past on the > > > grounds that they involved too many runtime checks (and thus a > > performance > > > hit); if it were possible for a JIT to optimize some of those > > away, it might > > > make the cost acceptable. However, if a JIT only works on > some > > systems that > > > might widen the gap between have- and have-not platforms. > > > > I think, JIT only approach doesn't make a lot of sense for > PHP, with > > one > > of the most fast VM. And this is a trend. Even V8, starting > from JIT > > only, switched back to VM+JIT. > > > > Thanks. Dmitry. > > > > > > > > Is that a concern, or am I making things up? Or, is it a > concern > > but we're > > > legit OK with that happening (which is also an entirely valid > > decision to > > > make)? > > > > > > --Larry Garfield > > > > > > > -- > > PHP Internals - PHP Runtime Development Mailing List > > To unsubscribe, visit: http://www.php.net/unsub.php > > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php >