Presentamos Craby, una herramienta que permite integrar módulos basados en Rust con TurboModules de C++ puro en React Native.
Ver documentación: https://craby.rs
GitHub: https://github.com/leegeunhyeok/craby
¿Qué es Craby?
Craby es una herramienta de desarrollo que permite escribir módulos nativos de alto rendimiento en Rust mientras mantiene la seguridad de tipos en todo el stack TypeScript - Rust - C++. Sin las capas específicas por plataforma de React Native TurboModule (ObjCTurboModule/JavaTurboModule), se integra directamente con TurboModules de C++ puro para extraer el máximo rendimiento.
Rendimiento
Comparación de benchmarks con otras soluciones (ver benchmarks):
- 20 a 80 veces más rápido que ExpoModules
- 15 a 20 veces más rápido que los TurboModules estándar
- 25 a 30% más rápido que NitroModules (basado en Swift/Kotlin, no en C++)
Esto corresponde a una prueba extrema de throughput (100 mil llamadas), y los resultados pueden variar en entornos de uso real, así que tómalo solo como referencia.
Funciones principales
- Generación automática de código: si defines la API en TypeScript, se generan automáticamente los bindings de Rust/C++
- Seguridad de tipos: verificación de tipos en tiempo de compilación entre TypeScript, Rust y C++
- Zero-Cost FFI: minimiza el overhead de interoperabilidad Rust-C++ mediante cxx
- API simple: solo enfócate en la implementación en Rust y Craby se encarga del resto
Ejemplo de uso
// Definición del esquema del módulo (TypeScript)
interface Spec extends NativeModule {
add(a: number, b: number): number;
}
// Implementación real del módulo (Rust)
#[craby_module]
impl CalculatorSpec for Calculator {
fn add(&mut self, a: Number, b: Number) -> Number {
a + b
}
}
Craby genera automáticamente todo el código de bridging, y el usuario solo necesita implementar el módulo real en Rust.
Para más detalles, consulta la documentación o el repositorio de GitHub, y cualquier tipo de feedback será siempre bienvenido.
5 comentarios
Buen proyecto. ¡¡Ya le puse una estrella!!
Monstruo Geunhyeok…
De verdad hay muchísimas personas increíblemente impresionantes..
Vaya... ¿quizás hubo algún motivo por el que decidiste crear esta herramienta? Yo también quisiera intentar hacer algo así, y me daba curiosidad saber qué tipo de motivación tiene la gente para crear estas cosas.
Hace poco surgió la situación de tener que migrar a la New Architecture, y al revisar la implementación interna de TurboModule, todo comenzó con la idea de que “si lo abordábamos así, parecía totalmente viable”.