Releases: Solo5/solo5
v0.9.0
- Fetch
stdadomic.h
from system on FreeBSD (#574, @shym, @hannesm) - Improve documentation about NAT & deployement (#575, @panglesd, @reynir)
- Ensure reproducibility of installed objects (#576, @dinosaure)
- Allow 4GB of memory for the unikernel (#577, @mato, @reynir, @Kensan, @hannesm)
- Fix error path execution about unstable TSC from system (#578, @reynir, @hannesm)
-no-acpi
is deprecated, use-machine acpi=off
(#579, @wegank)- Fix yield on
spt
target (#582, @reynir, @Firobe) - Delete redundant check (#583, @hannesm, @PizieDust)
- Multiple net devices for
virtio
targets (#581, @ricarkol, @palainp, @reynir, @hannesm)
v0.8.1
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 theEFLAGS
register (@greydot, @reynir, #567) - Fix few warnings and errors on FreeBSD 14 (@hannesm, #564)
- Allow to pass
HOSTAR
andHOST_PKG_CONFIG
for the NixOS support (@sternenseemann, #508)
v0.8.0
v0.8.0 (2023-04-25)
-
Be able to build
spt
,virtio
,muen
andxen
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 forsolo5-hvt
/solo5-spt
was
upgraded accordingly.This version implements Thread Local Storage. The user can initialise a TLS
block withsolo5_tls_init
on a pointer tosolo5_tls_size()
free bytes.
Then, the user is able to set thetp
(Thread Pointer) pointer via
solo5_set_tls_base(solo5_tls_tp_offset(tls_block))
. More details are
available intosolo5.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. -
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. -
Fix the
.bss
section according to #542 & #546. The.bss
section is tagged
withPT_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
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
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
v0.7.2
- Suppress gcc array bounds warning in
test_zeropage
(@felixmoebius, #515) - Xen: retrieve
mem_size
uniformly viaXENMEM_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 theXENMEM_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
v0.7.1 (2022-03-14)
- Use
note.not_openbsd
instead ofnote.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
onppc64
architecture (@dinosaure,
@hannesm, #514)
v0.7.0
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
)
- Make Solo5 installable system-wide and be able to packaging Solo5 for the
-
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
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)