[Python-checkins] bpo-43475: Add what's new entry for NaN hash changes (GH-26725)

mdickinson webhook-mailer at python.org
Tue Jun 15 14:48:45 EDT 2021


https://github.com/python/cpython/commit/1d10bf0bb9409a406c56b0de8870df998637fd0f
commit: 1d10bf0bb9409a406c56b0de8870df998637fd0f
branch: main
author: Mark Dickinson <mdickinson at enthought.com>
committer: mdickinson <dickinsm at gmail.com>
date: 2021-06-15T19:48:35+01:00
summary:

bpo-43475: Add what's new entry for NaN hash changes (GH-26725)

files:
M Doc/whatsnew/3.10.rst

diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst
index 249eb733a88bf..9b9dd31a3beab 100644
--- a/Doc/whatsnew/3.10.rst
+++ b/Doc/whatsnew/3.10.rst
@@ -836,6 +836,13 @@ Other Language Changes
   effectless under ``from __future__ import annotations``.
   (Contributed by Batuhan Taskaya in :issue:`42725`.)
 
+* Hashes of NaN values of both :class:`float` type and
+  :class:`decimal.Decimal` type now depend on object identity. Formerly, they
+  always hashed to ``0`` even though NaN values are not equal to one another.
+  This caused potentially quadratic runtime behavior due to excessive hash
+  collisions when creating dictionaries and sets containing multiple NaNs.
+  (Contributed by Raymond Hettinger in :issue:`43475`.)
+
 New Modules
 ===========
 



More information about the Python-checkins mailing list