NEWS
NEWS
Python News
+++++++++++
Security
--------
- bpo-35647: Don't set cookie for a request when the request path is a
prefix match of the cookie's path attribute but doesn't end with "/".
Patch by Karthikeyan Singaravelan.
- bpo-34155: Fix parsing of invalid email addresses with more than one ``@``
(e.g. a@[email protected].) to not return the part before 2nd ``@`` as valid email
address. Patch by maxking & jpic.
- bpo-33006: Clarified Doc string for builtin filter function. 2nd Argument
can be any iterable. Patch by Tony Flury
Library
-------
- bpo-38216: Allow the rare code that wants to send invalid http requests
from the `http.client` library a way to do so. The fixes for bpo-30458
led to breakage for some projects that were relying on this ability to
test their own behavior in the face of bad requests.
- bpo-37664: Update wheels bundled with ensurepip (pip 19.2.3 and setuptools
41.2.0)
Documentation
-------------
- bpo-37487: Fix PyList_GetItem index description to include 0.
- bpo-37149: Replace the dead link to the Tkinter 8.5 reference by John
Shipman, New Mexico Tech, with a link to the archive.org copy.
Tests
-----
- bpo-35925: Skip specific nntplib and ssl networking tests when they would
otherwise fail due to a modern OS or distro with a default OpenSSL policy
of rejecting connections to servers with weak certificates or disabling
TLS below TLSv1.2.
- bpo-36560: Fix reference leak hunting in regrtest: compute also deltas (of
reference count and file descriptor count) during warmup, to ensure that
everything is initialized before starting to hunt reference leaks.
Windows
-------
macOS
-----
IDLE
----
- bpo-13102: When saving a file, call os.fsync() so bits are flushed to e.g.
USB drive.
Tools/Demos
-----------
- bpo-37675: 2to3 now works when run from a zipped standard library.
C API
-----
IDLE
----
- bpo-32129: Avoid blurry IDLE application icon on macOS with Tk 8.6. Patch
by Kevin Walzer.
Security
--------
- bpo-25083: Adding I/O error checking when reading .py files and aborting
importing on error.
- bpo-33622: Fixed a leak when the garbage collector fails to add an object
with the ``__del__`` method or referenced by it into the
:data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an
exception is set and preserves it.
Library
-------
- bpo-10496: :func:`~distutils.utils.check_environ` of
:mod:`distutils.utils` now catchs :exc:`KeyError` on calling
:func:`pwd.getpwuid`: don't create the ``HOME`` environment variable in
this case.
- bpo-34794: Fixed a leak in Tkinter when pass the Python wrapper around
Tcl_Obj back to Tcl/Tk.
- bpo-23420: Verify the value for the parameter '-s' of the cProfile CLI.
Patch by Robert Kuska
- bpo-34341: Appending to the ZIP archive with the ZIP64 extension no longer
grows the size of extra fields of existing entries.
- bpo-34052: :meth:`sqlite3.Connection.create_aggregate`,
:meth:`sqlite3.Connection.create_function`,
:meth:`sqlite3.Connection.set_authorizer`,
:meth:`sqlite3.Connection.set_progress_handler` methods raises TypeError
when unhashable objects are passed as callable. These methods now don't
pass such objects to SQLite API. Previous behavior could lead to
segfaults. Patch by Sergey Fedoseev.
- bpo-11874: Use a better regex when breaking usage into wrappable parts.
Avoids bogus assertion errors from custom metavar strings.
- bpo-33570: Change TLS 1.3 cipher suite settings for compatibility with
OpenSSL 1.1.1-pre6 and newer. OpenSSL 1.1.1 will have TLS 1.3 cipers
enabled by default.
Documentation
-------------
Tests
-----
- bpo-34542: Use 3072 RSA keys and SHA-256 signature for test certs and
keys.
- bpo-34391: Fix ftplib test for TLS 1.3 by reading from data socket.
- bpo-34399: Update all RSA keys and DH params to use at least 2048 bits.
- bpo-33901: Fix test_gdbm on macOS with gdbm 1.15: add a larger value to
make sure that the file size changes.
- bpo-32962: Fixed test_gdb when Python is compiled with flags -mcet -fcf-
protection -O0.
Build
-----
- bpo-34710: Fixed SSL module build with OpenSSL & pedantic CFLAGS.
- bpo-30345: Add -g to LDFLAGS when compiling with LTO to get debug symbols.
Windows
-------
macOS
-----
- bpo-15663: The macOS 10.6+ installer now provides a private copy of Tcl/Tk
8.6, like the 10.9+ installer does.
IDLE
----
Tools/Demos
-----------
C API
-----
- bpo-34229: Check start and stop of slice object to be long when they are
not int in :c:func:`PySlice_GetIndices`.
Security
--------
- bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple
security vulnerabilities including: CVE-2017-9233 (External entity
infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix),
CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and
CVE-2012-0876 (Counter hash flooding with SipHash). Note: the
CVE-2016-5300 (Use os- specific entropy sources like getrandom) doesn't
impact Python, since Python already gets entropy from the OS to set the
expat secret using ``XML_SetHashSalt()``.
- bpo-29935: Fixed error messages in the index() method of tuple and list
when pass indices of wrong type.
Library
-------
- bpo-30622: The ssl module now detects missing NPN support in LibreSSL.
- bpo-21060: Rewrite confusing message from setup.py upload from "No dist
file created in earlier command" to the more helpful "Must create and
upload files in one command".
- bpo-32521: The nis module is now compatible with new libnsl and headers
location.
- bpo-32521: glibc has removed Sun RPC. Use replacement libtirpc headers and
library in nis module.
- bpo-32186: Creating io.FileIO() and builtin file() objects now release the
GIL when checking the file descriptor. io.FileIO.readall(),
io.FileIO.read(), and file.read() now release the GIL when getting the
file size. Fixed hang of all threads with inaccessible NFS server. Patch
by Nir Soffer.
- bpo-25720: Fix the method for checking pad state of curses WINDOW. Patch
by Masayuki Yamamoto.
- bpo-31351: python -m ensurepip now exits with non-zero exit code if pip
bootstrapping has failed.
- bpo-10746: Fix ctypes producing wrong PEP 3118 type codes for integer
types.
- bpo-30102: The ssl and hashlib modules now call
OPENSSL_add_all_algorithms_noconf() on OpenSSL < 1.1.0. The function
detects CPU features and enables optimizations on some CPU architectures
such as POWER8. Patch is based on research from Gustavo Serra Scalet.
- bpo-30363: Running Python with the -3 option now warns about regular
expression syntax that is invalid or has different semantic in Python 3 or
will change the behavior in future Python versions.
- bpo-30329: imaplib now catchs the Windows socket WSAEINVAL error (code
10022) on shutdown(SHUT_RDWR): An invalid operation was attempted. This
error occurs sometimes on SSL connections.
- bpo-28427: old keys should not remove new values from WeakValueDictionary
when collecting from another thread.
Documentation
-------------
- bpo-21649: Add RFC 7525 and Mozilla server side TLS links to SSL
documentation.
Tests
-----
- bpo-31518: Debian Unstable has disabled TLS 1.0 and 1.1 for
SSLv23_METHOD(). Change TLS/SSL protocol of some tests to PROTOCOL_TLS or
PROTOCOL_TLSv1_2 to make them pass on Debian.
- bpo-30223: To unify running tests in Python 2.7 and Python 3, the test
package can be run as a script. This is equivalent to running the
test.regrtest module as a script.
Build
-----
- bpo-32616: Disable computed gotos by default for clang < 5.0. It caused
significant performance regression.
- bpo-31934: Abort the build when building out of a not clean source tree.
Windows
-------
macOS
-----
- bpo-17128: All 2.7 macOS installer variants now supply their own version
of ``OpenSSL 1.0.2``; the Apple-supplied SSL libraries and root
certificates are not longer used. The ``Installer Certificate`` command
in ``/Applications/Python 2.7`` may be used to download and install a
default set of root certificates from the third-party ``certifi`` package.
Tools/Demos
-----------
- bpo-24960: 2to3 and lib2to3 can now read pickled grammar files using
pkgutil.get_data() rather than probing the filesystem. This lets 2to3 and
lib2to3 work when run from a zipfile.
C API
-----
- bpo-31626: When Python is built in debug mode, the memory debug hooks now
fail with a fatal error if realloc() fails to shrink a memory block,
because the debug hook just erased freed bytes without keeping a copy of
them.
Security
--------
Library
-------
- bpo-31135: ttk: Fix LabeledScale and OptionMenu destroy() method. Call the
parent destroy() method even if the used attribute doesn't exist. The
LabeledScale.destroy() method now also explicitly clears label and scale
attributes to help the garbage collector to destroy all widgets.
Tiny values (such as 1e-6) are valid non-zero values for setitimer(),
which is specified as taking microsecond-resolution intervals. However, on
some platform, our conversion routine could convert 1e-6 into a zero
interval, therefore disabling the timer instead of (re-)scheduling it.
Tests
-----
- bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest
version behaves like OpenSSL 1.0.2 and no longer aborts handshake.
- bpo-26307: The profile-opt build now applies PGO to the built-in modules.
- bpo-25604: Fix a minor bug in integer true division; this bug could
potentially have caused off-by-one-ulp results on platforms with
unreliable ldexp implementations.
Library
-------
- bpo-28563: Fixed possible DoS and arbitrary code execution when handle
plural form selections in the gettext module. The expression parser now
supports exact syntax supported by GNU gettext.
- bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
file with compression before trying to open it without compression.
Otherwise it had 50% chance failed with ignore_zeros=True.
- bpo-26293: Fixed writing ZIP files that starts not from the start of the
file. Offsets in ZIP file now are relative to the start of the archive in
conforming to the specification.
- Fix possible integer overflows and crashes in the mmap module with unusual
usage patterns.
- bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers
in the "ctypes" and "array" modules.
- bpo-22450: urllib now includes an "Accept: */*" header among the default
headers. This makes the results of REST API requests more consistent and
predictable especially when proxy servers are involved.
- bpo-27850: Remove 3DES from ssl module's default cipher list to counter
measure sweet32 attack (CVE-2016-2183).
- bpo-27944: Fix some memory-corruption bugs in the log reading code of the
_hotshot module.
- bpo-27758: Fix possible integer overflow in the _csv module for large
record lengths.
- bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an
error about unclean EOF.
- bpo-27238: Got rid of bare excepts in the turtle module. Original patch
by Jelle Zijlstra.
IDLE
----
- bpo-27854: Make Help => IDLE Help work again on Windows. Include
idlelib/help.html in 2.7 Windows installer.
- bpo-25507: Add back import needed for 2.x encoding warning box. Add
pointer to 'Encoding declaration' in Language Reference.
- bpo-15308: Add 'interrupt execution' (^C) to Shell menu. Patch by Roger
Serwy, updated by Bayard Randel.
- bpo-27922: Stop IDLE tests from 'flashing' gui widgets on the screen.
- bpo-27452: add line counter and crc to IDLE configHandler test dump.
Documentation
-------------
- bpo-16484: Change the default PYTHONDOCS URL to "https:", and fix the
resulting links to use lowercase. Patch by Sean Rodman, test by Kaushik
Nadikuditi.
Tests
-----
- bpo-23839: Various caches now are cleared before running every test file.
Build
-----
Tools/Demos
-----------
Windows
-------
macOS
-----
Build
-----
- bpo-27641: The configure script now inserts comments into the makefile to
prevent the pgen executable from being cross-compiled.
IDLE
----
- bpo-25702: A --with-lto configure option has been added that will enable
link time optimizations at build time during a make profile-opt. Some
compilers and toolchains are known to not produce stable code when using
LTO, be sure to test things thoroughly before relying on it. It can
provide a few % speed up over profile-opt alone.
- bpo-4806: Avoid masking the original TypeError exception when using star
(*) unpacking and the exception was raised from a generator. Based on
patch by Hagen Fürstenau.
- bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size.
This allows sys.getsize() to work correctly with their subclasses with
__slots__ defined.
- bpo-26478: Fix semantic bugs when using binary operators with dictionary
views and tuples.
Library
-------
- bpo-14132: Fix urllib.request redirect handling when the target only has a
query string. Fix by Ján Janech.
The bug only occurs on SunOS when the ctypes implementation searches for
the `crle` program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos.
- bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes
instead of up to 1024.
- bpo-24266: Ctrl+C during Readline history search now cancels the search
mode when compiled with Readline 7.
- bpo-23857: Implement PEP 493, adding a Python-2-only ssl module API and
environment variable to configure the default handling of SSL/TLS
certificates for HTTPS connections.
- bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets.
- bpo-26475: Fixed debugging output for regular expressions with the (?x)
flag.
- bpo-26147: xmlrpclib now works with unicode not encodable with used non-
UTF-8 encoding.
- bpo-25718: Fixed copying object with state with boolean value is false.
IDLE
----
- bpo-5124: Paste with text selected now replaces the selection on X11. This
matches how paste works on Windows, Mac, most modern Linux apps, and ttk
widgets. Original patch by Serhiy Storchaka.
- bpo-26673: When tk reports font size as 0, change to size 10. Such fonts
on Linux prevented the configuration dialog from opening.
Documentation
-------------
Tests
-----
- bpo-21916: Added tests for the turtle module. Patch by ingrid, Gregory
Loyse and Jelle Zijlstra.
Build
-----
- bpo-22359: Avoid incorrect recursive $(MAKE), and disable the rules for
running pgen when cross-compiling. The pgen output is normally saved with
the source code anyway, and is still regenerated when doing a native
build. Patch by Jonas Wagner and Xavier de Gaye.
- bpo-25136: Support Apple Xcode 7's new textual SDK stub libraries.
Tools/Demos
-----------
- bpo-26799: Fix python-gdb.py: don't get C types once when the Python code
is loaded, but get C types on demand. The C types can change if python-
gdb.py is loaded before the Python executable. Patch written by Thomas
Ilsche.
C API
-----
Windows
-------
Library
-------
Library
-------
- bpo-7759: Fixed the mhlib module on filesystems that doesn't support link
counting for directories.
- bpo-18010: Fix the pydoc GUI's search function to handle exceptions from
importing packages.
- bpo-21709: Fix the logging module to not depend upon __file__ being set
properly to get the filename of its caller from the stack. This allows it
to work if run in a frozen or embedded environment where the module's
.__file__ attribute does not match its code object's .co_filename.
- bpo-25232: Fix CGIRequestHandler to split the query from the URL at the
first question mark (?) rather than the last. Patch from Xiang Zhang.
- bpo-16180: Exit pdb if file has syntax error, instead of trapping user in
an infinite loop. Patch by Xavier de Gaye.
- bpo-23652: Make it possible to compile the select module against the libc
headers from the Linux Standard Base, which do not include some EPOLL
macros. Initial patch by Matt Frank.
- bpo-24481: Fix possible memory corruption with large profiler info strings
in hotshot.
- bpo-5633: Fixed timeit when the statement is a string and the setup is
not.
- bpo-24286: Dict view were not registered with the MappingView abstract
base classes. This caused key and item views in OrderedDict to not be
equal to their regular dict counterparts.
- bpo-24455: Prevent IDLE from hanging when a) closing the shell while the
debugger is active (15347); b) closing the debugger with the [X] button
(15348); and c) activating the debugger when already active (24455). The
patch by Mark Roseman does this by making two changes. 1. Suspend and
resume the gui.interaction method with the tcl vwait mechanism intended
for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow
any existing interaction to terminate first.
- bpo-24750: Improve the appearance of the IDLE editor window status bar.
Patch by Mark Roseman.
- bpo-25313: Change the handling of new built-in text color themes to better
address the compatibility problem introduced by the addition of IDLE Dark.
Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.
- bpo-22726: Re-activate the config dialog help button with some content
about the other buttons and the new IDLE Dark theme.
- bpo-24820: IDLE now has an 'IDLE Dark' built-in text color theme. It is
more or less IDLE Classic inverted, with a cobalt blue background.
Strings, comments, keywords, ... are still green, red, orange, ... . To
use it with IDLEs released before November 2015, hit the 'Save as New
Custom Theme' button and enter a new name, such as 'Custom Dark'. The
custom theme will work with any IDLE release, and can be modified.
- bpo-24820: Users can now set breakpoint colors in Settings -> Custom
Highlighting. Original patch by Mark Roseman.
- bpo-24570: Idle: make calltip and completion boxes appear on Macs affected
by a tk regression. Initial patch by Mark Roseman.
- bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by
Mark Roseman.
- bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac
OSX, make them a 'sheet'. Patch by Mark Roseman.
- bpo-25198: Enhance the initial html viewer now used for Idle Help. *
Properly indent fixed-pitch text (patch by Mark Roseman). * Give code
snippet a very Sphinx- like light blueish-gray background. * Re-use
initial width and height set by users for shell and editor. * When the
Table of Contents (TOC) menu is used, put the section header at the top of
the screen.
- bpo-22820: Explain need for *print* when running file from Idle editor.
- bpo-25219: Update doc for Idle command line options. Some were missing and
notes were not correct.
- bpo-16893: Replace help.txt with help.html for Idle doc display. The new
idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks
better than help.txt and will better document Idle as released. The
tkinter html viewer that works for this file was written by Mark Roseman.
The now unused EditorWindow.HelpDialog class and helt.txt file are
deprecated.
- bpo-23672: Allow Idle to edit and run files with astral chars in name.
Patch by Mohd Sanad Zaki Rizvi.
- bpo-21192: Idle editor. When a file is run, put its name in the restart
bar. Do not print false prompts. Original patch by Adnan Umer.
- bpo-15809: IDLE shell now uses locale encoding instead of Latin1 for
decoding unicode literals.
Documentation
-------------
- bpo-23589: Remove duplicate sentence from the FAQ. Patch by Yongzhi Pan.
Tests
-----
- bpo-24751: When running regrtest with the ``-w`` command line option, a
test run is no longer marked as a failure if all tests succeed when re-
run.
Build
-----
- bpo-24915: When doing a PGO build, the test suite is now used instead of
pybench; Clang support was also added as part off this work. Initial patch
by Alecsandru Patrascu of Intel.
- bpo-24508: Backported the MSBuild project files from Python 3.5. The
backported files replace the old project files in PCbuild; the old files
moved to PC/VS9.0 and remain supported.
Windows
-------
Library
-------
Library
-------
- bpo-23865: close() methods in multiple modules now are idempotent and more
robust at shutdown. If they need to release multiple resources, all are
released even if errors occur.
- bpo-23834: Fix socket.sendto(), use the C long type to store the result of
sendto() instead of the C int type.
- bpo-23838: linecache now clears the cache and returns an empty result on
MemoryError.
- bpo-23576: Avoid stalling in SSL reads when EOF has been reached in the
SSL layer but the underlying connection hasn't been closed.
- bpo-814253: Warnings now are raised when group references and conditional
group references are used in lookbehind assertions in regular expressions.
(See also: bpo-9179)
- bpo-23215: Multibyte codecs with custom error handlers that ignores errors
consumed too much memory and raised SystemError or MemoryError. Original
patch by Aleksi Torhamo.
- bpo-5700: io.FileIO() called flush() after closing the file. flush() was
not called in close() if closefd=False.
- bpo-23481: Remove RC4 from the SSL module's default cipher list.
- bpo-23248: Update ssl error codes from latest OpenSSL git master.
- bpo-23063: In the disutils' check command, fix parsing of reST with code
or code-block directives.
Documentation
-------------
- bpo-21514: The documentation of the json module now refers to new JSON RFC
7159 instead of obsoleted RFC 4627.
Tools/Demos
-----------
- bpo-22314: pydoc now works when the LINES environment variable is set.
- bpo-18905: "pydoc -p 0" now outputs actually used port. Based on patch by
Wieland Hoffmann.
- bpo-23345: Prevent test_ssl failures with large OpenSSL patch level values
(like 0.9.8zc).
Tests
-----
- bpo-23392: Added tests for marshal C API that works with FILE*.
IDLE
----
- bpo-16893: Update Idle doc chapter to match current Idle and add new
information.
Build
-----
C API
-----
- bpo-16041: In poplib, limit maximum line length read from the server to
prevent CVE-2013-1752.
Build
-----
- bpo-21963: backout issue #1856 patch (avoid crashes and lockups when
daemon threads run while the interpreter is shutting down; instead, these
threads are now killed when they try to take the GIL), as it seems to
break some existing code.
- bpo-22526: Fix iterating through files with lines longer than 2^31 bytes.
- bpo-22221: Now the source encoding declaration on the second line isn't
effective if the first line contains anything except a comment.
Library
-------
- bpo-8876: distutils now falls back to copying files when hard linking
doesn't work. This allows use with special filesystems such as VirtualBox
shared folders.
- bpo-22219: The zipfile module CLI now adds entries for directories
(including empty directories) in ZIP file.
- bpo-10510: distutils register and upload methods now use HTML standards
compliant CRLF line endings.
- bpo-20912: Now directories added to ZIP file have correct Unix and MS-DOS
directory attributes.
- bpo-21951: Fixed a crash in Tkinter on AIX when called Tcl command with
empty string or tuple argument.
- bpo-22226: First letter no longer is stripped from the "status" key in the
result of Treeview.heading().
- bpo-21597: The separator between the turtledemo text pane and the drawing
canvas can now be grabbed and dragged with a mouse. The code text pane
can be widened to easily view or copy the full width of the text. The
canvas can be widened on small screens. Original patches by Jan Kanis and
Lita Cho.
- bpo-22216: smtplib now resets its state more completely after a quit. The
most obvious consequence of the previous behavior was a STARTTLS failure
during a connect/starttls/quit/connect/starttls sequence.
- bpo-21868: Prevent turtle crash when undo buffer set to a value less than
one.
IDLE
----
- bpo-3068: Add Idle extension configuration dialog to Options menu. Changes
are written to HOME/.idlerc/config-extensions.cfg. Original patch by Tal
Einat.
- bpo-4832: Save As to type Python files automatically adds .py to the name
you enter (even if your system does not display it). Some systems
automatically add .txt when type is Text files.
- bpo-21986: Code objects are not normally pickled by the pickle module. To
match this, they are no longer pickled when running under Idle.
- bpo-22221: IDLE now ignores the source encoding declaration on the second
line if the first line contains anything except a comment.
Library
-------
- bpo-22176: Update the ctypes module's libffi to v3.1. This release adds
support for the Linux AArch64 and POWERPC ELF ABIv2 little endian
architectures.
Tools/Demos
-----------
- bpo-10712: 2to3 has a new "asserts" fixer that replaces deprecated names
of unittest methods (e.g. failUnlessEqual -> assertEqual).
- bpo-22221: 2to3 and the findnocoding.py script now ignore the source
encoding declaration on the second line if the first line contains
anything except a comment.
Tests
-----
- bpo-22236: Tkinter tests now don't reuse default root window. New root
window is created for every test class.
Build
-----
- bpo-21958: Define HAVE_ROUND when building with Visual Studio 2013 and
above. Patch by Zachary Turner.
- bpo-22878: PEP 477 - "make install" and "make altinstall" can now install
or upgrade pip, using the bundled pip provided by the backported ensurepip
module. A configure option, --with-ensurepip[=upgrade|install|no], is
available to set the option for subsequent installs; the default for
Python 2 in "no" (do not install or upgrade pip). The option can also be
set with "make [alt]install ENSUREPIP=[upgrade|install|no]".
Windows
-------
- bpo-17896: The Windows build scripts now expect external library sources
to be in ``PCbuild\..\externals`` rather than ``PCbuild\..\..``.
- bpo-17717: The Windows build scripts now use a copy of NASM pulled from
svn.python.org to build OpenSSL.
- bpo-21831: Avoid integer overflow when large sizes and offsets are given
to the buffer type. CVE-2014-7185.
- bpo-19656: Running Python with the -3 option now also warns about non-
ascii bytes literals.
Library
-------
- bpo-8343: Named group error messages in the re module did not show the
name of the erroneous group.
- bpo-21722: The distutils "upload" command now exits with a non-zero return
code when uploading fails. Patch by Martin Dengler.
- bpo-11709: Fix the pydoc.help function to not fail when sys.stdin is not a
valid file.
- bpo-14315: The zipfile module now ignores extra fields in the central
directory that are too short to be parsed instead of letting a
struct.unpack error bubble up as this "bad data" appears in many real
world zip files in the wild and is ignored by other zip tools.
- bpo-21402: Tkinter.ttk now works when default root window is not set.
IDLE
----
Tests
-----
- bpo-19925: Added tests for the spwd module. Original patch by Vajrasky
Kok.
Build
-----
Windows
-------
- bpo-21671: The bundled version of OpenSSL has been updated to 1.0.1h. (See
also: CVE-2014-0224)
Build
-----
- bpo-20494: Ensure that free()d memory arenas are really released on POSIX
systems supporting anonymous memory mappings. Patch by Charles-François
Natali.
- Raise a better error when non-unicode codecs are used for a file's coding
cookie.
- bpo-19638: Fix possible crash / undefined behaviour from huge (more than 2
billion characters) input strings in _Py_dg_strtod.
- bpo-12546: Allow \x00 to be used as a fill character when using str, int,
float, and complex __format__ methods.
Library
-------
- bpo-10744: Fix PEP 3118 format strings on ctypes objects with a nontrivial
shape.
- Improve the random module's default seeding to use 256 bits of entropy
from os.urandom(). This was already done for Python 3, mildly improving
security with a bigger seed space.
- bpo-20501: fileinput module no longer reads whole file into memory when
using fileinput.hook_encoded.
- bpo-14983: email.generator now always adds a line end after each MIME
boundary marker, instead of doing so only when there is an epilogue. This
fixes an RFC compliance bug and solves an issue with signed MIME parts.
- bpo-20426: When passing the re.DEBUG flag, re.compile() displays the debug
output every time it is called, regardless of the compilation cache.
- bpo-20368: The null character now correctly passed from Tcl to Python (in
unicode strings only). Improved error handling in variables-related
commands.
- bpo-20262: Warnings are raised now when duplicate names are added in the
ZIP file or too long ZIP file comment is truncated.
- bpo-20245: The open functions in the tarfile module now correctly handle
empty mode.
- bpo-5815: Fixed support for locales with modifiers. Fixed support for
locale encodings with hyphens.
- bpo-17200: telnetlib's read_until and expect timeout was broken by the fix
to Issue #14635 in Python 2.7.4 to be interpreted as milliseconds instead
of seconds when the platform supports select.poll (ie: everywhere). It is
now treated as seconds once again.
- bpo-19878: Fix segfault in bz2 module after calling __init__ twice with
non-existent filename. Initial patch by Vajrasky Kok.
- bpo-16373: Prevent infinite recursion for ABC Set class comparisons.
- bpo-19633: Fixed writing not compressed 16- and 32-bit wave files on big-
endian platforms.
- bpo-19523: Closed FileHandler leak which occurred when delay was set.
Tools/Demos
-----------
- bpo-3561: The Windows installer now has an option, off by default, for
placing the Python installation into the system "Path" environment
variable. This was backported from Python 3.3.
- Add support for the PEP 465 matrix multiplication operator to 2to3.
IDLE
----
- bpo-20406: Use Python application icons for Idle window title bars. Patch
mostly by Serhiy Storchaka.
- bpo-17390: Add Python version to Idle editor window title bar. Original
patches by Edmond Burnett and Kent Johnson.
Tests
-----
- bpo-17752: Fix distutils tests when run from the installed location.
- bpo-20532: Tests which use _testcapi now are marked as CPython only.
- bpo-19990: Added tests for the imghdr module. Based on patch by Claudiu
Popa.
Build
-----
- bpo-21285: Refactor and fix curses configure check to always search in a
ncursesw directory.
Documentation
-------------
- bpo-18840: Introduce the json module in the tutorial, and de-emphasize the
pickle module.
Windows
-------
macOS
-----
Library
-------
IDLE
----
Tests
-----
Build
-----
Library
-------
- bpo-19327: Fixed the working of regular expressions with too big charset.
- bpo-19131: The aifc module now correctly reads and writes sampwidth of
compressed streams.
- bpo-19137: The pprint module now correctly formats empty set and frozenset
and instances of set and frozenset subclasses.
- bpo-19037: The mailbox module now makes all changes to maildir files
before moving them into place, to avoid race conditions with other
programs that may be accessing the maildir directory.
- bpo-18784: The uuid module no more attempts to load libc via ctypes.CDLL,
if all necessary functions are already found in libuuid. Patch by Evgeny
Sologubov.
- bpo-18876: The FileIO.mode attribute now better reflects the actual mode
under which the file was opened. Patch by Erik Bray.
- bpo-18851: Avoid a double close of subprocess pipes when the child process
fails starting.
- bpo-18418: After fork(), reinit all threads states, not only active ones.
Patch by A. Jesse Jiryu Davis.
- bpo-11973: Fix a problem in kevent. The flags and fflags fields are now
properly handled as unsigned.
- bpo-15233: Python now guarantees that callables registered with the atexit
module will be called in a deterministic order.
- bpo-18777: The ssl module now uses the new CRYPTO_THREADID API of OpenSSL
1.0.0+ instead of the deprecated CRYPTO id callback function.
- bpo-18709: Fix CVE-2013-4238. The SSL module now handles NULL bytes inside
subjectAltName correctly. Formerly the module has used OpenSSL's
GENERAL_NAME_print() function to get the string representation of ASN.1
strings for ``rfc822Name`` (email), ``dNSName`` (DNS) and
``uniformResourceIdentifier`` (URI).
- bpo-18155: The csv module now correctly handles csv files that use a
delimiter character that has a special meaning in regexes, instead of
throwing an exception.
Tools/Demos
-----------
- bpo-18873: 2to3 and the findnocoding.py script now detect Python source
code encoding only in comment lines.
- bpo-12990: The "Python Launcher" on OSX could not launch python scripts
that have paths that include wide characters.
Build
-----
- bpo-1584: Provide options to override default search paths for Tcl and Tk
when building _tkinter.
IDLE
----
- bpo-18873: IDLE now detects Python source code encoding only in comment
lines.
- bpo-18988: The "Tab" key now works when a word is already autocompleted.
- bpo-18429: Format / Format Paragraph, now works when comment blocks are
selected. As with text blocks, this works best when the selection only
includes complete lines.
- bpo-7136: In the Idle File menu, "New Window" is renamed "New File". Patch
by Tal Einat, Roget Serwy, and Todd Rovito.
- bpo-8515: Set __file__ when run file in IDLE. Initial patch by Bruce
Frederiksen.
- bpo-17511: Keep IDLE find dialog open after clicking "Find Next". Original
patch by Sarah K.
Tests
-----
- bpo-18919: Added tests for the sunau module. Unified and extended tests
for audio modules: aifc, sunau and wave.
Documentation
-------------
Library
-------
- bpo-17289: The readline module now plays nicer with external modules or
applications changing the rl_completer_word_break_characters global
variable. Initial patch by Bradley Froehle.
- bpo-16316: mimetypes now recognizes the .xz and .txz (.tar.xz) extensions.
- bpo-17192: Restore the patch for Issue #10309 which was ommitted in 2.7.4
when updating the bundled version of libffi used by ctypes.
- bpo-17843: Removed test data file that was triggering false-positive virus
warnings with certain antivirus software.
- bpo-17341: Include the invalid name in the error messages from re about
invalid group names.
- bpo-13150: sysconfig no longer parses the Makefile and config.h files when
imported, instead doing it at build time. This makes importing sysconfig
faster and reduces Python startup time by 20%. (See also: bpo-17512)
- bpo-13163: Rename operands in smtplib.SMTP._get_socket to correct names;
fixes otherwise misleading output in tracebacks and when when debug is on.
Build
-----
- bpo-17547: In configure, explicitly pass -Wformat for the benefit for GCC
4.8.
Tests
-----
IDLE
----
- bpo-17585: Fixed IDLE regression. Now closes when using exit() or quit().
- bpo-6698: IDLE now opens just an editor window when configured to do so.
Documentation
-------------
Build
-----
- bpo-15801: With string % formatting, relax the type check for a mapping
such that any type with a __getitem__ can be used on the right hand side.
IDLE
----
Tests
-----
- bpo-17835: Fix test_io when the default OS pipe buffer size is larger than
one million bytes.
- bpo-17531: Fix tests that thought group and user ids were always the int
type. Also, always allow -1 as a valid group and user id.
Documentation
-------------
- bpo-7963: Fixed misleading error message that issued when object is called
without arguments.
- bpo-16761: Calling ``int()`` and ``long()`` with *base* argument only now
raises TypeError.
- bpo-16759: Support the full DWORD (unsigned long) range in Reg2Py when
retrieving a REG_DWORD value. This corrects functions like
winreg.QueryValueEx that may have been returning truncated values.
- bpo-14420: Support the full DWORD (unsigned long) range in Py2Reg when
passed a REG_DWORD value. Fixes ValueError in winreg.SetValueEx when given
a long.
- bpo-9535: Fix pending signals that have been received but not yet handled
by Python to not persist after os.fork() in the child process.
- bpo-14700: Fix buggy overflow checks for large width and precision in
string formatting operations.
- bpo-6074: Ensure cached bytecode files can always be updated by the user
that created them, even when the source file is read-only.
- bpo-14783: Improve int() and long() docstrings and switch docstrings for
unicode(), slice(), range(), and xrange() to use multi-line signatures.
- bpo-16029: Fix overflow bug occurring when pickling xranges with large
start, step or length.
- bpo-15033: Fix the exit status bug when modules invoked using -m switch,
return the proper failure return value (1). Patch contributed by Jeff
Knupp.
- bpo-12268: File readline, readlines and read() methods no longer lose data
when an underlying read system call is interrupted. IOError is no longer
raised due to a read system call returning EINTR from within these
methods.
- bpo-13889: Check and (if necessary) set FPU control word before calling
any of the dtoa.c string <-> float conversion functions, on MSVC builds of
Python. This fixes issues when embedding Python in a Delphi app.
- bpo-14505: Fix file descriptor leak when deallocating file objects created
with PyFile_FromString().
- bpo-14161: fix the __repr__ of file objects to escape the file name.
- bpo-13521: dict.setdefault() now does only one lookup for the given key,
making it "atomic" for many purposes. Patch by Filip Gruszczyński.
Library
-------
- bpo-17368: Fix an off-by-one error in the Python JSON decoder that caused
a failure while decoding empty object literals when object_pairs_hook was
specified.
- bpo-17278: Fix a crash in heapq.heappush() and heapq.heappop() when the
list is being resized concurrently.
- bpo-17225: JSON decoder now counts columns in the first line starting with
1, as in other lines.
- bpo-4591: Uid and gid values larger than 2**31 are supported now.
- bpo-4844: ZipFile now raises BadZipfile when opens a ZIP file with an
incomplete "End of Central Directory" record. Original patch by Guilherme
Polo and Alan McIntyre.
- bpo-15861: tkinter now correctly works with lists and tuples containing
strings with whitespaces, backslashes or unbalanced braces.
- bpo-9720: zipfile now writes correct local headers for files larger than 4
GiB.
- bpo-13899: \A, \Z, and \B now correctly match the A, Z, and B literals
when used inside character classes (e.g. '[\A]'). Patch by Matthew
Barnett.
- bpo-16485: Now file descriptors are closed if file header patching failed
on closing an aifc file.
- bpo-16713: Fix the parsing of tel url with params using urlparse module.
- bpo-16597: In buffered and text IO, call close() on the underlying stream
if invoking flush() fails.
- bpo-16327: The subprocess module no longer leaks file descriptors used for
stdin/stdout/stderr pipes to the child when fork() fails.
- bpo-14396: Handle the odd rare case of waitpid returning 0 when not
expected in subprocess.Popen.wait().
- bpo-12759: sre_parse now raises a proper error when the name of the group
is missing. Initial patch by Serhiy Storchaka.
- bpo-16152: fix tokenize to ignore whitespace at the end of the code when
no newline is found. Patch by Ned Batchelder.
- bpo-16228: Fix a crash in the json module where a list changes size while
it is being encoded. Patch by Serhiy Storchaka.
- bpo-12890: cgitb no longer prints spurious <p> tags in text mode when the
logdir option is specified.
- bpo-14398: Fix size truncation and overflow bugs in the bz2 module.
- bpo-16013: Fix CSV Reader parsing issue with ending quote characters.
Patch by Serhiy Storchaka.
- bpo-15676: Now "mmap" check for empty files before doing the offset check.
Patch by Steven Willis.
- bpo-15477: In cmath and math modules, add workaround for platforms whose
system- supplied log1p function doesn't respect signs of zeros.
- bpo-14635: telnetlib will use poll() rather than select() when possible to
avoid failing due to the select() file descriptor limit.
- bpo-9559: If messages were only added, a new file is no longer created and
renamed over the old file when flush() is called on an mbox, MMDF or Babyl
mailbox.
- bpo-14888: Fix misbehaviour of the _md5 module when called on data larger
than 2**32 bytes.
- bpo-15908: Fix misbehaviour of the sha1 module when called on data larger
than 2**32 bytes.
- bpo-14072: Fix parsing of 'tel' URIs in urlparse by making the check for
ports stricter.
- bpo-9374: Generic parsing of query and fragment portions of url for any
scheme. Supported both by RFC3986 and RFC2396.
- bpo-14832: fixed the order of the argument references in the error message
produced by unittest's assertItemsEqual.
- bpo-14829: Fix bisect issues under 64-bit Windows.
- bpo-12541: Be lenient with quotes around Realm field with HTTP Basic
Authentation in urllib2.
- bpo-13183: Fix pdb skipping frames after hitting a breakpoint and running
step. Patch by Xavier de Gaye.
- bpo-13684: Fix httplib tunnel issue of infinite loops for certain sites
which send EOF without trailing \r\n.
- bpo-14538: HTMLParser can now parse correctly start tags that contain a
bare '/'.
- bpo-14399: zipfile now recognizes that the archive has been modified even
if only the comment is changed. As a consequence of this fix, ZipFile is
now a new style class.
- bpo-11199: Fix the with urllib which hangs on particular ftp urls.
- bpo-16441: Avoid excessive memory usage working with large gzip files
using the gzip module.
- bpo-12268: The io module file object write methods no longer abort early
when a write system calls is interrupted (EINTR).
- Fix the leak of a dict in the time module when used in an embedded
interpreter that is repeatedly initialized and shutdown and reinitialized.
IDLE
----
- bpo-10365: File open dialog now works instead of crashing even when parent
window is closed. Patch by Roger Serwy.
- bpo-14409: IDLE now properly executes commands in the Shell window when it
cannot read the normal config files on startup and has to use the built-in
default key bindings. There was previously a bug in one of the defaults.
- bpo-10365: File open dialog now works instead of crashing even when parent
window is closed while dialog is open.
Tests
-----
- bpo-13447: Add a test file to host regression tests for bugs in the
scripts found in the Tools directory.
- bpo-17299: Add test coverage for cPickle with file objects and general IO
objects. Original patch by Aman Shah.
- bpo-16618: Add more regression tests for glob. Patch by Serhiy Storchaka.
- bpo-16549: Add tests for json.tools. Initial patch by Berker Peksag and
Serhiy Storchaka.
- bpo-16559: Add more tests for the json module, including some from the
official test suite at json.org. Patch by Serhiy Storchaka.
- bpo-15615: Add some tests for the json module's handling of invalid input
data. Patch by Kushal Das.
Build
-----
- bpo-5033: Fix building of the sqlite3 extension module when the SQLite
library version has "beta" in it. Patch by Andreas Pelme.
- bpo-17086: Backport the patches from the 3.3 branch to cross-build the
package.
- bpo-16836: Enable IPv6 support even if IPv6 is disabled on the build host.
- bpo-17161: make install now also installs a python2 and python man page.
Tools/Demos
-----------
Documentation
-------------
- bpo-13094: add "Why do lambdas defined in a loop with different values all
return the same result?" programming FAQ.
Library
-------
- Fix the fix for issue #12149: it was incorrect, although it had the side
effect of appearing to resolve the issue. Thanks to Mark Shannon for
noticing.
- bpo-13546: Fixed an overflow issue that could crash the intepreter when
calling sys.setrecursionlimit((1<<31)-1).
- bpo-13333: The UTF-7 decoder now accepts lone surrogates (the encoder
already accepts them).
- bpo-13268: Fix the assert statement when a tuple is passed as the message.
- bpo-13156: Revert the patch for issue #10517 (reset TLS upon fork()),
which was only relevant for the native pthread TLS implementation.
- bpo-12610: Verify that user generated AST has correct string and
identifier types before compiling. (See also: bpo-12609)
- bpo-12149: Update the method cache after a type's dictionnary gets cleared
by the garbage collector. This fixes a segfault when an instance and its
type get caught in a reference cycle, and the instance's deallocator calls
one of the methods on the type (e.g. when subclassing IOBase). Diagnosis
and patch by Davide Rizzo.
- bpo-1195: my_fgets() now always clears errors before calling fgets(). Fix
the following case: sys.stdin.read() stopped with CTRL+d (end of file),
raw_input() interrupted by CTRL+c.
- dict_proxy objects now display their contents rather than just the class
name.
Library
-------
- bpo-8033: sqlite3: Fix 64-bit integer handling in user functions on 32-bit
architectures. Initial patch by Philippe Devalkeneer.
- bpo-13885: CVE-2011-3389: the _ssl module would always disable the CBC IV
attack countermeasure.
- bpo-13636: Weak ciphers are now disabled by default in the ssl module
(except when SSLv2 is explicitly asked for).
- bpo-8035: urllib: Fix a bug where the client could remain stuck after a
redirection or an error.
- bpo-13573: The csv.writer now uses the repr() for floats rather than
str(). This allows floats to round-trip without loss of precision.
- bpo-12856: Ensure child processes do not inherit the parent's random seed
for filename generation in the tempfile module. Patch by Brian Harring.
- bpo-13458: Fix a memory leak in the ssl module when decoding a certificate
with a subjectAltName. Patch by Robert Xiao.
- bpo-13358: HTMLParser now calls handle_data only once for each CDATA.
- bpo-13114: Fix the distutils commands check and register when the long
description is a Unicode string with non-ASCII characters.
- bpo-8286: The distutils command sdist will print a warning message instead
of crashing when an invalid path is given in the manifest template.
- bpo-12213: Fix a buffering bug with interleaved reads and writes that
could appear on io.BufferedRandom streams.
- bpo-12102: Document that buffered files must be flushed before being used
with mmap. Patch by Steffen Daode Nurpmeso.
- bpo-7484: smtplib no longer puts <> around addresses in VRFY and EXPN
commands; they aren't required and in fact postfix doesn't support that
form.
- bpo-11802: The cache in filecmp now has a maximum size of 100 so that it
won't grow without bound.
- bpo-12404: Remove C89 incompatible code from mmap module. Patch by Akira
Kitada.
- bpo-11700: mailbox proxy object close methods can now be called multiple
times without error, and _ProxyFile now closes the wrapped file.
- bpo-13159: FileIO, BZ2File, and the built-in file class now use a linear-
time buffer growth strategy instead of a quadratic one.
- bpo-12764: Fix a crash in ctypes when the name of a Structure field is not
a string.
IDLE
----
- bpo-964437: Make IDLE help window non-modal. Patch by Guilherme Polo and
Roger Serwy.
- bpo-13933: IDLE auto-complete did not work with some imported module, like
hashlib. (Patch by Roger Serwy)
- bpo-13506: Add '' to path for IDLE Shell when started and restarted with
Restart Shell. Original patches by Marco Scataglini and Roger Serwy.
- bpo-8793: Prevent IDLE crash when given strings with invalid hex escape
sequences.
Build
-----
Tools/Demos
-----------
- bpo-13930: 2to3 is now able to write its converted output files to another
directory tree as well as copying unchanged files and altering the file
suffix. See its new -o, -W and --add-suffix options. This makes it more
useful in many automated code translation workflows.
Tests
-----
Documentation
-------------
- bpo-2134: The tokenize documentation has been clarified to explain why all
operator and delimiter tokens are treated as token.OP tokens.
Library
-------
- bpo-9670: Increase the default stack size for secondary threads on Mac OS
X and FreeBSD to reduce the chances of a crash instead of a "maximum
recursion depth" RuntimeError exception. (patch by Ronald Oussoren)
- bpo-8651: Fix "z#" format of PyArg_Parse*() function: the size was not
written if PY_SSIZE_T_CLEAN is defined.
- bpo-5057: fix a bug in the peepholer that led to non-portable pyc files
between narrow and wide builds while optimizing BINARY_SUBSCR on non-BMP
chars (e.g. u"\U00012345"[0]).
- bpo-8020: Avoid a crash where the small objects allocator would read non-
Python managed memory while it is being modified by another thread. Patch
by Matt Bandy.
- bpo-11828: startswith and endswith don't accept None as slice index. Patch
by Torsten Becker.
Library
-------
- bpo-12062: In the `io` module, fix a flushing bug when doing a certain
type of I/O sequence on a file opened in read+write mode (namely: reading,
seeking a bit forward, writing, then seeking before the previous write but
still within buffered data, and writing again).
- bpo-11703: urllib2.geturl() does not return correct url when the original
url contains #fragment.
- bpo-11666: let help() display named tuple attributes and methods that
start with a leading underscore.
- bpo-10979: unittest stdout buffering now works with class and module setup
and teardown.
- bpo-11500: Fixed a bug in the os x proxy bypass code for fully qualified
IP addresses in the proxy exception list.
- bpo-11131: Fix sign of zero in plus and minus operations when the context
rounding mode is ROUND_FLOOR.
- bpo-11265: asyncore now correctly handles EPIPE, EBADF and EAGAIN errors
on accept(), send() and recv().
- bpo-4681: Allow mmap() to work on file sizes and offsets larger than 4GB,
even on 32-bit builds. Initial patch by Ross Lagerwall, adapted for
32-bit Windows.
- bpo-8275: Fix passing of callback arguments with ctypes under Win64. Patch
by Stan Mihai.
- bpo-10949: Improved robustness of rotating file handlers.
- bpo-10955: Fix a potential crash when trying to mmap() a file past its
length. Initial patch by Ross Lagerwall.
- bpo-10898: Allow compiling the posix module when the C library defines a
symbol named FSTAT.
- bpo-10827: Changed the rules for 2-digit years. The time.asctime function
will now format any year when ``time.accept2dyear`` is false and will
accept years >= 1000 otherwise. The year range accepted by
``time.mktime`` and ``time.strftime`` is still system dependent, but
``time.mktime`` will now accept full range supported by the OS.
Conversion of 2-digit years to 4-digit is deprecated.
- bpo-10806: Fix subprocess pipes when some of the standard file descriptors
(0, 1, 2) are closed in the parent process. Initial patch by Ross
Lagerwall. (See also: bpo-9905)
- bpo-4188: Avoid creating dummy thread objects when logging operations from
the threading module (with the internal verbose flag activated).
- bpo-9721: Fix the behavior of urljoin when the relative url starts with a
';' character. Patch by Wes Chow.
- bpo-10464: netrc now correctly handles lines with embedded '#' characters.
- bpo-9348: Raise an early error if argparse nargs and metavar don't match.
- Stop using the old interface for providing methods and attributes in the
_sre module. Among other things, this gives these classes ``__class__``
attributes. (See #12099)
IDLE
----
- bpo-11718: IDLE's open module dialog couldn't find the __init__.py file in
a package.
- bpo-12590: IDLE editor window now always displays the first line when
opening a long file. With Tk 8.5, the first line was hidden.
- bpo-10940: Workaround an IDLE hang on Mac OS X 10.6 when using the menu
accelerators for Open Module, Go to Line, and New Indent Width. The
accelerators still work but no longer appear in the menu items.
- bpo-10907: Warn OS X 10.6 IDLE users to use ActiveState Tcl/Tk 8.5, rather
than the currently problematic Apple-supplied one, when running with the
64-/32-bit installer variant.
- bpo-6075: IDLE on Mac OS X now works with both Carbon AquaTk and Cocoa
AquaTk.
- bpo-4676: <Home> toggle failing on Tk 8.5, causing IDLE exits and strange
selection behavior. Improve selection extension behaviour.
Build
-----
- bpo-11054: Allow Mac OS X installer builds to again work on 10.5 with the
system- provided Python.
- bpo-10655: Fix the build on PowerPC on Linux with GCC when building with
timestamp profiling (--with-tsc): the preprocessor test for the PowerPC
support now looks for "__powerpc__" as well as "__ppc__": the latter seems
to only be present on OS X; the former is the correct one for Linux with
GCC.
- bpo-1099: Fix the build on MacOSX when building a framework with pydebug
using GCC 4.0.
Tests
-----
Library
-------
- bpo-4493: urllib2 adds '/' in front of path components which does not
start with '/. Common behavior exhibited by browsers and other clients.
IDLE
----
- bpo-6378: idle.bat now runs with the appropriate Python version rather
than the system default. Patch by Sridhar Ratnakumar.
Build
-----
Tests
-----
Documentation
-------------
- bpo-10221: dict.pop(k) now has a key error message that includes the
missing key (same message d[k] returns for missing keys).
- bpo-10186: Fix the SyntaxError caret when the offset is equal to the
length of the offending line.
- bpo-9997: Don't let the name "top" have special significance in scope
resolution.
- bpo-9862: Compensate for broken PIPE_BUF in AIX by hard coding its value
as the default 512 when compiling on AIX.
- bpo-10068: Global objects which have reference cycles with their module's
dict are now cleared again. This causes issue #7140 to appear again.
- bpo-9869: Make long() and PyNumber_Long return something of type long for
a class whose __long__ method returns a plain int. This fixes an
interpreter crash when initializing an instance of a long subclass from an
object whose __long__ method returns a plain int.
- bpo-9416: Fix some issues with complex formatting where the output with no
type specifier failed to match the str output:
- format(complex(-0.0, 2.0), '-') omitted the real part from the output,
- format(complex(0.0, 2.0), '-') included a sign and parentheses.
Library
-------
- bpo-10126: Fix distutils' test_build when Python was built with --enable-
shared.
- bpo-1718574: Fix options that were supposed to accept arguments but did
not in build_clib.
- bpo-10253: FileIO leaks a file descriptor when trying to open a file for
append that isn't seekable. Patch by Brian Brazil.
- bpo-9295: Fix a crash under Windows when calling close() on a file object
with custom buffering from two threads at once.
- bpo-9409: Fix the regex to match all kind of filenames, for interactive
debugging in doctests.
- bpo-6612: Fix site and sysconfig to catch os.getcwd() error, eg. if the
current directory was deleted. Patch written by W. Trevor King.
- bpo-10045: Improved performance when writing after seeking past the end of
the "file" in cStringIO.
- bpo-9065: tarfile no longer uses "root" as the default for the uname and
gname field.
- bpo-9758: When fcntl.ioctl() was called with mutable_flag set to True, and
the passed buffer was exactly 1024 bytes long, the buffer wouldn't be
updated back after the system call. Original patch by Brian Brazil.
- bpo-1100562: Fix deep-copying of objects derived from the list and dict
types. Patch by Michele Orrù and Björn Lindqvist.
- bpo-2521: Use weakrefs on for caching in the abc module, so that classes
are not held onto after they are deleted elsewhere.
- bpo-7467: when reading a file from a ZIP archive, its CRC is checked and a
BadZipfile error is raised if it doesn't match (as used to be the case in
Python 2.5 and earlier).
- bpo-9551: Don't raise TypeError when setting the value to None for
SafeConfigParser instances constructed with allow_no_value == True.
- bpo-5504: ctypes should now work with systems where mmap can't be
PROT_WRITE and PROT_EXEC.
- bpo-8280: urllib2's Request method will remove fragements in the url. This
is how it is supposed to work, wget and curl do the same. Previous
behavior was wrong.
- bpo-9428: Fix running scripts with the profile/cProfile modules from the
command line.
- bpo-7372: Fix pstats regression when stripping paths from profile data
generated with the profile module.
- bpo-5294: Fix the behavior of pdb's "continue" command when called in the
top-level debugged frame.
- bpo-5727: Restore the ability to use readline when calling into pdb in
doctests.
- bpo-8198: In pydoc, output all help text to the correct stream when
sys.stdout is reassigned.
- bpo-8620: when a Cmd is fed input that reaches EOF without a final
newline, it no longer truncates the last character of the last command
line.
- bpo-9032: XML-RPC client retries the request on EPIPE error. The EPIPE
error occurs when the server closes the socket and the client sends a big
XML-RPC request.
- Fix extreme speed issue in Decimal.pow when the base is an exact power of
10 and the exponent is tiny (for example, Decimal(10) **
Decimal('1e-999999999')).
- bpo-9315: Fix for the trace module to record correct class name for
tracing methods.
- bpo-9054: Fix a crash occurring when using the pyexpat module with expat
version 2.0.1.
- bpo-7736: Release the GIL around calls to opendir() and closedir() in the
posix module. Patch by Marcin Bachry.
- As a result of issue #2521, the _weakref module is now compiled into the
interpreter by default.
- bpo-9526: Remove some outdated (int) casts that were preventing the array
module from working correctly with arrays of more than 2**31 elements.
- bpo-8065: Fix memory leak in readline module (from failure to free the
result of history_get_history_state()).
Tools/Demos
-----------
- bpo-9188: The gdb extension now handles correctly narrow (UCS2) as well as
wide (UCS4) unicode builds for both the host interpreter (embedded inside
gdb) and the interpreter under test.
Build
-----
- bpo-941346: Improve the build process under AIX and allow Python to be
built as a shared library. Patch by Sébastien Sablé.
- bpo-4026: Make the fcntl extension build under AIX. Patch by Sébastien
Sablé.
- bpo-9392: A framework build on OSX will once again use a versioned name of
the ``2to3`` tool, that is you can use ``2to3-2.7`` to select the Python
2.7 edition of 2to3.
- bpo-9701: The MacOSX installer can patch the shell profile to ensure that
the "bin" directory inside the framework is on the shell's search path.
This feature now also supports the ZSH shell.
- bpo-7473: avoid link errors when building a framework with a different set
of architectures than the one that is currently installed.
Tests
-----
- bpo-9315: Added tests for the trace module. Patch by Eli Bendersky.
Documentation
-------------
- bpo-9817: Add expat COPYING file; add expat, libffi and expat licenses to
Doc/license.rst.
- bpo-9524: Document that two CTRL* signals are meant for use only with
os.kill.
- bpo-9255: Document that the 'test' package is for internal Python use
only.
Library
-------
- bpo-8941: decoding big endian UTF-32 data in UCS-2 builds could crash the
interpreter with characters outside the Basic Multilingual Plane (higher
than 0x10000).
Build
-----
Library
-------
- bpo-8948: cleanup functions and class / module setups and teardowns are
now honored in unittest debug methods.
Documentation
-------------
- bpo-8909: Added the size of the bitmap used in the installer created by
distutils' bdist_wininst. Patch by Anatoly Techtonik.
Windows
-------
- bpo-8271: during the decoding of an invalid UTF-8 byte sequence, only the
start byte and the continuation byte(s) are now considered invalid,
instead of the number of bytes specified by the start byte. E.g.:
'\xf1\x80AB'.decode('utf-8', 'replace') now returns u'\ufffdAB' and
replaces with U+FFFD only the start byte ('\xf1') and the continuation
byte ('\x80') even if '\xf1' is the start byte of a 4-bytes sequence.
Previous versions returned a single u'\ufffd'.
- bpo-8748: Fix two issues with comparisons between complex and integer
objects. (1) The comparison could incorrectly return True in some cases
(2**53+1 == complex(2**53) == 2**53), breaking transivity of equality. (2)
The comparison raised an OverflowError for large integers, leading to
unpredictable exceptions when combining integers and complex objects in
sets or dicts.
- bpo-7902: When using explicit relative import syntax, don't try implicit
relative import semantics.
- bpo-7079: Fix a possible crash when closing a file object while using it
from another thread. Patch by Daniel Stutzbach.
- bpo-8868: Fix that ensures that python scripts have access to the Window
Server again in a framework build on MacOSX 10.5 or earlier.
C API
-----
Library
-------
- bpo-4487: email now accepts as charset aliases all codec aliases accepted
by the codecs module.
- bpo-6268: Fix seek() method of codecs.open(), don't read or write the BOM
twice after seek(0). Fix also reset() method of codecs, UTF-16, UTF-32 and
StreamWriter classes.
- bpo-8759: Fix user paths in sysconfig for posix and os2 schemes.
Tests
-----
Build
-----
Tools/Demos
-----------
- bpo-8084: PEP 370 now conforms to system conventions for framework builds
on MacOS X. That is, ``python setup.py install --user`` will install into
``~/Library/Python/2.7`` instead of ``~/.local``.
Library
-------
- bpo-8681: Make the zlib module's error messages more informative when the
zlib itself doesn't give any detailed explanation.
- bpo-8354: The siginterrupt setting is now preserved for all signals, not
just SIGCHLD.
- bpo-6312: Fix http HEAD request when the transfer encoding is chunked. It
should correctly return an empty response now.
- bpo-8549: Fix compiling the _ssl extension under AIX. Patch by Sridhar
Ratnakumar.
- bpo-5103: SSL handshake would ignore the socket timeout and block
indefinitely if the other end didn't respond.
- The do_handshake() method of SSL objects now adjusts the blocking mode of
the SSL structure if necessary (as other methods already do).
- bpo-8108: Fix the unwrap() method of SSL objects when the socket has a
non-infinite timeout. Also make that method friendlier with applications
wanting to continue using the socket in clear-text mode, by disabling
OpenSSL's internal readahead. Thanks to Darryl Miles for guidance.
- bpo-8484: Load all ciphers and digest algorithms when initializing the
_ssl extension, such that verification of some SSL certificates doesn't
fail because of an "unknown algorithm".
- bpo-2987: RFC 2732 support for urlparse (IPv6 addresses). Patch by Tony
Locke and Hans Ulrich Niedermann.
- bpo-7585: difflib context and unified diffs now place a tab between
filename and date, conforming to the 'standards' they were originally
designed to follow. This improves compatibility with patch tools.
- Use Clang 2.7's static analyzer to find places to clean up some code.
- On Windows, ctypes no longer checks the stack before and after calling a
foreign function. This allows using the unmodified libffi library.
Tests
-----
- bpo-8490: asyncore now has a more solid test suite which actually tests
its API.
Build
-----
Windows
-------
- bpo-8329: Don't return the same lists from select.select when no fds are
changed.
Library
-------
- bpo-5277: Fix quote counting when parsing RFC 2231 encoded parameters.
- bpo-8321: Give access to OpenSSL version numbers from the `ssl` module,
using the new attributes `ssl.OPENSSL_VERSION`, `ssl.OPENSSL_VERSION_INFO`
and `ssl.OPENSSL_VERSION_NUMBER`.
>>> Decimal(1.1)
Decimal('1.100000000000000088817841970012523233890533447265625')
- bpo-8294: The Fraction constructor now accepts Decimal and float instances
directly.
- Comparisons using one of <, <=, >, >= between a complex instance and a
Fractions instance now raise TypeError instead of returning True/False.
This makes Fraction <=> complex comparisons consistent with int <=>
complex, float <=> complex, and complex <=> complex comparisons.
- bpo-8038: unittest.TestCase.assertNotRegexpMatches
- bpo-1039: Fix os.execlp() crash with missing 2nd argument. (See also:
bpo-8154)
Tools/Demos
-----------
Build
-----
- Make sure that the FreeBSD build of the included libffi uses the proper
assembly file.
C API
-----
Tests
-----
- bpo-8248: Add some tests for the bool type. Patch by Gregory Nofi.
- bpo-8180: Fix test_pep277 on OS X and add more tests for special Unicode
normalization cases. (See also: bpo-8207)
- bpo-7820: The parser tokenizer restores all bytes in the right if the BOM
check fails.
- bpo-7649: "u'%c' % char" now behaves like "u'%s' % char" and raises a
UnicodeDecodeError if 'char' is a byte string that can't be decoded using
the default encoding.
- bpo-1555570: email no longer inserts extra blank lines when a \r\n combo
crosses an 8192 byte boundary.
- bpo-7959: ctypes callback functions are now registered correctly with the
cycle garbage collector.
- bpo-6247: The argparse module has been added to the standard library.
- The sqlite3 module was updated to pysqlite 2.6.0. This fixes several
obscure bugs and allows loading SQLite extensions from shared libraries.
- Stop providing crtassem.h symbols when compiling with Visual Studio 2010,
as msvcr100.dll is not a platform assembly anymore.
Tests
-----
- Print platform information when running the whole test suite, or using the
``--verbose`` flag.
- bpo-6292: For the moment at least, the test suite runs cleanly if python
is run with the -OO flag. Tests requiring docstrings are skipped.
Build
-----
- bpo-7632: Fix various str -> float conversion bugs present in 2.7 alpha 2,
including:
(1) a serious 'wrong output' bug that could occur for long (> 40 digit)
input strings, (2) a crash in dtoa.c that occurred in debug builds
when parsing certain long numeric strings corresponding to subnormal
values, (3) a memory leak for some values large enough to cause overflow,
and (4) a number of flaws that could lead to incorrectly rounded results.
- bpo-2333: Backport set and dict comprehensions syntax from Python 3.x.
Library
-------
- bpo-2746: Don't escape ampersands and angle brackets ("&", "<", ">") in
XML processing instructions and comments. These raw characters are
allowed by the XML specification, and are necessary when outputting e.g.
PHP code in a processing instruction. Patch by Neil Muller.
- bpo-6939: Fix file I/O objects in the `io` module to keep the original
file position when calling `truncate()`. It would previously change the
file position to the given argument, which goes against the tradition of
ftruncate() and other truncation APIs. Patch by Pascal Chambon.
- bpo-7748: Since unicode values are supported for some metadata options in
Distutils, the DistributionMetadata get_* methods will now return a utf-8
encoded string for them. This ensures that the upload and register
commands send the correct values to PyPI without any error.
- bpo-3299: Fix possible crash in the _sre module when given bad argument
values in debug mode. Patch by Victor Stinner.
- bpo-7703: Add support for the new buffer API to functions of the binascii
module. Backported from py3k by Florent Xicluna, with some additional
tests.
- Expat: Fix DoS via XML document with malformed UTF-8 sequences
(CVE_2009_3560).
Build
-----
- bpo-7658: Ensure that the new pythonw executable works on OSX 10.4
Tools/Demos
-----------
Tests
-----
Documentation
-------------
- Updated Python manual page (options -B, -O0, -s, environment variables
PYTHONDONTWRITEBYTECODE, PYTHONNOUSERSITE).
- bpo-7462: Implement the stringlib fast search algorithm for the `rfind`,
`rindex`, `rsplit` and `rpartition` methods. Patch by Florent Xicluna.
- bpo-7579: The msvcrt module now has docstrings for all its functions.
These executables now work properly with the arch(1) command: ``arch -ppc
python`` will start a universal binary version of python in PPC mode
(unlike previous releases).
Library
-------
- bpo-7231: urllib2 cannot handle https with proxy requiring auth. Patch by
Tatsuhiro Tsujikawa.
- bpo-5949: Fixed IMAP4_SSL hang when the IMAP server response is missing
proper end-of- line termination.
- bpo-7457: Added a read_pkg_file method to
``distutils.dist.DistributionMetadata``.
- bpo-3745: Undo the 2.7a1 change to have hashlib to reject unicode and non
buffer API supporting objects as input. That behavior is for 3.x only.
C API
-----
Build
-----
- bpo-6943: Use pkg-config to find the libffi headers when the ``--with-
system-ffi`` flag is used.
- bpo-7589: Only build the nis module when the correct header files are
found.
Tests
-----
- bpo-3382: 'F' formatting for float and complex now convert the result to
upper case. This only affects 'inf' and 'nan', since 'f' no longer
converts to 'g' for large values.
- Remove switch from "%f" formatting to "%g" formatting for floats larger
than 1e50 in absolute value.
- Fix several issues with ``compile()``. The input can now contain Windows
and Mac newlines and is no longer required to end in a newline.
- bpo-7084: Fix a (very unlikely) crash when printing a list from one
thread, and mutating it from another one. Patch by Scott Dial.
- bpo-6713: Improve performance of base 10 int -> string and long -> string
conversions.
- bpo-1590864: Fix potential deadlock when mixing threads and fork().
- bpo-6750: A text file opened with ``io.open()`` could duplicate its output
when writing from multiple threads at the same time.
- bpo-6704: Improve the col_offset in AST for "for" statements with a target
of tuple unpacking.
- bpo-6070: On posix platforms import no longer copies the execute bit from
the .py file to the .pyc file if it is set. Patch by Marco N.
- bpo-6329: Fixed iteration for memoryview objects (it was being blocked
because it wasn't recognized as a sequence).
- bpo-4547: When debugging a very large function, it was not always possible
to update the lineno attribute of the current frame.
- bpo-5330: C functions called with keyword arguments were not reported by
the various profiling modules (profile, cProfile). Patch by Hagen
Fürstenau.
- bpo-6101: A new opcode, SETUP_WITH, has been added to speed up the with
statement and correctly lookup the __enter__ and __exit__ special methods.
(1) inf and nan strings with trailing whitespace were incorrectly
rejected; (2) parsing of strings representing infinities and nans was
locale aware; and (3) the interpretation of fromhex('-nan') didn't match
that of float('-nan').
- bpo-4426: The UTF-7 decoder was too strict and didn't accept some legal
sequences. Patch by Nick Barnes and Victor Stinner.
- bpo-5864: Fix empty format code formatting for floats so that it never
gives more than the requested number of significant digits.
- bpo-4971: Fix titlecase for characters that are their own titlecase, but
not their own uppercase.
- Implement PEP 378, Format Specifier for Thousands Separator, for floats,
ints, and longs.
- bpo-5515: 'n' formatting for ints, longs, and floats handles leading zero
formatting poorly.
- bpo-3166: Make long -> float (and int -> float) conversions correctly
rounded.
- bpo-1665206: Remove the last eager import in _warnings.c and make it lazy.
- bpo-4258: Make it possible to use base 2**30 instead of base 2**15 for the
internal representation of integers, for performance reasons. Base 2**30
is enabled by default on 64-bit machines. Add --enable-big-digits option
to configure, which overrides the default. Add sys.long_info structseq to
provide information about the internal format.
- bpo-4034: Fix weird attribute error messages of the traceback object. (As
a result traceback.__members__ no longer exists.)
- bpo-5247: Improve error message when unknown format codes are used when
using ``str.format()`` with str, unicode, long, int, and float arguments.
- Running Python with the -3 option now also warns about classic division
for ints and longs.
- bpo-5260: Long integers now consume less memory: average saving is 2 bytes
per long on a 32-bit system and 6 bytes per long on a 64-bit system.
- bpo-3720: Fix a crash when an iterator modifies its class and removes its
__next__ method.
- bpo-4074: Change the criteria for doing a full garbage collection (i.e.
collecting the oldest generation) so that allocating lots of objects
without destroying them does not show quadratic performance. Based on a
proposal by Martin von Löwis at http://mail.python.org/pipermail/python-
dev/2008-June/080579.html.
- Added test case to ensure attempts to read from a file opened for writing
fail.
- bpo-4348: Some bytearray methods returned that didn't cause any change to
the bytearray, returned the same bytearray instead of a copy.
- bpo-5705: os.setuid() would not accept values > 2**31-1 but pwd.getpwnam()
returned them on 64bit platforms.
Library
-------
- bpo-6986: Fix crash in the JSON C accelerator when called with the wrong
parameter types. Patch by Victor Stinner.
- bpo-7328: pydoc no longer corrupts sys.path when run with the '-m' switch.
- bpo-2054: ftplib now provides an FTP_TLS class to do secure FTP using TLS
or SSL. Patch by Giampaolo Rodola'.
- bpo-4969: The mimetypes module now reads the MIME database from the
registry under Windows. Patch by Gabriel Genellina.
- bpo-6816: runpy now provides a run_path function that allows Python code
to execute file paths that refer to source or compiled Python files as
well as zipfiles, directories and other valid sys.path entries that
contain a __main__.py file. This allows applications that run other Python
scripts to support the same flexibility as the CPython command line
itself.
- bpo-7282: Fix a memory leak when an RLock was used in a thread other than
those started through ``threading.Thread`` (for example, using
``thread.start_new_thread()``.
- bpo-7211: Allow 64-bit values for the ``ident`` and ``data`` fields of
kevent objects on 64-bit systems. Patch by Michael Broghton.
- bpo-7246: getpass now properly flushes input before reading from stdin so
that existing input does not confuse it and lead to incorrect entry or an
IOError. It also properly flushes it afterwards to avoid the terminal
echoing the input afterwards on OSes such as Solaris. (See also: bpo-7208)
- bpo-7218: Fix test_site for win32, the directory comparison was done with
an uppercase.
- bpo-7205: Fix a possible deadlock when using a BZ2File object from several
threads at once.
- bpo-5833: Fix extra space character in readline completion with the GNU
readline library version 6.0.
- bpo-7082: When falling back to the MIME 'name' parameter, the correct
place to look for it is the Content-Type header.
- bpo-7048: Force Decimal.logb to round its result when that result is too
large to fit in the current precision.
- bpo-6236: Fix various failures in the `io` module under AIX and other
platforms, when using a non-gcc compiler. Patch by egreen. (See also:
bpo-6348)
- bpo-1135: Add the XView and YView mix-ins to avoid duplicating the xview*
and yview* methods.
- bpo-6629: Fix a data corruption issue in the new `io` package, which could
occur when writing to a BufferedRandom object (e.g. a file opened in "rb+"
or "wb+" mode) after having buffered a certain amount of data for reading.
This bug was not present in the pure Python implementation.
- unittest has been split up into a package. All old names should still
work.
- bpo-6271: mmap tried to close invalid file handle (-1) for anonymous maps
on Unix.
- bpo-6215: All bug fixes and enhancements from the Python 3.1 io library
(including the fast C implementation) have been backported to the standard
``io`` module.
- bpo-6121: pydoc now ignores leading and trailing spaces in the argument to
the 'help' function.
- bpo-1424152: Fix for httplib, urllib2 to support SSL while working through
proxy. Original patch by Christopher Li, changes made by Senthil Kumaran.
- bpo-2116: Weak references and weak dictionaries now support copy()ing and
deepcopy()ing.
- bpo-5955: aifc's close method did not close the file it wrapped, now it
does. This also means getfp method now returns the real fp.
- bpo-3959: The ipaddr module has been added to the standard library.
Contributed by Google.
- bpo-2245: aifc now skips chunk types it doesn't recognize, per spec.
- bpo-5854: Updated __all__ to include some missing names and remove some
names which should not be exported.
- bpo-5810: Fixed Distutils test_build_scripts so it uses
``sysconfig.get_config_vars()``.
- bpo-3102: All global symbols that the _ctypes extension defines are now
prefixed with 'Py' or '_ctypes'.
- bpo-5768: Fixed bug in Unicode output logic and test case for same.
- bpo-5741: Don't disallow "%%" (which is an escape for "%") when setting a
value in SafeConfigParser.
- bpo-5632: Thread.ident was None for the main thread and threads not
created with the threading module.
- bpo-2110: Add support for thousands separator and 'n' type specifier to
``Decimal.__format__()``.
- Fix Decimal.__format__ bug that swapped the meanings of the '<' and '>'
alignment characters.
- bpo-5282: Fixed mmap resize on 32bit Windows and Unix. When ``offset >
0``, the file was resized to wrong size.
- bpo-5170: Fixed Unicode output bug in logging and added test case. This
is a regression which did not occur in 2.5.
- bpo-4195: The ``runpy`` module (and the ``-m`` switch) now support the
execution of packages by looking for and executing a ``__main__``
submodule when a package name is supplied. Initial patch by Andi Vajda.
- bpo-1581476: Always use the Tcl global namespace when calling into Tcl.
- bpo-2047: shutil.move() could believe that its destination path was inside
its source path if it began with the same letters (e.g. "src" vs.
"src.new").
- bpo-4920: Fixed .next() vs .__next__() issues in the ABCs for Iterator and
MutableSet.
- Added the ttk module. See issue #2983: Ttk support for Tkinter.
- Backport importlib from Python 3.1. Only the import_module() function has
been backported to help facilitate transitions from 2.7 to 3.1.
- bpo-3881: Help Tcl to load even when started through the unreadable local
symlink to "Program Files" on Vista.
- bpo-5008: When a file is opened in append mode with the new IO library, do
an explicit seek to the end of file (so that e.g. tell() returns the file
size rather than 0). This is consistent with the behaviour of the
traditional 2.x file object.
- bpo-4998: The memory saving effect of __slots__ had been lost on Fractions
which inherited from numbers.py which did not have __slots__ defined. The
numbers hierarchy now has its own __slots__ declarations.
- bpo-3997: Zipfiles generated with more than 65536 files could not be
opened with other applications.
- bpo-4790: The nsmallest() and nlargest() functions in the heapq module did
unnecessary work in the common case where no key function was specified.
- bpo-4739: Add pydoc help topics for symbols, so that e.g. help('@') works
as expected in the interactive environment.
- bpo-4201: pdb can now access and display source code loaded via zipimport
(or any other conformant PEP 302 loader). Original patch by Alexander
Belopolsky.
- bpo-4197: Doctests in modules loaded via zipimport (or any other PEP 302
conformant loader) will now work correctly in most cases (they are still
subject to the constraints that exist for all code running from inside a
module loaded via a PEP 302 loader and attempting to perform IO operations
based on __file__). Original patch by Alexander Belopolsky.
- bpo-4084: Fix max, min, max_mag and min_mag Decimal methods to give
correct results in the case where one argument is a quiet NaN and the
other is a finite number that requires rounding.
- bpo-1030250: Distutils created directories even when run with the --dry-
run option.
- bpo-4483: _dbm module now builds on systems with gdbm & gdbm_compat libs.
- bpo-4363: The uuid.uuid1() and uuid.uuid4() functions now work even if the
ctypes module is not present.
- bpo-3774: Fixed an error when create a Tkinter menu item without command
and then remove it.
- bpo-4150: Pdb's "up" command now works for generator frames in post-mortem
debugging.
- bpo-4014: Don't claim that Python has an Alpha release status, in addition
to claiming it is Mature.
- bpo-5104: The socket module now raises OverflowError when 16-bit port and
protocol numbers are supplied outside the allowed 0-65536 range on bind()
and getservbyport().
IDLE
----
- bpo-5783: Windows: Version string for the .chm help file changed, file not
being accessed. Patch by Guilherme Polo/
- Remove port spec from run.py and fix bug where subprocess fails to extract
port from command line when warnings are present.
Tools/Demos
-----------
Documentation
-------------
C API
-----
- Some PyBytes_* aliases have been removed because they don't exist in 3.x.
- bpo-3632: From the gdb debugger, the 'pyo' macro can now be called when
the GIL is released, or owned by another thread.
Library
-------
- bpo-6508: Add posix.{getresuid,getresgid,setresuid,setresgid}.
- bpo-3366: Add erf, erfc, expm1, gamma, lgamma functions to math module.
- Fix a segfault in expat when given a specially crafted input lead to the
tokenizer not stopping. CVE-2009-3720.
Note: as of Python 2.7 beta 1, the above is out of date. In 2.7 beta 1,
any argument with an __int__ method can be packed, but use of this feature
triggers a DeprecationWarning. (See also: bpo-1741130)
- bpo-4228: Pack negative values the same way as 2.4 in struct's L format.
- bpo-3167: Fix test_math failures for log, log10 on Solaris, OpenBSD. (See
also: bpo-3682)
- bpo-4396: The parser module now correctly validates the with statement.
Tests
-----
- bpo-7312: Add a -F flag to run the selected tests in a loop until a test
fails. Can be combined with -j.
Windows
-------
Library
-------
- bpo-3863: Disabled a unit test of fork being called from a thread when
running on platforms known to exhibit OS bugs when attempting that.
Build
-----
- bpo-3989: Package the 2to3 script (as 2to3.py) in the Windows installer.
Library
-------
- Security Issue #2: imageop did not validate arguments correctly and could
segfault as a result.
Tools/Demos
-----------
Build
-----
- Fix memory leaks found with valgrind and update suppressions file.
- Fix compiler warnings in opt mode which would lead to invalid memory
reads.
- Silenced another compiler warning about a used but not defined function
'stringlib_contains_obj'.
- bpo-1204: The configure script now tests for additional libraries that may
be required when linking against readline. This fixes issues with x86_64
builds on some platforms (a few Linux flavors and OpenBSD).
C API
-----
- Aliased PyObject_Bytes to PyObject_Str.
Library
-------
- bpo-3535: zipfile couldn't read some zip files larger than 2GB.
- The deprecation warnings for the old camelCase threading API were removed.
- bpo-2975: When compiling several extension modules with Visual Studio 2008
from the same python interpreter, some environment variables would grow
without limit.
- bpo-3103: Reduced globals symbols used by sqlite3 module and made sure all
remaining ones have "pysqlite_" prefix.
Tests
-----
Build
-----
- ctypes function pointers that are COM methods have a boolean True value
again.
- bpo-3537: Fix an assertion failure when an empty but presized dict object
was stored in the freelist.
- bpo-2542: Now that issubclass() may call arbitrary code, ensure that
PyErr_ExceptionMatches returns 0 when an exception occurs there.
- bpo-1819: function calls with several named parameters are now on average
35% faster (as measured by pybench).
Library
-------
- bpo-2234: distutils failed for some versions of the cygwin compiler. The
version reported by these tools does not necessarily follow the python
version numbering scheme, so the module is less strict when parsing it.
- bpo-2235: Added Py3k warnings for types which will become unhashable under
the stricter __hash__ inheritance rules in 3.0. Several types which did
not meet the rules for hash invariants and were already unhashable in 3.0
have now been explicitly flagged as unhashable in 2.6 as well
(collections.Mapping, collections.Set, unittest.TestSuite,
xml.dom.minidom.NamedNodeMap, numbers.Number, UserList.UserList)
- Update __all__ for cookielib, csv, os, urllib2, and weakref to include
things imported into the module but exposed as part of the module's API.
- bpo-2776: fixed small issue when handling a URL with double slash after a
302 response in the case of not going through a proxy.
- bpo-3476: binary buffered reading through the new "io" library is now
thread-safe.
- bpo-3449: Update decimal module to use most recent specification (v. 1.68)
and tests (v. 2.58) from IBM.
- bpo-3302: Fix several crashes when calling locale's gettext functions with
None arguments.
Build
-----
- bpo-3156: Fix inconsistent behavior of the bytearray type: all its methods
now allow for items objects that can be converted to an integer using
operator.index().
- bpo-3083: Add alternate (#) formatting for bin, oct, hex output for
str.format(). This adds the prefix 0b, 0o, or 0x, respectively.
- bpo-3008: the float type has a new instance method 'float.hex' and a new
class method 'float.fromhex' to convert floating-point numbers to and from
hexadecimal strings, respectively.
- bpo-2862: Make int and float freelist management consistent with other
freelists. Changes their CompactFreeList apis into ClearFreeList apis and
calls them via gc.collect().
Library
-------
- bpo-3313: Fixed a crash when a failed dlopen() call does not set a valid
dlerror() message.
- bpo-449227: The rlcompleter module now adds "(" to callable objects when
completed.
- bpo-3190: Pydoc now hides the automatic module attribute __package__ (the
handling is now the same as that of other special attributes like
__name__).
Tests
-----
Build
-----
Documentation
-------------
- Add future_builtins.ascii().
- Added checks for integer overflows, contributed by Google. Some are only
available if asserts are left in the code, in cases where they can't be
triggered from Python code.
Library
-------
- The heapq module does comparisons using LT instead of LE. This makes its
implementation match that used by list.sort().
- Support for Windows 9x has been removed from the winsound module.
- bpo-1798: Add ctypes calling convention that allows safe access to errno.
- bpo-2782: The datetime module's strftime methods now accept unicode format
strings just as time.strftime always has.
- The sgmllib and htmllib modules have been deprecated for removal in Python
3.0.
- bpo-3011: locale module alias table was updated to the latest version from
the X.org locale.alias file.
- bpo-1797: ctypes NULL function pointers have a False boolean value now.
- The statvfs module has been deprecated for removal in Python 3.0.
- The sunaudiodev and SUNAUDIODEV modules have been deprecated for removal
in Python 3.0.
- The WAIT module from IRIX has been deprecated for removal in Python 3.0.
- The torgb module from IRIX has been deprecated for removal in Python 3.0.
- The SV module from IRIX has been deprecated for removal in Python 3.0.
- The readcd module from IRIX has been deprecated for removal in Python 3.0.
- The panelparser module from IRIX has been deprecated for removal in Python
3.0.
- The panel module from IRIX has been deprecated for removal in Python 3.0.
- The jpeg module from IRIX has been deprecated for removal in Python 3.0.
- The IOCTL module from IRIX has been deprecated for removal in Python 3.0.
- The IN module from IRIX has been deprecated for removal in Python 3.0.
- The imgfile module from IRIX has been deprecated for removal in Python
3.0.
- The GLWS module from IRIX has been deprecated for removal in Python 3.0.
- The GET module from IRIX has been deprecated for removal in Python 3.0.
- The fm module from IRIX has been deprecated for removal in Python 3.0.
- The FL, flp, and fl modules from IRIX have been deprecated for removal in
Python 3.0.
- The FILE module on IRIX has been deprecated for removal in Python 3.0.
- The ERRNO module on IRIX has been deprecated for removal in Python 3.0.
- The DEVICE, GL, gl, and cgen modules (which indirectly includes
cgensupport) have been deprecated for removal in Python 3.0.
- The CL, CL_old, and cl modules for IRIX have been deprecated for removal
in Python 3.0.
- The cdplayer module for IRIX has been deprecated for removal in Python
3.0.
- The cddb module for IRIX has been deprecated for removal in Python 3.0.
- The cd and CD modules for IRIX have been deprecated for removal in Python
3.0.
- The al and AL modules for IRIX have been deprecated for removal in Python
3.0.
- The timing module has been deprecated for removal in Python 3.0.
- The imageop module has been deprecated for removal in Python 3.0.
- The mhlib module has been deprecated for removal in Python 3.0.
- The linuxaudiodev module has been deprecated for removal in Python 3.0.
- The ihooks module has been deprecated for removal in Python 3.0.
- The fpformat module has been deprecated for removal in Python 3.0.
- The Canvas module has been deprecated for removal in Python 3.0.
- The compiler package has been deprecated for removal in Python 3.0.
- The Bastion and rexec modules have been deprecated for removal in Python
3.0.
- The bsddb185 module has been deprecated for removal in Python 3.0.
- The pure module has been deprecated for removal in Python 3.0.
- The toaiff module has been deprecated for removal in Python 3.0.
- The test.testall module has been deprecated for removal in Python 3.0.
- The new module has been deprecated for removal in Python 3.0.
- The user module has been deprecated for removal in Python 3.0.
- The stringold module has been deprecated for removal in Python 3.0.
- The mutex module has been deprecated for removal in Python 3.0.
- The imputil module has been deprecated for removal in Python 3.0.
- The Mac Modules (including Carbon) have been deprecated for removal in
Python 3.0.
- Library: on MacOS X you can now set ``ARCHFLAGS`` in the shell environment
to control the '-arch' flags that are used to build an extension. This was
added for compatibility with Apple's build of Python.
- The bundled OSX-specific copy of libbffi is now in sync with the version
shipped with PyObjC 2.0 and includes support for x86_64 and ppc64
platforms.
- The threading module gained aliases for names that will be removed in the
3.x series.
Build
-----
- The Windows installer now includes Tk 8.5, bzip2 1.0.5, and SQLite 3.5.9.
NOTE: 64-bit and 4-way builds are only suppported on Mac OS X 10.5 (or
later).
C API
-----
- Added phase(z) -> phi, polar(z) -> r, phi and rect(r, phi) -> z to the
cmath module.
- Four new methods were added to the math and cmath modules: acosh, asinh,
atanh and log1p.
- The audiodev module has been deprecated for removal in Python 3.0.
- bpo-2750: Add the 'json' package. Based on simplejson 1.9 and contributed
by Bob Ippolito.
- The getpass module has been improved on Unix. It now uses /dev/tty by
default and uses stderr instead of stdout. A GetPassWarning is issued
when input echo cannot be controlled.
- bpo-815646: Individual file objects may now be used from multiple threads
at once without fear of crashing the Python interpreter. If file.close()
is called while an object is in use by another thread an IOError exception
will be raised and the file will not be closed.
- The bundled libffi copy is now in sync with the recently released
libffi3.0.5 version, apart from some small changes to
Modules/_ctypes/libffi/configure.ac.
Tests
-----
Build
-----
- bpo-2544: On HP-UX systems, use 'gcc -shared' for linking when gcc is used
as compiler.
C API
-----
- Added implementation of copysign, acosh, asinh, atanh and log1p to the new
files Include/pymath.h and Python/pymath.h for platforms which provide the
functions through their libm. The files also contains several helpers and
constants for math.
- bpo-2346: add Py3k warnings for __methods__ and __members__. (See also:
bpo-2347)
- bpo-2332: add new attribute names for instance method objects. The two
changes are: im_self -> __self__ and im_func -> __func__
- bpo-2341: Add a Py3k warning when raising an exception that doesn't derive
from BaseException.
- bpo-2321: use pymalloc for unicode object string data to reduce memory
usage in some circumstances.
- PEP 3127: octal literals now start with "0o". Old-style octal literals are
still valid. There are binary literals with a prefix of "0b". This also
affects int(x, 0).
- bpo-1779871: GNU gcc can now build Python on OS X because the flags -Wno-
long-double, -no-cpp-precomp, and -mno-fused-madd are no longer passed.
- bpo-2238: Some syntax errors in *args and **kwargs expressions could give
bogus error messages.
Library
-------
- The library implementing the 2to3 conversion, lib2to3, was added to the
standard distribution.
- bpo-1747858: Fix chown to work with large uid's and gid's on 64-bit
platforms.
- bpo-2166: now distutils deals with HOME correctly under win32 (See also:
bpo-1741, bpo-1531505)
- bpo-1725737: In distutils' sdist, exclude RCS, CVS etc. also in the root
directory, and also exclude .hg, .git, .bzr, and _darcs.
- bpo-1872: The struct module typecode for _Bool has been changed from 't'
to '?'.
- The bundled libffi copy is now in sync with the recently released
libffi3.0.4 version, apart from some small changes to
Modules/_ctypes/libffi/configure.ac. On OS X, preconfigured libffi files
are used. On all linux systems the --with-system-ffi configure option
defaults to "yes".
Tests
-----
Build
-----
- A new script 2to3 is now installed, to run the 2.x to 3.x converter.
- Python/memmove.c and Python/strerror.c have been removed; both functions
are in the C89 standard library.
C API
-----
- bpo-2051: pyc and pyo files are no longer created with permission 644. The
mode is now inherited from the py file.
- bpo-1881: An internal parser limit has been increased. Also see issue
#215555 for a discussion.
- Added the future_builtins module, which contains hex() and oct(). These
are the PEP 3127 version of these functions, designed to be compatible
with the hex() and oct() builtins from Python 3.0. They differ slightly
in their output formats from the existing, unchanged Python 2.6 builtins.
The expected usage of the future_builtins module is: from
future_builtins import hex, oct
- Implemented PEP 3101, Advanced String Formatting. This adds a new builtin
format(); a format() method for str and unicode; a __format__() method to
object, str, unicode, int, long, float, and datetime; the class
string.Formatter; and the C API PyObject_Format().
- Fixed repr() and str() of complex numbers with infinity or nan as real or
imaginary part.
- Clear all free lists during a gc.collect() of the highest generation in
order to allow pymalloc to free more arenas. Python may give back memory
to the OS earlier.
- Fixed a minor memory leak in dictobject.c. The content of the free list
was not freed on interpreter shutdown.
- Limit free list of method and built-in function objects to 256 entries
each.
- bpo-1678380: Fix a bug that identifies 0j and -0j when they appear in the
same code unit.
- bpo-1865: ``bytes`` as an alias for ``str`` and b"" as an alias "" were
added.
- Compiler now generates simpler and faster code for dictionary literals.
The oparg for BUILD_MAP now indicates an estimated dictionary size. There
is a new opcode, STORE_MAP, for adding entries to the dictionary.
- PEP 366: Allow explicit relative imports when executing modules inside
packages with the -m switch via a new module level __package__ attribute.
- bpo-1402: Fix a crash on exit, when another thread is still running, and
if the deallocation of its frames somehow calls the PyGILState_Ensure() /
PyGILState_Release() functions.
- bpo-1460: The utf-7 incremental decoder did not accept truncated input.
It now correctly saves its state between chunks of data.
- bpo-1686386: Tuple's tp_repr did not take into account the possibility of
having a self- referential tuple, which is possible from C code. Nor did
object's tp_str consider that a type's tp_str could do something that
could lead to an inifinite recursion. Py_ReprEnter() and
Py_EnterRecursiveCall(), respectively, fixed the issues.
- bpo-1096: Prevent a segfault from getting the repr of a very deeply nested
list by using the recursion counter.
- bpo-1673759: add a missing overflow check when formatting floats with %G.
- Add new attribute names for function objects. All the func_* become __*__
attributes. (Some already existed, e.g., __doc__ and __name__.)
- bpo-1686487: you can now pass any mapping after '**' in function calls.
- When __slots__ are set to a unicode string, make it work the same as
setting a plain string, ie don't expand to single letter identifiers.
- bpo-1579370: Make PyTraceBack_Here use the current thread, not the frame's
thread state.
- bpo-1576657: when setting a KeyError for a tuple key, make sure that the
tuple isn't used as the "exception arguments tuple".
- Update the peephole optimizer to remove more dead code (jumps after
returns) and inline unconditional jumps to returns.
- bpo-1545497: when given an explicit base, int() did ignore NULs embedded
in the string to convert.
- bpo-1566800: make sure that EnvironmentError can be called with any number
of arguments, as was the case in Python 2.4.
- Fix a bug in the parser's future statement handling that led to "with" not
being recognized as a keyword after, e.g., this statement: from __future__
import division, with_statement
- bpo-1557232: fix seg fault with def f((((x)))) and def f(((x),)).
- bpo-1550983: emit better error messages for erroneous relative imports (if
not in package and if beyond toplevel package).
Library
-------
- bpo-1781: ConfigParser now does not let you add the "default" section
(ignore-case)
- bpo-1224: Fixed bad url parsing when path begins with double slash.
- ctypes instances that are not or do not contain pointers can now be
pickled.
- bpo-1966: Break infinite loop in httplib when the servers implements the
chunked encoding incorrectly.
- bpo-2004: tarfile.py: Use mode 0700 for temporary directories and default
permissions for missing directories.
- bpo-1269: fix a bug in pstats.add_callers() and add a unit test file for
pstats.
- bpo-1003: Fix zipfile decryption check, it would fail zip files with
extended local headers.
- bpo-1189216: Fix the zipfile module to work on archives with headers past
the 2**31 byte boundary.
- bpo-1146: fix how textwrap breaks a long word that would start in the last
column of a line.
- bpo-1837: The queue module now also supports a LIFO queue and a priority
queue.
- bpo-1786: pdb should use its own stdin/stdout around an exec call and when
creating a recursive instance.
- bpo-1455: The distutils package now supports VS 2005 and VS 2008 for both
the msvccompiler and cygwincompiler.
- bpo-1531: tarfile.py: Read fileobj from the current offset, do not seek to
the start.
- bpo-1429818: patch for trace and doctest modules so they play nicely
together.
- bpo-1292: On alpha, arm, ppc, and s390 linux systems the --with-system-ffi
configure option defaults to "yes".
- IN module for FreeBSD 8 is added and preexisting FreeBSD 6 and 7 files are
updated.
- ctypes will now work correctly on 32-bit systems when Python is configured
with --with-system-ffi.
- The functools module now provides 'reduce', for forward compatibility with
Python 3000.
- GB18030 codec now can encode additional two-byte characters that are
missing in GBK.
- In ftplib, the FTP.ntransfercmd method, when in passive mode, now uses the
socket.create_connection function, using the timeout specified at
connection time.
- bpo-1385: The hmac module now computes the correct hmac when using hashes
with a block size other than 64 bytes (such as sha384 and sha512).
- Remove the gopherlib module. This also leads to the removal of gopher
support in urllib/urllib2.
- Fix bug in marshal where bad data would cause a segfault due to lack of an
infinite recursion check.
- The popen2 module and os.popen* are deprecated. Use the subprocess
module.
- bpo-1706381: Specifying the SWIG option "-c++" in the setup.py file (as
opposed to the command line) will now write file names ending in ".cpp"
too.
- As specified in RFC 2616, an HTTP response like 2xx indicates that the
client's request was successfully received, understood, and accepted. Now
in these cases no error is raised in urllib (issue #1177) and urllib2.
- bpo-1675967: re patterns pickled with Python 2.4 and earlier can now be
unpickled with Python 2.5 and newer.
- bpo-1681228: the webbrowser module now correctly uses the default GNOME or
KDE browser, depending on whether there is a session of one of those
present. Also, it tries the Windows default browser before trying Mozilla
variants.
- bpo-1429539: pdb now correctly initializes the __main__ module for the
debugged script, which means that imports from __main__ work correctly
now.
- bpo-1393667: pdb now has a "run" command which restarts the debugged
Python program, optionally with different arguments.
- bpo-1192590: Fix pdb's "ignore" and "condition" commands so they trap the
IndexError caused by passing in an invalid breakpoint number.
- bpo-1675424: Added tests for uncovered code in the zipfile module. The
KeyError raised by Zipfile.getinfo for nonexistent names now has a
descriptive message.
- bpo-1550273: fix a few bugs in unittest and add a comprehensive test suite
for the module. (See also: bpo-1550272)
- bpo-1663234: you can now run doctest on test files and modules using
"python -m doctest [-v] filename ...".
- bpo-1517891: Mode 'a' for ZipFile now creates the file if it doesn't
exist.
- The sets module has been deprecated. Use the built-in set/frozenset types
instead.
- bpo-1360200: Use unmangled_version RPM spec field to deal with file name
mangling.
- bpo-1583880: fix tarfile's problems with long names and posix/ GNU modes.
- bpo-1586448: the compiler module now emits the same bytecode for list
comprehensions as the built-in compiler, using the LIST_APPEND opcode.
- Fix codecs.EncodedFile which did not use file_encoding in 2.5.0, and fix
all codecs file wrappers to work correctly with the "with" statement (bug
#1586513).
- Fix turtle so that time.sleep is imported for the entire library. Allows
the demo2 function to be executed on its own instead of only when the
module is run as a script.
- bpo-1565150: Fix subsecond processing for os.utime on Windows.
- bpo-1560617: in pyclbr, return full module name not only for classes, but
also for functions.
- Made the error message for time.strptime when the data and format do match
be more clear.
- bpo-1553314: Fix the inspect.py slowdown that was hurting IPython & SAGE
by adding smarter caching in inspect.getmodule()
- Fix utf-8-sig incremental decoder, which didn't recognise a BOM when the
first chunk fed to the decoder started with a BOM, but was longer than 3
bytes.
- _winreg's HKEY object has gained __enter__ and __exit__ methods to support
the context management protocol. The _winreg module also gained a new
function ``ExpandEnvironmentStrings`` to expand REG_EXPAND_SZ keys.
- bpo-1646: Make socket support TIPC. The socket module now has support for
TIPC under Linux, see http://tipc.sf.net/ for more information.
- Added wide char functions to msvcrt module: getwch, getwche, putwch and
ungetwch. The functions accept or return unicode.
- Marshal.dumps() now expects exact type matches for int, long, float,
complex, tuple, list, dict, set, and frozenset. Formerly, it would
silently miscode subclasses of those types. Now, it raises a ValueError
instead.
- pybsddb.sf.net Bug #477182: Load the database flags at database open time
so that opening a database previously created with the DB_DUP or
DB_DUPSORT flag set will keep the proper behavior on subsequent opens.
Specifically: dictionary assignment to a DB object will replace all values
for a given key when the database allows duplicate values. DB users
should use DB.put(k, v) when they want to store duplicates; not DB[k] = v.
- bpo-1622896: fix a rare corner case where the bz2 module raised an error
in spite of a succesful compression.
- bpo-1610575: The struct module now supports the 't' code, for C99 _Bool.
- bpo-1635058: ensure that htonl and friends never accept or return negative
numbers, per the underlying C implementation.
- bpo-1588217: don't parse "= " as a soft line break in binascii's a2b_qp()
function, instead leave it in the string as quopri.decode() does.
- bpo-1572832: fix a bug in ISO-2022 codecs which may cause segfault when
encoding non-BMP unicode characters.
- bpo-1114: fix curses module compilation on 64-bit AIX, & possibly other
64-bit LP64 platforms where attr_t is not the same size as a long.
(Contributed by Luke Mewburn.)
- fixed a bug with bsddb.DB.stat: the flags and txn keyword arguments were
transposed.
- Added support for linking the bsddb module against BerkeleyDB 4.5.x, 4.6.x
and 4.7.x.
- bsddb module: Fix memory leak when using database cursors on databases
without a DBEnv.
IDLE
----
- bpo-813342: Start the IDLE subprocess with -Qnew if the parent is started
with that option.
- IDLE: Honor the "Cancel" action in the save dialog (Debian bug #299092).
Tests
-----
Tools/Demos
-----------
- Added IronPython and Jython support to pybench (part of which was patch
#1563844).
- Made some minor changes to pybench output to allow the user to see which
Python version is running pybench.
Documentation
-------------
- bpo-1569057: Document that calling file.next() when the file is open for
writing is undefined.
- bpo-1629125: fix wrong data type (int -> Py_ssize_t) in PyDict_Next docs.
Tools/Demos
-----------
- bpo-1546372: Fixed small bugglet in pybench that caused a missing file not
to get reported properly.
Build
-----
- Have the search path for building extensions follow the declared order in
$CPPFLAGS and $LDFLAGS when adding directories from those environment
variables.
- Removed PCbuild8/ directory and added a new build directory for VS 2005
based on the VS 2008 build directory to PC/VS8.0. The script
PCbuild/vs8to9.py was added to sync changes from PCbuild to PC/VS8.0.
- bpo-1608: use -fwrapv when GCC supports it. This is important, newer GCC
versions may optimize away overflow buffer overflow checks without this
option!
- Stop supporting AtheOS and cause a build error in configure for the
platform.
C API
-----
- Unified naming convention for free lists and their limits. All free lists
in Object/ are named ``free_list``, the counter ``numfree`` and the upper
limit is a macro ``PyName_MAXFREELIST`` inside an #ifndef block.
- PEP 3123: Provide forward compatibility with Python 3.0, while keeping
backwards compatibility. Add Py_Refcnt, Py_Type, Py_Size, and
PyVarObject_HEAD_INIT.
- Fix some leftovers from the conversion from int to Py_ssize_t (relevant to
strings and sequences of more than 2**31 items).
Windows
-------
- bpo-1706: Drop support for Win9x, WinME and NT4. Python now requires
Windows 2000 or greater. The _WINVER and NTDDI_VERSION macros are set to
Win2k for x86/32bit builds and WinXP for AMD64 builds.
macOS
-----
- Removed the macfs module. It had been deprecated since Python 2.5. This
lead to the deprecation of macostools.touched() as it relied solely on
macfs and was a no-op under OS X.