Typed Clojure 1.3.0 is out https://github.com/typedclojure/typedclojure/blob/main/CHANGELOG.md#130-20250309
It contains a huge overhaul of internals. User facing changes:
• all dynamic variables have been removed, see changelog for replacements
• type checking no longer evaluates programs top-to-bottom by default. namespaces are required then each top-level form is checked in parallel, and the result is not evaluated. This requires side-effecting macros (rare) to have a custom type rule, or to override the default configuration.
◦ previous behavior: (check-ns *ns* :check-config {:check-ns-load :never, :check-form-eval :after})
• clojure.core.typed loads 80% faster (used by typed.clojure)
• removed clojure.core.typed.intern-defaliases support
• type check as if *assert* is true, regardless of actual setting.
Thanks to @alexyakushev for consulting on performance work. Thanks to @dmiller for working on CLR support.
I'm starting on 1.4.0-SNAPSHOT. It contains a breaking change: check-ns will only check namespaces with :typed.clojure metadata. An automatic upgrade script will be provided. The rationale is to build better automated tooling towards type checking entire projects, with automatic reloading, parallelism, and minimal rechecking via cached type checking results.