Dear Solo5 user, We just cut the release of Solo5 0.8.0 which integrates several improvements and a breaking change. You can see the changelog here:
* 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, @hannes, #555) As you can see, Solo5 is able to handle Thread Local Storages now. This improvement helps us to move forward with OCaml 5, MirageOS and unikernels which require this ABI. Due to this change, the layout of Solo5 unikernels was updated and we advise users to upgrade tenders and unikernels with Solo5 0.8.0 - otherwise, your tender will inform you that the ABI version is wrong. The Muen team is also aware of such a change. We would like to thank all contributors to this release for their advice and reviews. The project is available here: https://github.com/Solo5/solo5/releases/tag/v0.8.0 Best, -- Romain Calascibetta - http://din.osau.re/
