25 minutes ago, Jens Axel Søgaard wrote: > 2011/4/10 Shriram Krishnamurthi <s...@cs.brown.edu>: > >> Does the current bytecode to JavaScript compiler cover the whole language? > > > > No, we definitely have the "library problem". > > > >> A direct Racket bytecode to JavaScript compiler ought to be > >> faster/smaller/better etc. > > > > I don't understand this. "direct" = ? How would it be more "direct" > > than the current one? You're making a comparative with at least two > > undefined parts. > > I am talking about the current one (which I see as a direct > compiler, since there is no LLVM layer). It wil will be both faster > and smaller.
I think that what Shriram is talking about is the fact that the runtime support that you need is very non-trivial. If it was, then you could just as well write an x86 emulator (interpreter or compiler) and just run full applications in your browser. > >> One advantage with the LLVM solution is that one is sure that the > >> semantics of the parts of Racket that are implemented in C will > >> be preserved. I am thinking such things as the numerical tower, > >> whose C implementation contains quite a few functions that are > >> non-trivial to implement directly in JavaScript. > > > > I don't know what the porting effort is to get Racket to LLVM. > > I hope that's not neccessary. Here is what I had in mind: GCC has an > LLVM backend. (Last time I checked it was the other way around: LLVM had a GCC front-end.) > So compile Racket (with a disabled JIT) to racket.llvm with GCC, and > then compile it with Emscripten. ... and this doesn't help with the runtime support that you need. Here's a concrete example: that code will also have a GC in it, and you'll end up running an emulated piece of code in JS to do the GC, spending a good number of layers on work that JS already does. In any case, there's nothing really special about LLVM in this context other than the fact that someone wrote such a compiler. It doesn't change much how "direct" things are, because it's at a low enough level that there's not much difference. -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life! _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users