2 पॉइंट द्वारा dopeflamingo 3 시간 전 | अभी कोई टिप्पणी नहीं है. | 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

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.