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
- hide most symbols using
- Improve modularity
- Driver Profiles
- support driver profiles - ffb91b1
- App-specific kernel
- support app version script - d19ccb1
- Enhance networking stack
- Aarch64 enhancements
- Improve building and running ZFS images
- New syscalls
- Netlink support
- VFS improvements
- Sysfs improvements
- add new OSv specific pseudo file
/sys/osv/memory/linear_maps
- 2847b2a
- add new OSv specific pseudo file
- Libc improvements
- 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
- New apps/runtimes supported
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