v3.6.0 (2019-10-02)

v3.5.2 (2019-08-22)

v3.5.1 (2019-07-11)

v3.5.0 (2019-03-03)

v3.4.1 (2019-02-05)

v3.4.0 (2019-01-11)

3.3.1 (2018-11-21)

3.3.0 (2018-11-18)

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

3.2.0 (2018-09-23)

Due to conflicting packages, opam will not upgrade mirage to version 3.2.0 or newer if a version of mirage-solo5 older than 0.4.0 is installed in the switch. To perform the upgrade you must run opam upgrade mirage explicitly.

Changes required to rebuild and run ukvm unikernels

As of Solo5 0.4.0, the ukvm target has been renamed to hvt. If you are working out of an existing, dirty, source tree, you should initially run:

mirage configure -t hvt
mirage clean
mirage configure -t hvt

and then proceed as normal. If you are working with a clean source tree, then simply configuring with the new hvt target is sufficient:

mirage configure -t hvt

Note that the build products have changed:

The unikernel binary is now named <unikernel>.hvt, the ukvm-bin binary is now named solo5-hvt.

This is a breaking change: mirage 3.2.0 requires mirage-protocols 1.4.0, mirage-stack 1.3.0, and tcpip 3.5.0 to work (charru-client-mirage 0.10 and mirage-qubes-ipv4 0.6 are adapted to the changes). An older mirage won't be able to use these new libraries correctly. Conflicts were introduced in the opam-repository.

In more detail, direct and socket stack initialisation changed, which is automatically generated by the mirage tool for each unikernel (as part of main.ml). A record was built up, which is no longer needed.

Several unneeded type aliases were removed: netif from Mirage_protocols.ETHIF ethif and prefix from Mirage_protocols.IP ip from Mirage_protocols.{UDP,TCP} netif and 'netif config from Mirage_stack.V4 'netif stackv4_config and socket_stack_config in Mirage_stack

3.1.1 (2018-08-01)

3.1.0 (2018-06-20)

3.0.8 (2017-12-19)

3.0.7 (2017-11-24)

3.0.6 (2017-11-16)

3.0.5 (2017-08-08)

Packaging updates for latest opam repository:

3.0.4 (2017-06-15)

3.0.2 (2017-03-15)

3.0.1 (2017-03-14)

3.0.0 (2017-02-23)

2.9.1 (2016-07-20)

2.9.0 (2016-04-29)

2.8.0 (2016-04-04)

2.7.3 (2016-03-20)

2.7.2 (2016-03-20)

2.7.1 (2016-03-17)

2.7.0 (2016-02-17)

The mirage tool is now based on functoria. (#441 #450, by @drup @samoht) See https://mirage.io/blog/introducing-functoria for full details.

The "nocrypto" library is loaded but entropy is not enabled! Please enable the entropy by adding a dependency to the nocrypto device. You can do so by adding ~deps:[abstract nocrypto] to the arguments of Mirage.foreign.

  Data dependencies (such as entropy initialization) are now explicit.
In order to fix this, you need to declare the dependency like so:
```ocaml
open Mirage

let my_functor =
let deps = [abstract nocrypto] in
foreign ~deps "My_Functor" (foo @-> bar)

My_functor.start will now take an extra argument for each dependencies. In the case of nocrypto, this is ().

2.6.1 (2015-09-08)

2.6.0 (2015-07-28)

2.5.1 (2015-07-17)

2.5.0 (2015-06-10)

(* [config.ml] ) ( in 2.4 ) let http = http_server (TCP (Port 80)) conduit ( in 2.5 *) let http = http_server conduit

(* [unikernel.ml] ) let start http = ( in 2.4 ) http (S.make ~conn_closed ~callback ()) ( in 2.5 *) http (`TCP 80) (S.make ~conn_closed ~callback ()) ```

(* [config.ml] *) let conduit = conduit_direct ~tls:true (stack default_console)

(* [unikernel.ml] *) module Main (C: Conduit_mirage.S): struct let start conduit = C.listen conduit (TLS (tls_config, TCP 443)) callback end ```

2.4.0 (2015-05-05)

2.3.0 (2015-03-10)

2.2.1 (2015-01-29)

2.2.0 (2014-12-18)

type v4 type v6

type 'a ip type ipv4 = v4 ip type ipv6 = v6 ip ```

Full support for configuring IPv6 does not exist yet, as this release is intended for getting the type definitions in place before adding configuration support.

2.1.1 (2014-12-10)

2.1.0 (2014-12-07)

2.0.1 (2014-11-21)

2.0.0 (2014-11-05)

1.2.0 (2014-07-05)

The Mirage frontend tool now generates a Makefile with a make depend target, instead of directly invoking OPAM as part of mirage configure. This greatly improves usability on slow platforms such as ARM, since the output of OPAM as it builds can be inspected more easily. Users will now need to run make depend to ensure they have the latest package set, before building their unikernel with make as normal.

1.1.3 (2014-06-15)

1.1.2 (2014-04-01)

1.1.1 (2014-02-21)

1.1.0 (2014-02-05)

1.0.4 (2014-01-14)

1.0.3 (2013-12-18)

1.0.2 (2013-12-10)

1.0.1 (2013-12-09)

1.0.0 (2013-12-09)

0.10.0 (2013-12.08)

0.9.7 (2013-08-09)

0.9.6 (2013-07-26)

0.9.5 (2013-07-18)

0.9.4 (2013-07-09)

0.9.3 (2013-06-12)

0.9.2 (2013-03-28)

0.9.1 (2013-02-13)

0.9.0 (2013-02-12)