Skip to content

Release 0.55.0 "Stork"

Compare
Choose a tag to compare
@wkozaczuk wkozaczuk released this 13 May 00:45
· 683 commits to master since this release
622947e

This new release focuses on improving documentation, build system, and testing. It also introduces Travis-based CI/CD pipeline to publish artifacts to "nightly repo". In addition, it also adds many new features/improvements:

  • preliminary virtio-fs support
  • QEMU microvm machine support
  • numerous improvements to dynamic linker including local-exec TLS
  • kernel smaller by 300 K
  • new HTTP monitoring API
  • less memory utilization with ROFS

Highlights

  • Revised existing documentation and added a new one
    • Main README
    • Dynamic Linker
    • Memory Allocation
    • Automated Testing Framework
    • Building from host guide
  • Improved build process
    • Setup Travis-based CI/CD pipeline to automatically build and publish kernel and artifacts
    • Setup process to publish OSv build docker images to docker hub
    • Cleaned up build process by eliminating the "build from externals" mode
    • Migrated python scripts to version 3
    • Removed dependency on JDK to build the kernel
  • Merged IPV6 code from Spirent into a new branch
  • Removed the dependency on the boost program options library from kernel and utility apps which made kernel smaller by 300K
  • Created Automated Testing Framework designed to run > 30 real apps, some of them under stress using ab or wrk tools.
  • Improved dynamic linker
    • Added local-exec TLS support
    • Expose musl version of libc
    • Handle RTLD_NEXT
    • Added some bionic unit tests
  • Resurrected aarch64 support
    • Simple hello world app works now on QEMU and Raspberry PI 4 with KVM enabled
    • Basic support in run.py
  • Added support of QEMU microvm machine
  • Added clock synchronization mechanism with host on KVM
  • File system improvements
    • ZFS improvements
      • Can mount and modify OSv-build drive on a host and use it back on OSv
    • NFS
      • Changed filesystem driver to be a library
    • ROFS
      • Improved memory utilization by integrating with pagecache
    • Virtio-FS
  • Added new HTTP monitoring API module

New Apps

Closed Issues

  • #352 - Thread-local storage doesn't work in PIE
  • #743 - Stop using libraries and header files from external/
  • #784 - realloc crashes with "page fault outside application"
  • #820 - Add ability to build read-only version of httpserver-api module for monitoring purposes
  • #854 - Allow non-contiguous malloc() when memory is fragmented
  • #880 - Tomcat doesn't run on openjdk8-fedora
  • #916 - scripts/loader.py is not python3 compatible
  • #918 - Importing ZFS volume fails on OSv
  • #975 - mysql cannot working with fs=ramfs
  • #976 - Fix annoying warnings while building tests
  • #980 - cpiod.so is much too big
  • #1014 - Make kernel not to use boost program_options library
  • #1015 - OSv guest's wall clock does not follow host's wall clock
  • #1040 - Boost 1.69.0 on Fedora 30 contains hidden symbols
  • #1044 - Test build with Travis CI
  • #1045 - Delay processing PT_NOTE segments until all PT_LOAD segments are mmapped
  • #1053 - httpserver should not use boost::program_options
  • #1056 - Upgrade utility scripts to Python 3
  • #1056 - Virtio-net: use large buffers when VIRTIO_NET_F_MRG_RXBUF is not negotiated
  • #1065 - When relocating do not lookup STB_LOCAL symbols by name
  • #1066 - Ignore ELF versioning table when object looks up symbols by name in itself (self-lookup)
  • #1067 - Make symbols visible to the object itself from threads created by INIT functions
  • #1070 - Running Linux apps compiled and linked against musl
  • #1073 - Bugs in itimer::work()
  • #1074 - Cannot run YCSB with Redis on OSV
  • #1077 - malloc_usable_size of malloc_large returns incorrect value
  • #1078 - Eliminate libnfs external module

Commits by Author

BassMatt (1):
Fotis Xenakis (9):
Mason Davis (1):
Matthew Pabst (1):
Nadav Har'El (11):
Waldemar Kozaczuk (158):
Wonsup Yoon (1):
Zhiting Zhu (4):
yuchenq (2):