Hola, mi nombre es Kane, y hoy quiero compartir un proyecto que he estado construyendo en la organización de Node.js, un conjunto de pruebas de conformidad para Node API. Pero primero, unas palabras sobre mí. Mi nombre es Kane, como dije, y soy ingeniero de experiencia de desarrollador en 11labs. Construí experiencias de desarrollador para personas que construyen sobre los agentes de voz y los otros servicios que tenemos. Y antes de eso, mantuve el SDK de Atlas Devices, anteriormente conocido como Realm.js en MongoDB. Soy un orgulloso padre de tres, con sede en Roskill, justo al oeste de Copenhague. También me gusta construir en público, y hago mucho código abierto. Callstack me patrocina para esto en particular, y tengo patrocinios de GitHub abiertos si quieres unirte a ellos. También puedes encontrarme en BlueSky.
Y comencemos con algo con lo que podrías estar familiarizado. Has escrito un complemento nativo de Node.js, quizás. Funciona perfectamente bien en Node.js, y tu CI está en verde, y lo envías. Pero, ¿funciona en Bunn, en Deno? ¿Funciona en React Native, que recientemente también soportó o agregó soporte para Node API a través de Hermes? La respuesta honesta es que probablemente no lo sepas, y ese es el problema que me propuse solucionar.
Permíteme retroceder y explicar cómo llegamos aquí. Permíteme comenzar poniéndonos en la misma página de Node, qué es Node API, y comenzando con lo que no es, porque a menudo se confunde. No son las APIs de tiempo de ejecución de Node.js, cosas como File System, Path, Process. Aunque algunas de estas están potencialmente construidas sobre Node API, ¿qué es entonces? Es una API C para acceder a JavaScript. Es estable en API. Eso significa que puedes compilarlo una vez, y tu complemento una vez, y luego puedes reutilizarlo en nuevas versiones de Node.js. Los encabezados para la API C, se envían en npm. Así que, un paquete, eso es todo lo que necesitas. Y contiene estos archivos de biblioteca en dos capas. Una es la parte específica del motor, y este es el js-native-api.h, creando valores, llamando funciones, gestionando memoria, por ejemplo, y luego la parte específica del tiempo de ejecución, que es más específica de Node.js. APIs de tiempo de ejecución, como buffers, trabajo asíncrono, eventos de ciclo de vida. Originalmente, Node API fue diseñado para abstraer V8 para los internos de Node.js, y básicamente, podrías escribir tu implementación una vez, y luego no tendrías que vincular directamente contra la versión específica de V8. Para otros entornos de ejecución ahora, comenzaron a adoptar esto. BAN y DINO, no necesariamente en ese orden. Y luego más tarde, React Native por Hermes, y estos otros implementadores también. Esto es lo notable.
Comments