Skip to content

Release 0.57.0 "Magpie"

Latest
Compare
Choose a tag to compare
@wkozaczuk wkozaczuk released this 20 Dec 12:20
· 238 commits to master since this release

Highlights

This new release brings many new and exciting features and improvements including:

  • New build mode to hide the non-glibc symbols and libstdc++
  • ZFS code extracted out of the kernel in form of a dynamically linked library libsolaris.so
  • Build mode intended to tailor the kernel to a set of specific device drivers - driver profiles
  • Mechanism to build a version of the kernel with a subset of glibc symbols needed to support a specific application
  • Experimental lazy stack support
  • Major improvements to building and running ZFS images
  • Major improvements to the aarch64 port like dedicated exception stack and support to handle system calls and signals
  • Support new system calls
  • Support the SO_REUSE_PORT socket option
  • Minimal rnetlink support
  • Various VFS enhancements

Enhancements and Improvements in Detail

  • Hide most symbols and standard C++ library
    • hide most symbols using -fvisibility=hidden and expose the public ones using (__visibility__("default")) - 2df8652, 317d259
    • add lists of exported symbols
    • add option to build kernel with most symbols hidden - af2d371
    • enable garbage collection of code and data when hiding symbols - 730fd82
  • Improve modularity
    • extract ZFS code as external dynamic library libsolaris.so - d7a6274
    • httpserver-monitoring-api: stop using kernel internal C++ API - 891bfcd
    • add new C-wrappers to expose the module API - 182499c
  • Driver Profiles
    • support driver profiles - ffb91b1
  • App-specific kernel
    • support app version script - d19ccb1
  • Enhance networking stack
    • socket: implement the Linux flavor of SO_REUSE_PORT option - 985d4d7
    • routecache: handle the case when sent to non-loopback address - a0251df
  • Aarch64 enhancements
    • move kernel to 63rd GB of virtual memory - 850ce0e
    • handle system calls - 5666619
    • handle exceptions on dedicated stack - a6fbc36
    • force TLB flush when mprotect changes permission - fd24359
    • implement signal handler - d8d2719
    • fix zfs support - ea9cb44
  • Improve building and running ZFS images
    • new zfs_builder to create ZFS images - f935ca1
    • vfs: support mounting ZFS from non-root partition - 9cc49b3
    • support building rofs+zfs image and second ZFS disk - f6e09c0
    • allow mounting and building on host - 6aa1053
  • New syscalls
    • add getgid, getuid, lseek and statfs - b9c3210
    • implement getcwd
    • implement getdents64 - 6716ad9
  • Netlink support
  • VFS improvements
  • Sysfs improvements
    • add new OSv specific pseudo file /sys/osv/memory/linear_maps - 2847b2a
  • Libc improvements
    • implement _dl_find_object() - dfa73ee
    • use musl implementation of getifaddrs and if_nameindex - e6ab059
    • fix bugs in if_nametoindex/if_indextoname
  • Lazy stack support
    • inline assembly to pre-fault stack - f5684d9
    • do nothing in kernel threads and on populated stack - fabacc4
    • ensure next stack page statically - 9b1e9b0
    • ensure next stack page dynamically if preemption enabled - 7c9c4c3
    • ensure next stack page conditionally if interrupts and preemption enabled - 5250512
    • prevent deadlock when taking vma_list_mutex for write - 9fb4574
    • activate lazy stack in pthreads - d6aacab
    • new tracepoint for stack pre-faults - c8cdbde
  • Support building on Fedora 36
  • Scripts/tooling improvements
    • support flame graphs - 2c342c5
    • lua: change build process to download artifacts from lua binaries - 05c06ba
    • trace.py: add option to show multiline backtrace - 1970fd6
  • New apps/runtimes supported
    • memory: move malloc virtual address space below 0x800000000000 - 6de9f41
    • support Java on aarch64
    • support SeaWeedFS

Acknowledgments

We want to thank all contributors to the project. But the special thanks go to:

  • Nadav Har’El for contributing and reviewing many patches and providing guidance for many others
  • Waldemar Kozaczuk for contributing most patches

Closed Issues

  • #1200 Mounting ZFS filesystem from arbitrary device and partition
  • #1198 OSv fails to build on Fedora 36
  • #1196 Proposal to change virtual memory layout
  • #1195 aarch64: crashes when enabling tracepoint sched_switch
  • #1190 Crash in the FreeBSD networking stack code caused by likely bug in reference counting logic
  • #1189 aarch64: atomic_fetchadd_int() and atomic_fetchadd_long() in machine/atomic.h sometimes yield incorrect results
  • #1188 Was trying to build and run the distributed file system called SeaWeedFS.
  • #1185 Strange application behaviour difference between host and unikernel
  • #1183 Please mention that OSv is open-source on your front page documentation
  • #1182 Please host the source code of your website on github
  • #1181 Please enable HTTPS on osv.io documentation
  • #1180 Assertion failure when reading 2048 bytes from block device
  • #1177 Test failure in tracing_smoke_test
  • #1176 Gdb "osv info threads" doesn't work on Fedora 34
  • #1175 Test failure on Fedora 34 because of gdb script failure
  • #1172 No rules to make target 'osv.vmdk'.
  • #1170 Implement Linux version of SO_REUSEPORT
  • #1166 Revamp/improve building of Lua module
  • #1165 creating temporary files takes a long time on Java 11
  • #1160 virtio: cloud-hypervisor report warnings in virtio-code
  • #1158 aarch64: tst-sampler.cc crashes sometimes in SMP mode
  • #1157 aarch64: openjdk11 crashed on OSv in JIT mode
  • #1156 aarch64: implement system call assembly instruction svc
  • #1155 aarch64: consider implementing dedicated stacks like on x64
  • #1154 aarch64: implement signal handler
  • #1153 tst-mmap.cc hangs on aarch64
  • #1152 tst-elf-permissions.cc fails on aarch64
  • #1151 tst-sigaltstack.so fails on aarch64
  • #1145 aarch64: openjdk8 crashed on OSv
  • #1135 mmap() should handle collisions with areas mapped with mmu::linear_map()
  • #1131 aarch64: ZFS image crashes due to a page fault caused by enabled access flag
  • #1119 Missing mkdirat() function and syscall
  • #1116 better handle exceptions thrown by dynamic linker
  • #1110 Modularization/"Librarization" - create toolchain to optionally build custom kernel tailored to specific hypervisor or app
  • #1096 Bugs in if_nametoindex/if_indextoname bug
  • #1087 aarch64: dynamically map kernel code in early boot
  • #1082 Build process can't find Lua libraries
  • #1068 Building a full OSv image without running it
  • #1009 Make ZFS optional as a shared library
  • #97 Be more selective on symbols exported from the kernel