Julia LLVM projects?

Assuming that can be done, wouldn’t it be more portable to compile emitted statically compiled LLVM (how would garbage collection and runtime work ?) Vs compile the compiler?

Would this be possible?

There is always a solution when huge codebase grows too much to keep it under a reasonable size.
Unikernel can help to decimate even operating system fatness.

But tha’ts an aposteriori walk and it may be better to anticipate first rather than to come back to overhaul here and there.

BTW, the llvm compiler to webassembly seems to have make good progression, the linker is still a bit lagging behind.

or, use Julia to specify and specialize Etherium work, and emit other?

Since 2018-10, WebAssembly is a normal LLVM target.

Is there any news / hope of any advancement of Julia on that matters ?

Will be nice if we can solve the two language problem of the client/server stack too.
Let’s dare to forget Javascript in 2019 !

.

PS: here is the julia stdlib dependencies graph
julia%20stdlib%20deps%202018-11

There’s been some movement recently on the wasm front:

If anyone wants to get involved, I’m sure that @keno and @sdanisch would be happy to get someone up to speed in exchange for help making wasm support happen.

2 Likes

Wit lot’s of @keno help, I was able to put up instructions to build julia with webassembly:
https://nextjournal.com/sdanisch/julia-webassembly
You can edit this directly online or use the instructions to set it up locally.
This basically just needs someone to go through lots of compilation issues and fix them one after the other :wink:

13 Likes

Or in other words: if you’re looking to get involved or help with compiler work in a high-impact way that is fairly accessible, this is your chance! Also, think about how fun it will be when you get Julia running in a browser :grin:

8 Likes

Great initiative !
In your article you mention you have changed the compiler to emcc.
But from GitHub - JuliaLang/julia: The Julia Programming Language, it seems :

The most complicated dependency is LLVM, for which we require additional patches from upstream (LLVM is not backward compatible).

It may be simpler to keep llvm and patch its target. A first pick ?

Would that mean we can have julia on IOS?

IIRC iOS doesn’t permit (non-Apple) programs to JIT-compile code, because they set the no-execute flag on writeable memory regions, so you’d never be able to execute anything that LLVM generates for you. That said, you could do AOT compilation on your code and then extract the LLVM for that; I think Apple requires the LLVM bitcode of your program before you can put it up on the App Store. But of course, anything you want to be able to execute will have to be compiled ahead of time, so no dynamic code generation or JIT magic.

iOS allows the Javascript JIT though so I think WASM is okay from what I understand since you can access it through the browser.

How this situation with LLVM and WebAssembly looks after one and half year? I try to catch up with this things.

1 Like