Release 0.53.0 "Firebird"
This is the next release of OSv since the previous one 0.52.0 was crafted. Unlike previous one this release does deliver new exciting feature - it supports running OSv on new lightweight hypervisor firecracker which makes possible to boot OSv Read-Only FS image in as low as 5ms per bootchart. We hope next release will happen before end of second quarter of 2019.
Features Highlights
- Enhanced OSv to run on firecracker (for details please see here)
- OSv can boot as vmlinux (64-bit ELF - please see loader.elf attached)
- OSv does not require ACPI to run
- Added support of virtio mmio devices
- Added support of both legacy and modern virtio 1.0 PCI devices (for details please see here)
- Further reduced minimal memory to run OSv to 18MB (25% reduction)
- Fixed critical bug affecting apps doing heavy floating point computations like ffmpeg (see issues #1019, #1020, #1010, #1018, #536)
- Implemented some missing syscalls to better support Golang apps
- Enhanced Python 3 app to support including modules
- Upgraded tomcat app to version 9
- Added support of graalvm apps
Specifics
- Refactored virtio layer to support legacy and modern PCI and mmio devices
- Implemented modern virtio PCI device
- Enhanced OSv to boot without ACPI present
- Enhanced OSv to discover SMP information by reading MP table if ACPI is not present
- Made OSv bootable as a vmlinux 64-bit ELF
- Added boot option to disable PCI enumeration
- Added virtio mmio implementation
- Made httpserver-api configuration file configurable
- Enhanced ELF dynamic loader to support position dependent shared libraries (Graal VM)
- Deleted “assigned virtio driver"
- Made memory allocation more efficient
- Handles small memory allocations ( < 16 bytes) more space efficiently
- Implemented more space-efficient early memory allocation scheme (reduced memory utilization by 6MB - see #270)
Closed issues
- #1030 - Test failure with Fedora Java 8
- #1029 - Debug build fails because tracepoint sections are discarded
- #1028 - scripts/firecracker.py doesn't pass input to OSv
- #1020 - Maybe need to reset fpu status word on context switch
- #1019 - Maybe need to reset fpu state after saving it
- #1018 - OSv crashes sporadically with page fault when transcoding video with ffmpeg
- #1017 - upload_manifest.py opens a port to the world, and always the same port
- #1011 - Make allocations < 16 bytes more space efficient
- #1010 - Memory access fault when OSv pounded by periodic /os/threads REST call
- #1006 - Missing function fcntl64
- #1004 - Handle (either support correctly, or forbid) non-fPIC shared objects
- #956 - Missing readlinkat()
- #536 - Cassandra with CLI crash with cassandra stress
- #270 - Wasted memory in early malloc()
List of contributors alphabetically
- Felix Yan (@felixonmars) - 1 patch
- Nadav Har'El (@nyh) - 8 patches
- Przemek Pikuła (@pshem) - 4 patches
- Waldemar Kozaczuk (@wkozaczuk )- 45 patches
- Geraldo Netto (@geraldo-netto) - 6 patches
- Vinícius Fraga (@viniciusmsfra) - 1 patch
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
Artifacts
This time we are only publishing kernel artifacts and capstan packages for Python 3 and REST API httpserver.