<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Mon, Sep 12, 2016 at 3:57 PM Brett Cannon <<a href="mailto:brett@python.org">brett@python.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg"><div class="gmail_quote gmail_msg"><div dir="ltr" class="gmail_msg">On Mon, 12 Sep 2016 at 15:46 Ethan Furman <<a href="mailto:ethan@stoneleaf.us" class="gmail_msg" target="_blank">ethan@stoneleaf.us</a>> wrote:<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 09/12/2016 09:27 AM, Gregory P. Smith wrote:<br class="gmail_msg">
<br class="gmail_msg">
> For the regular dict (non kwargs or namespace __dict__) use case I would actually like to /see disorder preserved during iteration/.<br class="gmail_msg">
><br class="gmail_msg">
> If we don't, we will eventually to find ourselves in a similar state we were in pre hash-randomization:<br class="gmail_msg">
<br class="gmail_msg">
Does anyone have a short explanation of the interaction between hash randomization and this new always ordered dict?  Why doesn't one make the other useless?<br class="gmail_msg"></blockquote><div class="gmail_msg"><br class="gmail_msg"></div></div></div><div dir="ltr" class="gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg">There is still a hash table that stores a pointer into an array that stores the keys/values that are kept in an ordered array. So that first-level hash table still uses hash randomization.</div></div></div></blockquote><div><br></div><div>More specifically: If the goal of hash randomization is to reduce DDOS hash table stuffing attacks, that is still true. The hashing is randomized.</div><div><br></div><div>Dict ordering may actually _help_ DDOS protection. It no longer leaks information potentially revealing details about the hash seed via the iteration order.</div><div><br></div><div>-gps</div></div></div>