Performance & Unifying Executables
v0.0.20: Performance
The latest release (v0.0.20) brings both performance improvements and a unified way of accessing the type checker and language server.
Zuban has been designed for high performance. Previously, it ran on a very fast single-threaded model, but this release starts to introduce threading.
By parallelizing parsing and name binding, Zuban is now roughly 10–20% faster. This is just the beginning, further optimizations could yield even greater speed gains. On my 8-core laptop, end-to-end type checking speeds are now comparable to Ty and PyreFly, while using half the CPU and half the RAM.
Most users run the language server on laptops, where CPU heating can slow performance. In tests, Ty was about 30% faster than Zuban under ideal conditions, but its higher CPU usage caused speeds to be 100–200% slower than Zuban when the CPU got hot. Zuban’s more efficient resource use avoids this problem.
Unifying zubanls
& zmypy
From the start, I intended to provide a single zuban executable, though the exact structure wasn’t clear. Now it’s finally here:
zuban check # Type checking like zmypy (not mypy-compatible)
zuban mypy # Type checking like zmypy (mypy-compatible)
zuban server # Launch the LSP server like zubanls would
I generally recommend using this main zuban
executable. The previous
executables still work, but they simply delegate to zuban
under the hood.

David Halter
Founder