Why Go wasn’t the right choice for the TypeScript compiler
Blog post from LogRocket
The decision to rewrite the TypeScript compiler in Go, initially hailed for its performance improvements, brings significant challenges concerning the broader developer ecosystem and tool compatibility. While the new Go-powered compiler offers speed enhancements, with feedback loops in large codebases reportedly up to ten times faster, it disrupts the established JavaScript/TypeScript tooling ecosystem, risking ecosystem debt and potential obsolescence for deeply integrated projects. The choice of Go over Rust, despite Rust's suitability for performance and modularity, raises concerns about long-term maintainability, as Go's less expressive type system and limited metaprogramming capabilities could hinder future enhancements. Additionally, the transition to Go may alienate contributors familiar with JavaScript or TypeScript, thereby affecting community-driven improvements and developer experience. The move prompts a reevaluation of what is considered pragmatic, questioning whether the pursuit of performance justifies compromising ecosystem continuity and future extensibility. Despite the pragmatic rationale, the decision risks distancing the TypeScript community and potentially driving some to consider Rust as an alternative for future TypeScript compiler development.