On Mon, Apr 2, 2018 at 3:57 PM Lukasz Langa <lukasz@langa.pl> wrote:

> On Apr 2, 2018, at 2:13 PM, Antoine Pitrou <solipsis@pitrou.net> wrote:
>
> On Mon, 2 Apr 2018 13:48:46 -0700
> Lukasz Langa <lukasz@langa.pl> wrote:
>> Pickle protocol version 4.0 was originally defined back in PEP 3154 and shipped as part of Python 3.4 back in 2011. Yet it's still not the default.
>
> Because we want pickles produced with the default to be readable by
> earlier Python 3 versions.
> (the same reason protocol 0 stayed the default throughout the Python 2
> lifetime)

Alright, so that means we can easily do this for Python 3.8, right? I mean, following Christian's logic, Python 3.3 is already dead, with its final release done in February 2016 and support dropped in September 2017 per PEP 398.

I think we need to get past thinking about "Python 2" vs. "Python 3". This frame of mind creates space for another mythical release of Python that will break all the compatibilities, something we promised not to do. A moving backward compatibility window that includes the last release still under security fixes seems like a good new framework for this.

What do you think?

+1 - That puts the words to the reason I suggest just running with the change for 3.8.  If we had noticed in time I'd've suggested doing it in 3.7, too late and not a huge deal so just wait for 3.8.

Never changing it in the past during 1 and 2.x led a lot of code to always specify HIGHEST as the protocol because the default was unreasonable.

-gps