Vamos a repasar algunas cosas en esta charla. Por supuesto, ¿qué son los complementos nativos de Node.js? Vamos a encontrarnos con un par de casos de uso. Uno, una API ABI estable para Hermes que ya está en uso. Y dos, una prueba de concepto de compartir bibliotecas entre ecosistemas. Lo resumiremos todo después.
Entonces, ¿qué son los complementos nativos de Node.js? Bueno, Node.js tiene sus propios módulos nativos llamados complementos nativos. Por ejemplo, para que Node.js interactúe con SQLite3, hay un paquete NPM para eso. Y así como los módulos nativos de React se escriben con JSI, los complementos nativos de Node.js se escriben con NodeAPI, que es igualmente independiente del motor. Ahora, para ponerlo visualmente, es así. NodeAPI ocupa la misma posición entre el código nativo y los motores de JavaScript que JSI.
Entonces, ¿por qué deberíamos preocuparnos? Ya tenemos JSI. ¿Qué más necesitamos? Bueno, en primer lugar, NodeAPI es increíblemente popular. Entonces, si lo mides solo por las descargas por semana de Node add-on API, que es comúnmente importado por complementos nativos de Node.js basados en C++, hay 20 millones de descargas por semana. Muy popular. Es impulsado por la comunidad. Es un estándar de facto de la industria, y está disponible para varios lenguajes. Entonces, en lugar de escribir en C++, puedes escribir en Swift, como, ya sabes, podemos hacer con Expo modules y Nitro modules, pero también Rust, C Sharp, Nim, Zig, Go. Y puede expresar prácticamente cualquier cosa que ECMAScript pueda. ¿Quieres proxies, puedes tenerlo. Puedes hacer extensiones de clase, métodos estáticos, todo tipo de cosas, de manera muy idiomática, en lugar de tener que hacer muchos trucos de prototipos, por ejemplo. Hay una interrupción de primera clase entre el contexto nativo y JavaScript. Entonces, tienes tiempos de vida, tienes funciones asíncronas, tienes subprocesos, ese tipo de cosas. Y es ABI estable, lo que veremos más adelante.
Entonces, ¿es todo esto solo teoría? Es una cosa decir que Node API sería genial, tiene todas estas características, pero ¿cuál es la historia sobre llevarlo a React Native? Bueno, la verdad es que ya se usa en React Native Windows. Así que me gustaría contar una historia sobre una API ABI estable para Hermes. Pero para explicar eso, primero necesitamos estar claros sobre qué es un ABI. Así que aquí tenemos una hermosa imagen de algunos binarios, que expresa parte de esta historia. Entonces, una interfaz binaria de aplicación es la versión compilada de una API. Entonces, mientras que cuando estás tratando con APIs estás tratando con conceptos humanos, como clases y declaraciones y funciones y ese tipo de cosas, un ABI es un nivel más bajo. Es como si dijera dentro de este gran blob binario, ¿dónde encuentro las cosas que necesito y qué significa? Entonces, define el conjunto de funciones y sus firmas, las estructuras de datos, por ejemplo, diseños de estructuras y enumeraciones, convenciones de llamadas a funciones, manejo de errores, y gestión de memoria.
Comments