Python 3.6
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 | |
|---|---|---|
| PEP 498 | Literal String Formatting | Complete |
| PEP 515 | Underscores in Numeric Literals | Complete |
| PEP 525 | Asynchronous Generators | |
| PEP 526 | Syntax for Variable Annotations (provisional) | Complete |
| PEP 530 | Asynchronous Comprehensions | |
| New Built-in Features | ||
| PEP 468 | Preserving the order of kwargs in a function | |
| PEP 487 | Simpler customization of class creation | |
| PEP 520 | Preserving Class Attribute Definition Order | |
| Standard Library Changes | ||
| PEP 495 | Local Time Disambiguation | |
| PEP 506 | Adding A Secrets Module To The Standard Library | |
| PEP 519 | Adding a file system path protocol | |
| CPython Internals | ||
| PEP 509 | Add a private version to dict | Won’t do |
| PEP 523 | Adding a frame evaluation API to CPython | |
| Linux/Window Changes | ||
| PEP 524 | Make os.urandom() blocking on Linux(during system startup) | |
| PEP 528 | Change Windows console encoding to UTF-8 | |
| PEP 529 | 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:
| array | |
|---|---|
| Exhausted iterators of array.array will now stay exhausted even if the iterated array is extended. | |
| binascii | |
| The b2a_base64() function now accepts an optional newline keyword argument to control whether the newline character is appended to the return value | Complete |
| cmath | |
| 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 | |
| collections | |
| 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. | |
| hashlib | |
| 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 | |
| json.load() and json.loads() now support binary input. Encoded JSON should be represented using either UTF-8, UTF-16, or UTF-32. | |
| math | |
| The new math.tau (τ) constant has been added | Complete |
| os | |
| 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. | |
| re | |
| 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. | |
| socket | |
| 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 | |
| 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. | |
| struct | |
| now supports IEEE 754 half-precision floats via the ‘e’ format specifier. | |
| sys | |
| The new getfilesystemencodeerrors() function returns the name of the error mode used to convert between Unicode filenames and bytes filenames. | |
| zlib | |
| The compress() and decompress() functions now accept keyword arguments |
