"We're building a new static type checker for Python"

Excitement and Project Goals

  • Many commenters are enthusiastic, based on prior experience with Ruff and uv, and expect similar “step change” improvements in speed and UX.
  • The checker is currently codenamed “red_knot” and is being developed in the open within the Ruff repo; it’s not ready for general use yet.
  • Stated goals (from linked threads): fast, highly incremental static analysis suitable both for CI batch runs and IDE/LSP-style interactive checking, likely using Rust and salsa for incremental computation.

Comparisons with Existing Type Checkers

  • Strong appetite for an alternative to mypy; complaints include:
    • Slowness on large codebases (though experiences vary widely).
    • Less precise analysis, many false positives, weaker inference, and difficulty with “Pythonic” patterns.
    • Awkward plugin/stub ecosystem and uneven third‑party stubs.
  • Pyright is widely praised for quality and precision, but:
    • Its Node.js dependency is a deal-breaker for some.
    • Performance is “ok but could be better.”
  • Others mention pytype, Pyre, and runtime tools (beartype, TypeGuard, PyContracts, icontract); the new checker is expected to be static only, but some wish it would optionally support runtime checks.

Fragmentation, Standards, and Django

  • Some worry a third major checker will exacerbate divergence (mypy vs Pyright vs new tool), making CI and team workflows painful when tools disagree.
  • Others respond that:
    • Syntax and semantics are largely standardized via PEPs and the typing community.
    • Multiple active implementations help drive out spec ambiguities and converge behavior over time.
  • Django support is a major concern:
    • Mypy wins today because of its plugin interface and django-stubs.
    • Other checkers are seen as “DOA” for large Django codebases without comparable plugin capabilities.
    • It’s unclear whether the new checker will support Django-level dynamism.

Business Model and Sustainability

  • Several commenters question how a VC-backed company can sustain open-source tooling like Ruff, uv, and a checker.
  • A linked explanation describes a strategy of selling vertically integrated enterprise products (e.g., private package registries) to companies already using the tools.
  • Some doubt the size or uniqueness of such markets versus cloud-provider offerings; others are content as long as tools remain open source but worry about long‑term maintenance if funding dries up.

Typing Philosophy and Python’s Direction

  • Ongoing debate:
    • One side: Python’s charm was dynamic typing; if you want static types, choose another language.
    • Other side: people often can’t choose the language (e.g., ML/AI and legacy codebases), and gradual typing dramatically improves refactoring, IDE support, and team safety on large projects.
  • Several describe a progression: enjoying dynamic Python early on, then coming to rely heavily on type hints as projects and teams scale.

Ecosystem and Future Directions

  • Some see Astral as delivering practical solutions faster than official bodies and hope for:
    • A unified toolchain: formatter, linter, type checker, package manager, task runner, build, deploy, and maybe a future Python interpreter in Rust.
  • There’s curiosity about why Python needs so many generations of tooling, and discussion of “gradual typing” as a general trend in dynamic languages.
  • A few argue for entirely new statically typed “Python-like” languages, but most acknowledge Python’s ecosystem lock‑in as decisive.