<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.php.net/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wiki.php.net/feed.php">
        <title>PHP Wiki - p</title>
        <description></description>
        <link>https://wiki.php.net/</link>
        <image rdf:resource="https://wiki.php.net/_media/wiki/dokuwiki.svg" />
       <dc:date>2026-05-30T02:50:43+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wiki.php.net/p/faq?rev=1743685723&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wiki.php.net/_media/wiki/dokuwiki.svg">
        <title>PHP Wiki</title>
        <link>https://wiki.php.net/</link>
        <url>https://wiki.php.net/_media/wiki/dokuwiki.svg</url>
    </image>
    <item rdf:about="https://wiki.php.net/p/faq?rev=1743685723&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2025-04-03T13:08:43+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>faq</title>
        <link>https://wiki.php.net/p/faq?rev=1743685723&amp;do=diff</link>
        <description>&lt;table&gt;&lt;tr&gt;&lt;th colspan=&quot;2&quot; width=&quot;50%&quot;&gt;2019/08/09 18:53&lt;/th&gt;&lt;th colspan=&quot;2&quot; width=&quot;50%&quot;&gt;current&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;diff-blockheader&quot; colspan=&quot;2&quot;&gt;Line 1:&lt;/td&gt;
&lt;td class=&quot;diff-blockheader&quot; colspan=&quot;2&quot;&gt;Line 1:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;===== P++ idea:&amp;#160; FAQ =====&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;=&lt;/strong&gt;===== P++ idea:&amp;#160; FAQ =====&lt;strong class=&quot;diff-mark&quot;&gt;= &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160; * Date: 2019-08-09 &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160; * Author: Zeev Suraski, zeev@php.net &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;This is a clarifying FAQ for the idea presented on [[https://marc.info/?l=php-internals&amp;amp;m=156529545007909&amp;amp;w=2|internals@]].&amp;#160; It attempts to address many points that were raised repeatedly in the discussion that ensued.&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;This is a clarifying FAQ for the idea presented on [[https://marc.info/?l=php-internals&amp;amp;m=156529545007909&amp;amp;w=2|internals@]].&amp;#160; It attempts to address many points that were raised repeatedly in the discussion that ensued.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-blockheader&quot; colspan=&quot;2&quot;&gt;Line 7:&lt;/td&gt;
&lt;td class=&quot;diff-blockheader&quot; colspan=&quot;2&quot;&gt;Line 11:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;Trying to shorten the lengthy email into a couple of points:&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;Trying to shorten the lengthy email into a couple of points:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;-&amp;#160;&lt;/strong&gt;There are two big, substantial schools of thought in the PHP world.&amp;#160; The first likes PHP roughly the way it is - dynamic, with strong BC bias and emphasis on simplicity;&amp;#160; The other, prefers a stricter language, with reduced baggage and more advanced/complex features. &lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;-&amp;#160;&lt;/strong&gt;There&amp;#039;s no &amp;#039;right&amp;#039; or &amp;#039;wrong&amp;#039; here.&amp;#160; Both schools of thought are valid, and have a very substantial following.&amp;#160; However, it&amp;#039;s challenging to create a language that caters to both of these crowds at the same time - which is a constant source of contention on internals@. &lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160; *&amp;#160;&lt;/strong&gt;There are two big, substantial schools of thought in the PHP world.&amp;#160; The first likes PHP roughly the way it is - dynamic, with strong BC bias and emphasis on simplicity;&amp;#160; The other, prefers a stricter language, with reduced baggage and more advanced/complex features. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;-&amp;#160;&lt;/strong&gt;The proposal is to create a new dialect of PHP (code named P++; name subject to change) that will live alongside PHP, but won&amp;#039;t be bound by the historical philosophy behind the language.&amp;#160; In other words, this new dialect could be inherently more strict, it could be more daring with BC and remove elements that are considered &amp;#039;baggage&amp;#039; (such as short tags), and adding more complex features - especially ones that are a good fit for strictly typed languages - without having to introduce the same complexity to the PHP dialect. &lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160;*&amp;#160;&lt;/strong&gt;There&amp;#039;s no &amp;#039;right&amp;#039; or &amp;#039;wrong&amp;#039; here.&amp;#160; Both schools of thought are valid, and have a very substantial following.&amp;#160; However, it&amp;#039;s challenging to create a language that caters to both of these crowds at the same time - which is a constant source of contention on internals@. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;-&amp;#160;&lt;/strong&gt;This is =not= a fork.&amp;#160; The code base will be identical, the developers working on that codebase will be identical.&amp;#160; The vast majority of the code would be identical.&amp;#160; Only the specific points of difference between the two languages will have different implementations.&amp;#160; It is somewhat similar to what was done with strict_types in PHP 7 - only on a larger scale.&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160;*&amp;#160;&lt;/strong&gt;The proposal is to create a new dialect of PHP (code named P++; name subject to change) that will live alongside PHP, but won&amp;#039;t be bound by the historical philosophy behind the language.&amp;#160; In other words, this new dialect could be inherently more strict, it could be more daring with BC and remove elements that are considered &amp;#039;baggage&amp;#039; (such as short tags), and adding more complex features - especially ones that are a good fit for strictly typed languages - without having to introduce the same complexity to the PHP dialect. &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160;*&amp;#160;&lt;/strong&gt;This is =not= a fork.&amp;#160; The code base will be identical, the developers working on that codebase will be identical.&amp;#160; The vast majority of the code would be identical.&amp;#160; Only the specific points of difference between the two languages will have different implementations.&amp;#160; It is somewhat similar to what was done with strict_types in PHP 7 - only on a larger scale.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;==== Do we really need to do all that just because some folks can&amp;#039;t give up on short tags? ====&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;==== Do we really need to do all that just because some folks can&amp;#039;t give up on short tags? ====&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-blockheader&quot; colspan=&quot;2&quot;&gt;Line 31:&lt;/td&gt;
&lt;td class=&quot;diff-blockheader&quot; colspan=&quot;2&quot;&gt;Line 36:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;==== This means doubling our development efforts.&amp;#160; How are we going to deal with that? ====&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;==== This means doubling our development efforts.&amp;#160; How are we going to deal with that? ====&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;Thankfully, it doesn&amp;#039;t mean that at all.&amp;#160; The vast majority of code will be shared between the PHP mode and the P++ mode. &lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;Thankfully,&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;//&lt;/strong&gt;it doesn&amp;#039;t mean that at all&lt;strong class=&quot;diff-mark&quot;&gt;//&lt;/strong&gt;.&amp;#160; The vast majority of code will be shared between the PHP mode and the P++ mode&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;- both in source and at runtime&lt;/strong&gt;.&lt;strong class=&quot;diff-mark&quot;&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;Data structures, key subsystems, extensions, web server interfaces - and mostly everything else - will be be the exact same code running regardless of whether the file being executed is a PHP one or a P++ one.&amp;#160; The only additional development overhead will be the specific areas of difference between PHP and P++.&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;Data structures, key subsystems, extensions, web server interfaces&lt;strong class=&quot;diff-mark&quot;&gt;, OPcache&amp;#160;&lt;/strong&gt;- and mostly everything else - will be be the exact same code running regardless of whether the file being executed is a PHP one or a P++ one.&amp;#160; The only additional development overhead will be the specific areas of difference between PHP and P++.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;It&amp;#039;s true that it means we&amp;#039;d have to maintain two versions of certain pieces of code, and that we&amp;#039;ll have some if() statements in various places - as P++ is likely to have additional checks compared to PHP.&amp;#160; However, these are elements that would have to be introduced //anyway// if we&amp;#039;re ever to move towards a stricter version of PHP.&amp;#160; Moreover, since even folks in the strict crowd don&amp;#039;t suggest that we move towards a stricter future without providing a migration path - effectively, the efforts involved with this approach and virtually any other approach are similar.&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;It&amp;#039;s true that it means we&amp;#039;d have to maintain two versions of certain pieces of code, and that we&amp;#039;ll have some if() statements in various places - as P++ is likely to have additional checks compared to PHP.&amp;#160; However, these are elements that would have to be introduced //anyway// if we&amp;#039;re ever to move towards a stricter version of PHP.&amp;#160; Moreover, since even folks in the strict crowd don&amp;#039;t suggest that we move towards a stricter future without providing a migration path - effectively, the efforts involved with this approach and virtually any other approach are similar.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-blockheader&quot; colspan=&quot;2&quot;&gt;Line 47:&lt;/td&gt;
&lt;td class=&quot;diff-blockheader&quot; colspan=&quot;2&quot;&gt;Line 53:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;==== Will I be able to mix and match PHP and P++ in the same app? ====&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;==== Will I be able to mix and match PHP and P++ in the same app? ====&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;Yes.&amp;#160; While we need to work out the exact mechanics, the designation of whether code is PHP or P++ will be at the file level.&amp;#160; A single execution (request) may load many different files, and these files could be from both dialects.&amp;#160; Code from PHP files will behave with the PHP semantics - while code from P++ files will behave with P++ semantics.&amp;#160; Here too - this would be similar to strict_types.&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;Yes.&amp;#160; While we need to work out the exact mechanics, the designation of whether code is PHP or P++ will be at the file&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;level - not at the request&amp;#160;&lt;/strong&gt;level.&amp;#160; A single execution (request) may load many different files, and these files could be from both dialects.&amp;#160; Code from PHP files will behave with the PHP semantics - while code from P++ files will behave with P++ semantics.&amp;#160; Here too - this would be similar to strict_types.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;While this may sound awkward at first - there could be very practical use cases for this.&amp;#160; For instance - a P++ only framework that is being used by a PHP application - or vice versa.&amp;#160; For those of you familiar with C and C++ - this is somewhat similar.&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;While this may sound awkward at first - there could be very practical use cases for this.&amp;#160; For instance - a P++ only framework that is being used by a PHP application - or vice versa.&amp;#160; For those of you familiar with C and C++ - this is somewhat similar.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-blockheader&quot; colspan=&quot;2&quot;&gt;Line 53:&lt;/td&gt;
&lt;td class=&quot;diff-blockheader&quot; colspan=&quot;2&quot;&gt;Line 59:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;==== Does it mean PHP will no longer evolve?&amp;#160; Will all new features go into P++? ====&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;==== Does it mean PHP will no longer evolve?&amp;#160; Will all new features go into P++? ====&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;No, it just means it&amp;#039;ll evolve differently.&amp;#160; Strictness and type related features are likely to go just to P++, and only be available in P++ files.&amp;#160; Bias for BC will remain in PHP (which won&amp;#039;t mean it would never be broken - just that there&amp;#039;d have to be good return-on-investment cases for each such case).&amp;#160; However - unrelated features - such as performance improvements in the engine, development in extensions, or new async-related features - will be available&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;to&amp;#160;&lt;/strong&gt;both PHP and P++.&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;No, it just means it&amp;#039;ll evolve differently.&amp;#160; Strictness and type related features are likely to go just to P++, and only be available in P++ files.&amp;#160; Bias for BC will remain in PHP (which won&amp;#039;t mean it would never be broken - just that there&amp;#039;d have to be good return-on-investment cases for each such case).&amp;#160; However - unrelated features - such as performance improvements in the engine&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;(e.g. JIT)&lt;/strong&gt;, development in extensions, or new async-related features - will be available&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;for&amp;#160;&lt;/strong&gt;both PHP and P++.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;==== What are the benefits of this approach? ====&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;==== What are the benefits of this approach? ====&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-blockheader&quot; colspan=&quot;2&quot;&gt;Line 61:&lt;/td&gt;
&lt;td class=&quot;diff-blockheader&quot; colspan=&quot;2&quot;&gt;Line 67:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;Beyond being a good technological solution - that enables us to support our entire audience in the least amount of effort - this could also bring an end to key source of contention on internals@ in recent years.&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;Beyond being a good technological solution - that enables us to support our entire audience in the least amount of effort - this could also bring an end to key source of contention on internals@ in recent years.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;Finally - although most of the readers of this document are likely to be technology people - it should be noted that launching P++ that would start with a clean slate - could have substantial positioning advantages.&amp;#160; Companies, development managers and individual developers who have ruled out PHP - are more likely to take note of a P++ launch, than of a launch of PHP 8.0 or PHP 9.0.&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;Finally - although most of the readers of this document are likely to be technology people - it should be noted that launching P++ that would start with a clean slate - could have substantial positioning&lt;strong class=&quot;diff-mark&quot;&gt;/branding&amp;#160;&lt;/strong&gt;advantages.&amp;#160; Companies, development managers and individual developers who have ruled out PHP - are more likely to take note of a P++ launch, than of a launch of PHP 8.0 or PHP 9.0.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;==== Aren&amp;#039;t we risking fragmenting the userbase? ====&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;==== Aren&amp;#039;t we risking fragmenting the userbase? ====&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;To a degree, we are.&amp;#160; But&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;at&amp;#160;&lt;/strong&gt;this&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;point&lt;/strong&gt;, it looks&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;inevitable&lt;/strong&gt;.&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;To a degree, we are.&amp;#160; But this&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;isn&amp;#039;t a flaw of this idea - but a representation of reality as it already exists on the ground. &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;As mentioned above&lt;/strong&gt;,&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;there&amp;#039;s a huge crowd out there that likes the dynamic nature of PHP, and looks warily at the attempts to make&amp;#160;&lt;/strong&gt;it&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;more and more type-oriented. &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;At the same time - there&amp;#039;s another huge crowd out there that&amp;#160;&lt;/strong&gt;looks&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;at PHP and thinks to themselves &amp;quot;why is it evolving so slowly towards finally getting rid of this dynamic nonsense?&amp;quot; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;There&amp;#039;s no right or wrong here.&amp;#160; Both points of view are valid.&amp;#160; When we look at potential solutions to bridge between these two contradictory points of views, there aren&amp;#039;t too many of them available: &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt; &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160; - =Stick with dynamic PHP=.&amp;#160; This will not be accepted by the proponents of a stricter language. &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160; - =Evolve towards strict PHP=.&amp;#160; This will not be accepted by the proponents of a dynamic language. &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160; - =Fork the codebase=.&amp;#160; This is a net lose option for everyone involved, regardless of how it&amp;#039;s done.&amp;#160; There&amp;#039;s no technological advantage to doing that, and we don&amp;#039;t have enough contributors to do that even if we wanted to (which we don&amp;#039;t). &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160; - =Come up with some creative solution to cater to both audiences=.&amp;#160; This is what this proposal attempts to do&lt;/strong&gt;.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;====&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;How does this relate to Editions&lt;/strong&gt;? ====&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;====&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;What are the challenges&lt;/strong&gt;?&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160;&lt;/strong&gt;====&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;There&amp;#039;s no shortage of challenges before we can run our first P++ app.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;-&lt;/td&gt;&lt;td class=&quot;diff-deletedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;==== What are&amp;#160;&lt;/strong&gt;the&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;challenges?&amp;#160;&lt;/strong&gt;&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;What are&amp;#160;&lt;/strong&gt;the&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;downsides? ====&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160; - We need to get buy-in.&amp;#160; That means that folks from both schools of though need to give up on a dream of having PHP be entirely dynamic or entirely typed, while disregarding those who think differently from them.&amp;#160; This appears to be a very substantial challenge. &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160; - In order to be successful,&amp;#160;&lt;/strong&gt;the&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;very first version of P++ should deal with all, or at least the majority of compatibility-breaking changes from PHP - so that developers who make the switch, won&amp;#039;t have to reaudit/radically refactor their code once more in the future.&amp;#160; Some have voiced concern that they may be too optimistic to do in one installment with the limited developer-power we have.&amp;#160; We&amp;#039;d have to evaluate that once we have a better idea of what that list is.&amp;#160; Note that it does not mean we need to implement any and all ideas we may have for P++ at this first version - just that we should do our very best to deal with elements that would trigger substantial code rewrite - before our first release. &lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;+&lt;/td&gt;&lt;td class=&quot;diff-addedline&quot;&gt;&lt;strong class=&quot;diff-mark&quot;&gt;&amp;#160;&lt;/strong&gt;&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;- Of course,&amp;#160;&lt;/strong&gt;the&amp;#160;&lt;strong class=&quot;diff-mark&quot;&gt;most challenging of all - we need to find a reasonable name for this new dialect.&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-lineheader&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class=&quot;diff-context&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</description>
    </item>
</rdf:RDF>
