Wir stellen Craby vor, ein Tool, das die Integration von Rust-basierten Modulen mit reinen C++ TurboModules in React Native ermöglicht.
Zur Dokumentation: https://craby.rs
GitHub: https://github.com/leegeunhyeok/craby
Was ist Craby?
Craby ist ein Entwicklungswerkzeug, mit dem sich leistungsstarke native Module in Rust schreiben lassen, während die Typsicherheit über den gesamten Stack aus TypeScript, Rust und C++ hinweg erhalten bleibt. Ohne die plattformspezifischen Layer von React Native TurboModule (ObjCTurboModule/JavaTurboModule) integriert es sich direkt mit reinen C++ TurboModules und holt so die bestmögliche Performance heraus.
Performance
Benchmark-Vergleich mit anderen Lösungen (Benchmark ansehen):
- 20- bis 80-mal schneller als ExpoModules
- 15- bis 20-mal schneller als Standard-TurboModules
- 25–30 % schneller als NitroModules (auf Swift/Kotlin-Basis, nicht C++)
Dabei handelt es sich um einen extremen Durchsatztest (100.000 Aufrufe); in realen Einsatzumgebungen können die Ergebnisse abweichen, daher bitte nur als Referenz verstehen.
Hauptfunktionen
- Automatische Codegenerierung: Wenn die API in TypeScript definiert wird, werden Rust/C++-Bindings automatisch erzeugt
- Typsicherheit: Compile-Time-Typprüfung zwischen TypeScript, Rust und C++
- Zero-Cost FFI: Minimierter Overhead bei der Rust-C++-Interoperabilität über cxx
- Einfache API: Konzentriere dich nur auf die Rust-Implementierung, den Rest übernimmt Craby
Anwendungsbeispiel
// 모듈 스키마 정의 (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
}
}
Den gesamten Bridging-Code erzeugt Craby automatisch; Nutzer müssen nur das eigentliche Modul in Rust implementieren.
Weitere Details finden sich in der Dokumentation bzw. im GitHub-Repository, und Feedback ist jederzeit willkommen!
5 Kommentare
Tolles Projekt. Ich habe einen Stern vergeben!!
Monster Geunhyeok …
Es gibt wirklich unglaublich viele beeindruckende Menschen..
Wow … darf ich fragen, was der Auslöser dafür war, dieses Tool zu entwickeln? Ich würde auch gern so etwas bauen und habe mich gefragt, welche Anlässe andere normalerweise dafür haben.
Kürzlich ergab sich die Situation, dass wir auf die New Architecture umsteigen mussten. Während ich mir die interne Implementierung von TurboModule angesehen habe, entstand aus der Idee „Wenn man so herangeht, könnte das durchaus Potenzial haben“ der Anfang!