18 repositorios
Mechanisms for mapping managed methods to native memory addresses so native libraries can trigger runtime logic.
Distinct from Functional Event Callbacks: Specifically about bridging managed methods as C-style function pointers, distinct from event-based callbacks in pure managed code.
Explore 18 awesome GitHub repositories matching programming languages & runtimes · Function-Pointer Callbacks. Refine with filters or upvote what's useful.
JSPatch is a JavaScript native bridge and method swizzler that allows for the dynamic injection of logic into a hosted native environment. It functions as a cross-language data mapper and execution engine, enabling the replacement of native function pointers with JavaScript wrappers to modify application behavior at runtime. The project provides the ability to perform runtime application patching by overriding native class methods and object properties. This allows for the modification of application logic and the application of hotfixes using JavaScript code loaded from local files or remote
Encapsulates JavaScript functions as native blocks to be executed as asynchronous callbacks by the host environment.
JNA is a foreign function interface and native memory mapper that allows Java applications to call functions in shared native libraries without writing custom JNI wrapper code. It serves as a JNI alternative framework for invoking C functions and mapping native data structures using high-level interfaces. The library distinguishes itself through its ability to translate Java objects and primitives into C-style structs, unions, and pointers for cross-platform memory exchange. On Windows, it provides a dedicated toolkit for interacting with Component Object Model objects using both early and la
Enables mapping Java methods to native function pointers, allowing external libraries to trigger logic within the JVM.
HybridCLR is a hybrid C# execution engine and assembly loader designed for Unity. It provides a system for hot-updating C# logic across all platforms at runtime without requiring the application to be rebuilt or reinstalled. The project is distinguished by its mixed-mode execution, which runs unmodified code at native speed while using a high-performance interpreter for updated functions. It includes a generic type resolver that allows hot-updated code to use generic classes and functions regardless of whether they were pre-instantiated in the main binary. To protect proprietary source code,
Facilitates high-speed data exchange between the managed runtime and native languages via a specialized bridge.
BlocksKit is a low-level utility library for Apple platform development, specifically designed for managing the execution flow and memory of blocks within macOS and iOS applications. It provides a collection of helper functions to simplify the use of blocks in Objective-C and C, reducing boilerplate code and addressing inherent technical limitations. The library focuses on bridging Objective-C blocks with legacy C-based APIs by providing compatible wrapper structures and function-pointer emulation. It enables the passing of blocks through system interfaces that require strict C-style callback
Maps block invocations to standard function pointers to satisfy strict type requirements in low-level system interfaces.
CXX is a code generator that produces a safe, zero-overhead FFI bridge between Rust and C++. It lets functions and data types from either language be used directly in the other, with static type safety enforced at compile time and no copying, serialization, or runtime checks across the boundary. The bridge supports the full range of cross-language interactions: Rust can call C++ functions and use C++ types, and C++ can call Rust functions and use Rust types. Standard library types like strings, vectors, and smart pointers are mapped automatically between the two languages, while opaque types
Transfers Rust closures as function pointers to C++ for callback-based event handling.
CppGuide is a curated collection of educational resources and practical guides focused on C++ server development, Linux kernel internals, concurrent programming, network protocols, and security exploitation. It provides structured learning paths for backend developers, covering everything from interview preparation to building high-performance network servers and understanding operating system fundamentals. The guide distinguishes itself by offering in-depth, hands-on tutorials that walk through real-world implementations, including building a Redis-like server from scratch, designing custom
Documents registering function pointers for decoupled coordination between kernel subsystems.
Carp is a statically typed Lisp compiler that compiles Lisp-like syntax directly to C source code, enabling seamless integration with existing C libraries and low-level system programming. It manages memory deterministically at compile time using ownership tracking and linear types, eliminating garbage collection pauses and runtime overhead while ensuring type safety through an inferred static type system. The language distinguishes itself through compile-time macro expansion and metaprogramming capabilities, allowing code generation and transformation before final binary output. It enforces
Provides a mechanism to obtain void pointers to functions for low-level interoperability.
sds es una biblioteca de cadenas dinámicas en C que proporciona un envoltorio de gestión de memoria para cadenas asignadas en el heap. Implementa un almacenamiento seguro para datos binarios (binary-safe) mediante el seguimiento explícito de la longitud de la cadena, lo que permite manejar caracteres nulos dentro de los datos. La biblioteca destaca por su arquitectura de memoria, que utiliza punteros a funciones intercambiables para la asignación y liberación, permitiendo la integración de gestores de memoria personalizados. Utiliza el seguimiento de longitud almacenado en la cabecera para obtener la longitud en tiempo constante y mantiene un relleno de búfer terminado en nulo para garantizar la compatibilidad con las funciones estándar de cadenas en C. El kit de herramientas cubre una amplia gama de capacidades de manipulación de cadenas, incluyendo concatenación, tokenización, unión y extracción de rangos. También ofrece utilidades para la mutación de búferes in-place, como recorte y ajuste, e incluye alternativas optimizadas de formato de cadenas frente a las funciones print estándar.
Provides interchangeable function pointers for allocation and freeing to enable custom memory managers.
Rhai es un motor de scripting embebido y lenguaje de tipado dinámico diseñado para integrarse en aplicaciones Rust. Funciona como un compilador de árboles de sintaxis abstracta (AST) y una capa de interoperabilidad nativa, permitiendo a los desarrolladores mapear tipos y funciones de Rust en un entorno de scripting para comunicación bidireccional. El proyecto sirve como framework para crear lenguajes específicos de dominio (DSL) personalizables. Permite definir operadores, sintaxis y entornos de ejecución restringidos, facilitando la creación de lenguajes especializados con conjuntos funcionales a medida. El motor cubre una amplia gama de capacidades, incluyendo sandboxing con límites de recursos para una ejecución segura, organización modular del código y procesamiento integral de datos para tipos numéricos, de cadena y binarios. También proporciona herramientas para la manipulación de AST, serialización del estado de ejecución y observabilidad en tiempo de ejecución mediante la inspección del stack de llamadas y interfaces de depuración. Está diseñado para despliegue multiplataforma en cualquier CPU o sistema operativo compatible con el compilador nativo.
Provides mechanisms to map script-defined functions to native memory addresses so the host application can trigger runtime logic.
flutterrustbridge is a code generation tool that automatically creates type‑safe Dart bindings for Rust functions, enabling direct cross‑language calls between Flutter and a Rust backend. It provides an async FFI adapter that transforms synchronous Rust functions into Dart async methods with background thread management, a cross‑language object manager that wraps persistent Rust structs as Dart objects preserving state across calls, and trait object interop that converts Rust traits into Dart abstract classes for seamless bidirectional use. The project handles the full lifecycle of integrat
Enables Rust code to invoke Dart callbacks, supporting bidirectional communication between the two languages.
JavaCPP es un puente JNI C++ e interfaz de funciones extranjeras que proporciona un generador de bindings, un cargador de librerías nativas y un gestor de memoria nativa. Automatiza la creación de wrappers de Java alrededor de cabeceras C++ nativas y librerías compartidas para permitir la interoperabilidad entre ambos lenguajes. El proyecto cuenta con un generador de bindings C++ que analiza archivos de cabecera para producir automáticamente el código de pegamento (glue code) necesario y las interfaces para llamar a funciones nativas. Incluye un cargador de librerías nativas que localiza y extrae binarios específicos de la plataforma desde el classpath a una caché local para su ejecución en tiempo de ejecución. El sistema gestiona el acceso a memoria nativa de alto rendimiento mediante mapeo directo de punteros y seguimiento de recursos para prevenir fugas de memoria. Maneja el mapeo de tipos complejos para estructuras de datos C++ y soporta el mapeo de callbacks nativos para enlazar punteros de función a métodos de Java. El conjunto de herramientas permite el reemplazo de métodos gestionados con implementaciones en C++ o ensamblador para optimizar el tiempo de ejecución y reducir la sobrecarga de recursos.
Links native function pointers or virtual functions to Java methods, allowing C++ code to trigger runtime logic.
Asterinas es un kernel de sistema operativo con seguridad de memoria diseñado para prevenir condiciones de carrera (data races) y corrupción de memoria. Funciona como un kernel compatible con la ABI de Linux, permitiendo la ejecución de binarios de Linux existentes y cargas de trabajo en contenedores mientras proporciona un modelo de distribución de sistema operativo declarativo. El proyecto se distingue por actuar como host de contenedores de máquinas virtuales y como SO invitado de computación confidencial, permitiendo su ejecución dentro de entornos de ejecución confiables (TEE) aislados por hardware como Intel TDX. Implementa una base de computación confiable mínima al aislar operaciones inseguras de bajo nivel y separa los mecanismos centrales del kernel de las implementaciones de políticas específicas. El sistema cubre una amplia gama de capacidades, incluyendo gestión de memoria física y virtual, multiprocesamiento simétrico y abstracción de hardware para varias arquitecturas de CPU. También incluye soporte para runtimes de contenedores seguros, un conjunto completo de primitivas de red y sockets, y una cadena de herramientas especializada para la compilación y emulación del kernel. El proyecto admite el despliegue en múltiples arquitecturas en plataformas x86-64, RISC-V 64 y LoongArch 64.
Implements kernel-level callback registration for coordinating subsystems such as logging and power management.
Walt es un transpilador y lenguaje tipado que convierte una sintaxis similar a JavaScript en formato binario WebAssembly. Funciona como una cadena de herramientas para desarrollar lógica de alto rendimiento para navegadores y runtimes mediante la traducción de código fuente tipado a formato de texto WebAssembly. El proyecto incluye un cargador integrado en el bundler que automatiza la recompilación de archivos fuente durante el proceso de construcción. Proporciona un gestor de memoria lineal utilizado para definir diseños de datos personalizados, structs y asignadores de memoria dentro de un heap contiguo. El lenguaje admite firmas de funciones definidas, tipos numéricos y la capacidad de exportar funciones y globales o importar funciones externas desde el entorno host. Permite el uso de cierres funcionales, punteros de función y organización de datos estructurados mediante offsets de memoria binaria.
Implements callbacks by mapping function references to indices within a WebAssembly table.
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.
Creates executable memory stubs that map JavaScript functions as C-style function pointers for native library callbacks.
libffi es una librería de interfaz de funciones extranjeras (FFI) que permite llamar a funciones escritas en otros lenguajes en tiempo de ejecución. Sirve como un wrapper ABI multi-arquitectura y generador de marcos de llamadas dinámicas, permitiendo la ejecución de funciones externas basadas en descripciones en tiempo de ejecución de tipos de argumentos y valores de retorno. El proyecto proporciona una interfaz portátil para manejar diversas convenciones de llamada en diferentes arquitecturas de hardware y sistemas operativos. Incluye capacidades para la asignación de cierres ejecutables, lo que permite que el código extranjero active devoluciones de llamada dentro de un lenguaje host a través de tablas de salto almacenadas en memoria ejecutable. Más allá de la invocación de funciones, la librería gestiona stubs de ensamblador de bajo nivel y utiliza el almacenamiento en caché de planes de llamadas para reducir la sobrecarga de mapear tipos a registros. También incluye un convertidor de scripts de versión binaria para transformar scripts de versión basados en símbolos entre diferentes formatos de enlazador.
Creates executable closures that allow native libraries to trigger logic and functions within the host language.
uniffi-rs is a Rust FFI binding generator and multi-language binding tool. It functions as an automated binding scaffolder that creates type-safe foreign function interfaces and native wrappers for Rust libraries in languages such as Swift, Kotlin, and Python. The project provides a system for cross-language interface definition, allowing functions and data structures to be specified in a shared format to ensure consistent API signatures across platforms. It further serves as an FFI memory management layer, handling object lifetimes and thread safety when sharing state between Rust and foreig
Exports traits so foreign code can pass callback implementations into Rust functions.
Rusqlite is an embedded database interface and relational database driver that provides a client library for interacting with SQLite. It functions as an SQL query wrapper, enabling the management of local file-based or in-memory databases through a safe interface. The library allows for the extension of native database capabilities by implementing custom scalar functions, collations, and virtual tables. It also supports the embedding of the database engine directly into the application binary to remove external library dependencies. The project covers a broad range of capabilities including
Allows registering native application functions as callbacks that the database engine invokes during query execution.
Oils is a Unix shell interpreter and scripting language runtime that combines a modern shell language with POSIX and Bash compatibility. It functions as a structured data shell, integrating JSON and J8 formats to manage complex data without relying on string parsing. The system is distinguished by a C++ transpiled interpreter that converts a subset of Python source code into strongly typed C++ for high-performance execution. It features a garbage-collected typed runtime that supports prototype-based polymorphism, lexical closures, and reference-based variable mutation. To decouple shell logic
Provides the ability to send blocks of code as arguments to procedures for implementing callbacks.