Releases: mirage/mirage
logging
- Add logging support. A new
reporter
parameter toregister
is now
available. This parameter defines how to configure the log reporter,
usingLogs
andMirage_logs
. Log reporters can also be configured
at configuration AND runtime using on the new-l
or--logs
command-line argument. (#534, by @samoht, @talex5 and @Drup) - Allow to disable command-line parsing at runtime. There is a new
argv
parameter to theregister
function to allow to pass custom
command-line argument parsing devices. Useregister ~argv:no_argv
to disable command-line argument parsing. (#493, by @samoht and @Drup)
Independent ICMP
- Define an ICMP and ICMPV4 module type. ICMPV4 is included in, and surfaced by, the STACKV4 module type. The previous default behavior of the IPv4 module with respect to ICMP is preserved by STACKV4 and the tcpip_stack_direct function provided by mirage. (#523, by @yomimono)
- Explicitly require OCaml compiler version 4.02.3 in opam files for mirage-types and mirage.
Regression fix
- Fix another regression introduced in 2.7.1 which enable
-warn-error
by default. This is now controlled by a
--warn-error
flag onmirage configure
. Currently it's
default value is [false] but this might change in future
versions (#520)
Regression fix
No more camlp4
Functoria release
The mirage tool is now based on functoria.
See https://mirage.io/blog/introducing-functoria for full details.
-
Command line interface: The config file must be passed with the -f option
(instead of being just an argument). -
Two new generic combinators are available, generic_stack and generic_kv_ro.
-
get_mode
is deprecated. You should use keys instead. And in particular
Key.target
andKey.is_xen
. -
add_to_ocamlfind_libraries
andadd_to_opam_packages
are deprecated. Both
theforeign
and theregister
functions now accept the~libraries
and
~packages
arguments to specify library dependencies. -
If you were using
tls
without the conduit combinator, you will be
greeted during configuration by a message like this: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: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()
. -
Remove
nat-script.sh
from the scripts directory, to be available
as an external script.
Improved support for `xl` config files
- Xen: improve the .xl file generation. We now have
name.xl
: this has sensible defaults for everything including the
network bridges and should "just work" if used on the build boxname.xl.in
: this has all the settings needed to boot (e.g. presence of
block and network devices) but all the environmental dependencies are
represented by easily-substitutable variables. This file is intended for
production use: simply replace the variables for the paths, bridges, memory
sizes etc. and runxl create
as before.
Better ARP and tar-formatted block devices
- Better ARP support. This needs
mirage-tcpip.2.6.0
(#419, by @yomimono)- [mirage-types] Remove
V1.IPV4.input_arp
- [mirage-types] Expose
V1.ARP
andV1_LWT.ARP
- Expose a
Mirage.arp
combinator
- [mirage-types] Remove
- Provide noop configuration for default_time (#435, by @yomimono)
- Add
Mirage.archive
andMirage.archive_of_files
to support attaching files
via a read-only tar-formatted BLOCK (#432, by @djs55) - Add a .merlin file (#428, by @Drup)
Make FS.page_aligned_buffer less abstract in mirage-types
- [mirage-types] Expose
V1_LWT.FS.page_aligned_buffer = Cstruct.t
TLS release
-
Change the type of the
Mirage.http_server
combinator. The first argument
(the conduit server configuration) is removed and should now be provided
at compile-time inunikernel.ml
instead of configuration-time in
config.ml
:(* [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 ())
-
Change the type of the
Mirage.conduit_direct
combinator.
Previously, it took an optionalvchan
implementation, an optional
tls
immplementation and an optionalstackv4
implemenation. Now,
it simply takes astackv4
implementation and a boolean to enable
or disable thetls
stack. Users who want to continue to use
vchan
withconduit
should now use theVchan
functors inside
unikernel.ml
instead of the combinators inconfig.ml
. To
enable the TLS stack:(* [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
-
[types] Remove
V1.ENTROPY
andV1_LWT.ENTROPY
. The entropy is now
handled directly bynocrypto.0.4.0
and the mirage-tool is only responsible to
call theNocrypto_entropy_{mode}.initialize
function. -
Remove
Mirage.vchan
,Mirage.vchan_localhost
,Mirage.vchan_xen
and
Mirage.vchan_default
. Vchan users need to adapt their code to directly
use theVchan
functors instead of relying on the combinators. -
Remove
Mirage.conduit_client
andMirage.conduit_server
types. -
Fix misleading "Compiling for target" messages in
mirage build
(#408 by @lnmx) -
Add
--no-depext
to disable the automatic installation of opam depexts (#402) -
Support
@name/file
findlib's extended name syntax inxen_linkopts
fields.
@name
is expanded to%{lib}%/name
-
Modernize the Travis CI scripts