/  Technology   /  Python 3.9.0 is out! Major new features of the 3.9 series

Python 3.9.0 is out! Major new features of the 3.9 series

Python is a widely-used general-purpose, high-level programming language. Every Release of Python is open-source. Python releases have also been GPL-compatible. Any version of Python can be downloaded from Python Software Foundation website at python.org

This article describes the latest features in Python 3.9, compared to 3.8.

Python 3.9.0

 

Release Date: Oct. 5, 2020

 

This is the stable release of Python 3.9.0

Python 3.9.0 is the latest major release of the Python programming language, and it contains many optimizations and new features.

 

Installer news:

 

Python 3.9.0 is the first version to default to the 64-bit installer on Windows. The installer can also disallow installation on Windows 7. Python 3.9 is unsuited with this unsupported version of Windows.

 

Note: Python 3.9+ cannot be used on Windows 7 or earlier versions.

 

You can download it from the below link,

 

https://www.python.org/downloads/release/python-390/

 

Now scroll mouse on downloads from top menu options and a window will be highlighted, there you can click on Python 3.9.0 button provided below the download for windows option.

 

Python 3.9.0 is out! Major new features of the 3.9 series-1

 

 

If you want to download for different OS’s click on view the full list of downloads available. You can see the below image.

 

Python 3.9.0 is out! Major new features of the 3.9 series

 

Or else go to the below link.

 

https://www.python.org/downloads/

 

New major features of the 3.9 series, compared to 3.8:

 

  • PEP 573, Module State AccessFrom C Extension Methods.

 

This PEP suggests to add a way for CPython extension methods to access context.

Direct pointer dereferences is used by extension methods, reducing or eliminating the performance cost of using module-scoped state over process global state.

 

  • PEP 584, Union Operators in dict

Dictionary Merge & Update Operators

 

Built-in dict class is added with Merge (|) and update (|=) operators. Theexisting dict.update and {**d1, **d2} methods of merging dictionaries is complemented.

 

  • PEP 585, Type Hinting Generics In Standard Collections

This PEP offersa support to enable for the generics syntax in all standard collections presently available in the typing module.

 

  • PEP 593, Flexible function and variable annotations

 

To decorate existing types with context-specific metadata and new include_extras parameter to typing.get_type_hints() to access the metadata at runtime introduced a typing.Annotated type.

 

  • PEP 602, Python accepts a stable annual release tempo.

 

  • PEP 614, Relaxing Grammar Restrictions On Decorators

 

Any valid expression can be used as a decorator. Previously, the grammar was much more restrictive.

 

  • PEP 615, The IANA Time Zone Database is supported in the Standard Library.

 

This offersa module calledzoneinfo, to provide a concrete time zone implementation supporting the IANA time zone database. The zoneinfo module supports for the IANA time zone database to the standard library. It adds zoneinfo.ZoneInfo, a concrete datetime.tzinfo application backed by the system’s time zone data.

 

  • PEP 616, String methods removes prefixes and suffixes

 

str.removeprefix(prefix) and str.removesuffix(suffix) have been added to remove an unnecessary prefix or a suffix from a string. Equivalent bytes, bytearray, and collections.UserString methods have also been added.

 

  • PEP 617, New PEG parser for CPython

 

Python 3.9 uses a new parser, based on PEG instead of LL(1). The new parser’s performance iscomparable to that of the old parser, but the PEG formalism is highly flexible than LL(1) when it comes to designing new language features.

The new parser is used by ast module and produces the same AST as the old parser.

In Python 3.10, the old parser will be removed. You can switch back to the LL(1) parser only in Python 3.9 by using a command line switch (-X oldparser) or an environment variable (PYTHONOLDPARSER=1).

 

  • BPO 38379, garbage collection does not block on resurrect objects;

 

When the garbage collector makes a collection in which some objects resurrect and do not block the collection of all objects that are still unreachable.

Added a new function gc.is_finalized() to check if an object has been finalized by the garbage collector.

 

  • BPO 38692, os.pidfd_openis added which allows process management without races and signals;
  • BPO 39926, Unicode support updated to version 13.0.0;
  • BPO 1635741, it does not leak memory anymore, when Python is initialized multiple times in the same process.
  • A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall;
  • A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization.
  • A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384.

 

 

 

Leave a comment