Vznikl nový open-source projekt s názvem tsrs, který představuje implementaci kompilátoru TypeScriptu v jazyce Rust. Tento projekt je výsledkem úzké spolupráce mezi několika technologickými týmy a vývojáři, s cílem integrovat jej do širšího ekosystému nástrojů pro kompilaci JavaScriptu.
Hlavní motivací za tímto úsilím je umožnit vývojářům trávit méně času čekáním na kontrolu kódu a více času samotným vývojem. Zvýšení rychlosti a snížení paměťové náročnosti TypeScriptu navíc otevírá dveře k nasazení kompletních vývojových prostředí v dříve nedostupných místech, například přímo ve webovém prohlížeči.
Je důležité zdůraznit, že tsrs není forkovaná verze TypeScriptu. Vývojáři projektu pevně věří, že tým stojící za TypeScriptem by měl i nadále plně kontrolovat jeho design a směřování. Jejich dlouhodobá vize a úspěšná adaptace TypeScriptu v JavaScriptové komunitě jsou klíčové. Cílem je striktně zachovávat jazyk TypeScript tak, jak je definován originální implementací, a tým TypeScriptu zůstává výhradně odpovědný za jeho definici.
Počáteční srovnávací testy přepisu v Rustu jsou velmi slibné. tsrs je až osmkrát rychlejší a spotřebovává přibližně o 70 % méně paměti ve srovnání s TypeScriptem verze 7.0, při použití stejného počtu workerů pro kontrolu typů. Je zajímavé, že některé z těchto optimalizací byly již integrovány do nadcházející verze TypeScriptu (např. 7.1 beta je až 2,5x rychlejší než 7.0), což svědčí o potenciálu vzájemné spolupráce. Benchmarky byly prováděny v úzké koordinaci s týmem TypeScriptu, aby se zajistila srovnatelnost konfigurací.
V otázce výběru jazyka se nabízí otázka, proč právě Rust, když již existuje Go port TypeScriptu, který přinesl značné zlepšení rychlosti a efektivity. Důvodem je nejen rychlost, ale především jedinečné výhody Rustu při běhu ve WebAssembly (Wasm). Model správy paměti v Rustu umožňuje přímou interakci mezi Wasm modulem a hostitelským prostředím, jelikož nevyžaduje kompilaci vlastního garbage collectoru, jako je tomu u Go. To činí Rust mnohem vhodnějším pro scénáře s WebAssembly, kde je klíčová efektivita paměti.

Potřebujete pomoc s webem nebo aplikací?
Ozvěte se mi — do 24 hodin se Vám ozvu zpět s návrhem dalšího postupu.
Tato schopnost umožňuje provozovat celé softwarové buildovací a deployment systémy s malou paměťovou náročností. Díky tomu je možné spustit plně zapouzdřené vývojové systémy v prostředích, kde to dříve nebylo možné – například bezpečně na straně klienta v prohlížeči, na vestavěných zařízeních nebo v IoT aplikacích.
Udržitelnost projektu tsrs je zajištěna propracovanou strategií. Projekt se aktivně snaží sjednotit s existujícími nástroji pro TypeScript v Rustu, aby nabídl komplexní podporu všech funkcí včetně Language Server Protocol (LSP). Inspirace je čerpána z metod, které se osvědčily u jiných open-source projektů, pro udržování synchronizace s jejich upstreamovými verzemi. Každodenní automatizované procesy kontrolují změny, generují diffy a zaznamenávají potenciální problémy. Kompatibilita je ověřována každou noc spouštěním testovacích sad proti implementaci. Pokud se objeví nesrovnalosti, automatizované nástroje identifikují rozdíly, vytvoří reprodukci a navrhnou opravy. Tento pečlivý proces má zajistit, že tsrs nebude zavádět odlišná chování od upstreamového TypeScriptu. Nalezené výkonnostní optimalizace budou navíc předávány zpět do Go implementace TypeScriptu, aby z nich profitovala celá komunita.
Cílem je minimalizovat veškeré drobné rozdíly oproti upstreamové verzi TypeScriptu, jako je například pořadí diagnostických zpráv, do doby vydání stabilní verze. Tsrs se má stát dobře udržovaným open-source projektem, který doplňuje a urychluje ekosystém JavaScriptu, aniž by zasahoval do vlastního vývoje TypeScriptu. Tým aktivně refaktoruje kód, aby byl rychlejší, méně paměťově náročný a snadno udržovatelný. Probíhá úzká spolupráce s týmem TypeScriptu a JavaScriptovou komunitou na společném budování nejlepších a nejrychlejších implementací TypeScriptu.
