La Interfaz de Compilación Interactiva ( ICI ) es un sistema de complementos con una API de alto nivel independiente del compilador y una API de bajo nivel dependiente del compilador para transformar los compiladores de producción en conjuntos de herramientas de investigación interactiva. Fue desarrollado por Grigori Fursin durante el proyecto MILEPOST . [2] [3] El marco ICI actúa como una interfaz de "middleware" entre el compilador y los complementos definibles por el usuario. Abre y reutiliza la infraestructura del compilador de calidad de producción para permitir el análisis y la instrumentación del programa, las optimizaciones de programas de grano fino, la creación de prototipos simples de nuevas ideas de desarrollo e investigación al tiempo que evita la creación de nuevas herramientas de compilación desde cero. Por ejemplo, se utiliza en MILEPOST GCC para automatizar el diseño de compiladores y arquitecturas y las optimizaciones de programas basadas en análisis estadístico y aprendizaje automático, y predecir la optimización rentable para mejorar el tiempo de ejecución del programa, el tamaño del código y el tiempo de compilación.
ICI ahora está disponible en la línea principal de GCC desde la versión 4.5 [1]
ICI se amplió durante Google Summer of Code'2009 para permitir optimizaciones de programas de grano fino, incluidas transformaciones poliédricas, adaptación en tiempo de ejecución a nivel de función y optimización colectiva.