Python 3.8.10, 3.9.5, and 3.10.0b1 released: interpreted high-level programming language
Python is an interpreted high-level programming language for general-purpose programming. Created by Guido van Rossum and first released in 1991, Python has a design philosophy that emphasizes code readability, notably using significant whitespace. It provides constructs that enable clear programming on both small and large scales.
Python features a dynamic type system and automatic memory management. It supports multiple programming paradigms, including object-oriented, imperative, functional and procedural, and has a large and comprehensive standard library.
Python interpreters are available for many operating systems. CPython, the reference implementation of Python, is open source software and has a community-based development model, as do nearly all of its variant implementations. CPython is managed by the non-profit Python Software Foundation. via_Wiki
Python 3.8.10, 3.9.5, and 3.10.0b1 is now available.
- bpo-43434: Creating a
sqlite3.Connectionobject now also produces a
sqlite3.connectauditing event. Previously this event was only produced by
sqlite3.connect()calls. Patch by Erlend E. Aasland.
- bpo-43472: Ensures interpreter-level audit hooks receive the
cpython.PyInterpreterState_Newevent when called through the
- bpo-43075: Fix Regular Expression Denial of Service (ReDoS) vulnerability in
urllib.request.AbstractBasicAuthHandler. The ReDoS-vulnerable regex has quadratic worst-case complexity and it allows cause a denial of service when identifying crafted invalid RFCs. This ReDoS issue is on the client side and needs remote attackers to control the HTTP server.
Core and Builtins
- bpo-43105: Importlib now resolves relative paths when creating module spec objects from file locations.
- bpo-42924: Fix
bytearrayrepetition incorrectly copying data from the start of the buffer, even if the data is offset within the buffer (e.g. after reassigning a slice at the start of the
bytearrayto a shorter byte string).
There’s been 111 commits since 3.9.4 which is a similar amount compared to 3.8 at the same stage of the release cycle. See the change log for details.
On macOS, we encourage you to use the
universal2binary installer variant whenever possible. The legacy 10.9+ Intel-only variant will not be provided for Python 3.10 and the
universal2variant will become the default download for future 3.9.x releases. You may need to upgrade third-party components, like
pip, to later versions once they are released. You may experience differences in behavior in IDLE and other Tk-based applications due to using the newer version of Tk
Many new features for Python 3.10 are still being planned and written. Among the new major new features and changes so far:
- PEP 623 — Deprecate and prepare for the removal of the wstr member in PyUnicodeObject.
- PEP 604 — Allow writing union types as X | Y
- PEP 612 — Parameter Specification Variables
- PEP 626 — Precise line numbers for debugging and other tools.
- PEP 618 — Add Optional Length-Checking To zip.
- bpo-12782: Parenthesized context managers are now officially allowed.
- PEP 632 — Deprecate distutils module.
- PEP 613 — Explicit Type Aliases
- PEP 634 — Structural Pattern Matching: Specification
- PEP 635 — Structural Pattern Matching: Motivation and Rationale
- PEP 636 — Structural Pattern Matching: Tutorial
- PEP 644 — Require OpenSSL 1.1.1 or newer
- PEP 624 — Remove Py_UNICODE encoder APIs
- PEP 597 — Add optional EncodingWarning