- Ladybird ब्राउज़र प्रोजेक्ट ने C++ की जगह लेने वाली memory-safe भाषा के रूप में Rust को अपनाया और बदलाव की प्रक्रिया में AI टूल्स का उपयोग किया
- पहले Swift पर विचार किया गया था, लेकिन C++ interoperability और platform constraints की सीमाओं के कारण दिशा Rust की ओर मोड़ी गई
- पहला porting target JavaScript engine LibJS है, और Claude Code व Codex की मदद से सैकड़ों prompts के जरिए manually guided translation किया गया
- लगभग 2 हफ्तों में 25,000 lines का Rust code पूरा किया गया, और यह सत्यापित किया गया कि output और performance दोनों C++ version के पूरी तरह समान हैं
- फिलहाल प्रोजेक्ट C++ और Rust के parallel development model को बनाए रखेगा, और लंबे समय में safety व maintainability को मजबूत करने की योजना है
Rust अपनाने की पृष्ठभूमि
- Ladybird ने C++ की जगह लेने वाली memory-safe भाषा खोजने के लिए कई भाषाओं की समीक्षा की
- Swift को C++ के साथ interoperability की कमी और Apple ecosystem के बाहर platform support की सीमाओं के कारण बाहर कर दिया गया
- Rust को system programming ecosystem के परिपक्व होने और कई contributors के पहले से ही इससे परिचित होने के आधार पर उपयुक्त माना गया
- 2024 में Rust की C++-style OOP के लिए अनुपयुक्तता के कारण इसे अपनाने का निर्णय टाल दिया गया था, लेकिन बाद में safety और ecosystem maturity के आधार पर इसे फिर से अपनाने का फैसला किया गया
- Firefox और Chromium में Rust अपनाए जाने के उदाहरणों को देखते हुए यह निष्कर्ष निकाला गया कि यह Ladybird के लिए भी उपयुक्त है
LibJS porting प्रक्रिया
- पहला migration target Ladybird का JavaScript engine LibJS है
- lexer, parser, AST, bytecode generator जैसे स्वतंत्र components और test262-आधारित test coverage के कारण इसे शुरुआत के लिए उपयुक्त माना गया
- porting में Claude Code और OpenAI Codex का उपयोग किया गया
- यह automatic generation नहीं बल्कि human-led translation था, जिसमें porting order और code structure सीधे तय किए गए
- सैकड़ों prompts के जरिए बारीकी से निर्देश दिए गए, और बाद में विभिन्न models के माध्यम से code verification और error detection किया गया
परिणाम और सत्यापन
- लक्ष्य यह था कि C++ और Rust pipelines का output byte-level पर एकदम समान हो
- लगभग 25,000 lines का Rust code 2 हफ्तों में पूरा किया गया, जिससे कई महीनों का काम कम समय में हो गया
- AST और bytecode पूरी तरह समान हैं, और tests व JS benchmarks में performance drop नहीं देखा गया
- C++ और Rust pipelines को साथ चलाने वाले lockstep tests के जरिए web browsing के दौरान परिणामों की समानता की पुष्टि की गई
- मौजूदा code अभी C++ से अनूदित रूप में है, और register allocation patterns तक को समान रूप से नकल करता है
- ऐसा इसलिए है क्योंकि C++ pipeline के साथ compatibility बनाए रखना सर्वोच्च प्राथमिकता है
- भविष्य में जब C++ pipeline को हटाया जाएगा, तब Rust code को सरल और साफ़ किया जाएगा
आगे की योजना
- Rust migration को प्रोजेक्ट की मुख्य development direction नहीं बल्कि parallel work के रूप में आगे बढ़ाया जाएगा
- C++ और Rust code साथ-साथ मौजूद रहेंगे, और इनके बीच स्पष्ट interoperability boundaries रखी जाएँगी
- porting order और scope का प्रबंधन core team करेगी, और बाहरी contributors को पहले से समन्वय करना होगा
- लंबे समय में safety और maintainability में सुधार के लक्ष्य के साथ यह बदलाव धीरे-धीरे आगे बढ़ाया जाएगा
- यह स्वीकार किया गया कि यह फैसला विवादास्पद हो सकता है, फिर भी इसे Ladybird के भविष्य के लिए सही विकल्प माना गया
अभी कोई टिप्पणी नहीं है.