2011-10-27 15 views
6

Sto cercando di fare alcuni test iniziali ed esperimenti con un linguaggio giocattolo e di costruire un compilatore basato su LLVM per ottenere alcuni risultati benchmarkable.Lingua per compilatore basato su LLVM

Mi rendo conto che C++ è la lingua "nativa" e meglio supportata di LLVM, ma I in realtà non si desidera utilizzare C o C++. Quindi sto cercando un linguaggio di livello superiore che abbia un supporto stabile e consolidato per lavorare con l'API LLVM.

Il mio lavoro iniziale con la Python LLVM library era un po 'una delusione perché il progetto sembra essere stato abbandonato, anche se ho sentito notizie promettenti su PyPy integrare il supporto LLVM nel loro quadro, ma mi piacerebbe sapere che cosa l'esperienza delle persone è prima di affondare un sacco di tempo in una determinata rotta.

Quindi la mia domanda è: qualcuno di voi ha avuto un'esperienza positiva lavorando con LLVM usando un linguaggio e/o un framework di livello superiore? E se sì, quale? O ci sono quelli che vorresti dire per evitare?

+1

PyPy ha abbandonato LLVM un po 'di tempo fa. E anche se PyPy usasse LLVM, sarebbe usato solo come * backend * per gli interpreti e i compilatori JIT creati dalla toolchain di traduzione, che prende un * interprete * scritto in RPython e lo compila in un codice di basso livello (opzionalmente aggiungendo JIT e altre campane e fischietti lungo la strada). – delnan

risposta

6

Un sottoinsieme di API LLVM è esposto tramite semplici wrapper C. È sufficiente per la generazione del codice e può essere utilizzato praticamente da qualsiasi linguaggio di alto livello. Ci sono collegamenti OCaml disponibili fuori dalla scatola (vedere this tutorial) e anche i binding Haskell sono piuttosto maturi (ad esempio, GHC stesso può essere compilato tramite LLVM). Ho usato LLVM anche da linguaggi basati su .NET, senza alcun binding (solo i wrapper generati automaticamente dalle intestazioni) P/Invoke.

Problemi correlati