TypeScript 7 ఒక Go-ఆధారిత కంపైలర్తో విడుదలైంది, ఇది టైప్-చెకింగ్ సమయాన్ని మునుపటి కంటే పది వంతుకు తగ్గిస్తుంది మరియు మెమరీ వినియోగాన్ని పావు వంతు వరకు తగ్గిస్తుంది. డెవలపర్ VS Codeలో “save” బటన్ నొక్కగానే ఈ మార్పు స్పష్టంగా తెలుస్తుంది.
లాంగ్వేజ్ సర్వీస్ యొక్క కోర్ను Goలో తిరిగి వ్రాయాలనే Microsoft నిర్ణయం, పెద్ద monoreposలో TypeScript యొక్క incremental checker నిలిచిపోయే అవకాశం ఉందని సంవత్సరాలుగా వస్తున్న ఫిర్యాదుల నేపథ్యంలో తీసుకుంది. పాత JavaScript ఇంప్లిమెంటేషన్ నుండి పారాసింగ్ (parsing) మరియు టైప్-చెకింగ్ (type-checking) వంటి భారీ పనులను వేరు చేయడం ద్వారా, టీమ్ లాంగ్వేజ్ స్థాయిలో పారలలిజంను (parallelism) సాధించడమే కాకుండా, Node.js రన్టైమ్ యొక్క ఓవర్హెడ్ను కూడా తగ్గించింది.
ఈ రీరైట్ ఎందుకు ముఖ్యం
Next.js లేదా Nuxt వంటి ఫ్రేమ్వర్క్లతో నిర్మించిన ఆధునిక వెబ్ యాప్లు సాధారణంగా వేల సంఖ్యలో మాడ్యూల్స్ను ఉపయోగిస్తాయి. అటువంటి వాతావరణంలో, మొదటి టైప్ ఎర్రర్ (type error) కనిపించే సమయం ఎడిట్-కంపైల్-డీబగ్ లూప్ను ప్రభావితం చేస్తుంది. కొత్త కంపైలర్ VS Codeలో మొదటి ఎర్రర్ను కనుగొనే సమయాన్ని 17.5 సెకన్ల నుండి 1.3 సెకన్ల కంటే తక్కువకు తగ్గించింది, అంటే ఆ ఎడిటర్లో మాత్రమే 11.9× వేగవంతం అయ్యింది. వివిధ ప్రాజెక్ట్ల నుండి వచ్చిన స్వతంత్ర బెంచ్మార్క్లు కూడా ఇలాంటి ఫలితాలనే ధృవీకరిస్తున్నాయి:
- VS Code: 11.9× వేగవంతం
- Sentry: 8.9× వేగవంతం
- Bluesky: 8.7× వేగవంతం
- Playwright: 8.7× వేగవంతం
- Tldraw: 7.7× వేగవంతం
మెమరీ వినియోగం కూడా మెరుగుపడింది. VS Code యొక్క TypeScript సర్వర్ ఇప్పుడు 18% తక్కువ RAMని ఉపయోగిస్తుంది, Blueskyలో 26% తగ్గుదల, మరియు Tldrawలో 15% ఆదా కనిపిస్తుంది.
ఈ గణాంకాలు వాస్తవ ప్రపంచ ఉత్పాదకతను పెంచుతాయి: ప్రతి కొన్ని సెకన్లకు ఒక ఫైల్ను సేవ్ చేసే డెవలపర్ ఇప్పుడు పది రెట్లు వేగంగా పనులు పూర్తి చేయవచ్చు, దీనివల్ల పెద్ద కోడ్బేస్లపై రోజువారీ పనిలో ఎదురయ్యే ఇబ్బందులు గణనీయంగా తగ్గుతాయి.
సూక్ష్మ నియంత్రణ కోసం కొత్త ఆప్షన్లు
Go కంపైలర్ కొన్ని కమాండ్-లైన్ ఫ్లాగ్లను (command-line flags) పరిచయం చేసింది, ఇవి టీమ్లు తమ హార్డ్వేర్ మరియు వర్క్ఫ్లోకు అనుగుణంగా పనితీరును మార్చుకోవడానికి అనుమతిస్తాయి:
- పారలల్ ప్రాసెసింగ్ (
--checkersమరియు--builders) పారాసింగ్ మరియు టైప్-చెకింగ్ను ఏకకాలంలో నిర్వహిస్తుంది, దీనివల్ల వినియోగదారులు వేగం మరియు మెమరీ ఒత్తిడి మధ్య సమతుల్యతను పాటించవచ్చు. - సింగిల్-త్రెడెడ్ మోడ్ (
--singleThreaded) డీబగ్గింగ్ను సులభతరం చేస్తుంది మరియు తక్కువ వనరులు ఉన్న వాతావరణాలకు అనుకూలంగా ఉంటుంది. - స్కేలబుల్ వర్కర్స్ టైప్-చెకింగ్ వర్కర్లను బిల్డర్ వర్కర్ల నుండి స్వతంత్రంగా స్కేల్ చేయడానికి అనుమతిస్తాయి, తద్వారా కస్టమ్ బిల్డ్ పైప్లైన్లను రూపొందించవచ్చు.
- మెరుగుపరచబడిన వాచ్ మోడ్ పాత Node-ఆధారిత ఫైల్ స్కానర్ను Go ఫైల్ వాచర్తో భర్తీ చేస్తుంది, దీనివల్ల భారీ
node_modulesట్రీల యొక్క ఖరీదైన రికర్సివ్ స్కాన్లు నివారించబడతాయి.
ఈ ఆప్షన్లు పెద్ద సంస్థలకు తమ ప్రస్తుత కోడ్ను మార్చకుండానే, CI పైప్లైన్ల నుండి అదనపు పనితీరును పొందగలిగే సామర్థ్యాన్ని అందిస్తాయి.
రిస్క్లు మరియు వ్యతిరేకత
కోర్ కాంపోనెంట్ను వేరే భాషలో తిరిగి వ్రాయడం వివాదరహితం కాదు. Goకి మారడం వల్ల కొత్త బగ్లు లేదా అసమగ్రతలు (incompatibilities) వచ్చే అవకాశం ఉందని, ఇప్పటికే మెచ్యూర్ అయిన JavaScript ఇంప్లిమెంటేషన్లో ఇవి పరిష్కరించబడ్డాయని కొందరు డెవలపర్లు ఆందోళన చెందుతున్నారు. ఈ మార్పు TypeScript టూల్చైన్కు Go రన్టైమ్ డిపెండెన్సీని కూడా జోడిస్తుంది, ఇది Node.jsపై పూర్తిగా ఆధారపడిన వాతావరణాలను క్లిష్టతరం చేయవచ్చు. త్వరగా దీనిని స్వీకరించేవారు (Early adopters), తమ కస్టమ్ ప్లగిన్లు మరియు లాంగ్వేజ్ సర్వర్ ఎక్స్టెన్షన్లు ఎటువంటి మార్పు లేకుండా పని చేస్తాయో లేదో తనిఖీ చేయాల్సి ఉంటుంది.
తదుపరి ఏం గమనించాలి
Microsoft పబ్లిక్ రిలీజ్లో Go-ఆధారిత కంపైలర్ను డిఫాల్ట్గా సెట్ చేసింది, కానీ పాత JavaScript ఇంజిన్ ఫాల్బ్యాక్ (fallback) కోసం అందుబాటులో ఉంటుంది. ప్రధాన IDEలు మరియు CI సర్వీసులలో దీని వినియోగ రేటును పర్యవేక్షించడం ద్వారా, పనితీరు మెరుగుదలలు మైగ్రేషన్ ఇబ్బందుల కంటే ఎక్కువగా ఉన్నాయో లేదో తెలుస్తుంది. అదనంగా, కొత్త ఫ్లాగ్లపై కమ్యూనిటీ ఫీడ్బ్యాక్ కంపైలర్ ఎలా అభివృద్ధి చెందుతుందో నిర్ణయిస్తుంది—ఒకవేళ డెవలపర్లకు పారలల్ ఆప్షన్లను ట్యూన్ చేయడం కష్టంగా అనిపిస్తే, Microsoft ఉన్నత స్థాయి ప్రిసెట్లను (presets) పరిచయం చేయవచ్చు.
ముఖ్య అంశం: TypeScript 7 యొక్క Go రీరైట్ పది రెట్లు వేగవంతమైన టైప్ చెకింగ్ను మరియు గణనీయమైన మెమరీ ఆదాను అందిస్తుంది. ఈ మార్పు వల్ల పెద్ద ఎత్తున JavaScript డెవలప్మెంట్ మరింత వేగంగా అనిపించవచ్చు—
