10 गुना तेज़ TypeScript
(devblogs.microsoft.com)- Microsoft ने compiler और tools के native port के ज़रिये TypeScript performance में 10 गुना सुधार की घोषणा की
- editor startup time में बड़ा सुधार, build time 10 गुना कम, और memory usage में बड़ी कमी
- 2025 के मध्य तक
tscpreview version जारी करने और 2025 के अंत तक full project build और language service उपलब्ध कराने की योजना
TypeScript performance सुधार की पृष्ठभूमि
- TypeScript की मुख्य वैल्यू बेहतरीन developer experience है
- codebase जितना बड़ा होता है, TypeScript की उपयोगिता उतनी बढ़ती है, लेकिन बड़े projects में performance issues सामने आते हैं
- लंबे load और checking time की समस्या
- तेज़ editor startup time और पूरे codebase analysis के बीच संतुलन की ज़रूरत
- AI-आधारित features के लिए तेज़ और सटीक semantic information की आवश्यकता है
- command-line build के ज़रिये codebase की स्थिति verify करने की मांग बढ़ रही है
native port की प्रगति योजना
- TypeScript compiler और tools के native port पर काम शुरू
- performance improvement के लक्ष्य:
- editor startup time में बड़ा सुधार
- build time को अधिकतम 10 गुना तक कम करना
- memory usage में कमी
- 2025 के मध्य: command-line type checking सक्षम
tscpreview version जारी करने की योजना - 2025 के अंत: full project build और language service उपलब्ध कराने की योजना
कोड चलाना और testing
- TypeScript Go code repository में code build और run किया जा सकता है
- repository में
tscऔर language server को build और run करने के निर्देश दिए गए हैं - नए features पर नियमित updates देने की योजना
कितना तेज़ हुआ?
- मौजूदा TypeScript projects के build time को कई लोकप्रिय codebases पर test करने पर निम्न performance improvements दिखे:
- VS Code project में लगभग 15 लाख lines of code पर समय 77.8 सेकंड से घटकर 7.5 सेकंड हुआ, यानी लगभग 10.4 गुना तेज़
- Playwright project में लगभग 3.5 लाख lines of code पर समय 11.1 सेकंड से 1.1 सेकंड हुआ, यानी लगभग 10.1 गुना सुधार
- TypeORM project में लगभग 2.7 लाख lines of code पर समय 17.5 सेकंड से 1.3 सेकंड हुआ, यानी लगभग 13.5 गुना सुधार
- date-fns project में लगभग 1 लाख lines of code पर समय 6.5 सेकंड से 0.7 सेकंड हुआ, यानी लगभग 9.5 गुना सुधार
- tRPC project में लगभग 18 हज़ार lines of code पर समय 5.5 सेकंड से 0.6 सेकंड हुआ, यानी लगभग 9.1 गुना सुधार
- rxjs project में लगभग 2 हज़ार lines of code पर समय 1.1 सेकंड से 0.1 सेकंड हुआ, यानी लगभग 11 गुना सुधार
- अभी सभी features पूरे नहीं हुए हैं, लेकिन ज़्यादातर codebases में 10 गुना या उससे अधिक performance improvement की उम्मीद है
- तेज़ type checking और code navigation संभव होगा
- AI tools integration और advanced refactoring support संभव होगा
editor performance सुधार
- editor load और response speed में सुधार
- Visual Studio Code codebase के आधार पर load time:
- वर्तमान: 9.6 सेकंड → native version: 1.2 सेकंड (लगभग 8 गुना सुधार)
- memory usage में भी लगभग 50% कमी
- language service tasks (auto-complete, quick info, go to definition आदि) की performance बेहतर होने की उम्मीद
- Language Server Protocol (LSP) आधारित migration पर काम जारी है
version roadmap
- TypeScript 5.8 जारी हो चुका है, और TypeScript 5.9 जल्द आने वाला है
- JS-आधारित TypeScript codebase का development 6.x version के रूप में जारी रहेगा
- native codebase स्थिर होने पर इसे TypeScript 7.0 के रूप में जारी किया जाएगा
- TypeScript 6 → JS-आधारित version
- TypeScript 7 → native-आधारित version
- TypeScript 7 जारी होने के बाद भी 6.x version कुछ समय तक बनाए रखा जाएगा
अगले कदम
- performance, compiler API, LSP आदि पर अतिरिक्त जानकारी साझा की जाएगी
- GitHub FAQ में अक्सर पूछे जाने वाले सवाल देखे जा सकते हैं
- 13 मार्च 2025 को TypeScript community Discord में AMA आयोजित होगा (PDT सुबह 10 बजे | UTC शाम 5 बजे)
24 टिप्पणियां
मुझे लगा कि लोग structural typing के बारे में सोचे बिना ही बात उछाल रहे हैं।
इसे C# या Rust जैसी nominal typing वाली भाषा में फिर से लिखना हो, तो प्रोजेक्ट की बुनियादी संरचना में बहुत ज़्यादा बदलाव करने पड़ते, इसलिए यह आसान नहीं रहा होगा।
structural typing अपनाने वाली भाषाओं में, मौजूदा JS-आधारित विकल्पों से बेहतर performance देने वाली चीज़ शायद C++ या Golang ही हो सकती है, लेकिन productivity तक को ध्यान में रखें तो कोई वास्तविक विकल्प नहीं है।
किसी समय के बाद से TS में मेरी दिलचस्पी थोड़ी कम होने लगी थी, लेकिन ऐसी खबर देखकर फिर से उत्सुकता हो रही है, है न?
ts में अगर वाकई बिल्कुल अपरिहार्य स्थिति को छोड़कर
anyका बेधड़क इस्तेमाल करने लगें, तो वो vanilla इस्तेमाल करने से अलग नहीं रह जाता.. हलगता है विवाद काफ़ी गर्म है, इसलिए Anders Hejlsberg ने खुद आकर टिप्पणी छोड़ी है
https://github.com/microsoft/typescript-go/…
एक व्यक्ति जो चाहता है कि TypeScript में compile करने पर आउटपुट सीधे binary के रूप में मिले
फ़्रंटएंड के बारे में मुझे ज़्यादा जानकारी नहीं है.. क्या यह
swcसे अलग है?SWC का फोकस Babel की तरह compatible JavaScript code जनरेट करने और bundling तक है, जबकि इसका फोकस TypeScript code को JavaScript में बदलने या errors को check करने पर है.
कहते हैं न, अपना ही बनाया हुआ खुद इस्तेमाल करना चाहिए। लेकिन language के मामले में यह थोड़ा सोचने वाली बात लगती है।
मेरी निजी राय में, TS की बुनियाद JS के runtime ज़्यादातर (जैसे spidermonkey, v8) C++ में लिखे गए हैं और JS में implemented कोई runtime है भी नहीं,
और JS -> JS compilation भी pure JS से करने पर बहुत धीमा हो जाता है, इसलिए esbuild वगैरह की तरफ सब जाते दिखते हैं,
तो TS में भी क्या ज़रूरी है कि इतना dogfooding पर अड़े रहें, ऐसा लगता है
मुझे चिंता है कि कहीं बाद में मौजूदा TypeScript codebase के रखरखाव की अनदेखी न होने लगे।
यह वाकई खुशखबरी है! हैरानी की बात है कि MS की TypeScript भाषा उम्मीद के उलट सच में काफी अप्रत्याशित(?) विकल्प चुनती दिखती है। MS के नज़रिए से देखें तो यह लगभग उसका पहला open source project था, और JS को replace करने की कोशिश करने वाले Google के Dart के विपरीत JS को complement करने का फैसला भी बहुत समझदारी भरा लगा। इस बार native porting language के लिए भी, जबकि उसके पास अपनी भाषाएँ भी काफी होंगी, Google के Go को चुनना भी चौंकाने वाला है।
अरे, Deno वाली तरफ़ पहले से ही Rust-आधारित toolchain बना हुआ होगा... फिर अचानक Go क्यों?
मेरा ख्याल है कि आप Node जैसे runtime की बात कर रहे हैं, लेकिन यहाँ बात TS भाषा के compiler की हो रही है।
आह, लेख को थोड़ा और पढ़ने पर लगा कि editor के तेज़ होने वगैरह की बात भी थी, इसलिए शायद मैं भ्रमित हो गया था.
tsc10 गुना तेज़ हो गया है। यानी,ts -> jstranspiling का समय बहुत कम हो गया है।tsमें बने बड़े प्रोजेक्ट्स को load करते समय गति बहुत तेज़ हो जाती है। यानी,tsकी syntax checking आदिtscकी सुविधाएँ साझा करने वाला logic तेज़ हुआ है।तो बात यह थी।
रिकर्सिव generic types का इस्तेमाल करते समय मैंने इसे धीमा होते देखा है, इसलिए मुझे workaround अपनाना पड़ा। अगर यह 10 गुना तेज़ हो जाए, तो उम्मीद है कि ऐसे हिस्सों में भी सुधार हो सकेगा।
"Go क्यों" वाली discussion thread दिलचस्प है।
https://github.com/microsoft/typescript-go/discussions/411
सोचने लायक बातें भी काफ़ी हैं...
सही कहा, लेकिन .NET डेवलपर्स की भावना भी मैं समझ सकता हूँ...
लगता है .NET और Rust डेवलपर्स काफ़ी नाराज़ हो गए हैं
.NETसमझ में आता है, लेकिन मुझे लगता है कि Rust, Go जैसी ही स्थिति में है। शायद पहले से बने हुए JS-संबंधित Go प्रोजेक्ट्स और लाइब्रेरीज़ ने भी इस फैसले को प्रभावित किया होगा।C# भाषा का डेवलपमेंट रुका नहीं है, लेकिन C# का इस्तेमाल करने वाले frameworks के साथ ऐसा बहुत ज़्यादा महसूस होता है कि उन्हें उपेक्षित छोड़ दिया गया है।
Go में लिखें~
बहुत ज़्यादा उत्साहित हूँ।
Hacker News की राय