Python 3.6¶
Python 3.6 beta 1 was released on 12 Sep 2016, and a summary of the new features can be found here:
New Syntax Features |
Status |
|
Literal String Formatting |
Complete |
|
Underscores in Numeric Literals |
Complete |
|
Asynchronous Generators |
||
Syntax for Variable Annotations (provisional) |
Complete |
|
Asynchronous Comprehensions |
||
New Built-in Features |
||
Preserving the order of kwargs in a function |
||
Simpler customization of class creation |
||
Preserving Class Attribute Definition Order |
||
Standard Library Changes |
||
Local Time Disambiguation |
||
Adding A Secrets Module To The Standard Library |
||
Adding a file system path protocol |
||
CPython Internals |
||
Add a private version to dict |
Won’t do |
|
Adding a frame evaluation API to CPython |
||
Linux/Window Changes |
||
Make |
||
Change Windows console encoding to UTF-8 |
||
Change Windows filesystem encoding to UTF-8 |
Other Language Changes:
A global or nonlocal statement must now textually appear before the first use of the affected name in the same scope. Previously this was a SyntaxWarning. |
|
It is now possible to set a special method to None to indicate that the corresponding operation is not available. For example, if a class sets __iter__() to None , the class is not iterable. |
|
Long sequences of repeated traceback lines are now abbreviated as [Previous line repeated {count} more times] |
|
Import now raises the new exception ModuleNotFoundError when it cannot find a module. Code that currently checks for ImportError (in try-except) will still work. |
|
Class methods relying on zero-argument super() will now work correctly when called from metaclass methods during class creation. |
Changes to built-in modules:
Exhausted iterators of array.array will now stay exhausted even if the iterated array is extended. |
|
The b2a_base64() function now accepts an optional newline keyword argument to control whether the newline character is appended to the return value |
Complete |
The new cmath.tau (τ) constant has been added |
|
New constants: cmath.inf and cmath.nan to match math.inf and math.nan , and also cmath.infj and cmath.nanj to match the format used by complex repr |
|
The new Collection abstract base class has been added to represent sized iterable container classes |
|
The new Reversible abstract base class represents iterable classes that also provide the __reversed__() method. |
|
The new AsyncGenerator abstract base class represents asynchronous generators. |
|
The namedtuple() function now accepts an optional keyword argument module, which, when specified, is used for the __module__ attribute of the returned named tuple class. |
|
The verbose and rename arguments for namedtuple() are now keyword-only. |
|
Recursive collections.deque instances can now be pickled. |
|
BLAKE2 hash functions were added to the module. blake2b() and blake2s() are always available and support the full feature set of BLAKE2. |
|
The SHA-3 hash functions sha3_224(), sha3_256(), sha3_384(), sha3_512(), and SHAKE hash functions shake_128() and shake_256() were added. |
|
The password-based key derivation function scrypt() is now available with OpenSSL 1.1.0 and newer. |
|
json.load() and json.loads() now support binary input. Encoded JSON should be represented using either UTF-8, UTF-16, or UTF-32. |
|
The new math.tau (τ) constant has been added |
Complete |
A new close() method allows explicitly closing a scandir() iterator. The scandir() iterator now supports the context manager protocol. |
|
On Linux, os.urandom() now blocks until the system urandom entropy pool is initialized to increase the security. |
|
The Linux getrandom() syscall (get random bytes) is now exposed as the new os.getrandom() function. |
|
Added support of modifier spans in regular expressions. Examples: ‘(?i:p)ython’ matches ‘python’ and ‘Python’, but not ‘PYTHON’; ‘(?i)g(?-i:v)r’ matches ‘GvR’ and ‘gvr’, but not ‘GVR’. |
|
Match object groups can be accessed by __getitem__, which is equivalent to group(). So mo[‘name’] is now equivalent to mo.group(‘name’). |
|
Match objects now support index-like objects as group indices. |
|
The ioctl() function now supports the SIO_LOOPBACK_FAST_PATH control code. |
|
The getsockopt() constants SO_DOMAIN , SO_PROTOCOL, SO_PEERSEC , and SO_PASSSEC are now supported. |
|
The setsockopt() now supports the setsockopt(level, optname, None, optlen: int) form. |
|
The socket module now supports the address family AF_ALG to interface with Linux Kernel crypto API. ALG_, SOL_ALG and sendmsg_afalg() were added. |
|
New Linux constants TCP_USER_TIMEOUT and TCP_CONGESTION were added. |
|
ssl supports OpenSSL 1.1.0. The minimum recommend version is 1.0.2. |
|
3DES has been removed from the default cipher suites and ChaCha20 Poly1305 cipher suites have been added. |
|
SSLContext has better default configuration for options and ciphers. |
|
SSL session can be copied from one client-side connection to another with the new SSLSession class. TLS session resumption can speed up the initial handshake, reduce latency and improve performance. |
|
The new get_ciphers() method can be used to get a list of enabled ciphers in order of cipher priority. |
|
All constants and flags have been converted to IntEnum and IntFlags. |
|
Server and client-side specific TLS protocols for SSLContext were added. |
|
Added SSLContext.post_handshake_auth to enable and ssl.SSLSocket.verify_client_post_handshake() to initiate TLS 1.3 post-handshake authentication. |
|
now supports IEEE 754 half-precision floats via the ‘e’ format specifier. |
|
The new getfilesystemencodeerrors() function returns the name of the error mode used to convert between Unicode filenames and bytes filenames. |
|
The compress() and decompress() functions now accept keyword arguments |