I can't speak to GSoC participation, but I like your list of ideas.
Here are comments on a couple of them:
* AOT Compiler
Handling duck-typed functions should be pretty easy. If you're making
a self-contained main(), Julia will compile all the needed code when
you run it. There are cases that may call different branches depending
on different inputs, but for many cases, it'll work fine. If you want
to implement a callable library, you could write a list of method
signatures to compile.
* JuliaJS
For this to work, you also basically need the static compiler. I've
played around with Emscripten a bit for this. I don't have anything to
show for it, but here are my experiences:
- The LLVM code in usr/lib/julia/sys.bc is suitable for linking with Emscripten.
- I managed to compile most of openlibm with Emscripten, getting
roughly 50% of the tests to pass. There were some conflicts with
Emscripten's built-in libm subset.
- With most of the libuv stuff bypassed, most of the Julia C code
compiled, including flisp. I didn't get far enough to make anything
run, though.
- When something does compile, asm.js is surprisingly fast.