15 पॉइंट द्वारा dopeflamingo 2026-06-08 | 7 टिप्पणियां | WhatsApp पर शेयर करें

मौजूदा TypeScript development paradigm में यह लगभग स्वाभाविक माना जाता रहा है कि high-level abstraction वाले TS code को पहले JavaScript में transpile किया जाए, और फिर उसे V8 या JavaScriptCore जैसे भारी JIT runtime engine (Node.js, Bun, Deno आदि) पर चलाया जाए।

हाल ही में open source जगत में सामने आया Perry इस पारंपरिक runtime model को पूरी तरह हटाकर TypeScript code को सीधे standalone native binary में compile करने का लक्ष्य रखने वाला Rust-आधारित Native-First compiler है।


💡 मुख्य architecture और विशेषताएँ

  • No Runtime (शून्य runtime): V8 engine, Electron, JVM जैसे भारी मध्यवर्ती layers के बिना, SWC से TS code को parse करके LLVM infrastructure के माध्यम से target platform के machine code में सीधे build करता है।

  • Cross-platform one-source build: एक ही TypeScript codebase से macOS, iOS, Android, Linux, Windows सभी के लिए binaries बनाता है।

  • True TypeScript Support: AssemblyScript जैसी 'TS से मिलती-जुलती अलग भाषा' नहीं, बल्कि Strict Mode पर आधारित पूर्ण TypeScript ecosystem support का लक्ष्य रखता है।

  • अति-हल्के UI framework compatibility: केवल कुछ MB के binary size और 0ms के करीब sub-second cold start का दावा करता है। SwiftUI, GTK4, WinUI जैसे platform-native GUI के साथ integration के अलावा, अपने React renderer के जरिए JSX लिखना भी संभव है।


🛠️ development स्थिति और सीमाएँ (Hacker News feedback शामिल)
हाल में HN आदि पर काफी चर्चा में आए इस project के production level तक पहुँचने के लिए जिन चुनौतियों का सामना है, वे भी स्पष्ट रूप से सामने आ रही हैं।

  • Dynamic JS विशेषताओं की सीमा: runtime पर object में मनमाने field/method inject करना या prototype को बदलना जैसे dynamic JavaScript style static compile की प्रकृति के कारण समर्थित नहीं हैं, और यह एक सख्त तथा deterministic TS subset पर आधारित होकर काम करता है।

  • Node.js built-in module emulation: अभी hyper, rustls, tokio जैसे Rust ecosystem के आधार पर Node.js की HTTP standard library को लगभग वैसे ही emulate किया जा रहा है। Fastify जैसे कुछ modules compile करने में सफलता मिली है और project तेज़ी से आगे बढ़ रहा है, लेकिन Express जैसे dynamic import से उलझे जटिल ecosystem libraries के साथ 100% compatibility अभी भी alpha stage की चुनौती है।


# उपयोग बहुत ही सरल है  
$ perry compile src/main.ts -o myapp  
$ ./myapp  # dependency-रहित शुद्ध native binary चलाएँ  

web ecosystem तक सीमित TypeScript को system programming और अति-हल्के native app क्षेत्र तक फैलाने की कोशिश के रूप में, high-performance system architecture या LLVM compiler pipeline में रुचि रखने वालों के लिए यह दिलचस्पी से देखने लायक project है।

GitHub: https://github.com/PerryTS/perry

7 टिप्पणियां

 
cloverhearts 2026-06-11

समर्थन करता हूँ

 
tsboard 2026-06-10

यह काफ़ी दिलचस्प तरीका है। सिर्फ़ runtime हटाने भर से भी यह एक बड़ी उपलब्धि लगती है!

 
jeeeyul 2026-06-10

कुछ ऐसा ही लगता है। लेकिन सच कहूँ तो मुझे लगता है कि memory security काफ़ी गंभीर समस्या हो सकती है.

और अगर dynamic lookup की ज़रूरत ही नहीं है, तो फिर शुरू से ही script में development करने की क्या ज़रूरत है?

 
shakespeares 2026-06-09

perry का ध्वन्यात्मक एहसास अच्छा है।

 
sea715 2026-06-09

दिलचस्प है।

 
ohah173 2026-06-09

आइडिया और एप्रोच वाकई बहुत अच्छे लग रहे हैं.
लगता है कि React सिंटैक्स भी सपोर्ट करता है, और यह देखकर कि decorator वगैरह अभी सपोर्ट नहीं हैं, फिलहाल मौजूदा प्रोग्राम को migrate करने से ज़्यादा नए प्रोजेक्ट के साथ इसे आज़माना ठीक लगेगा,

अगर roadmap के मुताबिक बिना किसी खास लागत के migration संभव होने लायक स्तर तक यह पहुँच जाता है, तो एक ही भाषा से multi-platform build अभी की तुलना में और ज़्यादा साफ-सुथरे तरीके से हो पाएंगे, और पहले JavaScript से किए जाने वाले multi-platform build की वजह से जो performance bottleneck आते थे, वे भी काफ़ी हद तक खत्म हो सकते हैं.

लेकिन compatibility, और multi-platform पर एक जैसे नतीजों की गारंटी देना बेहद मुश्किल होगा, ऐसा लगता है, और मेरी सीमित समझ से maintenance भी, चाहे यह AI का दौर ही क्यों न हो, आसान नहीं होगा — इसलिए इसे बनाने वाले पर बहुत ज़्यादा बोझ पड़ेगा, इस बात को छोड़ दें तो यह वाकई बहुत उम्मीद जगाता है.

 
heycalmdown 2026-06-09

दिलचस्प है।