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

[MirageOS-devel] [ANN] mirage 3.3.0 release



Dear hackers,

it's my pleasure to announce the just-merged-into-opam-repository
MirageOS 3.3.0. It has some breaking changes, see below for details.

New target: (via solo5) Genode:
"Genode is a free and open-source operating system framework consisting
of a microkernel abstraction layer and a collection of userspace
components. The framework is notable as one of the few open-source
operating systems not derived from a proprietary OS, such as Unix. The
characteristic design philosophy is that a small trusted computing base
is of primary concern in a security oriented OS." (from wikipedia, more
at https://genode.org/ #942, by @ehmry)

User-visible changes
* use mirage-bootvar-unix instead of OS.Env.argv (deprecated since
mirage-{xen,unix,os-shim}.3.1.0, mirage-solo5.0.5.0) on unix
  (#931, by @hannesm)

  WARNING: this leads to a different semantics for argument passing on
Unix: all arguments are concatenated (using a whitespace " " as
separator), and split on the whitespace character again (by parse-argv).
This is coherent with all other backends, but the whitespace in
"--hello=foo bar" needs to be escaped now.

* mirage now generates upper bounds for hard-coded packages that are
used in generated code. When we now break the API, unikernels which are
configured with an earlier version won't accept the new release of the
dependency. This means API breakage is much smoother for us, apart from
that we now track version numbers in the mirage utility. The following
rules were applied for upper bounds:
  - if version < 1.0.0 then ~min:"a.b.c" ~max:"a.(b+1).0"
  - if version > 1.0.0 then ~min:"a.b.c" ~max:"(a+1).0.0"`
  - exceptions: tcpip (~min:"3.5.0" ~max:"3.6.0"), mirage-block-ramdisk
(unconstrained)

  WARNING: Please be careful when release any of the referenced
libraries by taking care of appropriate version numbering.
  (initial version in #855 by @avsm, final #946 by @hannesm)
  See below for a full list of current constraints.

* since functoria.2.2.2, the "package" function (used in unikernel
configuration) is extended with the labeled argument ~pin that receives
a string (e.g.
~pin:"git+https://github.com/mirage-random/mirage-random.git";), and is
embedded into the generated opam file as
[pin-depends](https://opam.ocaml.org/doc/Manual.html#opamfield-pin-depends)

* mirage-random-stdlib is now used for default_random instead of
mirage-random (which since 1.2.0 no longer bundles the stdlib Random
module). mirage-random-stdlib is not cryptographically secure, but "a
lagged-Fibonacci F(55, 24, +) with a modified addition function to
enhance the mixing of bits.", which is now seeded using mirage-entropy.
If you configure your unikernel with "mirage configure --prng fortuna"
(since mirage 3.0.0), a cryptographically secure PRNG will be used (read
more at https://mirage.io/blog/mirage-entropy)

* mirage now revived its command-line "--no-depext", which removes the
call to "opam depext" in the depend and depends target of the generated
Makefile (#948, by @hannesm)

* make depend no longer uses opam pin for opam install --deps-only
(#948, by @hannesm)

* remove unused io_page configuration (initial discussion in #855, #940,
by @hannesm)

* charrua-client requires a Mirage_random interface since 0.11.0 (#938,
by @hannesm)

* split implementations into separate modules (#933, by @emillon)

* improved opam2 support (declare ocaml as dependency #926)

* switch build system to dune (#927, by @emillon)

* block device writes has been fixed in mirage-solo5.0.5.0 (see
https://github.com/mirage/mirage-solo5/issues/37)


The following package versions are constrained (generated by "git grep
package\ " in the mirage repository):

lib/mirage.ml:          package ~build:true ~min:"4.04.2" "ocaml";
lib/mirage.ml:          package "lwt";
lib/mirage.ml:          package ~min ~max "mirage-types-lwt";
lib/mirage.ml:          package ~min ~max "mirage-types";
lib/mirage.ml:          package ~min ~max "mirage-runtime" ;
lib/mirage.ml:          package ~build:true "ocamlfind" ;
lib/mirage.ml:          package ~build:true "ocamlbuild" ;
lib/mirage.ml:          package ~min:"3.1.0" ~max:"3.2.0" "mirage-unix"
lib/mirage.ml:          package ~min:"3.1.0" ~max:"3.2.0" "mirage-xen"
lib/mirage.ml:          package ~min:"0.4.0" ~max:"0.5.0" ~ocamlfind:[]
"solo5-bindings-*"
lib/mirage.ml:          package ~min:"0.5.0" ~max:"0.6.0" "mirage-solo5"
lib/mirage_impl_argv.ml:      Key.pure [ package ~min:"0.1.0"
~max:"0.2.0" "mirage-bootvar-unix" ]
lib/mirage_impl_argv.ml:      Key.pure [ package ~min:"0.4.0"
~max:"0.5.0" "mirage-bootvar-xen" ]
lib/mirage_impl_arpv4.ml:    Key.pure [ package ~min:"3.5.0"
~max:"3.6.0" ~sublibs:["arpv4"] "tcpip" ]
lib/mirage_impl_arpv4.ml:    Key.pure [ package ~min:"0.2.0"
~max:"0.3.0" ~sublibs:["mirage"] "arp" ]
lib/mirage_impl_block.ml:  [ package ~min:"1.5.0" ~max:"2.0.0"
~sublibs:["front"] "mirage-block-xen" ]
lib/mirage_impl_block.ml:        [ package ~min:"0.4.0" ~max:"0.5.0"
"mirage-block-solo5" ]
lib/mirage_impl_block.ml:        [ package ~min:"2.5.0" ~max:"3.0.0"
"mirage-block-unix" ]
lib/mirage_impl_block.ml:      Key.pure [ package "mirage-block-ramdisk" ]
lib/mirage_impl_block.ml:      Key.pure [ package ~min:"0.9.0"
~max:"0.10.0" "tar-mirage" ]
lib/mirage_impl_conduit_connector.ml:let pkg = package ~min:"3.0.1"
~max:"4.0.0" "mirage-conduit"
lib/mirage_impl_conduit_connector.ml:        package ~min:"0.9.2"
~max:"0.10.0" ~sublibs:["mirage"] "tls" ;
lib/mirage_impl_console.ml:      Key.pure [ package ~min:"2.2.0"
~max:"3.0.0" "mirage-console-unix" ]
lib/mirage_impl_console.ml:      Key.pure [ package ~min:"2.2.0"
~max:"3.0.0" "mirage-console-xen" ]
lib/mirage_impl_console.ml:      Key.pure [ package ~min:"0.3.0"
~max:"0.4.0" "mirage-console-solo5" ]
lib/mirage_impl_ethernet.ml:    Key.pure [ package ~min:"3.5.0"
~max:"3.6.0" ~sublibs:["ethif"] "tcpip" ]
lib/mirage_impl_fs.ml:let fat_pkg = package ~min:"0.12.0" ~max:"0.13.0"
"fat-filesystem"
lib/mirage_impl_fs.ml:      Key.pure [package ~min:"1.0.0" ~max:"2.0.0"
"mirage-fs-lwt"]
lib/mirage_impl_http.ml:      Mirage_key.pure [ package ~min:"1.0.0"
~max:"2.0.0" "cohttp-mirage" ]
lib/mirage_impl_ip.ml:  Key.pure [ package ~min:"0.11.0" ~max:"0.12.0"
"charrua-client-mirage" ]
lib/mirage_impl_ip.ml:      Key.pure [ package ~min:"0.6" ~max:"0.7"
"mirage-qubes-ipv4" ]
lib/mirage_impl_kv_ro.ml:        package ~min:"2.0.0" ~max:"3.0.0"
"io-page";
lib/mirage_impl_kv_ro.ml:        package ~min:"2.0.0" ~max:"3.0.0"
~build:true "crunch"
lib/mirage_impl_kv_ro.ml:      Key.pure [ package ~min:"1.5.0"
~max:"2.0.0" "mirage-fs-unix" ]
lib/mirage_impl_mclock.ml:      [ package ~min:"1.2.0" ~max:"2.0.0"
"mirage-clock-unix" ]
lib/mirage_impl_mclock.ml:      [ package ~min:"1.2.0" ~max:"2.0.0"
"mirage-clock-freestanding" ]
lib/mirage_impl_network.ml:      | `Unix -> [ package ~min:"2.3.0"
~max:"3.0.0" "mirage-net-unix" ]
lib/mirage_impl_network.ml:      | `MacOSX -> [ package ~min:"1.4.0"
~max:"2.0.0" "mirage-net-macosx" ]
lib/mirage_impl_network.ml:      | `Xen -> [ package ~min:"1.7.0"
~max:"2.0.0" "mirage-net-xen"]
lib/mirage_impl_network.ml:        [ package ~min:"1.7.0" ~max:"2.0.0"
"mirage-net-xen" ;
lib/mirage_impl_network.ml:        [ package ~min:"0.4.0" ~max:"0.5.0"
"mirage-net-solo5" ]
lib/mirage_impl_pclock.ml:      [ package ~min:"1.2.0" ~max:"2.0.0"
"mirage-clock-unix" ]
lib/mirage_impl_pclock.ml:      [ package ~min:"1.2.0" ~max:"2.0.0"
"mirage-clock-freestanding" ]
lib/mirage_impl_qubesdb.ml:let pkg = package ~min:"0.4" ~max:"0.7"
"mirage-qubes"
lib/mirage_impl_random.ml:    Mirage_key.pure [ package ~max:"0.1.0"
"mirage-random-stdlib" ]
lib/mirage_impl_random.ml:   the package array. *)
lib/mirage_impl_random.ml:        [ package ~min:"0.5.4" ~max:"0.6.0"
~sublibs:["mirage"] "nocrypto";
lib/mirage_impl_random.ml:          package ~max:"2.0" ~ocamlfind:[]
"zarith-xen" ]
lib/mirage_impl_random.ml:        [ package ~min:"0.5.4" ~max:"0.6.0"
~sublibs:["mirage"] "nocrypto";
lib/mirage_impl_random.ml:          package ~max:"2.0" ~ocamlfind:[]
"zarith-freestanding" ]
lib/mirage_impl_random.ml:        [ package ~min:"0.5.4" ~max:"0.6.0"
~sublibs:["lwt"] "nocrypto" ]
lib/mirage_impl_random.ml:    Mirage_key.pure [ package ~min:"0.5.4"
~max:"0.6.0" "nocrypto" ]
lib/mirage_impl_reporter.ml:      Key.pure [ package ~min:"0.3.0"
~max:"0.4.0" "mirage-logs" ]
lib/mirage_impl_resolver.ml:          package ~min:"1.0.0" ~max:"2.0.0"
"conduit-lwt-unix"; ]
lib/mirage_impl_syslog.ml:  Key.pure [ package ~min:"0.2.0" ~max:"0.3.0"
~sublibs "logs-syslog" ]
lib/mirage_impl_tracing.ml:        [ package ~max:"1.0.0" "mirage-profile";
lib/mirage_impl_tracing.ml:          package ~max:"1.0.0"
"mirage-profile-xen" ]
lib/mirage_impl_tracing.ml:        [ package ~max:"1.0.0" "mirage-profile";
lib/mirage_impl_tracing.ml:          package ~max:"1.0.0"
"mirage-profile-unix" ]

_______________________________________________
MirageOS-devel mailing list
MirageOS-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/mirageos-devel

 


Rackspace

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