Chibil es un compilador del lenguaje C desarrollado en C# que genera código intermedio de .NET (MSIL). Está basado en chibicc, un compilador minimalista de C, pero reescrito por completo en C# y adaptado para producir archivos objeto COFF compatibles con los que genera el compilador MSVC en modo /clr. Esto permite enlazar el código compilado con Chibil junto con otros módulos de C++/CLI mediante link.exe de Visual Studio, generando ejecutables híbridos. El proyecto es lo suficientemente completo como para ejecutar DOOM (PureDOOM), lo que demuestra su capacidad para manejar código C real.
El compilador toma archivos fuente .c y produce archivos .obj en formato COFF. Estos objetos incluyen metadatos .NET, lo que permite depurar el código C en un depurador de .NET, con soporte para números de línea y variables locales. Chibil incluye una biblioteca de runtime mínima que proporciona una función main que recibe string[] y la adapta al main estándar de C con argc y argv. El ensamblado producido se convierte a objeto COFF mediante la utilidad asm2obj.
Aunque Chibil puede generar ejecutables independientes, aún no está completo. El código se genera en el espacio de nombres global, por lo que para consumir el código compilado desde otros ensamblados es necesario usar reflexión, como Module.GetMethod. El proyecto también incluye herramientas complementarias: un volcador de objetos COFF (coffobjdumper.cs) que complementa a ILDASM y dumpbin.exe al mostrar los cuerpos de los métodos .NET. En el futuro, se planea incorporar un enlazador propio para eliminar la dependencia de Windows.
