Latest Results
[ty] Support generic manual PEP 695 type aliases (#27083)
## Summary
Add specialization support for generic aliases created with
`TypeAliasType`, including defaults, reordered parameters, `ParamSpec`,
`TypeVarTuple`, nested aliases, constructor inference, and recursive
aliases. Validate malformed `type_params` declarations.
Closes https://github.com/astral-sh/ty/issues/1737.
## Test plan
Added and updated mdtests covering manual-alias specialization in
annotations and value positions, defaults and bounds, nested and
recursive aliases, `Callable`/`ParamSpec` and variadic aliases,
constructor inference, invalid and scoped type parameters,
duplicate/default-order/variadic validation, non-generic and double
specialization errors, and preservation of native PEP 695 aliases in
`Callable` types.
Ecosystem impact is large because scipy-stubs makes extensive use of
generic `TypeAliasType`, and several other ecosystem projects depend on
it. Ecosystem changes look correct/expected for newly understanding
these aliases; some reveal existing limitations of PEP 695 type aliases
that should be fixed separately. Use Namespace runners for Windows (#27101)
This continues expanding use of Namespace runners as we assess their
viability for our projects.
They appear to provide significant performance benefits over the Depot
runners at the same size.
It's worth noting they do not use a warm pool and the queue times
consequently include machine boot and are expected to be higher than
Depot on average.
Follows #27097 and https://github.com/astral-sh/uv/pull/19751
--------
Move Ruff's Windows test and binary-build jobs to the
`namespace-profile-windows-2022-x86-64-16x32` runner already used by uv.
At the configured runner sizes, five sequential warm Namespace samples
were compared with 20 recent Depot Windows test runs and the ten most
recent production releases on `windows-latest`.
| Test metric | Depot mean, n=20 (95% CI) | Namespace mean, n=5 (95% CI)
| Difference (95% CI) |
| --- | ---: | ---: | ---: |
| Whole test job | 5:36 (5:18–5:55) | 3:26 (2:49–4:03) | −2:10 / −38.8%
(−2:47 to −1:34) |
| Compile and test | 2:54 (2:43–3:06) | 2:43 (2:20–3:06) | −11s / −6.5%
(−35s to +12s) |
| Test metric | Depot median | Namespace median | Difference |
| --- | ---: | ---: | ---: |
| Whole test job | 5:20 | 3:11 | −2:09 / −40.3% |
| Compile and test | 2:41 | 2:33 | −8s / −5.0% |
| Release job | GitHub mean, n=10 (95% CI) | Namespace mean, n=5 (95%
CI) | Difference (95% CI) |
| --- | ---: | ---: | ---: |
| x86_64 release | 12:37 (11:46–13:29) | 5:14 (4:14–6:14) | −7:23 /
−58.5% (−8:32 to −6:14) |
| i686 release | 13:21 (12:37–14:05) | 4:59 (4:28–5:30) | −8:22 / −62.7%
(−9:10 to −7:33) |
| aarch64 release | 12:49 (12:04–13:33) | 5:25 (4:31–6:20) | −7:24 /
−57.7% (−8:25 to −6:22) |
| Release job | GitHub median | Namespace median | Difference |
| --- | ---: | ---: | ---: |
| x86_64 release | 12:47 | 5:11 | −7:36 / −59.5% |
| i686 release | 13:16 | 4:55 | −8:21 / −62.9% |
| aarch64 release | 12:39 | 5:35 | −7:04 / −55.8% |
Runner queue time is separate from execution:
| Job | Baseline median (range) | Namespace median (range) |
| --- | ---: | ---: |
| Windows tests | 0:02 (0:01–0:03), n=20 | 0:28 (0:05–0:43), n=5 |
| x86_64 release | 0:04 (0:03–0:56), n=9 | 0:45 (0:18–1:04), n=5 |
| i686 release | 0:04 (0:03–0:40), n=9 | 0:31 (0:19–0:48), n=5 |
| aarch64 release | 0:05 (0:03–1:06), n=9 | 0:20 (0:20–0:46), n=5 |
The Namespace profile provides 16 vCPU and 32 GB RAM, matching Depot.
---------
Co-authored-by: Zanie Blue <contact@zanie.dev>
Co-authored-by: zaniebot <zaniebot@users.noreply.github.com> Latest Branches
0%
cjm/1737-generic-typealiastype-specialization 0%
brent/lsp-both-suppressions 0%
alex/identity-tagged-union-narrowing © 2026 CodSpeed Technology