From b2900ee83f9b1a8638660d183a009553737344b2 Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Mon, 11 May 2026 14:38:08 +0100 Subject: [PATCH 1/7] WIP 2.1 changelog --- CHANGELOG.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d4f487a030a..d78f9cbb3cf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,47 @@ ## Next Release +### Mypyc Improvements + +- Enable incremental self-compilation (Vaggelis Danias, PR [21369](https://github.com/python/mypy/pull/21369)) +- Add `librt.random` module (Jukka Lehtosalo, PR [21433](https://github.com/python/mypy/pull/21433)) +- Document `librt.vecs` (Jukka Lehtosalo, PR [21437](https://github.com/python/mypy/pull/21437)) +- Mark `librt.vecs` as non-experimental (Jukka Lehtosalo, PR [21430](https://github.com/python/mypy/pull/21430)) +- Add API and ABI versioning to `librt.vecs` (Jukka Lehtosalo, PR [21429](https://github.com/python/mypy/pull/21429)) +- Make compilation order with multiple files consistent (Piotr Sawicki, PR [21419](https://github.com/python/mypy/pull/21419)) +- Update vec value struct to have direct pointer to items (Jukka Lehtosalo, PR [21420](https://github.com/python/mypy/pull/21420)) +- Fix crash on accessing `StopAsyncIteration` (Piotr Sawicki, PR [21406](https://github.com/python/mypy/pull/21406)) +- Optimize vec to list and vec to tuple conversions (Jukka Lehtosalo, PR [21380](https://github.com/python/mypy/pull/21380)) +- Optimize list to vec and tuple to vec conversions (Jukka Lehtosalo, PR [21375](https://github.com/python/mypy/pull/21375)) +- Fix debug warnings and assertions from vecs (Piotr Sawicki, PR [21373](https://github.com/python/mypy/pull/21373)) +- Add buffer protocol support for vec (Jukka Lehtosalo, PR [21359](https://github.com/python/mypy/pull/21359)) +- Add primitive for `vec[u8]` to bytes conversion (Jukka Lehtosalo, PR [21357](https://github.com/python/mypy/pull/21357)) +- Fix incremental compilation with `separate` flag (Vaggelis Danias, PR [21299](https://github.com/python/mypy/pull/21299)) +- Faster vec `__init__` and `extend` with bytes arguments (Jukka Lehtosalo, PR [21355](https://github.com/python/mypy/pull/21355)) + +### Fixes to Crashes + +- Fix crash on partial type with `--allow-redefinition` and `global` declaration (Jukka Lehtosalo, PR [21428](https://github.com/python/mypy/pull/21428)) + +### Changes to Messages + +- Fix function call error message for small number of arguments (sobolevn, PR [21432](https://github.com/python/mypy/pull/21432)) + +### Other Notable Fixes and Improvements + +- Enable `TypeForm` by default (David Foster, PR [21262](https://github.com/python/mypy/pull/21262)) +- Improve negative narrowing for membership checks on tuples (Shantanu, PR [21456](https://github.com/python/mypy/pull/21456)) +- Narrow match captures based on previous cases (Shantanu, PR [21405](https://github.com/python/mypy/pull/21405)) +- Fix nondeterminism in overload resolution (Shantanu, PR [21455](https://github.com/python/mypy/pull/21455)) +- Respect file config comments for stale modules (Adam Turner, PR [21444](https://github.com/python/mypy/pull/21444)) +- Fix broken awaitable generator patching (Ivan Levkivskyi, PR [21435](https://github.com/python/mypy/pull/21435)) +- Fix JSON output mode for syntax errors in parallel mode (Adam Turner, PR [21434](https://github.com/python/mypy/pull/21434)) +- Fix type variable with values as a supertype (Ivan Levkivskyi, PR [21431](https://github.com/python/mypy/pull/21431)) +- Rely on typeshed stubs for `slice` typing (Ivan Levkivskyi, PR [21401](https://github.com/python/mypy/pull/21401)) +- Add support for configuring `--num-workers` with an environment variable (Kevin Kannammalil, PR [21407](https://github.com/python/mypy/pull/21407)) +- Respect JSON output mode for syntax errors (Adam Turner, PR [21386](https://github.com/python/mypy/pull/21386)) +- Analyze `TypedDict` decorators (Pranav Manglik, PR [21267](https://github.com/python/mypy/pull/21267)) + ## Mypy 2.0 We’ve just uploaded mypy 2.0.0 to the Python Package Index ([PyPI](https://pypi.org/project/mypy/)). From 3c56e01e77149af071f3495cbace56d0e1bf6a80 Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Mon, 11 May 2026 14:49:51 +0100 Subject: [PATCH 2/7] Improve changelog --- CHANGELOG.md | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d78f9cbb3cf6..4a9356452231 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,27 +2,43 @@ ## Next Release -### Mypyc Improvements +## Mypy 2.1 + +We’ve just uploaded mypy 2.1.0 to the Python Package Index ([PyPI](https://pypi.org/project/mypy/)). +Mypy is a static type checker for Python. This release includes new features, performance +improvements and bug fixes. You can install it as follows: + + python3 -m pip install -U mypy + +You can read the full documentation for this release on [Read the Docs](http://mypy.readthedocs.io). + +### librt.vecs -- Enable incremental self-compilation (Vaggelis Danias, PR [21369](https://github.com/python/mypy/pull/21369)) -- Add `librt.random` module (Jukka Lehtosalo, PR [21433](https://github.com/python/mypy/pull/21433)) - Document `librt.vecs` (Jukka Lehtosalo, PR [21437](https://github.com/python/mypy/pull/21437)) - Mark `librt.vecs` as non-experimental (Jukka Lehtosalo, PR [21430](https://github.com/python/mypy/pull/21430)) - Add API and ABI versioning to `librt.vecs` (Jukka Lehtosalo, PR [21429](https://github.com/python/mypy/pull/21429)) -- Make compilation order with multiple files consistent (Piotr Sawicki, PR [21419](https://github.com/python/mypy/pull/21419)) - Update vec value struct to have direct pointer to items (Jukka Lehtosalo, PR [21420](https://github.com/python/mypy/pull/21420)) -- Fix crash on accessing `StopAsyncIteration` (Piotr Sawicki, PR [21406](https://github.com/python/mypy/pull/21406)) - Optimize vec to list and vec to tuple conversions (Jukka Lehtosalo, PR [21380](https://github.com/python/mypy/pull/21380)) - Optimize list to vec and tuple to vec conversions (Jukka Lehtosalo, PR [21375](https://github.com/python/mypy/pull/21375)) - Fix debug warnings and assertions from vecs (Piotr Sawicki, PR [21373](https://github.com/python/mypy/pull/21373)) - Add buffer protocol support for vec (Jukka Lehtosalo, PR [21359](https://github.com/python/mypy/pull/21359)) - Add primitive for `vec[u8]` to bytes conversion (Jukka Lehtosalo, PR [21357](https://github.com/python/mypy/pull/21357)) -- Fix incremental compilation with `separate` flag (Vaggelis Danias, PR [21299](https://github.com/python/mypy/pull/21299)) - Faster vec `__init__` and `extend` with bytes arguments (Jukka Lehtosalo, PR [21355](https://github.com/python/mypy/pull/21355)) +### librt.random + +- Add `librt.random` module (Jukka Lehtosalo, PR [21433](https://github.com/python/mypy/pull/21433)) + +### Mypyc Improvements + +- Make compilation order with multiple files consistent (Piotr Sawicki, PR [21419](https://github.com/python/mypy/pull/21419)) +- Fix crash on accessing `StopAsyncIteration` (Piotr Sawicki, PR [21406](https://github.com/python/mypy/pull/21406)) +- Fix incremental compilation with `separate` flag (Vaggelis Danias, PR [21299](https://github.com/python/mypy/pull/21299)) + ### Fixes to Crashes - Fix crash on partial type with `--allow-redefinition` and `global` declaration (Jukka Lehtosalo, PR [21428](https://github.com/python/mypy/pull/21428)) +- Fix broken awaitable generator patching (Ivan Levkivskyi, PR [21435](https://github.com/python/mypy/pull/21435)) ### Changes to Messages @@ -30,15 +46,14 @@ ### Other Notable Fixes and Improvements +- Rely on typeshed stubs for `slice` typing (Ivan Levkivskyi, PR [21401](https://github.com/python/mypy/pull/21401)) - Enable `TypeForm` by default (David Foster, PR [21262](https://github.com/python/mypy/pull/21262)) - Improve negative narrowing for membership checks on tuples (Shantanu, PR [21456](https://github.com/python/mypy/pull/21456)) - Narrow match captures based on previous cases (Shantanu, PR [21405](https://github.com/python/mypy/pull/21405)) - Fix nondeterminism in overload resolution (Shantanu, PR [21455](https://github.com/python/mypy/pull/21455)) - Respect file config comments for stale modules (Adam Turner, PR [21444](https://github.com/python/mypy/pull/21444)) -- Fix broken awaitable generator patching (Ivan Levkivskyi, PR [21435](https://github.com/python/mypy/pull/21435)) - Fix JSON output mode for syntax errors in parallel mode (Adam Turner, PR [21434](https://github.com/python/mypy/pull/21434)) - Fix type variable with values as a supertype (Ivan Levkivskyi, PR [21431](https://github.com/python/mypy/pull/21431)) -- Rely on typeshed stubs for `slice` typing (Ivan Levkivskyi, PR [21401](https://github.com/python/mypy/pull/21401)) - Add support for configuring `--num-workers` with an environment variable (Kevin Kannammalil, PR [21407](https://github.com/python/mypy/pull/21407)) - Respect JSON output mode for syntax errors (Adam Turner, PR [21386](https://github.com/python/mypy/pull/21386)) - Analyze `TypedDict` decorators (Pranav Manglik, PR [21267](https://github.com/python/mypy/pull/21267)) From 4b5f1bf3c1246b18a3aaf878044c5916b0f4dfac Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Mon, 11 May 2026 14:54:52 +0100 Subject: [PATCH 3/7] Document librt.vecs and librt.random --- CHANGELOG.md | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a9356452231..fb198c147205 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,20 +14,27 @@ You can read the full documentation for this release on [Read the Docs](http://m ### librt.vecs -- Document `librt.vecs` (Jukka Lehtosalo, PR [21437](https://github.com/python/mypy/pull/21437)) -- Mark `librt.vecs` as non-experimental (Jukka Lehtosalo, PR [21430](https://github.com/python/mypy/pull/21430)) -- Add API and ABI versioning to `librt.vecs` (Jukka Lehtosalo, PR [21429](https://github.com/python/mypy/pull/21429)) -- Update vec value struct to have direct pointer to items (Jukka Lehtosalo, PR [21420](https://github.com/python/mypy/pull/21420)) -- Optimize vec to list and vec to tuple conversions (Jukka Lehtosalo, PR [21380](https://github.com/python/mypy/pull/21380)) -- Optimize list to vec and tuple to vec conversions (Jukka Lehtosalo, PR [21375](https://github.com/python/mypy/pull/21375)) -- Fix debug warnings and assertions from vecs (Piotr Sawicki, PR [21373](https://github.com/python/mypy/pull/21373)) -- Add buffer protocol support for vec (Jukka Lehtosalo, PR [21359](https://github.com/python/mypy/pull/21359)) -- Add primitive for `vec[u8]` to bytes conversion (Jukka Lehtosalo, PR [21357](https://github.com/python/mypy/pull/21357)) -- Faster vec `__init__` and `extend` with bytes arguments (Jukka Lehtosalo, PR [21355](https://github.com/python/mypy/pull/21355)) +The new `librt.vecs` module provides an efficient growable array type `vec` that is +optimized for mypyc use. It provides fast, packed arrays with integer and floating point +value types, which can be several times faster than `list` or `array.array` in +code compiled using mypyc. It also supports nested `vec` objects and non-value-type items, +such as ``vec[vec[str]]``. + +Refer to the [documentation](https://mypyc.readthedocs.io/en/latest/librt_vecs.html) for +the details. + +This was contributed by Jukka Lehtosalo. ### librt.random -- Add `librt.random` module (Jukka Lehtosalo, PR [21433](https://github.com/python/mypy/pull/21433)) +The new ``librt.random`` module provides fast pseudo-random number generation that is +optimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib +``random`` module in compiled code. + +Refer to the [documentation](https://mypyc.readthedocs.io/en/latest/librt_random.html) for +the details. + +This was contributed by Jukka Lehtosalo (PR [21433](https://github.com/python/mypy/pull/21433)). ### Mypyc Improvements @@ -47,7 +54,6 @@ You can read the full documentation for this release on [Read the Docs](http://m ### Other Notable Fixes and Improvements - Rely on typeshed stubs for `slice` typing (Ivan Levkivskyi, PR [21401](https://github.com/python/mypy/pull/21401)) -- Enable `TypeForm` by default (David Foster, PR [21262](https://github.com/python/mypy/pull/21262)) - Improve negative narrowing for membership checks on tuples (Shantanu, PR [21456](https://github.com/python/mypy/pull/21456)) - Narrow match captures based on previous cases (Shantanu, PR [21405](https://github.com/python/mypy/pull/21405)) - Fix nondeterminism in overload resolution (Shantanu, PR [21455](https://github.com/python/mypy/pull/21455)) @@ -194,7 +200,7 @@ string and bytes objects, and for accessing and generating binary data: Refer to the [documentation](https://mypyc.readthedocs.io/en/latest/librt_strings.html) for the details. - +` Contributed by Jukka Lehtosalo. ### Mypyc Improvements From f445eb68af40ff5c101b22b9fc60860c6ff7c2ec Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Mon, 11 May 2026 15:03:54 +0100 Subject: [PATCH 4/7] Updates --- CHANGELOG.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb198c147205..20b141d52b81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ improvements and bug fixes. You can install it as follows: You can read the full documentation for this release on [Read the Docs](http://mypy.readthedocs.io). -### librt.vecs +### librt.vecs: Fast Growable Array Type for Mypyc The new `librt.vecs` module provides an efficient growable array type `vec` that is optimized for mypyc use. It provides fast, packed arrays with integer and floating point @@ -25,7 +25,7 @@ the details. This was contributed by Jukka Lehtosalo. -### librt.random +### librt.random: Fast Pseudo-Random Number Generation The new ``librt.random`` module provides fast pseudo-random number generation that is optimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib @@ -64,6 +64,10 @@ This was contributed by Jukka Lehtosalo (PR [21433](https://github.com/python/my - Respect JSON output mode for syntax errors (Adam Turner, PR [21386](https://github.com/python/mypy/pull/21386)) - Analyze `TypedDict` decorators (Pranav Manglik, PR [21267](https://github.com/python/mypy/pull/21267)) +### Typeshed Updates + +Please see [git log](https://github.com/python/typeshed/commits/main?after=e4d32e01bee44241a5e7c33298c261175b9f1bdb+0&branch=main&path=stdlib) for full list of standard library typeshed stub changes. + ## Mypy 2.0 We’ve just uploaded mypy 2.0.0 to the Python Package Index ([PyPI](https://pypi.org/project/mypy/)). From bd77e7a23b39a363c1d6de12699a7c745f0c8ba3 Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Mon, 11 May 2026 15:08:43 +0100 Subject: [PATCH 5/7] Add final section --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20b141d52b81..608cc4f012b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -68,6 +68,21 @@ This was contributed by Jukka Lehtosalo (PR [21433](https://github.com/python/my Please see [git log](https://github.com/python/typeshed/commits/main?after=e4d32e01bee44241a5e7c33298c261175b9f1bdb+0&branch=main&path=stdlib) for full list of standard library typeshed stub changes. +Thanks to all mypy contributors who contributed to this release: + +### Acknowledgements + +- Adam Turner +- Ivan Levkivskyi +- Jukka Lehtosalo +- Kevin Kannammalil +- Piotr Sawicki +- Shantanu +- sobolevn +- Vaggelis Danias + +I’d also like to thank my employer, Dropbox, for supporting mypy development. + ## Mypy 2.0 We’ve just uploaded mypy 2.0.0 to the Python Package Index ([PyPI](https://pypi.org/project/mypy/)). From b6abbcc8a9902cd99d8bb78625aba6a0e1f9617f Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Mon, 11 May 2026 15:24:26 +0100 Subject: [PATCH 6/7] Give better perf estimates --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 608cc4f012b4..e14420838e9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,9 +16,9 @@ You can read the full documentation for this release on [Read the Docs](http://m The new `librt.vecs` module provides an efficient growable array type `vec` that is optimized for mypyc use. It provides fast, packed arrays with integer and floating point -value types, which can be several times faster than `list` or `array.array` in -code compiled using mypyc. It also supports nested `vec` objects and non-value-type items, -such as ``vec[vec[str]]``. +value types, which can be **several times faster** than `list`, and tens of times faster +than `array.array` in code compiled using mypyc. It also supports nested `vec` objects and +non-value-type items, such as ``vec[vec[str]]``. Refer to the [documentation](https://mypyc.readthedocs.io/en/latest/librt_vecs.html) for the details. From c3cac9b0c5c874e0359fa0b075a588f7f846fd65 Mon Sep 17 00:00:00 2001 From: Jukka Lehtosalo Date: Mon, 11 May 2026 15:29:03 +0100 Subject: [PATCH 7/7] Fixes --- CHANGELOG.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e14420838e9d..d01af76edf0e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,18 +23,18 @@ non-value-type items, such as ``vec[vec[str]]``. Refer to the [documentation](https://mypyc.readthedocs.io/en/latest/librt_vecs.html) for the details. -This was contributed by Jukka Lehtosalo. +Contributed by Jukka Lehtosalo. ### librt.random: Fast Pseudo-Random Number Generation -The new ``librt.random`` module provides fast pseudo-random number generation that is +The new `librt.random` module provides fast pseudo-random number generation that is optimized for code compiled using mypyc. It can be 3x to 10x faster than the stdlib -``random`` module in compiled code. +`random` module in compiled code. Refer to the [documentation](https://mypyc.readthedocs.io/en/latest/librt_random.html) for the details. -This was contributed by Jukka Lehtosalo (PR [21433](https://github.com/python/mypy/pull/21433)). +Contributed by Jukka Lehtosalo (PR [21433](https://github.com/python/mypy/pull/21433)). ### Mypyc Improvements @@ -68,10 +68,10 @@ This was contributed by Jukka Lehtosalo (PR [21433](https://github.com/python/my Please see [git log](https://github.com/python/typeshed/commits/main?after=e4d32e01bee44241a5e7c33298c261175b9f1bdb+0&branch=main&path=stdlib) for full list of standard library typeshed stub changes. -Thanks to all mypy contributors who contributed to this release: - ### Acknowledgements +Thanks to all mypy contributors who contributed to this release: + - Adam Turner - Ivan Levkivskyi - Jukka Lehtosalo @@ -219,7 +219,7 @@ string and bytes objects, and for accessing and generating binary data: Refer to the [documentation](https://mypyc.readthedocs.io/en/latest/librt_strings.html) for the details. -` + Contributed by Jukka Lehtosalo. ### Mypyc Improvements