TypeScript 7 मध्ये Go-आधारित कंपायलर सादर करण्यात आला आहे, जो टाईप-चेकिंगचा वेळ दहाव्या भागात कमी करतो आणि मेमरीचा वापर २५% पर्यंत कमी करतो. डेव्हलपरने VS Code मध्ये “save” दाबल्याबरोबर या बदलाचा अनुभव येईल.
लँग्वेज सर्व्हिसचा गाभा (core) Go मध्ये पुन्हा लिहिण्याचा मायक्रोसॉफ्टचा निर्णय हा TypeScript चा incremental checker मोठ्या monorepos वर अडकू शकतो, याबद्दलच्या अनेक वर्षांच्या तक्रारींनंतर घेण्यात आला आहे. पार्सिंग आणि टाईप-चेकिंग यांसारखी जड कामे जुन्या JavaScript अंमलबजावणीतून बाहेर काढून, टीमने लँग्वेज लेव्हलवर पॅरललिझम (parallelism) अनलॉक केला आहे आणि Node.js रनटाइमचा ओव्हरहेड कमी केला आहे.
हे पुनर्लेखन (rewrite) का महत्त्वाचे आहे
Next.js किंवा Nuxt सारख्या फ्रेमवर्क्ससह बनवलेले आधुनिक वेब ॲप्स नियमितपणे हजारो मॉड्यूल्स वापरतात. अशा वातावरणात, पहिला टाईप एरर शोधण्यासाठी लागणारा वेळ 'edit-compile-debug' या चक्रात मोठा अडथळा ठरू शकतो. नवीन कंपायलरमुळे VS Code मध्ये पहिला एरर शोधण्याचा वेळ १७.५ सेकंदांवरून १.३ सेकंदांच्या खाली आला आहे, म्हणजेच केवळ या एडिटरसाठी ११.९ पट वेगवान सुधारणा झाली आहे. विविध प्रकल्पांमधील स्वतंत्र बेंचमार्क देखील असेच फायदे दर्शवतात:
- VS Code: ११.९ पट वेगवान
- Sentry: ८.९ पट वेगवान
- Bluesky: ८.७ पट वेगवान
- Playwright: ८.७ पट वेगवान
- Tldraw: ७.७ पट वेगवान
मेमरी वापरामध्येही सुधारणा झाली आहे. VS Code चा TypeScript सर्व्हर आता १८% कमी RAM वापरतो, Bluesky मध्ये २६% घट झाली आहे आणि Tldraw मध्ये १५% बचत होते.
या आकड्यांचा प्रत्यक्ष उत्पादकतेवर परिणाम होतो: दर काही सेकंदांनी फाईल सेव्ह करणारा डेव्हलपर आता दहापट वेगाने काम करू शकतो, ज्यामुळे मोठ्या कोडबेसवरील दैनंदिन अडथळे लक्षणीयरीत्या कमी होतात.
सूक्ष्म नियंत्रणासाठी नवीन पर्याय
Go कंपायलरमध्ये कमांड-लाइन फ्लॅग्सचा एक संच देण्यात आला आहे, ज्यामुळे टीम्स त्यांच्या हार्डवेअर आणि वर्कफ्लोनुसार परफॉर्मन्स सेट करू शकतात:
- पॅरलल प्रोसेसिंग (
--checkersआणि--builders) पार्सिंग आणि टाईप-चेकिंग एकाच वेळी चालवते, ज्यामुळे वापरकर्त्यांना वेग आणि मेमरी यांच्यात संतुलन राखता येते. - सिंगल-थ्रेडेड मोड (
--singleThreaded) डीबगिंग सोपे करते आणि कमी रिसोर्स असलेल्या वातावरणासाठी योग्य आहे. - स्केलेबल वर्कर्स टाईप-चेकिंग वर्कर्सना बिल्डर वर्कर्सपासून स्वतंत्रपणे स्केल करण्याची सुविधा देते, ज्यामुळे कस्टम बिल्ड पाइपलाइन तयार करता येतात.
- सुधारित वॉच मोड जुन्या Node-आधारित फाईल स्कॅनरची जागा Go फाईल वॉचर घेतो, ज्यामुळे मोठ्या
node_modulesट्रीचे खर्चिक रिकर्सिव्ह स्कॅन टाळता येतात.
हे पर्याय मोठ्या संस्थांना त्यांच्या विद्यमान कोडमध्ये बदल न करता CI पाइपलाइन्समधून अतिरिक्त परफॉर्मन्स मिळवण्याची क्षमता देतात.
जोखीम आणि विरोध
एका वेगळ्या भाषेत मुख्य घटक पुन्हा लिहिणे हे वादविवादाशिवाय नाही. काही डेव्हलपर्सना काळजी वाटते की Go कडे वळल्यामुळे नवीन बग्स किंवा विसंगती (incompatibilities) निर्माण होऊ शकतात, ज्या प्रगल्भ JavaScript अंमलबजावणीने आधीच दूर केल्या आहेत. हा बदल TypeScript टूलचेनमध्ये Go रनटाइमची अवलंबित्व (dependency) देखील वाढवतो, ज्यामुळे Node.js वर पूर्णपणे अवलंबून असलेल्या वातावरणात गुंतागुंत निर्माण होऊ शकते. सुरुवातीच्या वापरकर्त्यांना त्यांचे कस्टम प्लगइन्स आणि लँग्वेज सर्व्हर एक्स्टेंशन्स विनासायास काम करत आहेत की नाही, याची पडताळणी करावी लागेल.
पुढे काय पाहायचे
मायक्रोसॉफ्टने सार्वजनिक रिलीजमध्ये Go-आधारित कंपायलर डीफॉल्ट ठेवला आहे, परंतु बॅकअपसाठी जुने JavaScript इंजिन उपलब्ध आहे. प्रमुख IDEs आणि CI सेवांमधील अवलंबनाचा दर (adoption rates) हे दर्शवेल की परफॉर्मन्समधील वाढ ही स्थलांतराच्या (migration) अडचणींपेक्षा जास्त आहे की नाही. याव्यतिरिक्त, नवीन फ्लॅग्सवरील कम्युनिटी फीडबॅक कंपायलरच्या पुढील विकासाला आकार देईल—जर डेव्हलपर्सना पॅरलल पर्याय ट्यून करणे कठीण वाटले, तर Microsoft उच्च-स्तरीय प्रीसेट्स (presets) आणू शकते.
थोडक्यात: TypeScript 7 चे Go पुनर्लेखन दहापट वेगवान टाईप चेकिंग आणि मेमरीमध्ये लक्षणीय बचत देते. हा बदल मोठ्या प्रमाणावरील JavaScript डेव्हलपमेंट अधिक वेगवान बनवू शकतो—जर इकोसिस्टम नवीन रनटाइमशी सुलभतेने जुळवून घेत असेल तर.
