10 पॉइंट द्वारा GN⁺ 2025-05-25 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • TypeScript compiler को Go-आधारित native रूप में port करने वाले प्रोजेक्ट Corsa का tsgo प्रीव्यू npm पर जारी किया गया है
  • मार्च में चर्चा का विषय बने 10x faster TypeScript से जुड़ी फॉलो-अप घोषणा
  • मौजूदा tsc की तुलना में 10 गुना से अधिक speed improvement हासिल किया गया है, और JSX व JSDoc-आधारित JS files भी supported हैं
  • VS Code के लिए Native Preview extension भी जारी किया गया है, लेकिन autocomplete, find references जैसी सुविधाएं अभी development में हैं
  • नई native API और LSP-आधारित language server भी तैयार किए जा रहे हैं, साथ ही Rust-आधारित Node module libsyncrpc को शामिल किया गया है
  • कुछ features अभी implemented नहीं हैं, और TypeScript 7 (Corsa) तथा मौजूदा 5.8 (Strada) के बीच स्पष्ट अंतर मौजूद हैं

TypeScript Native Preview का परिचय

  • मार्च 2025 में घोषित TypeScript native porting project (Corsa) का प्रीव्यू जारी किया गया है
  • मौजूदा JS-आधारित codebase (Strada) की तुलना में Go में लिखा गया tsgo, parallelism और shared memory के उपयोग से बड़े प्रोजेक्ट्स में 10 गुना से अधिक performance improvement दिखाता है
  • tsgo भविष्य में tsc की जगह लेने वाला है, लेकिन फिलहाल इसे अलग npm package के रूप में उपलब्ध कराया गया है
    npm install -D @typescript/native-preview  
    npx tsgo --project ./src/tsconfig.json  
    

VS Code extension features

  • VS Code के लिए “TypeScript (Native Preview)” extension जारी

  • install करने के बाद command palette या settings के ज़रिए इसे enable करना होगा

    "typescript.experimental.useTsgo": true  
    
  • फिलहाल यह मौजूदा extension पर निर्भर है और इसकी functionality सीमित है, लेकिन इसे लगातार बेहतर किया जाएगा

Release cycle और development roadmap

  • यह प्रीव्यू आगे चलकर TypeScript 7 के official version में विकसित किया जाएगा
  • इसे nightly builds के रूप में वितरित किया जाता है और यह automatically update होता है
  • कुछ features अभी unsupported हैं:
    • --build, --declaration, lower target emit
    • editor features: autocomplete, find references, rename आदि

मुख्य updates

Type checking completeness में सुधार

  • अधिकांश type checking features का porting पूरा हो चुका है
  • JSX और JavaScript + JSDoc type checking का support भी शुरू हो गया है
  • कुछ intentional changes और lib.d.ts के अंतर के कारण errors अलग हो सकते हैं

JSX type checking support

  • शुरुआत में JSX सिर्फ parse किया जा सकता था, लेकिन अब पूरी type checking support उपलब्ध है
  • उदाहरण: Sentry project में tsc को 72 सेकंड लगते हैं, जबकि tsgo 6.7 सेकंड में काम करता है, यानी 10 गुना से अधिक speed improvement
    tsgo -p . --noEmit --extendedDiagnostics  
    

JavaScript files की type checking

  • JSDoc के आधार पर JS files का analysis करने वाली सुविधा को भी native code में फिर से implement किया गया है
  • इसे पुराने तरीके की तुलना में अधिक modern और consistent approach के साथ refactor किया गया है
  • कुछ पुराने patterns अब पहचाने नहीं जा सकते

Editor features (LSP-आधारित)

  • मौजूदा TSServer की जगह LSP-आधारित language server फिर से लिखा जा रहा है
  • शुरुआती version में error display, go to definition, hover features उपलब्ध हैं
  • हाल ही में autocomplete (completion) feature भी जोड़ा गया है

API development status

  • IPC-आधारित API layer implement की जा रही है
  • इससे कई भाषाओं से TypeScript process के साथ communication संभव होगा
  • Node.js में synchronous communication के लिए Rust-आधारित module libsyncrpc जोड़ा गया है
  • API design अभी शुरुआती चरण में है और feedback लिया जा रहा है

मौजूदा TypeScript से अंतर

  • कुछ configuration differences की वजह से मौजूदा projects में errors आ सकते हैं:

    • उदाहरण: --moduleResolution: nodebundler या nodenext recommended
      {  
        "compilerOptions": {  
          "module": "preserve",  
          "moduleResolution": "bundler"  
        }  
      }  
      
  • अन्य अंतर:

    • JSX emit सिर्फ preserve किया जा सकता है
    • declaration emit unsupported है
    • --build unsupported है
    • project references से जुड़ी language service अभी अधूरी है

आगे की योजना

  • इस साल के अंत तक --build और editor की ज़्यादातर core features को implement करने का लक्ष्य है
  • development progress को blog और nightly releases के ज़रिए लगातार अपडेट किया जाएगा

3 टिप्पणियां

 
riki3 2025-05-25

मैं lsp को सीधे build करके इस्तेमाल कर रहा हूँ। इसे Go में बदलने के बाद resources की खपत कम हुई है, यह काफ़ी स्पष्ट रूप से महसूस होता है।

 
cnaa97 2025-05-25

आजकल सिर्फ़ js को rust / go में शिफ्ट करके performance बढ़ाना ही ट्रेंड में है

 
click 2025-05-25

रिफैक्टरिंग करते समय अक्सर tsserver की code parsing धीमी हो जाती थी, जिससे पूरा editor ही फ्रीज़ हो जाता था। उम्मीद है यह जल्दी आए और इस परेशानी से छुटकारा मिले।