Implementing a JIT Compiled Language with Haskell and LLVM
stephendiehl.com
stephendiehl.com
https://github.com/RaphaelJ/Cours-passerelle/blob/master/Com... (comments are in French)
It was amazing : the full compiler was around 650 lines of code while only using Parsec as a third party library and was able to compile correctly at the first successful compilation. Compiling to LLVM (as text, I didn't used any library for code generation) using monads and Text-Lazy was also pretty pleasant.
My only deception was to be unable to use GADTs : these are awesome but so hard to use with a parser.
One rather minor question: Is writing comments or even code in the local language still common in France? Afaik, in most European countries the CS courses are taught in English.
Anyway, I write all of my "public code" in English. The audience is different.
Not really. You only write stuff in English if it intended for publication like papers and stuff.
Anyway, I was dissatisfied of that. GADTs are awesome to add some "proofness" to a type checker.
I'm very very grateful that Stephen Diehl took the time to port the Kaleidoscope tutorial to LLVM-General
It's not in a state where the language would actually be useful for useful, and it's only a learning project for me. I tried to suggest this project as the topic of my master's thesis but my prof thought that it wasn't a good subject.
Many thanks for the effort.
making language tools in windows is actually quite challenging due to the poor quality of tools. its the only thing i've ever struggled with in that area. using haskell and llvm makes it a little easier than using C and llvm but not much...
it would be nice to have a windows friendly set of instructions - setting up GHC, happy, alex etc. isn't hard, but LLVM is a pain for windows.
it would be nice if it was in C rather than Haskell too. imo its highly likely nobody wants to touch Haskell if they have a choice. then the many C tools one might want to use like flex, bison - even win-flex and win-bison are a bit rubbish and difficult to configure for use in windows...
still a very useful article - its great to see an example worked through like this, its one of the best forms of documentation imo and not enough of that around in this area...
This is roughly a "port" of the LLVM "Kaleidoscope" tutorial, which is originally written in C++. There's also an O'Caml version.
Haskell is (not coincidentally) an excellent language for writing compilers. "nobody wants to touch Haskell" is just trolling that earned you a downvote.
i had seen that kaleidoscope tutorial in the LLVM docs before but didn't remember it particularly or find it helpful - perhaps its the presentation but this site is much more polished than that part of the llvm docs. granted they make the explicit choice to not use lexer/parser generators but that is not as practical in c/c++ as it is with haskell and adds a lot of needless cruft imo.
This is why the tutorial doesn't use Windows. It would mostly be a tutorial about fighting to get tools installed instead of actually talking about building compilers. The total Haskell source comes out to about 500 lines of code for the whole compiler, the equivalent C would be an order of magnitude larger. It makes no sense to do what you suggest.