Solo5 Versions Save

A sandboxed execution environment for unikernels

v0.8.1

1 month ago

v0.8.1 (2024-04-05)

  • Update the documentation about how to use Solo5 (@fabbing, @dinosaure, @Kensan, #558)
  • Fix few warnings about the new introduced TLS support (@greydot, #563)
  • Prevent the release if we get some errors with -Werror (@hannesm, @palainp, #565)
  • Fix the gdb support and the EFLAGS register (@greydot, @reynir, #567)
  • Fix few warnings and errors on FreeBSD 14 (@hannesm, #564)
  • Allow to pass HOSTAR and HOST_PKG_CONFIG for the NixOS support (@sternenseemann, #508)

v0.8.0

1 year ago

v0.8.0 (2023-04-25)

  • Be able to build spt, virtio, muen and xen targets on OpenBSD (@adamsteen, #544). This change does not allow us to "run" these targets on OpenBSD

  • Fix linker scripts with TLS (Thread Local Storage) sections (@palainp, @hannesm, @dinosaure, #542)

  • Export TLS symbols (@palainp, @hannesm, @dinosaure, #546) breaking change due to #542 & #546, tenders must be upgraded. Indeed, solo5.0.7.* tenders will not be able to load correctly unikernels compiled with solo5.0.8.0. The internal ABI version for solo5-hvt/solo5-spt was upgraded accordingly.

    This version implements Thread Local Storage. The user can initialise a TLS block with solo5_tls_init on a pointer to solo5_tls_size() free bytes. Then, the user is able to set the tp (Thread Pointer) pointer via solo5_set_tls_base(solo5_tls_tp_offset(tls_block)). More details are available into solo5.h.

    Note: this change does not allow a Solo5 unikernel to use multiple cores! It only provides an API required by OCaml 5 / pthread to launch, at most, one thread.

  • Fix tests reported by NixOS (@greydot, @ehmry, #547)

  • Split out the time.c implementation between Muen and HVT (@dinosaure, @Kensan, #552)

  • User hypercall instead of TSC-based clock when the user asks for the wall-clock (@dinosaure, @reynir, #549, #550)

    Note: only hvt & virtio are updated to avoid a clock drift on the wall-clock. Indeed, when the unikernel is suspended, the wall-clock is not updated. Muen & Xen still use a TSC-based wall-clock. The spt target was already in sync with the host's wall-clock.

  • Improve the muen clock (@Kensan, #553)

  • Fix the .bss section according to #542 & #546. The .bss section is tagged with PT_LOAD. Tenders are available to load this section properly. (@Kensan, @dinosaure, #551, #554)

  • Fix the cross-compilation of Solo5 for aarch64 (@dinosaure, @palainp, @hannesm, #555)

  • Increase the Muen ABI (2 to 3) due to TLS changes (@Kensan, #557)

  • Support lifecycle management for Muen (@Kensan, #557) The user is able to configure automatic restarting of unikernels that invokes solo5_ext()

  • Fix the test_fpu test & ensure the alignment of variables (@Kensan, #557)

v0.7.5

1 year ago

v0.7.5 (2022-12-07)

  • Since MirageOS moved from PV mode to PVH on Xen, and thus replacing Mini-OS with solo5, there was an issue in the solo5 code which failed to properly account the already written bytes on the console. This only occurs if the output to be performed does not fit in a single output buffer (2048 bytes on Xen).

    The code in question set the number of bytes written to the last written count written = output_some(buf), instead of increasing the written count written += output_some(buf).

    Thanks to Krzysztof Burghardt, Pierre Alain, Thomas Leonard & Hannes Mehnert for the issue, review and proposal. The fix is available here: #538.

v0.7.4

1 year ago

v0.7.4 (2022-11-04)

  • Mark .text execute-only, currently only on OpenBSD (@adamsteen, #450)
  • Allow all log levels to be passed as command line parameter to the tender (added --solo5:error, --solo5:warn, --solo5:info) (@reynir, #532)
  • Add tender command line argument --block-sector-size:=int. This allows to specify the desired block sector size. The default if not provided is 512, the same that was used before (@reynir, #528, addresses partially #325)
  • Check that the file passed as block device is aligned to the block sector size (@reynir, #527)
  • Use realpath to determine toolchain paths - allowing tools being symlinks as they are on NixOS (@greydot, #526)
  • Allow slack in sleep in test_time (@greydot, #525, #535)
  • Fix build when using git worktree (.git being a file) (@reynir, #531)
  • Fix tests on OpenBSD 7.2 (@dinosaure, #535)
  • Add x-ci-failures on our OPAM files about CentOS 7 (@dinosaure, #535)

v0.7.3

1 year ago

v0.7.3 (2022-07-20)

  • Fix broken API doc link in the README.md (@YuseiIto, #521)
  • Be more informative when tap_attach fails (@reynir, #522)
  • Ignore up variable to avoid compiler warning on FreeBSD (@hannesm, #520)

v0.7.2

1 year ago
  • Suppress gcc array bounds warning in test_zeropage (@felixmoebius, #515)
  • Xen: retrieve mem_size uniformly via XENMEM_memory_map hypercall. Previously, the memory map was extracted from the HVM start info (if available and booting directly via PVH), or multiboot info (if booting via multiboot). The fallback for direct PVH booting was the XENMEM_memory_map hypercall (which retrieves an E820 memory map). This lead to three distinct paths, with no fallback for the memory map not being present in the multiboot info. With QubesOS 4.1 (Xen 4.14), this didn't work anymore (it worked with QubesOS 4.0 (Xen 4.8)). Now, there is a single path of the code, which uses the hypercall. Since this is only executed once at startup, the overhead is negligible (@hannesm, #516, review and discussions with @marmarek @xaki23 @palainp)
  • Xen: do not skip first token of command line when booted via multiboot. This code originated from the virtio binding, but when booting on xen via multiboot there is no additional token. (@hannesm, #517, review and testing with @palainp @xaki23)

v0.7.1

2 years ago

v0.7.1 (2022-03-14)

  • Use note.not_openbsd instead of note.not-openbsd as section name in solo5-stubs.ld to be compatible with GNU ld 2.37 on e.g. Arch Linux, Fedora 35, Alpine 3.15 (@TheLortex, #509)
  • Fix opam-release.sh: the second variant is -cross-aarch64 (@dinosaure, #511)
  • elftool: support manifests read from stdin or written to stdout using the - character (@ehmry, #510)
  • Fix the compilation of test_tls on ppc64 architecture (@dinosaure, @hannesm, #514)

v0.7.0

2 years ago

v0.7.0 (2021-12-31)

  • Remove Genode bindings (#494, #506) The Genode bindings becomes incompatible with the upcoming LLVM/Clang based toolchain. It can be reinstated in the future if there is interest.

    GENODE_ABI_TARGET is not removed to disallow to re-use it for another purpose than the Genode binding.

  • New packaging, toolchains, cross-compilation (#494, #506)

    • Make Solo5 installable system-wide and be able to packaging Solo5 for the BSDs and Linux distributions
    • Replace Solo5-internal use of pkg-config by generated toolchain wrappers installed as "PREFIX/bin/ARCH-solo5-none-static-{cc,ld,objcopy}"
    • Solo5 bindings (ABIs) are co-installable under the same PREFIX
    • OPAM packaging is simplified (only one package solo5 remains)
    • Experimental: support for the cross-compilation (specially aarch64)
  • virtio: FreeBSD requires the grub-bhyve command (#506)

  • virtio: FreeBSD: wait a bit for cat to create the nmdm device (#506)

  • OpenBSD: all supported releases of OpenBSD use ld.ldd (#495, #506)

  • Be able to release our cross toolchain via our opam-release.sh script (#504)

NOTE: pkg-config still is required by Solo5 to get flags from libseccomp.

v0.6.9

2 years ago

0.6.9 (2021-12-13)

  • virtio: add missing reset for net and blk devices (#491)
  • CI: disable genode (#493) Genode bindings are failing to build on Debian testing / GCC 10.x.
  • Avoid "-" in section names (in the ld scripts) since some GNU ld versions reject that (alpine 3.15, Fefora 35) (#502)
  • On OpenBSD, OpenBSD 6.7 is not supported anymore, all support releases use ld.lld (#495)

v0.6.8

3 years ago

0.6.8 (2020-12-17)

Bug fixes:

  • xen: Fix corrupted console output by correctly waiting for xenconsoled to consume all data. (#490)
  • hvt: Free kvm_cpuid after use. (#485)

New features:

  • xen: Add multiboot support. (#482)

Acknowledgements:

  • Thanks to Marek Marczykowski-Górecki (@marmarek) for implementing multiboot support for the Xen target.