# 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 |

Language and External Links

Language
  English
  中文

External links
  openmv.io
  forums.openmv.io
  github.com/openmv/openmv
  micropython.org
  forum.micropython.org
  github.com/micropython/micropython