I'm not entirely sure I understand the full set of reasoning for this - I 
couldn't really tell what the problem with OrderedDict is from the link Stefan 
provided. It seems to me like a kind of huge change for the language to move 
from arbitrary-ordered to guaranteed-ordered dict. The problem I see is that 
this introduces a huge backwards compatibility burden on all implementations of 
Python.

It's possible that no implementations of Python (either future CPython versions 
or current/future alternative interpreters) will find any reason to use 
anything but an insertion-order sorted dictionary, but given that we've done 
just fine with arbitrary-order semantics for the entire lifetime of the 
language /and/ there is a container (OrderedDict) which has guaranteed order 
semantics, it doesn't seem worth it to me.

I think I would mostly be concerned with (in terms of likeliness to occur):

1. An edge case we haven't thought of where arbitrary order dictionaries would 
allow some crticial optimization for a given platform (perhaps in someone 
writing a transpiler to another language where the convenient equivalent 
container has arbitrary order, e.g. if Brython wants to implement dicts in 
terms of objects - 
https://stackoverflow.com/questions/5525795/does-javascript-guarantee-object-property-order
 )

2. Someone invents a new arbitrary-ordered container that would improve on the 
memory and/or CPU performance of the current dict implementation

3. Some sort of bug or vulnerability is discovered that makes insertion-ordered 
dictionaries an unwise choice (similar to the hash collision vulnerability that 
necessitated hash randomization - 
https://stackoverflow.com/questions/14956313#14959001 ).

Perhaps these concerns are overblown, but if indeed guaranteed-order Mapping 
literals are critical in some or many cases, maybe it would be preferable to 
introduce new syntax for OrderedDict literals.

Best,
Paul

On 11/05/2017 12:50 PM, Guido van Rossum wrote:
> Yup. At least such code will not break in 3.5.
> 
> In general if you write code using a newer version you should expect
> arbitrary breakage when trying to run it under older versions. There is no
> compatibility guarantee in that direction for anything anyways.
> 
> I don't see this as a reason to not put this into the language spec at 3.7.
> 
> On Sun, Nov 5, 2017 at 9:37 AM, Barry Warsaw <ba...@python.org> wrote:
> 
>> On Nov 4, 2017, at 11:35, Guido van Rossum <gu...@python.org> wrote:
>>>
>>> This sounds reasonable -- I think when we introduced this in 3.6 we were
>> worried that other implementations (e.g. Jython) would have a problem with
>> this, but AFAIK they've reported back that they can do this just fine. So
>> let's just document this as a language guarantee.
>>
>> The other concern was backward compatibility issues.  For example, if 3.7
>> makes this guarantee official, and folks write code with this assumption
>> that has to work with older versions of Python, then that code could be
>> buggy in previous versions and work in 3.7.  This will probably be most
>> evident in test suites, and such failures are often mysterious to debug (as
>> we’ve seen in the past).
>>
>> That doesn’t mean we shouldn’t do it, but it does mean we have to be
>> careful and explicit to educate users about how to write safe
>> multi-Python-version code.
>>
>> Cheers,
>> -Barry
>>
>>
>> _______________________________________________
>> Python-Dev mailing list
>> Python-Dev@python.org
>> https://mail.python.org/mailman/listinfo/python-dev
>> Unsubscribe: https://mail.python.org/mailman/options/python-dev/
>> guido%40python.org
>>
>>
> 
> 
> 
> 
> _______________________________________________
> Python-Dev mailing list
> Python-Dev@python.org
> https://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: 
> https://mail.python.org/mailman/options/python-dev/paul%40ganssle.io
> 

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to