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.
