Issue #4258:  Use 30-bit digits for Python longs, on 64-bit platforms.
Backport of r70459.
diff --git a/Doc/library/sys.rst b/Doc/library/sys.rst
index 9d33c60..813e788 100644
--- a/Doc/library/sys.rst
+++ b/Doc/library/sys.rst
@@ -498,6 +498,25 @@
    .. versionadded:: 1.5.2
 
 
+.. data:: long_info
+
+   A struct sequence that holds information about Python's
+   internal representation of integers.  The attributes are read only.
+
+   +-------------------------+----------------------------------------------+
+   | attribute               | explanation                                  |
+   +=========================+==============================================+
+   | :const:`bits_per_digit` | number of bits held in each digit.  Python   |
+   |                         | integers are stored internally in base       |
+   |                         | ``2**long_info.bits_per_digit``              |
+   +-------------------------+----------------------------------------------+
+   | :const:`sizeof_digit`   | size in bytes of the C type used to          |
+   |                         | represent a digit                            |
+   +-------------------------+----------------------------------------------+
+
+   .. versionadded:: 2.7
+
+
 .. data:: last_type
           last_value
           last_traceback
diff --git a/Doc/whatsnew/2.7.rst b/Doc/whatsnew/2.7.rst
index 8037b13..e44a42b 100644
--- a/Doc/whatsnew/2.7.rst
+++ b/Doc/whatsnew/2.7.rst
@@ -86,6 +86,30 @@
   (Contributed by Fredrik Johansson and Victor Stinner; :issue:`3439`.)
 
 
+* Integers are now stored internally either in base 2**15 or in base
+  2**30, the base being determined at build time.  Previously, they
+  were always stored in base 2**15.  Using base 2**30 gives
+  significant performance improvements on 64-bit machines, but
+  benchmark results on 32-bit machines have been mixed.  Therefore,
+  the default is to use base 2**30 on 64-bit machines and base 2**15
+  on 32-bit machines; on Unix, there's a new configure option
+  --enable-big-digits that can be used to override this default.
+
+  Apart from the performance improvements this change should be
+  invisible to end users, with one exception: for testing and
+  debugging purposes there's a new structseq ``sys.long_info`` that
+  provides information about the internal format, giving the number of
+  bits per digit and the size in bytes of the C type used to store
+  each digit::
+
+     >>> import sys
+     >>> sys.long_info
+     sys.long_info(bits_per_digit=30, sizeof_digit=4)
+
+
+  (Contributed by Mark Dickinson; :issue:`4258`.)
+
+
 .. ======================================================================