Articulo de referencia

Meta-rastreo

El metatrazado es una transformación mayormente automática que toma un intérprete como entrada y produce un compilador de trazado justo a tiempo como salida. Dado que los intérp...

El metatrazado es una transformación mayormente automática que toma un intérprete como entrada y produce un compilador de trazado justo a tiempo como salida. Dado que los intérpretes suelen ser más fáciles de escribir que los compiladores, pero se ejecutan más lentamente, esta técnica puede facilitar la producción de implementaciones eficientes de lenguajes de programación. [ 1 ]

La esencia del enfoque se basa en el uso de dos niveles de interpretación, en los que se utiliza un intérprete de rastreo para ejecutar un segundo intérprete que interpreta el lenguaje de destino para el cual se generará un compilador; el intérprete de rastreo luego observa al segundo intérprete mientras ejecuta secuencias de instrucciones generadas a partir del programa de entrada. [ 2 ]

Este enfoque es utilizado por el proyecto PyPy para crear su compilador de Python , mediante el meta-rastreo de un intérprete de Python escrito en RPython , una versión restringida del lenguaje de programación Python. [ 3 ] En el caso especial de RPython, el lenguaje RPython es interpretado por un intérprete escrito en el lenguaje Python completo, simbolizado por el logotipo del proyecto PyPy de un ouroboros .

RPython también se ha utilizado para crear un intérprete para el lenguaje de programación Scheme . [ 2 ]

El meta-rastreo se puede comparar con el enfoque de evaluación parcial guiada por AST para generar compiladores, como el compilador Truffle/JS para el lenguaje de programación JavaScript . [ 4 ] Tanto el meta-rastreo como la evaluación parcial guiada por AST pueden considerarse ejemplos de proyección de Futamura .

Referencias

  1. Bolz, Carl Friedrich; Pape, Tobías; Siek, Jeremy; Tobin-Hochstadt, Sam (2014). "El meta-rastreo genera un escándalo rápido" (PDF) .Presentado en el 8º Taller sobre Lenguajes y Aplicaciones Dinámicas, junio de 2014 en Edimburgo, Reino Unido.
  2. 1 2 Vandercammen, Maarten (junio de 2015). "La esencia de los compiladores JIT de meta-trazado" (PDF) .
  3. Bolz, Carl Friedrich; Cuni, Antonio; Fijalkowski, Maciej; Rigo, Armin (2009-07-06). "Rastreando el metanivel: el compilador JIT de rastreo de PyPy" . Actas del 4.º taller sobre la implementación, compilación y optimización de lenguajes y sistemas de programación orientados a objetos . ICOOOLPS '09. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 18–25 . doi : 10.1145/1565824.1565827 . ISBN  978-1-60558-541-3.
  4. Marr, Stefan; Ducasse, Stéphane (23 de octubre de 2015). «Rastreo frente a evaluación parcial: comparación de enfoques de metacompilación para intérpretes autooptimizables» . Actas de la Conferencia Internacional ACM SIGPLAN 2015 sobre Programación Orientada a Objetos, Sistemas, Lenguajes y Aplicaciones . OOPSLA 2015. Nueva York, NY, EE. UU.: Association for Computing Machinery. págs. 821–839 . doi : 10.1145/2814270.2814275 . ISBN  978-1-4503-3689-5.

Véase también