La compilación just-in-time (JIT) se ha consolidado como una herramienta fundamental en los runtimes de lenguajes de programación, aunque su complejidad interna ha creado una brecha pedagógica entre los conceptos de compilación ahead-of-time (AOT) y la generación dinámica de código. Este artículo presenta un enfoque incremental y a escala de aula para la construcción de un compilador JIT, diseñado para ser implementado en pasos manejables. Al contrastar un backend AOT con uno JIT, el trabajo expone las preocupaciones dinámicas centrales, incluyendo los buffers ejecutables, el estado interactivo persistente, la mutación y las optimizaciones de tipos en tiempo de ejecución. El resultado es un JIT mínimo pero realista que soporta un bucle de lectura-evaluación-imprimición (REPL) y un mecanismo de especialización por primera llamada. El texto sirve como referencia didáctica para estudiantes y investigadores que buscan comprender los fundamentos de la compilación dinámica sin la sobrecarga de los sistemas de producción. Se basa en la premisa de que la comprensión profunda de la compilación JIT requiere la experimentación directa con sus componentes internos, como la gestión de la memoria y la optimización de llamadas, en un entorno controlado y educativo. Este método permite a los usuarios observar cómo el compilador toma decisiones en tiempo real, ofreciendo una base sólida para el desarrollo de lenguajes de programación dinámicos y el análisis de rendimiento en sistemas de ejecución virtual.
