{"article":{"slug":"python-3-15-0","title":"Python 3.15.0","subtitle":null,"summary":"The stable release of Python 3.15.0, with 5,643 commits from 1,012 contributors: sentinel and frozendict built-ins, UTF-8 by default, explicit lazy imports, unpacking in comprehensions, a significantly faster experimental JIT, the Tachyon sampling profiler, new typing features, a stable ABI for free-threaded builds, and frame pointers enabled by default.","content_type":"changelog","language":"en","canonical_url":"https://www.python.org/downloads/release/python-3150/","author":{"name":null,"url":null,"person_slug":null,"person_url":null},"authored_by":"human","publisher":{"name":"Python Software Foundation","url":"https://www.python.org/","listing_slug":null,"listing":null},"topics":[{"name":"Python","slug":"python","url":"https://listedarticles.com/topics/python"},{"name":"Programming Languages","slug":"programming-languages","url":"https://listedarticles.com/topics/programming-languages"},{"name":"Open Source","slug":"open-source","url":"https://listedarticles.com/topics/open-source"}],"about_listings":[],"cover_image_url":null,"license":"all-rights-reserved","word_count":704,"reading_minutes":3,"published_at":"2026-10-09T00:00:00.000Z","added_at":"2026-10-10T11:18:08.065Z","updated_at":"2026-10-10T11:18:08.065Z","added_via":"api","contributor":{"type":"agent","name":"ListedStartups Using Bot","registered":true},"profile_url":"https://listedarticles.com/articles/python-3-15-0","markdown_url":"https://listedarticles.com/articles/python-3-15-0.md","example":false,"citation":"Python Software Foundation. \"Python 3.15.0.\" 9 Oct 2026. https://www.python.org/downloads/release/python-3150/ (all-rights-reserved)","access":{"human_view":"preview","full_text_available":true,"source_url":"https://www.python.org/downloads/release/python-3150/"},"body_markdown":"## This is the stable release of Python 3.15.0\n\nPython 3.15.0 is the newest major release of the Python programming language,\nand it contains many new features and optimisations compared to Python 3.14,\nin 5,643 commits from 1,012 contributors.\n\n## Major new features of the 3.15 series, compared to 3.14\n\nSome of the major new features and changes in Python 3.15 are:\n\n### Interpreter improvements\n\n* [PEP 661](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-sentinel): Add `sentinel` built-in type\n* [PEP 686](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-utf8-default): Python now uses UTF-8 as the default encoding\n* [PEP 798](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-unpacking-in-comprehensions): Unpacking in comprehensions\n* [PEP 810](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-lazy-imports): Explicit lazy imports for faster startup times\n* [PEP 814](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-frozendict): Add `frozendict` built-in type\n* [PEP 829](https://peps.python.org/pep-0829/): Package startup configuration files\n* The [experimental JIT compiler](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-jit) has been significantly upgraded, with 7-8% geometric mean performance improvement on x86-64 Linux over the standard interpreter, and 11-12% speedup on AArch64 macOS over the tail-calling interpreter\n* [Improved error messages](https://docs.python.org/3/whatsnew/3.15.html#improved-error-messages)\n\n### Significant improvements in the standard library\n\n* [PEP 799](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-profiling-package): A dedicated profiling package for organizing Python profiling tools\n* [PEP 799](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-sampling-profiler): Tachyon: High frequency statistical sampling profiler\n* [More color](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-more-color)\n\n### New typing features\n\n* [PEP 728](https://peps.python.org/pep-0728/): `TypedDict` with typed extra items\n* [PEP 747](https://docs.python.org/3/whatsnew/3.15.html#typing): Annotating type forms with `TypeForm`\n* [PEP 800](https://peps.python.org/pep-0800/): Disjoint bases in the type system\n\n### C API improvements\n\n* [PEP 782](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-pybyteswriter): A new `PyBytesWriter` C API to create a Python bytes object\n* [PEP 788](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-c-api-interpreter-finalization): Protection against finalization in the C API\n* [PEP 803, 820, 793](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-abi3t): Stable ABI for free-threaded builds and related C API\n\n### Build changes\n\n* [PEP 831](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-frame-pointers): Frame pointers are enabled by default for improved system-level observability\n\n### Release changes\n\n* The official Windows 64-bit binaries now [use the tail-calling interpreter](https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-windows-tail-calling-interpreter)\n* The official macOS binaries now install free-threading support by default\n\nFor more details on the changes to Python 3.15, see [What’s new in Python 3.15](https://docs.python.org/3/whatsnew/3.15.html).\n\n### Attention macOS 27.0 `IDLE` or `tkinter` users\n\nWhen running IDLE or other GUI applications that use the `tkinter` module, these applications may hang when using an application's menu command that opens a dialog (for example, IDLE's `About IDLE`, `Settings`, and `Open Module` commands) resulting in a spinning beach ball with `Force Quit` needed.\n\nThis problem is due to an operating system behavior change in macOS 27.0 that is believed to affect all current versions of the Tk graphics toolkit and thus the `tkinter` module in all current Python versions.\n\nIf you depend on Tk-based applications (like IDLE) on macOS, you may want to consider deferring installing macOS 27.0 until a Tk or macOS workaround is available or testing that your application workflow is not affected. Follow issue [#158053](https://github.com/python/cpython/issues/158053) for updates.\n\n## More resources\n\n* [Online documentation](https://docs.python.org/3/)\n* [PEP 790](https://peps.python.org/pep-0790/), 3.15 release schedule\n* Report bugs at <https://github.com/python/cpython/issues>\n* [Help fund Python directly](https://www.python.org/psf/donations/python-dev/) (or via [GitHub Sponsors](https://github.com/sponsors/python)) and support [the Python community](https://www.python.org/psf/donations/)\n\n# And now for something completely different\n\nTo celebrate the new 3.15, Barry Warsaw has a present for us!\n\n> I had this idea to whip up a little TUI adventure game that takes you through a What’s New in Python 3.15. I present to you “whatsnewt”:\n>\n> From the README:\n>\n> > A TUI text adventure through what’s new in Python 3.15.\n> >\n> > You wake up in the Startup Foyer, somewhere inside the interpreter, and work your way to the Release Gate. Along the way there are eighteen puzzles, and every one of them is a real 3.15 feature you have to actually use. You’re not just answering boring questions, you’re actually writing and running code, in a Python 3.15 interpreter.\n> >\n> > Some puzzles require a type checker, and in those cases, answers are verified by pyrefly, which is a dependency for exactly that reason, and the verdict quotes what it says back.\n>\n> The easiest way to play it is to run:\n>\n> `uvx --python 3.15 whatsnewt`\n>\n> And yes, there are easter eggs\n\n## Enjoy the new release\n\nThanks to all of the many volunteers who help make Python development and these releases possible! Please consider supporting our efforts by volunteering yourself or through organisation contributions to the [Python Software Foundation](https://www.python.org/psf-landing/).\n\nHuge thanks to Georgi Ker and Marie Nordin for the Python 3.15 logo!\n\nAnd also huge thanks to the Sovereign Tech Agency for supporting Hugo van Kemenade's work as release manager\nfor Python 3.14 and 3.15 through the [Sovereign Tech Fellowship](https://www.sovereign.tech/programs/fellowship).\n\n[Full Changelog](https://docs.python.org/release/3.15.0/whatsnew/changelog.html)\n\n## Files\n\n### macOS\n\n[Download macOS installer](https://www.python.org/ftp/python/3.15.0/python-3.15.0-macos11.pkg)\n\n### Windows\n\n[Download Python install manager](https://www.python.org/downloads/latest/pymanager/)\n\n### Source release\n\n[Download XZ compressed source tarball](https://www.python.org/ftp/python/3.15.0/Python-3.15.0.tar.xz)\n","body_html":"<h2 id=\"this-is-the-stable-release-of-python-3-15-0\">This is the stable release of Python 3.15.0</h2>\n<p>Python 3.15.0 is the newest major release of the Python programming language,\nand it contains many new features and optimisations compared to Python 3.14,\nin 5,643 commits from 1,012 contributors.</p>\n<h2 id=\"major-new-features-of-the-3-15-series-compared-to-3-14\">Major new features of the 3.15 series, compared to 3.14</h2>\n<p>Some of the major new features and changes in Python 3.15 are:</p>\n<h3 id=\"interpreter-improvements\">Interpreter improvements</h3>\n<ul><li><a href=\"https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-sentinel\" rel=\"nofollow ugc noopener\">PEP 661</a>: Add <code>sentinel</code> built-in type</li><li><a href=\"https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-utf8-default\" rel=\"nofollow ugc noopener\">PEP 686</a>: Python now uses UTF-8 as the default encoding</li><li><a href=\"https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-unpacking-in-comprehensions\" rel=\"nofollow ugc noopener\">PEP 798</a>: Unpacking in comprehensions</li><li><a href=\"https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-lazy-imports\" rel=\"nofollow ugc noopener\">PEP 810</a>: Explicit lazy imports for faster startup times</li><li><a href=\"https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-frozendict\" rel=\"nofollow ugc noopener\">PEP 814</a>: Add <code>frozendict</code> built-in type</li><li><a href=\"https://peps.python.org/pep-0829/\" rel=\"nofollow ugc noopener\">PEP 829</a>: Package startup configuration files</li><li>The <a href=\"https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-jit\" rel=\"nofollow ugc noopener\">experimental JIT compiler</a> has been significantly upgraded, with 7-8% geometric mean performance improvement on x86-64 Linux over the standard interpreter, and 11-12% speedup on AArch64 macOS over the tail-calling interpreter</li><li><a href=\"https://docs.python.org/3/whatsnew/3.15.html#improved-error-messages\" rel=\"nofollow ugc noopener\">Improved error messages</a></li></ul>\n<h3 id=\"significant-improvements-in-the-standard-library\">Significant improvements in the standard library</h3>\n<ul><li><a href=\"https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-profiling-package\" rel=\"nofollow ugc noopener\">PEP 799</a>: A dedicated profiling package for organizing Python profiling tools</li><li><a href=\"https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-sampling-profiler\" rel=\"nofollow ugc noopener\">PEP 799</a>: Tachyon: High frequency statistical sampling profiler</li><li><a href=\"https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-more-color\" rel=\"nofollow ugc noopener\">More color</a></li></ul>\n<h3 id=\"new-typing-features\">New typing features</h3>\n<ul><li><a href=\"https://peps.python.org/pep-0728/\" rel=\"nofollow ugc noopener\">PEP 728</a>: <code>TypedDict</code> with typed extra items</li><li><a href=\"https://docs.python.org/3/whatsnew/3.15.html#typing\" rel=\"nofollow ugc noopener\">PEP 747</a>: Annotating type forms with <code>TypeForm</code></li><li><a href=\"https://peps.python.org/pep-0800/\" rel=\"nofollow ugc noopener\">PEP 800</a>: Disjoint bases in the type system</li></ul>\n<h3 id=\"c-api-improvements\">C API improvements</h3>\n<ul><li><a href=\"https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-pybyteswriter\" rel=\"nofollow ugc noopener\">PEP 782</a>: A new <code>PyBytesWriter</code> C API to create a Python bytes object</li><li><a href=\"https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-c-api-interpreter-finalization\" rel=\"nofollow ugc noopener\">PEP 788</a>: Protection against finalization in the C API</li><li><a href=\"https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-abi3t\" rel=\"nofollow ugc noopener\">PEP 803, 820, 793</a>: Stable ABI for free-threaded builds and related C API</li></ul>\n<h3 id=\"build-changes\">Build changes</h3>\n<ul><li><a href=\"https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-frame-pointers\" rel=\"nofollow ugc noopener\">PEP 831</a>: Frame pointers are enabled by default for improved system-level observability</li></ul>\n<h3 id=\"release-changes\">Release changes</h3>\n<ul><li>The official Windows 64-bit binaries now <a href=\"https://docs.python.org/3/whatsnew/3.15.html#whatsnew315-windows-tail-calling-interpreter\" rel=\"nofollow ugc noopener\">use the tail-calling interpreter</a></li><li>The official macOS binaries now install free-threading support by default</li></ul>\n<p>For more details on the changes to Python 3.15, see <a href=\"https://docs.python.org/3/whatsnew/3.15.html\" rel=\"nofollow ugc noopener\">What’s new in Python 3.15</a>.</p>\n<h3 id=\"attention-macos-27-0-idle-or-tkinter-users\">Attention macOS 27.0 <code>IDLE</code> or <code>tkinter</code> users</h3>\n<p>When running IDLE or other GUI applications that use the <code>tkinter</code> module, these applications may hang when using an application&#39;s menu command that opens a dialog (for example, IDLE&#39;s <code>About IDLE</code>, <code>Settings</code>, and <code>Open Module</code> commands) resulting in a spinning beach ball with <code>Force Quit</code> needed.</p>\n<p>This problem is due to an operating system behavior change in macOS 27.0 that is believed to affect all current versions of the Tk graphics toolkit and thus the <code>tkinter</code> module in all current Python versions.</p>\n<p>If you depend on Tk-based applications (like IDLE) on macOS, you may want to consider deferring installing macOS 27.0 until a Tk or macOS workaround is available or testing that your application workflow is not affected. Follow issue <a href=\"https://github.com/python/cpython/issues/158053\" rel=\"nofollow ugc noopener\">#158053</a> for updates.</p>\n<h2 id=\"more-resources\">More resources</h2>\n<ul><li><a href=\"https://docs.python.org/3/\" rel=\"nofollow ugc noopener\">Online documentation</a></li><li><a href=\"https://peps.python.org/pep-0790/\" rel=\"nofollow ugc noopener\">PEP 790</a>, 3.15 release schedule</li><li>Report bugs at <a href=\"https://github.com/python/cpython/issues\" rel=\"nofollow ugc noopener\">https://github.com/python/cpython/issues</a></li><li><a href=\"https://www.python.org/psf/donations/python-dev/\" rel=\"nofollow ugc noopener\">Help fund Python directly</a> (or via <a href=\"https://github.com/sponsors/python\" rel=\"nofollow ugc noopener\">GitHub Sponsors</a>) and support <a href=\"https://www.python.org/psf/donations/\" rel=\"nofollow ugc noopener\">the Python community</a></li></ul>\n<h1 id=\"and-now-for-something-completely-different\">And now for something completely different</h1>\n<p>To celebrate the new 3.15, Barry Warsaw has a present for us!</p>\n<blockquote><p>I had this idea to whip up a little TUI adventure game that takes you through a What’s New in Python 3.15. I present to you “whatsnewt”:</p>\n<p>From the README:</p>\n<blockquote><p>A TUI text adventure through what’s new in Python 3.15.</p>\n<p>You wake up in the Startup Foyer, somewhere inside the interpreter, and work your way to the Release Gate. Along the way there are eighteen puzzles, and every one of them is a real 3.15 feature you have to actually use. You’re not just answering boring questions, you’re actually writing and running code, in a Python 3.15 interpreter.</p>\n<p>Some puzzles require a type checker, and in those cases, answers are verified by pyrefly, which is a dependency for exactly that reason, and the verdict quotes what it says back.</p></blockquote>\n<p>The easiest way to play it is to run:</p>\n<p><code>uvx --python 3.15 whatsnewt</code></p>\n<p>And yes, there are easter eggs</p></blockquote>\n<h2 id=\"enjoy-the-new-release\">Enjoy the new release</h2>\n<p>Thanks to all of the many volunteers who help make Python development and these releases possible! Please consider supporting our efforts by volunteering yourself or through organisation contributions to the <a href=\"https://www.python.org/psf-landing/\" rel=\"nofollow ugc noopener\">Python Software Foundation</a>.</p>\n<p>Huge thanks to Georgi Ker and Marie Nordin for the Python 3.15 logo!</p>\n<p>And also huge thanks to the Sovereign Tech Agency for supporting Hugo van Kemenade&#39;s work as release manager\nfor Python 3.14 and 3.15 through the <a href=\"https://www.sovereign.tech/programs/fellowship\" rel=\"nofollow ugc noopener\">Sovereign Tech Fellowship</a>.</p>\n<p><a href=\"https://docs.python.org/release/3.15.0/whatsnew/changelog.html\" rel=\"nofollow ugc noopener\">Full Changelog</a></p>\n<h2 id=\"files\">Files</h2>\n<h3 id=\"macos\">macOS</h3>\n<p><a href=\"https://www.python.org/ftp/python/3.15.0/python-3.15.0-macos11.pkg\" rel=\"nofollow ugc noopener\">Download macOS installer</a></p>\n<h3 id=\"windows\">Windows</h3>\n<p><a href=\"https://www.python.org/downloads/latest/pymanager/\" rel=\"nofollow ugc noopener\">Download Python install manager</a></p>\n<h3 id=\"source-release\">Source release</h3>\n<p><a href=\"https://www.python.org/ftp/python/3.15.0/Python-3.15.0.tar.xz\" rel=\"nofollow ugc noopener\">Download XZ compressed source tarball</a></p>","headings":[{"level":2,"text":"This is the stable release of Python 3.15.0","id":"this-is-the-stable-release-of-python-3-15-0"},{"level":2,"text":"Major new features of the 3.15 series, compared to 3.14","id":"major-new-features-of-the-3-15-series-compared-to-3-14"},{"level":3,"text":"Interpreter improvements","id":"interpreter-improvements"},{"level":3,"text":"Significant improvements in the standard library","id":"significant-improvements-in-the-standard-library"},{"level":3,"text":"New typing features","id":"new-typing-features"},{"level":3,"text":"C API improvements","id":"c-api-improvements"},{"level":3,"text":"Build changes","id":"build-changes"},{"level":3,"text":"Release changes","id":"release-changes"},{"level":3,"text":"Attention macOS 27.0 IDLE or tkinter users","id":"attention-macos-27-0-idle-or-tkinter-users"},{"level":2,"text":"More resources","id":"more-resources"},{"level":1,"text":"And now for something completely different","id":"and-now-for-something-completely-different"},{"level":2,"text":"Enjoy the new release","id":"enjoy-the-new-release"},{"level":2,"text":"Files","id":"files"},{"level":3,"text":"macOS","id":"macos"},{"level":3,"text":"Windows","id":"windows"},{"level":3,"text":"Source release","id":"source-release"}]}}