7 points par leegeunhyeok 2025-11-05 | 5 commentaires | Partager sur WhatsApp

Présentation de Craby, un outil qui permet d’intégrer dans React Native des modules basés sur Rust avec des TurboModules C++ purs.

Voir la documentation : https://craby.rs
GitHub : https://github.com/leegeunhyeok/craby

Qu’est-ce que Craby ?

Craby est un outil de développement qui permet d’écrire des modules natifs hautes performances en Rust tout en conservant la sûreté de typage sur toute la stack TypeScript - Rust - C++. Sans les couches spécifiques à la plateforme des React Native TurboModules (ObjCTurboModule/JavaTurboModule), il s’intègre directement à des TurboModules C++ purs pour en tirer les meilleures performances.

Performances

Comparaison de benchmarks avec d’autres solutions (voir les benchmarks) :

  • 20 à 80 fois plus rapide qu’ExpoModules
  • 15 à 20 fois plus rapide que les TurboModules standards
  • 25 à 30 % plus rapide que NitroModules (basé sur Swift/Kotlin, pas sur C++)

Il s’agit d’un test de débit extrême (100 000 appels) ; les résultats peuvent varier en conditions réelles, à considérer uniquement comme référence.

Fonctionnalités principales

  • Génération automatique de code : définissez l’API en TypeScript et les bindings Rust/C++ sont générés automatiquement
  • Sûreté de typage : vérification des types à la compilation entre TypeScript, Rust et C++
  • Zero-Cost FFI : minimise le surcoût d’interopérabilité Rust-C++ via cxx
  • API simple : concentrez-vous uniquement sur l’implémentation Rust, Craby s’occupe du reste

Exemple d’utilisation

// Définition du schéma du module (TypeScript)  
interface Spec extends NativeModule {  
  add(a: number, b: number): number;  
}  
// Implémentation réelle du module (Rust)  
#[craby_module]  
impl CalculatorSpec for Calculator {  
    fn add(&mut self, a: Number, b: Number) -> Number {  
        a + b  
    }  
}  

Tout le code de bridging est généré automatiquement par Craby ; l’utilisateur n’a qu’à implémenter le module lui-même en Rust.

Pour plus de détails, veuillez consulter la documentation/le dépôt GitHub, et tous les retours sont les bienvenus à tout moment !

5 commentaires

 
bangdy 2025-11-07

C’est un bon projet. J’ai ajouté une étoile !!

 
gargoyle92 2025-11-05

Monstrueux, Geunhyeok…

 
mindok 2025-11-05

Il y a vraiment énormément de personnes incroyablement talentueuses...

 
skageektp 2025-11-05

Waouh… y a-t-il une raison particulière qui vous a poussé à créer cet outil ? J’aimerais aussi essayer de faire quelque chose comme ça, et je me demandais quelle motivation amène généralement les gens à créer ce genre de chose.

 
leegeunhyeok 2025-11-06

Récemment, nous avons dû passer à la New Architecture. En examinant l’implémentation interne de TurboModule, nous sommes partis de l’idée que « si on l’aborde ainsi, cela semble tout à fait faisable et prometteur ! »