Release Notes
Released on 2026-11-03.
Bug fixes
- Fix a panic when checking protocols involving runtime type aliases (#29840)
- Preserve Pydantic field metadata in quoted annotations (#29851)
- Resolve class-local names in generic type aliases (#29915)
LSP server
- Keep argument name hints display-only before later positional arguments or
*args(#29801) - Keep argument name hints display-only when they would insert duplicate or invalid keywords (#29806)
- Show field docstrings on hover for constructor keyword arguments (#29907)
CLI
- Give
NO_COLORprecedence overFORCE_COLORandCLICOLOR_FORCEin diagnostics (#29898) - Honor color overrides in progress bars (#29891)
- Respect
FORCE_COLORinty checkeven when output is piped (#29830)
Diagnostic improvements
- Avoid false
redundant-castdiagnostics when casting the result of a generic call (#29835)
Core type checking
- Infer type arguments for union parameters using constraints from the whole call (#29236)
- Infer type arguments from generic
TypedDictvalues passed to functions (#29903) - Sync vendored typeshed stubs (#29869). Typeshed diff
Performance
- Avoid constraint solving when checking overlap between type variables in invariant positions (#29878)
- Cache subscript method resolution (#29824)
- Cache substitutions for generic type aliases (#29861)
- Defer member lookup when checking overrides (#29866)
- Find existing imports without scanning nested scopes (#29882)
- Reuse class metadata during member lookup (#29864)
- Reuse constructor bindings and defer looking up enclosing type variables (#29897)
- Reuse generic argument contexts across calls (#29877)
- Reuse inferred annotations when checking function returns (#29879)
- Reuse inherited override checks across subclasses (#29867)
- Reuse parameter unions when filtering overloads (#29823)
- Short-circuit equivalence checks against
Never(#29862) - Skip generic call inference when only a concrete receiver's
Selfneeds binding (#29747) - Skip unrelated statement calls when checking a single condition (#29826)
- Stop scanning package initializers once a legacy namespace declaration is found (#29885)
Memory usage improvements
- Prevent exponential memory growth when narrowing unions of intersections by equality (#29904)
Contributors
Install ty 0.0.96
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://releases.astral.sh/github/ty/releases/download/0.0.96/ty-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://releases.astral.sh/github/ty/releases/download/0.0.96/ty-installer.ps1 | iex"Download ty 0.0.96
Verifying GitHub Artifact Attestations
The artifacts in this release have attestations generated with GitHub Artifact Attestations. These can be verified by using the GitHub CLI:
gh attestation verify <file-path of downloaded artifact> --repo astral-sh/tyYou can also download the attestation from GitHub and verify against that directly:
gh attestation verify <file-path of downloaded artifact> --bundle <file-path of downloaded attestation>