On Tue, Jul 10, 2018 at 2:06 PM Pedro Magalhães <m...@pmmaga.net> wrote:
> On Tue, Jul 10, 2018 at 11:33 AM Zeev Suraski <vsura...@gmail.com> wrote: > >> I've also given several examples - some of them arguably quite bigger than >> this proposal - where we sat on code for a very long time (multiple years >> even) in order for it to be included in a major version, and not a minor >> one (phpng, JIT, FFI) even though technically they could go into the next >> available minor. >> > > Hi, > > I'm trying to understand this argument better but there is something I'm > missing. Why would a feature like JIT (which would be transparent to the > user AFAIK) need to wait for a major other than marketing reasons? > Sorry in advance for the slightly off-topic question. > Major versions are in many respects "marketing" events. They're an indicator that big changes have happened in the language, big enough to warrant a change in the major version. It's a relatively recent evolution that we decided to only make it possible to break compatibility in major versions (and it's a very positive evolution, without a doubt), but either way - compatibility breakage has never been the motivating factor behind a major release. Major releases enable compatibility breakage, not the other way around. Major features have always gone into major releases (with one notable exception - PHP 5.3, which many argue was a de-facto major release). While 'marketing' always played a role in designating a certain version as major - getting people more motivated to upgrade, bring positive vibes and attention around the language, etc. (as was the case with 7.0) - since the formal release process and the policy change to only allow compatibility breakage in major versions - these compatibility breakages actually, to a large degree, 'piggyback' on the major new features. To make it more real - what would the migration to PHP 7 look like if it was all about the compatibility breakages, and not the performance boosts or for that matter - scalar type hints? Both of these (performance boosts and scalar type hints) could easily go into 5.7 from a purely technical perspective. Zeev