[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ANN: mirage-0.9.1 series released



I've released a big Mirage 0.9.1 refresh into OPAM that integrates the 
following major changes to the build system, as discussed in earlier threads.
https://github.com/OCamlPro/opam-repository/pull/793

TLDR; simpler, faster and more extensible build, and the unikernel UNIX backend 
integrated.

--
The old build system would install Xen/UNIX or socket/direct networking stacks 
using environment variables to control which library was installed.  This is 
now handled directly in OPAM by adding specific packages 
(mirage-unix/mirage-xen) and a virtual package (mirage) that depends on either 
one of them.

This means that you can, using any 4.00+ compiler, specify the backend that 
you'd like to use as OPAM packages for your platform selection.

$ opam install mirage-unix mirage-net-direct mirage-www
# this will give you a unix-direct web server

$ opam install mirage-xen mirage-www
# this gives you a xen kernel, since mirage-net-socket conflicts
# with mirage-xen and so mirage-net-direct is the only valid choice.

$ opam install mirage-xen mirage-net-socket
# this will correctly conflict since it's an invalid choice
opam install mirage-xen mirage-net-socket
Package mirage-net-socket is already installed (current version is 1.0.0)
Your request cannot be satisfied. The reasons are:
       mirage-net-socket.0.9.1 is in conflict with mirage-xen.0.9.1.
 (and) mirage-net-socket.1.0.0 is in conflict with mirage-xen.0.9.1.
'opam install mirage-xen mirage-net-socket' failed.

The mirage-xen/mirage-unix still install a single "mirage" ocamlfind package, 
and similarly the mirage-net-direct/mirage-net-socket still install a 
"mirage-net" ocamlfind package.  This means that applications can just specify 
that in their dependencies.

Thanks to Vincent Bernardoff's high quality patchset, I've also merged in his 
UNIX tuntap patches.  These make the UNIX unikernel a standalone process that 
receives instructions from a master process.  This lets us treat the process in 
the same style as a Xen kernel, by sending it instructions to 
start/stop/suspend/etc. 

The final piece of the puzzle was to not require a custom Bigarray library, 
since the UNIX version had a reference to mmap in it.  David Scott fixed this 
by simply adding an mmap stub into the Xen runtime.  Nice and simple, and we no 
longer need to patch the standard library.

There's still a lot more work to be done on Mirari, but the overall system we 
have now should be stable enough to build multiple backends in much more 
easily.  Specifically, we should be able to put Gabor Pali's kFreeBSD work in 
this summer, and also more easily work on the Javascript one.

Thanks especially to Vincent and Dave, we're properly on the path to a stable 
release now!  We still need to update the instructions on mirage-www (Vincent 
offered to look at this) and tidy up Mirari and add block support.   If you 
want to mess around with the new scheme before the instructions are updated, 
just do "opam update && opam upgrade && opam install mirage-www" to get the 
latest dependencies.

-anil





 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.