Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:102446 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 47666 invoked from network); 25 Jun 2018 21:43:45 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 25 Jun 2018 21:43:45 -0000 Authentication-Results: pb1.pair.com smtp.mail=rowan.collins@gmail.com; spf=pass; sender-id=pass Authentication-Results: pb1.pair.com header.from=rowan.collins@gmail.com; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 74.125.82.43 as permitted sender) X-PHP-List-Original-Sender: rowan.collins@gmail.com X-Host-Fingerprint: 74.125.82.43 mail-wm0-f43.google.com Received: from [74.125.82.43] ([74.125.82.43:52815] helo=mail-wm0-f43.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 99/AF-50433-B02613B5 for ; Mon, 25 Jun 2018 17:43:40 -0400 Received: by mail-wm0-f43.google.com with SMTP id p126-v6so10892278wmb.2 for ; Mon, 25 Jun 2018 14:43:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=R2du9fTOtYdgb0vZMo6yhaFOTToZyWNnvRis3h8BHxk=; b=lvF/eUEXuv6cXqA6FwwKPABQbo72byNdBFIwDv8BPEy8/ItNloT6ugsSq+Ela6lcR1 GONg9nOJi+iqSO1pByO9hhkYiFDYnoHkSAo8gUWq8imje+5NaMRD09st1Iov/e72v1DI GuDl4dDBjudozs8rcByD7afnwlfoOxoDe1hCh91bfv7YgS+RL8LVYQBoA2P29YdH5Vu0 d5yZ0YMbOxV/tl7mRhr46OEag+00jreWm8n00oemzCqTAw5PPTqqTFFb9xt6JUZg/pHE mEbRb0s2Nhoen0DJLxZrOFO6CCw++yAoIRadvzSTn5AeFHfV97TLP+rpaAZNwiFBypeJ iOOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=R2du9fTOtYdgb0vZMo6yhaFOTToZyWNnvRis3h8BHxk=; b=eA7xZsDekf21e/Q7wA0wZqTqD960N1F2AOEO2VSLfBI2nn8qNml0/gD3twSSZ2lmeh moPjvQZATF/7IzyEFxa/hhXEH8fRMaYGpOpsygoPGMGmpX7YxPnps7nggodiosfcizck wEt8+HlTiYaK8puX0P0TyIylyWfxjVTTKGbpCv4Jy8aOOC18Ceku6I81D/hMppKGWRJQ HKBwJz+uO1KvRFqfemwM4Rzu3eaCUUYHQfhcGEoKa/HXGcsrkM/iAMeOYGIQwseeDXyA z1SDShiS3NB/G+qw6earkGXWGj0y4MJJe5I9FHdOT9lUDDkVDI84A6DsC+m7Lys/fdBR 7C6w== X-Gm-Message-State: APt69E0ZYU5V8PpE5UZ0uFZLp3Ei510kfvtRuQNEC+CuD949arQH2Zpv GkGnrHcb1AG2DJAkNOIZncd+Qewl X-Google-Smtp-Source: ADUXVKLcU99KJHWO+EZ2FS/DvxhA1EpN4SRex8R9IUDX+Xd7VHc49Uek2b54qUc/rfXjuWGlNi0s2Q== X-Received: by 2002:a1c:96d3:: with SMTP id y202-v6mr2180992wmd.76.1529963017014; Mon, 25 Jun 2018 14:43:37 -0700 (PDT) Received: from ?IPv6:2a00:23c4:4b86:4b00:ed04:8a78:e867:50dd? ([2a00:23c4:4b86:4b00:ed04:8a78:e867:50dd]) by smtp.googlemail.com with ESMTPSA id n7-v6sm17933360wri.27.2018.06.25.14.43.36 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 25 Jun 2018 14:43:36 -0700 (PDT) To: internals@lists.php.net References: <4719624.u8nS1KoLlB@vulcan> <28344669.tbARPPRcEQ@vulcan> Message-ID: <62f84166-96d5-9955-a012-930a29b98d6f@gmail.com> Date: Mon, 25 Jun 2018 22:43:34 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <28344669.tbARPPRcEQ@vulcan> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-GB Subject: Re: [PHP-DEV] PHP 2^3 From: rowan.collins@gmail.com (Rowan Collins) On 25/06/2018 21:42, Larry Garfield wrote: >> What will definitely bring benefit to real world workloads is preloading, >> which (if we manage to do it) will dramatically reduce the per-request >> initialization stage. It could bring us much of the benefit of async-IO >> long running processes without sacrificing the isolation advantages of the >> traditional PHP execution model. It will likely also play nicely with >> JIT. But this is floors upon floors of speculation - we'll have to see... > This is more what I'm talking about. A way to get a process up to "all my > service objects are created, my code is parsed, my events are registered, > etc.", and then save that state and do the usual shared-nothing after that > without having to repeat that part. I agree that's likely several layers up > from where we're talking, but if it's a potential thing that could be done > then that's a good argument for doing this thing now. I keep coming back recently to the idea of native support for "packages" or "modules": - a bunch of classes edited as separate files, but loaded "in one hit", rather than autoloaded one class at a time - a more "solid" namespace, e.g. visible in Reflection - configuration of declare()-style directives that apply to the whole module - "module private" visibility for classes (and maybe, later, methods, although the phrase "private protected" [1] makes my head hurt) I think this would fit naturally with preloading, and making OpCache (and JIT) more central to the engine, and fits more naturally with where things like Composer and PHP-FIG have taken the language. It might even link to FFI - maybe a module linking to C functions in a certain way could act as a light-weight, dynamically-loadable, extension. I realise I'm dreaming now, and don't expect this to all suddenly appear in 8.0, but I wonder if it's worth exploring as a framework to build around / toward? [1]: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/access-modifiers Regards, -- Rowan Collins [IMSoP]