What's new in Python 3.6.2 RC2
Jul 13, 2017
- Library:
- [Security] bpo-30730: Prevent environment variables injection in subprocess on Windows. Prevent passing other environment variables and command arguments.
- [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().
- [Security] bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For example, splithost('//127.0.0.1#@evil.com/') now correctly returns the 127.0.0.1 host, instead of treating @evil.com as the host in an authentification (login@host).
New in Python 3.5.2 (Jun 27, 2016)
- PEP 441, improved Python zip application support
- PEP 448, additional unpacking generalizations
- PEP 461, "%-formatting" for bytes and bytearray objects
- PEP 465, a new operator (@) for matrix multiplication
- PEP 471, os.scandir(), a fast new directory traversal function
- PEP 475, adding support for automatic retries of interrupted system calls
- PEP 479, change StopIteration handling inside generators
- PEP 484, the typing module, a new standard for type annotations
- PEP 485, math.isclose(), a function for testing approximate equality
- PEP 486, making the Windows Python launcher aware of virtual environments
- PEP 488, eliminating .pyo files
- PEP 489, a new and improved mechanism for loading extension modules
- PEP 492, coroutines with async and await syntax
New in Python 3.5.1 (Dec 8, 2015)
- PEP 441, improved Python zip application support
- PEP 448, additional unpacking generalizations
- PEP 461, "%-formatting" for bytes and bytearray objects
- PEP 465, a new operator (@) for matrix multiplication
- PEP 471, os.scandir(), a fast new directory traversal function
- PEP 475, adding support for automatic retries of interrupted system calls
- PEP 479, change StopIteration handling inside generators
- PEP 484, the typing module, a new standard for type annotations
- PEP 485, math.isclose(), a function for testing approximate equality
- PEP 486, making the Windows Python launcher aware of virtual environments
- PEP 488, eliminating .pyo files
- PEP 489, a new and improved mechanism for loading extension modules
- PEP 492, coroutines with async and await syntax
New in Python 3.5.0 (Sep 13, 2015)
- Python 3.5.0 is the newest version of the Python language, and it contains many exciting new features and optimizations.
New in Python 3.4.1 (Oct 28, 2014)
- This version comes with over three hundred bugfixes and other improvements over 3.4.0. One notable change: the version of OpenSSL bundled with the Windows installer no longer has the HeartBleed vulnerability.
New in Python 3.4.0 RC1 (Jan 28, 2014)
- PEP 380, syntax for delegating to a subgenerator (yield from)
- PEP 393, flexible string representation (doing away with the distinction between "wide" and "narrow" Unicode builds)
- A C implementation of the "decimal" module, with up to 120x speedup for decimal-heavy applications
- The import system (__import__) is based on importlib by default
- The new "lzma" module with LZMA/XZ support
- PEP 397, a Python launcher for Windows
- PEP 405, virtual environment support in core
- PEP 420, namespace package support
- PEP 3151, reworking the OS and IO exception hierarchy
- PEP 3155, qualified name for classes and functions
- PEP 409, suppressing exception context
- PEP 414, explicit Unicode literals to help with porting
- PEP 418, extended platform-independent clocks in the "time" module
- PEP 412, a new key-sharing dictionary implementation that significantly saves memory for object-oriented code
- PEP 362, the function-signature object
- The new "faulthandler" module that helps diagnosing crashes
- The new "unittest.mock" module
- The new "ipaddress" module
- The "sys.implementation" attribute
- A policy framework for the email package, with a provisional (see PEP 411) policy that adds much improved unicode support for email header parsing
- A "collections.ChainMap" class for linking mappings to a single unit
- Wrappers for many more POSIX functions in the "os" and "signal" modules, as well as other useful functions such as "sendfile()"
- Hash randomization, introduced in earlier bugfix releases, is now switched on by default
New in Python 3.4.0 Beta 2 (Jan 8, 2014)
- PEP 428, a "pathlib" module providing object-oriented filesystem paths
- PEP 435, a standardized "enum" module
- PEP 436, a build enhancement that will help generate introspection information for builtins
- PEP 442, improved semantics for object finalization
- PEP 443, adding single-dispatch generic functions to the standard library
- PEP 445, a new C API for implementing custom memory allocators
- PEP 446, changing file descriptors to not be inherited by default in subprocesses
- PEP 450, a new "statistics" module
- PEP 451, standardizing module metadata for Python's module import system
- PEP 453, a bundled installer for the pip package manager
- PEP 454, a new "tracemalloc" module for tracing Python memory allocations
- PEP 456, a new hash algorithm for Python strings and binary data
- PEP 3154, a new and improved protocol for pickled objects
- PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
New in Python 3.4.0 Beta 1 (Nov 27, 2013)
- PEP 428, a "pathlib" module providing object-oriented filesystem paths
- PEP 435, a standardized "enum" module
- PEP 436, a build enhancement that will help generate introspection information for builtins
- PEP 442, improved semantics for object finalization
- PEP 443, adding single-dispatch generic functions to the standard library
- PEP 445, a new C API for implementing custom memory allocators
- PEP 446, changing file descriptors to not be inherited by default in subprocesses
- PEP 450, a new "statistics" module
- PEP 451, standardizing module metadata for Python's module import system
- PEP 453, a bundled installer for the pip package manager
- PEP 454, a new "tracemalloc" module for tracing Python memory allocations
- PEP 456, a new hash algorithm for Python strings and binary data
- PEP 3154, a new and improved protocol for pickled objects
- PEP 3156, a new "asyncio" module, a new framework for asynchronous I/O
New in Python 3.4.0 Alpha 4 (Nov 21, 2013)
- PEP 435, a standardized "enum" module
- PEP 436, a build enhancement that will help generate introspection information for builtins
- PEP 442, improved semantics for object finalization
- PEP 443, adding single-dispatch generic functions to the standard library
- PEP 445, a new C API for implementing custom memory allocators
- PEP 446, changing file descriptors to not be inherited by default in subprocesses
- PEP 450, the new "statistics" module
- PEP 3156, the new "asyncio" module, a new framework for asynchronous I/O
New in Python 2.7.6 (Nov 20, 2013)
- An ordered dictionary type
- New unittest features including test skipping, new assert methods, and test discovery
- A much faster io module
- Automatic numbering of fields in the str.format() method
- Float repr improvements backported from 3.x
- Tile support for Tkinter
- A backport of the memoryview object from 3.x
- Set literals
- Set and dictionary comprehensions
- Dictionary views
- New syntax for nested with statements
- The sysconfig module
New in Python 3.2.5 (May 16, 2013)
- numerous improvements to the unittest module
- PEP 3147, support for .pyc repository directories
- PEP 3149, support for version tagged dynamic libraries
- PEP 3148, a new futures library for concurrent programming
- PEP 384, a stable ABI for extension modules
- PEP 391, dictionary-based logging configuration
- an overhauled GIL implementation that reduces contention
- an extended email package that handles bytes messages
- a much improved ssl module with support for SSL contexts and certificate hostname matching
- a sysconfig module to access configuration information
- additions to the shutil module, among them archive file support
- many enhancements to configparser, among them mapping protocol support
- improvements to pdb, the Python debugger
- countless fixes regarding bytes/string issues; among them full support for a bytes environment (filenames, environment variables)
- many consistency and behavior fixes for numeric operations
New in Python 3.3.2 (May 16, 2013)
- PEP 380, syntax for delegating to a subgenerator (yield from)
- PEP 393, flexible string representation (doing away with the distinction between "wide" and "narrow" Unicode builds)
- A C implementation of the "decimal" module, with up to 120x speedup for decimal-heavy applications
- The import system (__import__) is based on importlib by default
- The new "lzma" module with LZMA/XZ support
- PEP 397, a Python launcher for Windows
- PEP 405, virtual environment support in core
- PEP 420, namespace package support
- PEP 3151, reworking the OS and IO exception hierarchy
- PEP 3155, qualified name for classes and functions
- PEP 409, suppressing exception context
- PEP 414, explicit Unicode literals to help with porting
- PEP 418, extended platform-independent clocks in the "time" module
- PEP 412, a new key-sharing dictionary implementation that significantly saves memory for object-oriented code
- PEP 362, the function-signature object
- The new "faulthandler" module that helps diagnosing crashes
- The new "unittest.mock" module
- The new "ipaddress" module
- The "sys.implementation" attribute
- A policy framework for the email package, with a provisional (see PEP 411) policy that adds much improved unicode support for email header parsing
- A "collections.ChainMap" class for linking mappings to a single unit
- Wrappers for many more POSIX functions in the "os" and "signal" modules, as well as other useful functions such as "sendfile()"
- Hash randomization, introduced in earlier bugfix releases, is now switched on by default
New in Python 3.3.0 (Oct 1, 2012)
- PEP 380, syntax for delegating to a subgenerator (yield from)
- PEP 393, flexible string representation (doing away with the distinction between "wide" and "narrow" Unicode builds)
- A C implementation of the "decimal" module, with up to 120x speedup for decimal-heavy applications
- The import system (__import__) is based on importlib by default
- The new "lzma" module with LZMA/XZ support
- PEP 397, a Python launcher for Windows
- PEP 405, virtual environment support in core
- PEP 420, namespace package support
- PEP 3151, reworking the OS and IO exception hierarchy
- PEP 3155, qualified name for classes and functions
- PEP 409, suppressing exception context
- PEP 414, explicit Unicode literals to help with porting
- PEP 418, extended platform-independent clocks in the "time" module
- PEP 412, a new key-sharing dictionary implementation that significantly saves memory for object-oriented code
- PEP 362, the function-signature object
- The new "faulthandler" module that helps diagnosing crashes
- The new "unittest.mock" module
- The new "ipaddress" module
- The "sys.implementation" attribute
- A policy framework for the email package, with a provisional (see PEP 411) policy that adds much improved unicode support for email header parsing
- A "collections.ChainMap" class for linking mappings to a single unit
- Wrappers for many more POSIX functions in the "os" and "signal" modules, as well as other useful functions such as "sendfile()"
- Hash randomization, introduced in earlier bugfix releases, is now switched on by default
New in Python 3.1.2 (Mar 22, 2010)
- An ordered dictionary type
- Various optimizations to the int type
- New unittest features including test skipping and new assert methods.
- A much faster io module
- Tile support for Tkinter
- A pure Python reference implementation of the import statement
- New syntax for nested with statements