Hi,

A.
Looking into unikernels:

http://www.techrepublic.com/article/unikernels-offer-a-stripped-down-alternative-to-linux/
"Unikernels run on hypervisors. OpenMirage, HaLVM, and LING unikernels are 
combined with Xen virtual machines (VMs) [..] OCaml <https://ocaml.org>, 
Haskell <http://tryhaskell.org>, and Erlang <http://erlang.org> are 
functional programming languages, which are not as popular as imperative 
languages. You won't find these names on a top 10 list of 
"most-sought-after-by-business" languages, so they attract fewer 
professional programmers."

[I thought, maybe this should be done with Julia. I wander if Julia is 
already at least more popular then Haskell.. and will get more popular than 
the others? I would think.]

"The current state of unikernels has some clear advantages. 
   
   - *Small image size.* Removing most of the OS means a unikernel can fit 
   in a 5 MB image.
   - *More secure.* For instance, if the system doesn't run a shell, it 
   doesn't have shell vulnerabilities 
   
<http://www.techrepublic.com/article/bash-shell-vulnerabilities-plague-linux-systems-and-may-be-more-damaging-than-heartbleed/>
   .
   - *Better performance. *Much of the multi-tasking overhead disappears."


Now, (core) Julia might not fit in 5 MB. Not really that important and 
standard core can be reduced and is planned. See also MicroPython. 
Eventually we could have MicroJulia..

In Julia you can escape to the shell (or a shell) and use pipes, but if 
your program doesn't, does Julia still require it? I guess only packages 
(BinDeps?).

"The unikernel approach has plenty of disadvantages.
   
   - *Enterprise tools don't work with the new cloud OS build process.*
   - *The developer is limited to one language.* Mirage 
   <http://openmirage.org/> is tied to the OCaml language; HaLVM 
   <https://github.com/GaloisInc/HaLVM> is tied to Haskell; and LING 
   <http://erlangonxen.org/> is tied to Erlang.
   - *It's new.* Many components that should be in the library just haven't 
   been written yet. Even if a module has been written, it may be in need of 
   optimizing.
   - *Wedging an application into a unikernel is mostly not possible. *Serious 
   code rewrites are required before an application will work."

I'm not really sure why you are tied to one language, that it's true, at 
least wouldn't be with Julia(?).
B.
In general, how difficult do you think it would be to port Julia to a new 
OS, say my former favorite RISC OS (excluding ARM issues), that is 
non-preemptive cooperative multitasking.. It wouldn't fit under @unix or 
@windows, but a unikernel would maybe implement @unix?


Googling for somebody trying this, I do not find that anyone is trying this 
with Julia. But I found:

https://github.com/JuliaLang/openlibm/issues/18
Note that I'm not actually trying to run Julia; I'm using it as the libm 
for an OCaml/Mirage unikernel.

-- 
Palli.


Reply via email to