[LLVMdev] LLVM IR execution in JavaScript

Alon Zakai azakai at mozilla.com
Wed Jan 2 11:50:23 PST 2013

----- Original Message -----
> From: "Sebastian Redl" <sebastian.redl at getdesigned.at>
> To: "Alon Zakai" <azakai at mozilla.com>
> Cc: "llvmdev" <llvmdev at cs.uiuc.edu>, "Eli Bendersky" <eliben at google.com>
> Sent: Wednesday, January 2, 2013 11:44:27 AM
> Subject: Re: [LLVMdev] LLVM IR execution in JavaScript
> On 02.01.2013, at 20:37, Alon Zakai wrote:
> > 
> > 
> > ----- Original Message -----
> >> From: "Sebastian Redl" <sebastian.redl at getdesigned.at>
> >> 
> >> 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.
> I think speed and download considerations alone make it more
> reasonable to compile everything on the server, the way the current
> llvm.org demo page does, but use emscripten's target description,
> and then run emscripten (also on the server) to generate JS, which
> can then be loaded back into the web page and executed.

Doing it all on the server would be simpler, yes, but then you do need to maintain the server and make sure it has enough power to handle the load it receives. Compiling it all to JS will make for a larger download and perhaps slower execution (depends on the browser etc.), but would make it not require a server at all. It would also work without a network connection.

I agree both are useful approaches. I went with clientside-everything in this demo because I work on that stuff and like it ;) But I am happy to help integrate this with the current serverside C/C++ to LLVM IR service.

- azakai

More information about the llvm-dev mailing list