<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/the-mypy-blog-mypy-1-20-released-et3wuuepa" -->

---
title: The Mypy Blog: Mypy 1.20 Released | daily.dev
description: Mypy 1.20.0 has shipped with a reworked, more aggressive and correct type narrowing engine, support for Python 3.14 t-strings (PEP 750), and an experimental...
canonical: https://daily.dev/posts/the-mypy-blog-mypy-1-20-released-et3wuuepa
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: The Mypy Blog: Mypy 1.20 Released | daily.dev
og:description: Mypy 1.20.0 has shipped with a reworked, more aggressive and correct type narrowing engine, support for Python 3.14 t-strings (PEP 750), and an experimental...
og:url: https://daily.dev/posts/the-mypy-blog-mypy-1-20-released-et3wuuepa
og:image: https://api.daily.dev/og/posts/et3WuuEpA.png
og:image:alt: The Mypy Blog: Mypy 1.20 Released
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# The Mypy Blog: Mypy 1.20 Released

**[mypy - Optional Static Typing for Python](https://daily.dev/sources/mypy-lang)** · 24 min read · 0 upvotes · 0 comments

## Summary

Mypy 1.20.0 has shipped with a reworked, more aggressive and correct type narrowing engine, support for Python 3.14 t-strings (PEP 750), and an experimental new Ruff-based parser. Python 3.9 support is dropped since it reached end of life, and a binary fixed-format cache plus SQLite caching are now enabled by default for faster incremental checks. The release also improves compatibility for --local-partial-types ahead of a planned default flip in mypy 2.0, renames --allow-redefinition-new handling, adds mypyc improvements (acyclic classes, faster macOS imports, new librt standard library), and removes the deprecated --force-uppercase-builtins and --force-union-syntax flags.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://mypy-lang.blogspot.com/2026/03/mypy-120-released.html>

## Questions this post answers

### Does mypy 1.20 still support Python 3.9?

No, mypy no longer supports running with Python 3.9 since it reached end of life, though mypy 1.20 running on Python 3.10+ can still type check code targeting Python 3.9 using the --python-version 3.9 flag. That compatibility flag itself is planned to be dropped in the first half of 2026.

_Track Python version support changes like this on daily.dev before they break your CI._

### What will change when mypy 2.0 enables --local-partial-types by default?

Mypy 2.0 is planned to enable --local-partial-types by default, which will often require at least minor code changes, and mypy 1.20 significantly improves compatibility to ease that transition. It also plans to enable --strict-bytes by default and rename --allow-redefinition-new to --allow-redefinition, with --allow-redefinition-old preserving the legacy behavior.

_Follow upcoming breaking changes like mypy 2.0's defaults on daily.dev before upgrading._

### How much faster is mypy when compiled with mypyc compared to interpreted Python?

Mypy compiled with mypyc runs 3 to 5 times faster than when interpreted with pure Python. Mypy 1.20 also adds mypyc-accelerated wheels for win_arm64 and Python 3.14 free-threading builds (cp314t), and introduces librt, a dedicated mypyc standard library with SIMD-optimized base64 encoding for compiled code.

_Keep up with performance-focused tooling releases like mypyc on daily.dev._

## Similar posts on daily.dev

- [Elixir v1.20 released: now a gradually typed language](https://daily.dev/posts/elixir-v1-20-released-now-a-gradually-typed-language-081x31cuq) · Elixir · 4 upvotes · 0 comments
- [TypeScript 6.0 is your final warning](https://daily.dev/posts/typescript-6-0-is-your-final-warning-2tbdrcemi) · Bytes by ui.dev · 144 upvotes · 15 comments
- [Elixir 1.19: Faster Builds, Smarter Types, and the Year of Interoperability](https://daily.dev/posts/elixir-1-19-faster-builds-smarter-types-and-the-year-of-interoperability-0z5phajqi) · ElixirStatus · 1 upvotes · 0 comments
- [Progress on TypeScript 7](https://daily.dev/posts/progress-on-typescript-7-vw602leio) · Typescript · 328 upvotes · 11 comments

---

Tags: [#general-programming](https://daily.dev/tags/general-programming), [#python](https://daily.dev/tags/python), [#performance](https://daily.dev/tags/performance)

[View this post on daily.dev](https://daily.dev/posts/the-mypy-blog-mypy-1-20-released-et3wuuepa)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"The Mypy Blog: Mypy 1.20 Released","url":"https://daily.dev/posts/the-mypy-blog-mypy-1-20-released-et3wuuepa","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/the-mypy-blog-mypy-1-20-released-et3wuuepa"},"datePublished":"2026-08-23T12:17:26.029Z","dateModified":"2026-08-23T12:20:33.344Z","description":"Mypy 1.20.0 has shipped with a reworked, more aggressive and correct type narrowing engine, support for Python 3.14 t-strings (PEP 750), and an experimental...","image":"https://media.daily.dev/image/upload/s--HRgLpUt6--/f_auto/v1722860399/public/Placeholder%2003","thumbnailUrl":"https://media.daily.dev/image/upload/s--HRgLpUt6--/f_auto/v1722860399/public/Placeholder%2003","isAccessibleForFree":true,"articleSection":"mypy - Optional Static Typing for Python","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"mypy - Optional Static Typing for Python","logo":"https://media.daily.dev/image/upload/logos/placeholder.jpg","url":"https://daily.dev/sources/mypy-lang"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/the-mypy-blog-mypy-1-20-released-et3wuuepa","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"general-programming,python,performance","timeRequired":"PT24M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"mypy - Optional Static Typing for Python","item":"https://daily.dev/sources/mypy-lang"},{"@type":"ListItem","position":3,"name":"The Mypy Blog: Mypy 1.20 Released"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/the-mypy-blog-mypy-1-20-released-et3wuuepa#faq","mainEntity":[{"@type":"Question","name":"Does mypy 1.20 still support Python 3.9?","acceptedAnswer":{"@type":"Answer","text":"No, mypy no longer supports running with Python 3.9 since it reached end of life, though mypy 1.20 running on Python 3.10+ can still type check code targeting Python 3.9 using the --python-version 3.9 flag. That compatibility flag itself is planned to be dropped in the first half of 2026. Track Python version support changes like this on daily.dev before they break your CI."}},{"@type":"Question","name":"What will change when mypy 2.0 enables --local-partial-types by default?","acceptedAnswer":{"@type":"Answer","text":"Mypy 2.0 is planned to enable --local-partial-types by default, which will often require at least minor code changes, and mypy 1.20 significantly improves compatibility to ease that transition. It also plans to enable --strict-bytes by default and rename --allow-redefinition-new to --allow-redefinition, with --allow-redefinition-old preserving the legacy behavior. Follow upcoming breaking changes like mypy 2.0's defaults on daily.dev before upgrading."}},{"@type":"Question","name":"How much faster is mypy when compiled with mypyc compared to interpreted Python?","acceptedAnswer":{"@type":"Answer","text":"Mypy compiled with mypyc runs 3 to 5 times faster than when interpreted with pure Python. Mypy 1.20 also adds mypyc-accelerated wheels for win_arm64 and Python 3.14 free-threading builds (cp314t), and introduces librt, a dedicated mypyc standard library with SIMD-optimized base64 encoding for compiled code. Keep up with performance-focused tooling releases like mypyc on daily.dev."}}]}
```

