Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:104400 Return-Path: Delivered-To: mailing list internals@lists.php.net Received: (qmail 7133 invoked from network); 14 Feb 2019 13:36:20 -0000 Received: from unknown (HELO mail-it1-f196.google.com) (209.85.166.196) by pb1.pair.com with SMTP; 14 Feb 2019 13:36:20 -0000 Received: by mail-it1-f196.google.com with SMTP id l15so300947iti.4 for ; Thu, 14 Feb 2019 02:19:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=DJd9lhlXbGk0D4v3bqFgOqWuUZGza0wX+BKukxZ94z4=; b=DUEBoStk7r31xmWM4gfu5W1j2jivsshYGwNy28TRi+1KaUtIem5JrnPI8vJvqivFP9 IBXIfIDWAKp7f0HScuCFYHndWrB8kh5zjXr/yns4OSpzjs36u+wwk8kjIGn4NkpIrAsG isWtKPXWKkzTMVf2ZECLz46OhviTd0E3csGF9UxB7/fdo9eYUqpW+goMU+7yc539TkF8 okywmuxyFTDsjLVssci7qwnD/rdSNYp2dZXzWcimhsrMwBHOwvIrgjGDCA2dOzhCez59 h0gQjmIVGM+ZcjrJpi6x0h3FjdbVWF48YQ0hZT2wAUCfTYzrSzo/a+ATazkSooLX8acE WQaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=DJd9lhlXbGk0D4v3bqFgOqWuUZGza0wX+BKukxZ94z4=; b=QnANfnbJVrcN4kFsTsGEjcSUCZoDqvuaFc/xwyDDxL1kjSr5wf7ziz1krg/N4dT/jc e3EtavekwpsRxOxpV6swsRXlhx7oUXAdtFNjtcqCFkAfs/g1dTVx5+3hWDKbOMYc8In7 +hzK0Jf2SCAWccLpkfiJZlh8ESqOOZs8pxWcS3xuq46ED8uxpUkGjp1uBkkomAiO73QS pAWiwqtXBhQGztjaZ41k+8TNOuS+F0QlI8LYlXeLDqIWc3bgrGNfEDrdRim6S6e3kPYV diQe+fs8EkHhv0cIBQOAEsF8UL0DWUfUQOFE5Jc5oU7jk9Kriwvlxjj+lQpe7dDZezf1 Cevg== X-Gm-Message-State: AHQUAuY9zZ73cBAdYio2tdHZOuSUaLAQx49HYsaDCkuoLV8tm4TsBEtJ HmYz6kVDDgztD5XTv3WhzKhz7DO2QEFVq7rVozy99w== X-Google-Smtp-Source: AHgI3IYBncEnPXzgaQAgG27/bp7OyeYKR+JkM06EJXnGjiiD46XVUQjlNJrHFU4wIRmQLrAo0y9j+GySJNtRJdanPrQ= X-Received: by 2002:a5e:c906:: with SMTP id z6mr1539666iol.47.1550139581243; Thu, 14 Feb 2019 02:19:41 -0800 (PST) MIME-Version: 1.0 References: <01178c69-e021-3865-689c-00c3a1902574@php.net> In-Reply-To: Date: Thu, 14 Feb 2019 11:19:23 +0100 Message-ID: To: Zeev Suraski Cc: Internals Content-Type: multipart/alternative; boundary="00000000000017a4730581d7ffd2" Subject: Re: [PHP-DEV] [RFC] JIT From: nikita.ppv@gmail.com (Nikita Popov) --00000000000017a4730581d7ffd2 Content-Type: text/plain; charset="UTF-8" On Thu, Feb 14, 2019 at 10:43 AM Zeev Suraski wrote: > On Thu, Feb 14, 2019 at 10:20 AM Sebastian Bergmann > wrote: > > > Am 31.01.2019 um 18:08 schrieb Derick Rethans: > > > I do not believe that something major like this should make it into any > > > PHP 7.x release. Having it as experimental new feature in the > master/PHP > > > 8.0 branch makes the most sense to me. > > > > ACK > > > > 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? > I don't think we can really answer that question at this point in time. That depends on how stable and compatible the JIT is by the time PHP 8.0 comes around. But having it as a non-experimental feature should definitely the goal, and I also think this is possible. > If it's the former - I don't think we should go in this direction. If we > decide that it's sensible to have it - I think we should work to ensure > that it's production ready by the time PHP 8.0 is released. 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. I can't think of any > technological downsides to including it as experimental in 7.4 - there's a > slight "marketing" downside (it will be less of a shiny new thing in PHP > 8.0), but personally I think the feedback we're likely to get is worth it. > There a number of downsides to including it in PHP 7.4: * First and foremost for me: Maintenance. We are only shortly after branching, and the PHP 7.4 and PHP 8.0 branches already have some significant divergences (e.g. in object handler APIs). I don't expect that this is going to be get as bad as PHP 5 vs PHP 7 internals, but I would also very much prefer not having to maintain a new large and complex chunk of code against two different major engine versions. * Marketing: As you already mentioned yourself, adding a JIT is a great marketing point. I think that PHP 7 was quite successful from a marketing perspective, because it had a nice blend of major performance wins, some long-awaited features and a few incompatibilities. It would be great if we could repeat this with PHP 8, and I think that having a JIT and some major language feature (say generics) would be a great drive to upgrade. Adding the JIT earlier as an experimental feature would dilute this a lot. * Stability / Compatibility: While we can mark features as experimental all we want, let's fact it: If it exists, it's going to end up in production. I would prefer to only publicize the JIT once it is stable, and also importantly, has good integration with 3rd party extensions. Basically "just works". I know that Joe has been testing some of this exts (like pcov and pthreads) and their interaction with the JIT, and also been talking to some other maintainers of "low-level" extensions like profilers. From what I understood, quite some work will be needed to allow integration (beyond just disabling the JIT). Nikita --00000000000017a4730581d7ffd2--