A TypeScript 7.0 Go-ban írja újra a fordítót, akár 12x gyorsabb buildet hozva

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

A Microsoft bejelentette a TypeScript 7.0 kiadását, amely a nyelv történetének egyik legjelentősebb frissítése. A korábbi verziókkal ellentétben most nem az új szintaktikai funkciók hosszú listája a lényeg, hanem a sebesség.

A legfontosabb újdonság, hogy az új verzió egy natív TypeScript fordítót és eszközkészletet vezet be, amelyet Go nyelven írtak újra. A Microsoft szerint az új megvalósítás natív kódra jellemző teljesítményt, megosztott memóriás több szálú futást és számos optimalizálást hoz, amelyek nagy, valós projektek esetén jellemzően 8–12-szer gyorsabb teljes buildet eredményeznek.

A Microsoft szerint a TypeScript 7.0 fejlesztésekor fontos szempont volt, hogy az új fordító kompatibilis maradjon a meglévővel, miközben az implementáció natív kódra vált. A Go-alapú portot a lehető leghűebben írták meg az eredeti codebase alapján, ahol csak lehetett, megtartva a felépítést és a logikát, hogy az eredmények következetesek maradjanak a régi és az új fordító között.

A teljesítménymutatók kifejezetten meggyőzőek. A Microsoft mérései szerint a VS Code codebase buildideje TypeScript 6.0-val 125,7 másodperc volt, TypeScript 7.0-val viszont 10,6 másodpercre csökkent, ami 11,9-szeres gyorsulás. A Sentry 139,8 másodpercről 15,7 másodpercre esett vissza, míg a Bluesky, a Playwright és a tldraw 7,7–8,9-szeres gyorsulást ért el.

A memóriahasználat is javult. Ugyanebben a tesztkészletben a TypeScript 7.0 több nagy projekt esetén is kevesebb összesített memóriát használt, 6–26% közötti csökkenéssel.

Az editorok reakcióideje szintén sokat javult. A Microsoft szerint korábban egy hibát tartalmazó fájl megnyitása a VS Code codebase-ben körülbelül 17,5 másodpercig tartott, mire megjelent az első hiba. TypeScript 7.0-val ez az idő 1,3 másodperc alá csökkent, vagyis több mint 13-szor gyorsabb lett a folyamat.

Az új kiadás párhuzamosítási beállításokat is bevezet. A TypeScript 7.0 számos buildlépést képes párhuzamosan futtatni, többek között a parszolást, a típusellenőrzést és a kódgenerálást. Alapértelmezés szerint négy típusellenőrző worker fut, de a fejlesztők ezt az új --checkers flaggel módosíthatják. Több CPU-maggal rendelkező rendszereken a checkers értékének növelése tovább javíthatja a teljesítményt, általában nagyobb memóriahasználat árán.

Monorepók és project references használata esetén a TypeScript 7.0 új --builders flaget ad, amellyel egyszerre több project reference builder is futhat. A Microsoft ugyanakkor figyelmeztet, hogy a --checkers és a --builders kölcsönhatására oda kell figyelni, mert ha mindkettőt növelik, az megsokszorozhatja az aktív típusellenőrző workerek számát.

Megjelent egy új --singleThreaded opció is, amellyel teljesen le lehet tiltani a párhuzamosítást. Ez hasznos lehet debugging közben, a TypeScript verziók közötti viselkedés összehasonlítására, vagy olyan korlátozott környezetekben, ahol nem kívánatosak a plusz worker folyamatok.

Fontos fejlesztés a teljesen újraírt --watch mód is. A TypeScript 7.0 egy új fájlfigyelő alapra vált, amely a Parcel watcherére épül, Go nyelvre portolva.

Érdemes figyelni néhány konfigurációs és kompatibilitási változásra is. A TypeScript 7.0 átveszi a TypeScript 6.0 újabb alapértelmezéseit, és néhány korábban elavultnak jelölt opciót mostantól hibaként kezeli. Különösen fontos, hogy a strict mostantól alapértelmezés szerint engedélyezett, a module alapértelmezett értéke esnext, a stableTypeOrdering pedig alapértelmezetten be van kapcsolva, és nem lehet kikapcsolni.

A teljesítmény- és konfigurációs változtatásokon túl a TypeScript 7.0 természetesebben kezeli az Unicode kódpontokat a template literal típusokban. Korábban bizonyos, surrogate párokkal ábrázolt Unicode karakterek úgy is kettéválhattak, ami ugyan technikailag összhangban volt a JavaScript UTF-16 indexelésével, de általában nem ezt várták a fejlesztők. A TypeScript 7.0 ezeket az eseteket mostantól természetesebben kezeli a típuslevezetés során.

További részletek a hivatalos bejelentésben olvashatók a Microsoft Dev Blogs oldalán.