Mirage Mirage Versions Save

MirageOS is a library operating system that constructs unikernels

v4.3.0

1 year ago

CHANGES:

Fixed

  • The chamelon format example invocation had the arguments in the wrong order (#1351, @hannesm)
  • tar-mirage: allow the 2.x release series (#1352, @hannesm)
  • Fix the separator for list and pair combinator (command-line arguments, #1354, @dinosaure, reported in #1349 #1348 by @rand00)
  • Update references (hyperlinks) to erratique.ch documentation (#1343, @reynir)

Changed

  • Allow more log levels (None / quiet) (#1275, @reynir, closes #1273 & #1274)
  • Improve Functoria CLI: don't fail if context cache is invalid, handle situation when global arguments have a parse error (#1359, @TheLortex)
  • Remove v4 & v6 stack, and other deprecated bindings (#1341, @hannesm)
  • Remove FS remnants, and kv_ro of archive, and brittle shell scripts that used to generate FAT block storage devices (#1353, @hannesm)
  • Update to OCamlFormat 0.23.0 (#1351, @dinosaure)

v4.2.1

1 year ago

CHANGES:

Fixed

  • In the generated opam file, also run "depext-lockfile" (#1342, @hannesm)

v4.2.0

1 year ago

CHANGES:

Fixed

  • Remove non-existing mirage-repo-add and mirage-repo-rm from PHONY in generated Makefile (#1332, @hannesm)
  • Update deprecated references (#1337, @reynir)

Changed

  • Prepare for reproducing unikernels with generated opam file (#1335, @hannesm)
    • split x-mirage-configure (mirage configure), x-mirage-pre-build (make lock pull), and build instructions in opam file
    • embed x-mirage-extra-repo (a list of opam repositories to use)
    • take relative paths up to git repository into account
    • include x-mirage-opam-lock-location (relative to git repository root)
  • Adapt constraints for mirage-solo5 0.9.0 and mirage-xen 8.0.0 (ocaml-solo5 0.8.1 with trim and improved memory metrics) (#1338, @hannesm, based on @palainp work)
  • Require opam-monorepo 0.3.2 (#1332 #1334, @hannesm @dinosaure)
  • Use OPAMVAR_monorepo instead of OPAMVAR_switch in generated opam file (#1332, @hannesm)
  • Remove name from opam file (#1332, @hannesm)

v4.1.1

2 years ago

CHANGES:

Fixed

  • Update constraints on generated OPAM files (d21de15, @dinosaure)

v4.1.0

2 years ago

CHANGES:

Changed

  • Be able to make a docteur image with a relative path (@dinosaure, #1324)

  • Update the project with ocamlformat.0.21.0 (@gpetiot, @dinosaure, #1286)

  • Upgrade the mirage tool with opam-monorepo.0.3.0 and generate a single OPAM file (@TheLortex, @hannesm, @dinosaure, #1327)

    You should check the opam-monorepo.0.3.0 release to get more details about updates and fixes.

Added

  • Add chamelon device, a filesystem with littlefs (@dinosaure, @yomimono, #1300)
  • Add pair combinator for MirageOS key (@dinosaure, #1328)

v4.0.0

2 years ago

CHANGES:

Fixed

  • use --solo5-abi=xen for qubes target (#1312, @hannesm)
  • Support using a different filename than config.ml with -f (#1309, @dinosaure)
  • Fix build with dune 3.0 (#1296, @dinosaure)
  • Check that the package name respects opam conventions (#1287, #1304, @TheLortex)
  • Allow to specify version of pinned packages (#1295, @Julow)

Changed

  • Use the same compilation as dune (#1313, #1316, #1317, @samoht, @hannesm)
  • Remove unused --warn-errors and --debug flags (#1320, @samoht)
  • Remove the deprecated --target=ukvm (#1321, @hannesm)
  • Require cmdliner 1.1 (#1289, @samoht, @dinosaure, @dbuenzli)
  • Require opam 2.1 to use MirageOS (#1239, 1311, @hannesm)
  • Require conduit 5.1 (#1297, @hannesm)
  • Rename ocaml-freestanding to ocaml-solo5 (#1314, @dinosaure, @samoht, @hannesm)

Added

  • Add Key.opt_all to allows usage of an argument multiple times (#1292, #1301, @dinosaure, @Drup)
  • Add Git devices (#1291, @dinosaure, @samoht, @hannesm, @yomimono)
  • Add happy-eyeballs devices (#1307, @dinosaure, @hannesm)
  • Add docteur device to manage read-only persistent key-value stores (#1298, @dinosaure, @samoht)
  • Add tcpv4v6_of_stackv4v6 device (#1293, @dinosaure)
  • Add int64 converter (#1305, @dinosaure)
  • Add dns_client device (#1302, #1306, @dinosaure, @hannesm)

v4.0.0_beta3

2 years ago

CHANGES:

  • Lint constraints on few packages to split the world between MirageOS 3.0 and MirageOS 4.0 (#1280, @dinosaure)

v4.0.0_beta2

2 years ago

CHANGES:

  • Update the generated minimal constraint required for mirage-runtime as Opam considers 4.0.0~beta* < 4.0.0 (#1276, @dinosaure)

v4.0.0_beta1

2 years ago

CHANGES:

Refactor build process to use Dune build system. The motivation is to drop ocamlbuild-induced technical debt and to obtain first-class support for cross-compilation. To learn more about how Dune is able to perform cross-compilation, please refer to the documentation.

Main changes:

  • Two opam files are generated when running mirage configure:

    • <unikernel>-switch.opam: for dependencies that are meant to be installed in the user's opam switch. It comprises of build tools such as ocaml-freestanding for Solo5 targets.
    • <unikernel>-monorepo.opam: for unikernel dependencies, they are locally fetched to compose a dune workspace.
  • Unikernel dependencies are fetched in the source project using the opam-monorepo tool. This tool reads the <unikernel>-monorepo.opam file and make use of the opam solver to compute the transitive dependency set, saves that as a lockfile, and fetch sources in the duniverse/ subfolder. More info on the Github repository.

  • The compilation scheme use dune's concept of a workspace: it's a set of libraries that are built together using the same context. For each compilation target, the Mirage tool is able to generate a context definition able to compile for that target. A context is defined by an OCaml compiler (or cross-compiler) toolchain, as defined by findlib, it can be tuned with environment variables and custom flags for the OCaml or underlying C compiler.

  • The usual workflow mirage configure && make depends && mirage build does not change. However, files are now generated in the ./mirage directory (OPAM files, main.ml, key_gen.ml or manifest.json), and the final artefact is created in the ./dist directory.

Breaking changes:

  • Unikernel dependencies need to use dune as a build system. Other build systems can be sandboxed, but the recommended way is to switch to dune. Many packages not compiling with dune yet have been ported and are available as an additional opam repository overlay. In addition, a few packages not supporting cross-compilation have been fixed and are available in another opam repository overlay. The mirage tool uses these two opam overlays by default. To only use the default packages provided by Opam, use mirage configure --no-extra-repo.

  • Functoria_runtime.info and Mirage_runtime.info now list all the libraries that are statically linked against the unikernel. The packages field have been removed and the libraries field is now accurate and contains the versions computed by dune-build-info.

  • Update the DSL to describe devices into the config.ml. We don't use objects anymore, and we replace it with the usage of Mirage.impl that expects the same fields as before.

v3.10.8

2 years ago

CHANGES:

  • Allow tcpip 7.0.0, arp 3.0.0, ethernet 3.0.0 (#1259 @hannesm)