mirage

MirageOS is a library operating system that constructs unikernels

ISC License

Stars
2.5K
Committers
55

Bot releases are hidden (Show)

mirage - https://github.com/mirage/mirage/releases/tag/v3.7.1

Published by hannesm almost 5 years ago

CHANGES:

  • clean opam files when mirage configure is executed (#1013 @dinosaure)
  • deprecate mirage-types and mirage-types-lwt (#1006 @hannes)
  • remove abstraction over 'type 'a io' and 'buffer', remove mirage-*-lwt packages (#1006 @hannesm)
  • unify targets in respect to hooks (Mirage_runtime provides the hooks and registration)
  • unify targets in respect to error handling (no toplevel try .. with installed anymore, mirage-unix does no longer ignore all errors)
mirage - https://github.com/mirage/mirage/releases/tag/v3.7.0

Published by hannesm almost 5 years ago

CHANGES:

  • mirage-runtime: provide at_enter_iter/at_exit_iter/at_exit hooks for the event loop (#1010, @samoht @dinosaure @hannesm)
  • call exit 0 after the Lwt event loop returned (to run at_exit handlers in freestanding environments) (#1011, @hannesm)
  • NOTE: this release only contains the mirage-runtime opam package to unblock other releases, there'll be a 3.7.1 soon
mirage - https://github.com/mirage/mirage/releases/tag/v3.6.0

Published by hannesm about 5 years ago

CHANGES:

  • solo5 0.6 support for multiple devices (#993, by @mato)
    please read https://github.com/Solo5/solo5/blob/v0.6.2/CHANGES.md for detailed changes
    observable mirage changes:
    • new target -t spt for sandboxed processed tender (seccomp on Linux)
    • new functions Mirage_key.is_solo5 and Mirage_key.is_xen, analogue to Mirage_key.is_unix
  • respect verbosity when calling ocamlbuild -- verbose if log level is info or debug (#999, by @mato)
mirage - https://github.com/mirage/mirage/releases/tag/v3.5.2

Published by hannesm about 5 years ago

CHANGES:

  • Adapt to conduit 2.0.0 release, including dns 4.0.0 (#996, by @hannesm)
  • Adjust mirage-xen constraints to < 5.0.0 (#995, by @reynir)
mirage - https://github.com/mirage/mirage/releases/tag/v3.5.1

Published by hannesm over 5 years ago

CHANGES:

  • Adapt to new tracing API (#985, by @talex5)
  • Remove stubs for qrexec and qubes gui (qubes 3 is end of life, qubes 4 makes it configurable) (#984, by @linse & @yomimono)
  • Update mirage-logs and charrua-client-mirage version constraints (#982, by @hannesm)
  • Remove unused dockerfile, travis updates (#982 #990, by @hannesm)
mirage - https://github.com/mirage/mirage/releases/tag/v3.5.0

Published by hannesm over 5 years ago

CHANGES:

  • Rename Mirage_impl_kv_ro to Mirage_impl_kv, and introduce rw (#975, by @hannesm)
  • Adapt to mirage-kv 2.0.0 changes (#975, by @hannesm)
  • Adapt to mirage-protocols and mirag-net 2.0.0 changes (#972, by @hannesm)
  • mirage-types-lwt: remove unneeded io-page dependency (#971, by @hannesm)
  • Fix regression introduced in 3.4.0 that "-l *:debug" did no longer work (#970, by @hannesm)
  • Adjust various upper bounds (mirage-unix, cohttp-mirage, mirage-bootvar-xen) (#967, by @hannesm)
mirage - https://github.com/mirage/mirage/releases/tag/v3.4.1

Published by hannesm over 5 years ago

CHANGES:

  • Provide a httpaf_server device, and a cohttp_server device (#955, by @anmonteiro)
  • There can only be a single prng device in a unikernel, due to entropy
    harvesting setup (#959, by @hannesm)
  • Cleanup zarith-freestanding / gmp-freestanding dependencies (#964, by @hannesm)
  • ethernet is now a separate package (#965, by @hannesm)
  • arp now uses the mirage/arp repository by default, the tcpip.arpv4
    implementation was removed in tcpip 3.7.0 (#965, by @hannesm)
mirage - https://github.com/mirage/mirage/releases/tag/v3.4.0

Published by hannesm almost 6 years ago

CHANGES:

  • use ipaddr 3.0 without s-expression dependency (#956, by @hannesm)
  • use mirage-clock 2.x and tcpip 3.6.x libraries (#960, #962, by @hannesm)
  • default to socket stack on unix and macos (#958, by @hannesm)
  • use String.split_on_char in mirage-runtime to avoid astring dependency (#957, by @hannesm)
  • add build-dependency on mirage to each unikernel (#953, by @hannesm)
mirage - https://github.com/mirage/mirage/releases/tag/3.3.1

Published by hannesm almost 6 years ago

CHANGES:

  • fix regression: --yes was not passed to opam in 3.3.0 (#950, by @hannesm)
mirage -

Published by hannesm almost 6 years ago

CHANGES:

New target: (via solo5) Genode:
"Genode[4][5][6] 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)

  • 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

  • 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

mirage - https://github.com/mirage/mirage/releases/tag/3.2.0

Published by hannesm about 6 years ago

3.2.0 (2018-09-23)

  • adapt to solo5 0.4.0 changes (#924, by @mato)
    Upgrading from Mirage 3.1.x or earlier

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.

  • adapt to mirage-protocols, mirage-stack, tcpip changes (#920, by @hannesm)

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

  • squash unnecessary warning from mirage build (#916, by @mato)
mirage - https://github.com/mirage/mirage/releases/tag/3.1.1

Published by hannesm about 6 years ago

3.1.1 (2018-08-01)

  • for the unix target, add -tags thread, as done for the mac osx target (#861,
    suggested by @cfcs)
  • bump minimum mirage-solo5* and solo5-kernel* to 0.3.0 (#914, by @hannesm, as
    suggested by @mato)
  • use the exposed signature in functoria for Key modules (#912, by @Drup)
  • add ?group param to all generic devices (#913, by @samoht)
mirage - https://github.com/mirage/mirage/releases/tag/3.1.0

Published by hannesm over 6 years ago

3.1.0 (2018-06-20)

  • solo5 v0.3.0 support (#906, by @mato @kensan @hannesm):
    The major new user-visible features for the Solo5 backends are:
    ukvm: Now runs natively on FreeBSD vmm and OpenBSD vmm.
    ukvm: ARM64 support.
    muen: New target, for the Muen Separation Kernel.
    ukvm: Improved and documented support for debugging Solo5-based unikernels.
  • generate libvirt.xml for virtio target (#903, by @bramford)
  • don't make xen config documents for target qubes (#895, by @yomimono)
  • use a path pin when making depends (#891, by @yomimono)
  • move block registration to configure section (#892, by @yomimono)
  • allow to directly specifying xenstore ids (#879, by @yomimono)
mirage - Bugfix for Xen block device naming

Published by yomimono almost 7 years ago

  • when passing block devices to xen, pass the raw filename rather than trying to infer the xenstore ID (#874, by @yomimono)
  • make homepage in opam files consistent (#872, by @djs55)
mirage - Correct the minimum version number of `cohttp-mirage`

Published by djs55 almost 7 years ago

  • the released version of cohttp-mirage is 1.0.0 (not 3.0.0) (#870 by @hannesm)
mirage - More package name updates

Published by djs55 almost 7 years ago

  • remove macOS < yosemite support (#860 by @hannesm)
  • rename mirage-http to cohttp-mirage (#863 by @djs55) see [mirage/ocaml-cohttp#572]
  • opam: require OCaml 4.04.2+ (#867 by @hannesm)
mirage - Update to latest package names

Published by djs55 about 7 years ago

  • Allow runtime configuration of syslog via config keys --syslog, --syslog-port and --syslog-hostname (#853 via @hannesm).
  • Switch build of tool and libraries to Jbuilder (by @samoht)
  • Fix a warning when connecting to a ramdisk device (#837 by @g2p)
  • Fix reference to tar library when using --kv-ro archive (#848 by @mor1)
  • Adapt to latest functoria API (#849 by @samoht)
  • Add a --gdb argument for ukvm targets so that debuggers can be attached easily. This allows mirage configure --gdb -t ukvm to work (@ricarkol in #847).
  • Adapt to latest functoria (#849 by @samoht)
  • Adapt to latest charrua, tcpip (#854 by @yomimono)
  • Switch to jbuilder (#850 by @samoht)

Packaging updates for latest opam repository:

  • ARP is compatible with MirageOS3 since 0.2.0 (#851 by @hannesm)
mirage - Support new top-level mirage-qubes* and io-page* packages

Published by djs55 over 7 years ago

  • add a --block configure flag for picking ramdisk or file-backed disk
  • add lower bounds on packages
  • fallback to system $PKG_CONFIG_PATH
  • update for mirage-qubes-ipv4
mirage - restore colors sometimes

Published by yomimono over 7 years ago

  • restore ocamlbuild colors when TERM <> dumb && Unix.isatty stdout (#814, by @hannesm)
mirage - usability improvements on 3.0.0

Published by yomimono over 7 years ago

  • remove "-color always" from ocamlbuild invocation (bugfix for some scripts interpreting build output) (#811, by @hannesm)
  • provide a "random" module argument when invoking IPv6.Make (compat with tcpip 3.1.0) (#801, by @hannesm)
  • add a "depends" target to the generated Makefile (controversial and may be removed) (#805, by @yomimono)
  • allow qubesdb to be requested in config.ml when the target is xen (#807, by @talex5)