React Native में Rust-आधारित मॉड्यूल को शुद्ध C++ TurboModule के साथ इंटीग्रेट करने में सक्षम बनाने वाले टूल Craby का परिचय।
डॉक्यूमेंटेशन देखें: https://craby.rs
GitHub: https://github.com/leegeunhyeok/craby
Craby क्या है?
Craby एक डेवलपमेंट टूल है जो Rust में high-performance native modules लिखते समय TypeScript - Rust - C++ पूरे स्टैक में type safety बनाए रखने में मदद करता है। यह React Native TurboModule की platform-specific layers (ObjCTurboModule/JavaTurboModule) के बिना, शुद्ध C++ TurboModule के साथ सीधे इंटीग्रेट होकर सर्वोत्तम performance हासिल करता है।
प्रदर्शन
अन्य solutions के साथ benchmark तुलना (benchmark देखें):
- ExpoModules की तुलना में 20-80 गुना तेज
- standard TurboModules की तुलना में 15-20 गुना तेज
- NitroModules (Swift/Kotlin-आधारित, C++ नहीं) की तुलना में 25~30% तेज
यह एक अत्यधिक throughput test (100,000 calls) है, इसलिए वास्तविक उपयोग परिवेश में परिणाम अलग हो सकते हैं; कृपया इसे केवल संदर्भ के रूप में देखें।
मुख्य फीचर्स
- automatic code generation: TypeScript में API define करने पर Rust/C++ bindings अपने-आप generate होते हैं
- type safety: TypeScript, Rust, और C++ के बीच compile-time type checking
- Zero-Cost FFI: cxx के माध्यम से Rust-C++ interoperability overhead को न्यूनतम करना
- simple API: केवल Rust implementation पर ध्यान दें, बाकी सब Craby संभालता है
उपयोग उदाहरण
// 모듈 스키마 정의 (TypeScript)
interface Spec extends NativeModule {
add(a: number, b: number): number;
}
// 실제 모듈 구현 (Rust)
#[craby_module]
impl CalculatorSpec for Calculator {
fn add(&mut self, a: Number, b: Number) -> Number {
a + b
}
}
सारा bridging code Craby अपने-आप generate करता है, और उपयोगकर्ता को केवल वास्तविक मॉड्यूल (Rust) implement करना होता है।
विस्तृत जानकारी के लिए डॉक्यूमेंटेशन/GitHub repository देखें, और आपका कोई भी feedback हमेशा स्वागत योग्य है!
5 टिप्पणियां
अच्छा प्रोजेक्ट है। मैंने इसे स्टार कर दिया!!
राक्षस Geunhyeok जी…
वाकई कमाल के लोग बहुत ज़्यादा हैं..
वाह... क्या इस टूल को बनाने के पीछे कोई खास वजह थी? मैं भी ऐसा कुछ बनाना चाहता हूँ, इसलिए उत्सुक था कि लोग आमतौर पर किस वजह से ऐसी चीजें बनाते हैं।
हाल ही में New Architecture पर जाना ज़रूरी हो गया था, और TurboModule के आंतरिक implementation को देखते हुए यह विचार शुरू हुआ कि “अगर इस तरह approach करें, तो इसमें काफ़ी संभावना हो सकती है!”