[LLVMdev] LLVM IR execution in JavaScript

Eli Bendersky eliben at google.com
Wed Jan 2 11:41:54 PST 2013

On Wed, Jan 2, 2013 at 11:37 AM, Alon Zakai <azakai at mozilla.com> wrote:
> ----- Original Message -----
>> From: "Sebastian Redl" <sebastian.redl at getdesigned.at>
>> To: "Eli Bendersky" <eliben at google.com>
>> Cc: "Alon Zakai" <azakai at mozilla.com>, "llvmdev" <llvmdev at cs.uiuc.edu>
>> Sent: Wednesday, January 2, 2013 11:24:33 AM
>> Subject: Re: [LLVMdev] LLVM IR execution in JavaScript
>> On 02.01.2013, at 19:51, Eli Bendersky wrote:
>> >> I compiled parts of LLVM to JavaScript using emscripten and made a
>> >> demo of parsing and executing LLVM assembly,
>> >>
>> >> http://kripken.github.com/llvm.js/demo.html
>> >>
>> >> Basically you enter some LLVM IR, press a button and see the
>> >> output of compiling and running it, directly in the browser.
>> >>
>> >> This was done mainly as a fun hacking project over the holidays,
>> >> but I'm posting it here in case anyone thinks it might be useful
>> >> for something - maybe to teach people LLVM IR in a simple way (no
>> >> need to install anything, just visit a website). If it is
>> >> potentially useful it can be optimized and polished etc.
>> >>
>> >
>> > Cool project. This is a nice complement to http://llvm.org/demo/
>> It would be awesome to combine the llvm.org demo with the in-browser
>> emscripten (or possibly a server-side emscripten) so that the user
>> can execute his snippets in the browser.
>> This would be especially awesome for a C++ tutorial page. Instead of
>> having to start with the arduous process of setting up a compiler
>> environment, the user could jump straight into the fun by typing his
>> programs in the web page and executing them there.
> It would definitely be nice to allow compiling C++ to LLVM IR to JS all in the browser, yeah! That means compiling clang to JS though, which would require a fairly large download I think. If there is a way to compile clang with just the parts we need though (just compile a single C/C++ file to only LLVM IR, nothing else) then this would be much simpler.

The existing LLVM demo already provides the C --> IR part, so you just
need to run that IR through your execution engine to complete the
whole cycle, IMHO.


More information about the llvm-dev mailing list