Un compilador JIT de código abierto, compatible con NumPy, que convierte funciones numéricas de Python en código máquina rápido mediante LLVM.
asmjit/asmjit
Una biblioteca de C++ para generar código máquina con baja latencia, que permite a los programas emitir instrucciones x86/x64 y AArch64 en tiempo de ejecución.
- Estrellas
- 4,633
- Forks
- 606
- Issues abiertos
- 22
- Último commit
- anteayer
¿Qué es?
AsmJit es una biblioteca de C++ para generar código máquina en tiempo de ejecución y constituye el componente básico de un compilador JIT (just-in-time). Los programas usan su API para ensamblar instrucciones en memoria ejecutable, sin recurrir a un ensamblador externo, lo que mantiene la generación de código lo bastante rápida para usos sensibles a la latencia.
La biblioteca se organiza en una API central independiente del backend y capas específicas para x86/x64 y AArch64, además de una capa ARM independiente compartida por AArch32 y AArch64. Incluye una base de datos de instrucciones y una interfaz Compiler que trabaja con registros virtuales, junto con un Assembler de nivel más bajo para emitir instrucciones directamente.
AsmJit se distribuye bajo la licencia Zlib y ofrece un sitio de documentación, un canal de chat público y opciones de soporte comunitario y comercial.
Funciones clave
- 01Genera código máquina x86/x64 y AArch64 en tiempo de ejecución.
- 02Proporciona un Assembler de bajo nivel y un Compiler que trabaja con registros virtuales.
- 03Incluye una base de datos de instrucciones para consultar información sobre ellas.
- 04Ofrece una API JIT universal junto con capas específicas para cada arquitectura.
- 05Incluye pruebas unitarias, pruebas de integración y benchmarks.
Casos de uso
- Crear un compilador JIT o un generador de código dinámico en una aplicación de C++.
- Generar rutinas nativas especializadas en tiempo de ejecución para código sensible al rendimiento.
- Emitir código máquina para destinos x86-64 o AArch64 desde una herramienta de C++.
Inicio rápido
- 1
Consulta las instrucciones de compilación en la documentación oficial
- 2
Compila la biblioteca con los scripts configure de la raíz del proyecto, que ejecutan cmake
Antes de usarlo
- El README advierte que a veces los cambios incompatibles en la API son inevitables.
- Se pide a los usuarios comerciales que apoyen el desarrollo a través de la página de financiación del proyecto.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es asmjit?
- Una biblioteca de C++ para generar código máquina con baja latencia, que permite a los programas emitir instrucciones x86/x64 y AArch64 en tiempo de ejecución. AsmJit es una biblioteca de C++ para generar código máquina en tiempo de ejecución y constituye el componente básico de un compilador JIT (just-in-time). Los programas usan su API para ensamblar instrucciones en memoria ejecutable, sin recurrir a un ensamblador externo, lo que mantiene la generación de código lo bastante rápida para usos sensibles a la latencia.
- ¿asmjit es gratuito? ¿Qué licencia tiene?
- asmjit es open source bajo la licencia Zlib. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿asmjit sigue mantenido?
- Mantenimiento activo. El último commit de asmjit fue el 4 nov 2026.
- ¿Para qué puedo usar asmjit?
- Crear un compilador JIT o un generador de código dinámico en una aplicación de C++. Generar rutinas nativas especializadas en tiempo de ejecución para código sensible al rendimiento. Emitir código máquina para destinos x86-64 o AArch64 desde una herramienta de C++.
- ¿Cómo se instala asmjit?
- Consulta las instrucciones de compilación en la documentación oficial Compila la biblioteca con los scripts configure de la raíz del proyecto, que ejecutan cmake
- ¿Dónde consigo asmjit?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/asmjit/asmjit
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Una alternativa directa a cargo que reduce a milisegundos las compilaciones incrementales de Rust al compilar con JIT solo las funciones modificadas dentro del programa en ejecución.
Un intérprete de Python 3 escrito en Rust que ejecuta código Python sin bindings de CPython y ofrece compatibilidad con WebAssembly e integración en aplicaciones.
Runtime independiente de WebAssembly basado en el generador de código Cranelift, con compatibilidad con WASI e integración en varios lenguajes.
Una máquina virtual que ejecuta programas escritos en Hack y usa compilación JIT para mejorar el rendimiento.
Colección modular de tecnologías para compiladores y cadenas de herramientas, que incluye el núcleo de LLVM, el frontend Clang para C/C++, libc++ y el linker LLD.