-
-
Notifications
You must be signed in to change notification settings - Fork 8.6k
Open
Labels
rfcRequest for CommentRequest for Comment
Description
Python 3.6 beta 1 was released on 12 Sep 2016, and a summary of the new features can be found here: https://docs.python.org/3.6/whatsnew/3.6.html . Being in beta stage means we can provide feedback on any of the new features/changes if we like.
(See #1329 for Python 3.5 support, which is still pending.)
New syntax features:
- PEP 498 - Literal String Formatting : f-strings were implemented in 692d36d
- PEP 515 - Underscores in Numeric Literals; done in 6a445b6 ; see also Add support for underscores in numeric literals #3831
- PEP 525 - Asynchronous Generators (provisional); see Add support for async generators (PEP525) #6668
- PEP 526 - Syntax for Variable Annotations (provisional) for uPy: requires changes to parser, relevant for viper; see py: Implement PEP 526, syntax for variable annotations #6126
- 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 [not relevant to uPy core]
- PEP 519 - Adding a file system path protocol
CPython internals (not exposed at the Python level so not relevant to uPy):
Linux/Windows changes:
- PEP 524 - Make os.urandom() blocking on Linux (during system startup)
- PEP 528 - Change Windows console encoding to UTF-8 (provisional)
- PEP 529 - Change Windows filesystem encoding to UTF-8 (provisional)
- A
globalornonlocalstatement 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
Noneto indicate that the corresponding operation is not available. For example, if a class sets__iter__()toNone, 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
ModuleNotFoundErrorwhen 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 MicroPython built-in modules
- array - Exhausted iterators of
array.arraywill now stay exhausted even if the iterated array is extended. - asyncio (many, may need another ticket)
- binascii - The
b2a_base64()function now accepts an optional newline keyword argument to control whether the newline character is appended to the return value.
- cmath
- The new
cmath.tau(τ) constant has been added. - New constants:
cmath.infandcmath.nanto matchmath.infandmath.nan, and alsocmath.infjandcmath.nanjto match the format used by complex repr.
- The new
- collections
- The new
Collectionabstract base class has been added to represent sized iterable container classes. - The new
Reversibleabstract base class represents iterable classes that also provide the__reversed__()method. - The new
AsyncGeneratorabstract 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.dequeinstances can now be pickled.
- The new
- hashlib
-
hashlibsupports OpenSSL 1.1.0. The minimum recommend version is 1.0.2. - BLAKE2 hash functions were added to the module.
blake2b()andblake2s()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 functionsshake_128()andshake_256()were added. - The password-based key derivation function
scrypt()is now available with OpenSSL 1.1.0 and newer.
-
- json -
json.load()andjson.loads()now support binary input. Encoded JSON should be represented using either UTF-8, UTF-16, or UTF-32. - math - The tau (τ) constant has been added to the
mathandcmathmodules. - os
- See the summary of PEP 519 for details on how the
osandos.pathmodules now support path-like objects.
- A new
close()method allows explicitly closing ascandir()iterator. Thescandir()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 newos.getrandom()function.
- See the summary of PEP 519 for details on how the
- 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 togroup(). Somo['name']is now equivalent tomo.group('name'). - Match objects now support index-like objects as group indices.
- Added support of modifier spans in regular expressions. Examples:
- socket
- The
ioctl()function now supports theSIO_LOOPBACK_FAST_PATHcontrol code. - The
getsockopt()constantsSO_DOMAIN,SO_PROTOCOL,SO_PEERSEC, andSO_PASSSECare now supported. - The
setsockopt()now supports thesetsockopt(level, optname, None, optlen: int)form. - The socket module now supports the address family
AF_ALGto interface with Linux Kernel crypto API.ALG_*,SOL_ALGandsendmsg_afalg()were added. - New Linux constants
TCP_USER_TIMEOUTandTCP_CONGESTIONwere added.
- The
- ssl
-
sslsupports 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.
-
SSLContexthas better default configuration for options and ciphers. - SSL session can be copied from one client-side connection to another with the new
SSLSessionclass. 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
IntEnumandIntFlags. - Server and client-side specific TLS protocols for
SSLContextwere added. - Added
SSLContext.post_handshake_authto enable andssl.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()anddecompress()functions now accept keyword arguments.
(Changes to non-built-in modules will need to be documented elsewhere.)
georgikoemdzhiev, SommerEngineering, Cabalist and keelung-yang
Metadata
Metadata
Assignees
Labels
rfcRequest for CommentRequest for Comment