Python 3.12.3

Python is an interpreted and object-oriented programming language. It runs on many plattforms and its powerful yet coherent syntax makes it well-suited for experts and beginners. It's strongly-typed and dynamic, provides for modules, polymorphic classes, exceptions, and high level data types and control structures. Bindings exists for a wide range of libraries, such as system interfaces, windowing and graphical toolkits. Modules exist for high-level mathematic and scientific applications, text processing, system programming, databases, server and network utilities, web frameworks, and it's thoroughly documented.

Tags c python programming-language software-development interpreter dynamic
License Python
State stable

Recent Releases

3.12.318 Apr 2024 12:04 minor feature:
3.6.024 Dec 2016 03:15 minor feature: TypeError when frame.f_trace is set to None. possible refleaks in failing Py_BuildValue() with the #8220;N #8221; Format unit. possible refleak when creating a function with annotations. bytearray.remove() for values greater than 127. Based on Patch by Joe Jevnik. int.from_bytes() no longer bypasses constructors for subclasses. Optimized the float.fromhex() class method for exact float. It is now 2 times faster. Single var-keyword argument of dict subtype was passed Unscathed to the C-defined function. Now it is converted to exact dict. gc.get_objects() no longer contains a broken tuple with NULL Pointer. Use RawConfigParser for.pypirc parsing, Removing support for interpolation unintentionally added With move to Python 3. Behavior no longer does any Interpolation in.pypirc files, matching behavior in Python 2.7 and Setuptools 19.0. Memory functions of the PyMem_Malloc() domain PYMEM_DOMAIN_MEM ) now use the. pymalloc allocator. Rather than system malloc(). Applications calling PyMem_Malloc() without holding the GIL can now crash: use PYTHONMALLOC=de environment variable to validate the usage of memory. Allocators in your application. Optimize function calls only using unpacking like Func(*tuple) (no other positional argument, no keyword): avoid copying The tuple. Patch written by Joe Jevnik. Make the builtin slice type support cycle collection. super.__init__ no longer leaks memory if called multiple times. NOTE: A direct call of super.__init__ is not endorsed!, the doc comment for FileFinder.find_spec(). Mention PEP 420 in the importlib docs. PYTHONIOENCODING now has priority over locale in setting the Error handler for stdin and stdout. crash on iterating exhausting iterators. Affected classes are generic sequence iterators, iterators of str, bytes, Bytearray, list, tuple, set, frozenset, dict, OrderedDict, corresponding Views and os.scandir() iterator. Optimize bytes.replace(b'', b'.') and Bytearray.replace(b'', b'.'). Patch written by J
3.5.214 Jun 2016 03:15 minor feature:
3.5.127 Nov 2015 03:15 minor feature:
3.5.014 Sep 2015 14:10 minor feature: New syntax features: Coroutines with async and await syntax. A new matrix multiplication operator: a @ b. Additional unpacking generalizations. New library modules: typing for type hints, zipapp improvdes Python ZIP application support. New built-in features: bytes args, bytearray args: PEP 461 Adding formatting to bytes and bytearray. memoryview now supports tuple indexing (including multi-dimensional). Generators have a new gi_yieldfrom attribute, which returns the object being iterated by yield from expressions. A new RecursionError exception is now raised when maximum recursion depth is reached. CPython improvements: When the LC_TYPE locale is the POSIX locale (C locale), sys.stdin and sys.stdout now use the surrogateescape error handler, instead of the strict error handler. .pyo files are no longer used and have been replaced by a more flexible scheme that includes the optimization level explicitly in .pyc name. Builtin and extension modules are now initialized in a multi-phase process, which is similar to how Python modules are loaded. Standard library changes: collections.OrderedDict is now implemented in C, which makes it 4 to 100 times faster. ssl module gained support for Memory BIO, which decouples SSL protocol handling from network IO. The new os.scandir() function provides a better and significantly faster way of directory traversal. functools.lru_cache() has been mostly reimplemented in C, yielding much better performance. The new subprocess.run() function provides a streamlined way to run subprocesses. The traceback module has been significantly enhanced for improved performance and developer convenience. Security improvements: SSLv3 is now disabled throughout the standard library. It can still be enabled by instantiating a ssl.SSLContext manually. HTTP cookie parsing is now stricter, in order to protect against potential injection attacks. Windows improvements: A new installer for Windows has replaced the old MSI. Windows builds no
3.4.325 Feb 2015 07:05 minor feature: Module-level turtle functions no longer raise TclError after closing the window. Multibyte codecs with custom error handlers that ignores errors consumed too much memory and raised SystemError or MemoryError. Original patch by Aleksi Torhamo. io.FileIO() called flush() after closing the file. flush() was not called in close() if closefd=False. Fixed pydoc failure with non-ASCII files when stdout encoding differs from file system encoding (e.g. on Mac OS). Remove RC4 from the SSL module #8217;s default cipher list. Fix pydoc.synopsis() and pydoc.apropos() on modules with empty docstrings. Fixed arbitrary code execution vulnerability in the dbm.dumb module. Original patch by Claudiu Popa. Fix mishandling of absolute Windows paths with forward slashes in pathlib. Fixed compression in tarfile CLI. Fix possible overflow in Windows subprocess creation code. pydebug builds now use #8220;gcc -Og #8221; where possible, to make the resulting executable faster.
3.5.0a114 Feb 2015 03:45 major feature: PEP 475 - EINTR handling. Fix many edge cases (including crashes) involving custom mro() implementations. Avoid using PyObject_AsCharBuffer(), PyObject_AsReadBuffer() and PyObject_AsWriteBuffer(). Revert some changes (issue #16795) to AST line numbers and column offsets that constituted a regression. Allow changing an object s __class__ between a dynamic type and static type in some cases. PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() and PyUnicode_EncodeCodePage() now raise an exception if the object is not an Unicode object. For PyUnicode_EncodeFSDefault(), it was already the case on platforms other than Windows. Patch written by Campbell Barton. The default __ne__() now returns NotImplemented if __eq__() returned NotImplemented. Original patch by Martin Panter. Fixed a crash in str.decode() when error handler returned replacment string longer than mailformed input data. The backslashreplace error handlers now works with decoding and translating. Delay-load ShellExecute AW in os.startfile for reduced startup overhead on Windows. pyatomic.h now uses stdatomic.h or GCC built-in functions for atomic memory access if available. Patch written by Vitor de Lima and Gustavo Temple. -interpolation (aka printf) formatting added for bytes and bytearray. Fix jumping out of an infinite while loop in the pdb. bytes constructor now raises TypeError when encoding or errors is specified with non-string argument. Based on patch by Renaud Blanch. If the current working directory ends up being set to a non-existent directory then import will no longer raise FileNotFoundError. Move the interpreter startup shutdown code to a new dedicated pylifecycle.c module Improve method cache efficiency. Fix crash when trying to enlarge a bytearray to 0x7fffffff bytes on a 32-bit platform. Fix an assertion failure in debug mode when doing a reentrant dict insertion in debug mode. Fix integer overflow in Unicode case operations (upper, lower, title, swapcase, casefold). Circular imports
3.4.3rc109 Feb 2015 11:25 minor feature: Fix many edge cases (including crashes) involving custom mro() implementations. Avoid using PyObject_AsCharBuffer(), PyObject_AsReadBuffer() and PyObject_AsWriteBuffer(). Revert some changes (issue #16795) to AST line numbers and column offsets that constituted a regression. The default __ne__() now returns NotImplemented if __eq__() returned NotImplemented. Original patch by Martin Panter. Fixed a crash in str.decode() when error handler returned replacment string longer than mailformed input data. Fix jumping out of an infinite while loop in the pdb. bytes constructor now raises TypeError when encoding or errors is specified with non-string argument. Based on patch by Renaud Blanch. Fix crash when trying to enlarge a bytearray to 0x7fffffff bytes on a 32-bit platform. Fix an assertion failure in debug mode when doing a reentrant dict insertion in debug mode. Fix integer overflow in Unicode case operations (upper, lower, title, swapcase, casefold). Fix assertion error in debug mode when dividing a complex number by (nan+0j). Fixed integer overflow issues in backslashreplace , xmlcharrefreplace , and surrogatepass error handlers. Fix overflow checking when generating the repr of a unicode object. Fix overflow checking in PyBytes_Repr. Fix integer overflow issues in latin-1 encoding. Perform overflow checks before allocating memory in the _Py_char2wchar function.
3.4.207 Oct 2014 19:53 minor feature: Distutils register and upload methods now use HTML standards compliant CRLF line endings. Fixed macpath.join() for empty first component. Patch by Oleg Oshmyan. TemporaryDirectory no longer attempts to clean up twice when used in the with statement in generator. Now directories added to ZIP file have correct Unix and MS-DOS directory attributes. ZipFile.close() no longer writes ZIP64 central directory records if allowZip64 is false. Fixed debugging output of the GROUPREF_EXISTS opcode in the re module. Removed trailing spaces in debugging output. Unhandled exception in thread no longer causes unhandled AttributeError when sys.stderr is None. Ensure that bufsize=1 in subprocess.Popen() selects line buffering, rather than block buffering.