2011-10-27 17 views
6

Estoy buscando hacer algunas pruebas iniciales y experimentos con un lenguaje de juguete y compilar un compilador basado en LLVM para obtener algunos resultados comparativos.Idioma para el compilador basado en LLVM

Me doy cuenta de que C++ es el lenguaje "nativo" y mejor soportado de LLVM, pero I realmente no quiero usar C o C++. Así que estoy buscando un lenguaje de nivel superior que tenga soporte estable y establecido para trabajar con la API de LLVM.

Mi trabajo inicial con Python LLVM library fue un poco decepcionante ya que el proyecto parece haber sido abandonado, aunque escuché noticias prometedoras sobre PyPy integrando el soporte de LLVM en su marco, pero me gustaría saber cuál es la experiencia de la gente. antes de sumergir un montón de tiempo en una ruta determinada.

Así que mi pregunta es, ¿alguno de ustedes ha tenido una experiencia positiva trabajando con LLVM usando un lenguaje y/o estructura de nivel superior? Y si es así, ¿cuál? ¿O hay algo que dirías para evitar?

+1

PyPy ha abandonado LLVM hace bastante tiempo. Y aunque PyPy utilizara LLVM, solo se usaría como * backend * para los intérpretes y compiladores JIT creados por la cadena de herramientas de traducción, que toma un * interprete * escrito en RPython y lo compila en código de bajo nivel (opcionalmente agregando JIT) y otras campanas y silbatos en el camino). – delnan

Respuesta

6

Un subconjunto de API LLVM se expone a través de envoltorios de C sin formato. Es suficiente para la generación de código, y se puede usar desde prácticamente cualquier lenguaje de alto nivel. Hay enlaces OCaml disponibles de fábrica (ver this tutorial), y los enlaces Haskell también son bastante maduros (por ejemplo, GHC puede compilar a través de LLVM). También he usado LLVM desde lenguajes basados ​​en .NET, sin ningún tipo de enlaces (solo contenedores P/Invoke autogenerados desde los encabezados).

Cuestiones relacionadas