Memperkenalkan Craby, alat yang memungkinkan modul berbasis Rust di React Native diintegrasikan dengan TurboModule C++ murni.
Lihat dokumentasi: https://craby.rs
GitHub: https://github.com/leegeunhyeok/craby
Apa itu Craby?
Craby adalah alat pengembangan yang memungkinkan Anda menulis modul native berkinerja tinggi dengan Rust sambil mempertahankan type safety di seluruh stack TypeScript - Rust - C++. Tanpa layer spesifik platform TurboModule React Native (ObjCTurboModule/JavaTurboModule), Craby terintegrasi langsung dengan TurboModule C++ murni untuk menghasilkan performa terbaik.
Performa
Perbandingan benchmark dengan solusi lain (lihat benchmark):
- 20-80x lebih cepat dibanding ExpoModules
- 15-20x lebih cepat dibanding TurboModules standar
- 25~30% lebih cepat dibanding NitroModules (berbasis Swift/Kotlin, bukan C++)
Ini adalah pengujian throughput ekstrem (100 ribu kali pemanggilan), dan hasilnya dapat berbeda di lingkungan penggunaan nyata, jadi mohon jadikan ini sebagai referensi saja.
Fitur utama
- Pembuatan kode otomatis: jika API didefinisikan di TypeScript, binding Rust/C++ akan dibuat secara otomatis
- Type safety: pengecekan tipe saat kompilasi antara TypeScript, Rust, dan C++
- Zero-Cost FFI: meminimalkan overhead interoperabilitas Rust-C++ melalui cxx
- API sederhana: cukup fokus pada implementasi Rust, sisanya ditangani oleh Craby
Contoh penggunaan
// Definisi skema modul (TypeScript)
interface Spec extends NativeModule {
add(a: number, b: number): number;
}
// Implementasi modul sebenarnya (Rust)
#[craby_module]
impl CalculatorSpec for Calculator {
fn add(&mut self, a: Number, b: Number) -> Number {
a + b
}
}
Semua kode bridging dibuat secara otomatis oleh Craby, sehingga pengguna hanya perlu mengimplementasikan modul sebenarnya (Rust).
Untuk detail lebih lanjut, silakan lihat dokumentasi/repositori GitHub, dan berbagai masukan selalu kami sambut!
5 komentar
Proyek yang bagus. Sudah saya beri bintang!!
Monster Geunhyeok…
Benar-benar banyak sekali orang yang luar biasa..
Wah... boleh tahu apa yang menjadi alasan Anda membuat alat ini? Saya juga ingin mencoba membuat hal seperti ini, jadi saya penasaran biasanya orang-orang punya alasan apa sampai membuatnya.
Baru-baru ini muncul kebutuhan untuk beralih ke New Architecture, dan saat menelusuri implementasi internal TurboModule, semuanya bermula dari ide, “kalau didekati seperti ini, sepertinya cukup punya potensi!”