2 repositorios
Extracting data from raw pointers and serializing values into buffers for native consumption.
Distinct from Native Buffer Transfers: Focuses on the direct manipulation and extraction of data from raw pointers, beyond just zero-copy transfers.
Explore 2 awesome GitHub repositories matching software engineering & architecture · Pointer-Based Memory Access. Refine with filters or upvote what's useful.
node-ffi es una biblioteca de interfaz de funciones externas (FFI) para Node.js que permite llamar a funciones desde bibliotecas dinámicas nativas en C sin escribir bindings manuales en C++. Funciona como un sistema para cargar objetos compartidos y DLLs en la memoria del proceso, traduciendo valores de JavaScript a representaciones binarias y ejecutando binarios externos en tiempo de ejecución. El proyecto utiliza un wrapper alrededor de la biblioteca libffi para construir marcos de llamada y ejecutar funciones nativas con argumentos dinámicos. Se distingue por proporcionar un gestor de memoria nativo para asignar punteros crudos y un sistema de mapeo que conecta estructuras complejas de C con objetos de JavaScript. El kit de herramientas cubre una amplia gama de capacidades de interoperabilidad nativa, incluyendo la traducción automática de tipos de datos y la creación de stubs de memoria ejecutables que permiten a las bibliotecas nativas activar callbacks de JavaScript. Para mantener la capacidad de respuesta del hilo principal, admite un modelo de ejecución asíncrono que descarga las llamadas a funciones nativas a un pool de hilos separado.
Implements direct manipulation and extraction of data from raw pointers to handle C structs across the language boundary.
Janet es un lenguaje de programación dinámico basado en Lisp que cuenta con una máquina virtual de bytecode basada en registros y un motor de scripting integrable. Funciona como un runtime de concurrencia basado en fibras e incluye un motor de análisis basado en Gramáticas de Expresión de Análisis (PEG). El proyecto se distingue por su capacidad de integrarse en aplicaciones de C o C++ a través de una interfaz de cabecera mínima. Utiliza un sistema de macros al estilo Lisp para la transformación de código en tiempo de compilación y emplea herencia de tablas basada en prototipos para el comportamiento orientado a objetos. El runtime cubre un amplio conjunto de capacidades, incluyendo la gestión de IO asíncrona a través de un bucle de eventos no bloqueante, interoperabilidad de bibliotecas nativas a través de una interfaz de funciones externas y procesamiento de texto integral utilizando gramáticas PEG. También proporciona herramientas para la automatización del sistema, como un bucle de lectura-evaluación-impresión (REPL), un sistema de módulos para la resolución de símbolos y utilidades para la comunicación de sockets de red y la gestión del sistema de archivos. El entorno incluye herramientas de diagnóstico para la depuración de la ejecución de bytecode y puede empaquetar el código fuente en ejecutables binarios independientes.
Allows serializing values into buffers and extracting data directly from raw pointers for native consumption.