Skip to content

Release 0.56.0 "Nightingale"

Compare
Choose a tag to compare
@wkozaczuk wkozaczuk released this 19 Jul 04:28
· 438 commits to master since this release

This new release brings new modern version of musl (1.1.24), greatly improved support of aarch64 architecture and many improvements of Virtio-FS including DAX window support to speed-up read I/O.

Highlights

  • Musl
    • Upgraded from 0.9.12 to 1.1.24
    • Added new Bionic unit tests
  • AArch64
    • Added Cadence UART driver
    • Added support to compile kernel natively on aarch64 host
    • Added support to cross-compile kernel on x64 Ubuntu and CentOS 7
    • Added support to build modules
    • Implemented mmio serial console for Firecracker
    • Added floating-point support
    • Supports ROFS
    • Greatly improved debugging
    • Fixed debug build which involved implementing context switch logic in assembly
    • Got most unit tests to pass
    • Added support of static TLS (Thread Local Storage)
    • Implemented PL031 driver
    • Added support of Virtio-FS
    • Improved SMP support (#vCPUs >= 2)
    • Tested on QEMU in TCG mode (full emulation)
    • Tested on QEMU and Firecracker with KVM on real ARM hardware - Raspberry PI 4 and Odroid N2 Plus
    • Tested many new apps:
      • nginx
      • rust examples
      • java 11
      • graalvm
      • python
      • iperf
      • ffmpeg
      • node
      • REST cli app
      • lighttpd
  • Virtio-FS
    • Boots application from virtio-fs
    • Implemented DAX
    • Implemented readdir
  • Added support to build with GCC 10 and 11
  • VFS
    • Added mkdirat
    • Added statx
    • Added minimal unlinkat
  • Hypervisors
  • Apps/runtimes
    • Latest golang (1.15.x)
    • nginx from host

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
  • Fotis Xenakis for further improving Virtio-FS support (most notably DAX window)
  • Stewart Hildebrand for making OSv boot on LYNX Secure hypervisor and fixing many AAarch64-related bugs
  • Waldemar Kozaczuk for contributing most patches

Commits by Author

David Smith (1):
David Woodhouse (1):
Fotis Xenakis (29):
Inacio Klassmann (1):
Matthew Kenigsberg (1):
Nadav Har'El (23):
Punit Agrawal (3):
Robin Gögge (1):
Samuel Laberge (3):
Shawn Barber (1):
Stewart Hildebrand (19):
Waldemar Kozaczuk (201):

Closed Issues

  • #1148 vfs: missing statx
  • #1147 futex: missing implementation of FUTEX_WAIT_BITSET
  • #1146 acpi: detect the root table pointer using the address field rsdp_paddr passed during PVH boot
  • #1144 Build on Fedora 34
  • #1142 [firecracker][aarch64] This code only works correctly for OSV_KERNEL_VM_SHIFT = 0x40000000 or 0
  • #1134 aarch64: the do_main_thread hangs in osv::rcu_flush() in SMP mode
  • #1133 fixed NameError: name 'file' is not defined
  • #1132 aarch64: unmask interrupts on non-primary cores
  • #1130 aarch64: tst-threadcomplete.cc hangs most of the time with 2 vCPUs or more
  • #1129 aarch64: support LSE instructions
  • #1127 aarch64: some unit tests occasionally hang when running on QEMU in emulated mode (TCG)
  • #1126 aarch64: does not build on Fedora 31
  • #1125 aarch64: does not build on Ubuntu 20.04/10
  • #1124 aarch64: kernel built in debug mode crashes with page faults
  • #1123 aarch64: early boot hangs sometimes in SMP mode (#vCPUs >=2)
  • #1122 aarch64: TLS kernel variables incorrectly accessed by applications
  • #1121 aarch64: tst-pin.cc crashes with cpus >=2
  • #1120 aarch64: boot fails with debug build due to TLS assert
  • #1117 aarch64: virtio::register_mmio_devices() sometimes page faults on real hardware like RockPro64 or Odroid
  • #1115 Boot failure in Fedora 33
  • #1114 tst-stdio-rofs fails in x86_64 too
  • #1113 corrupt ELF notes in loader.elf generated on Fedora 33 causes PVH boot failure
  • #1112 arch_init_early_console crashes when kernel built with certain version of gcc
  • #1111 x64: Parse X2APIC CPU definitions in MADT table
  • #1109 Make getpid() return non-zero number
  • #1107 scripts: Update script to download RPM packages
  • #1106 aarch64: enhance main makefile to support building from host for aarch64
  • #1105 aarch64: enhance build system to support building aarch64 versions of modules and apps
  • #1104 Identify and reject executables not matching kernel machine (x64, aarch64)
  • #1103 arm64: Unable to build using instructions
  • #1101 aarch64: support static TLS (Thread Local Storage)
  • #1100 aarch64: sometimes triggers a synchronous exception of type IL (Instruction Length) on arm64 native host
  • #1099 x86_64 build error
  • #1097 Clean fails
  • #1095 Unable to read very large file in C++
  • #1093 aarch64: OSv crashes frequently during power-off process with ROFS
  • #1092 aarch64: hangs while booting on KVM with #vCPUs >= 2
  • #1091 aarch64: bugs in arm-clock
  • #1090 aarch64: broken memmove
  • #1086 scripts: fix setup.py for Ubuntu versions
  • #1085 scripts: setup.py broken for Ubuntu versions < 19.10
  • #1084 Build fails to upload image on Fedora
  • #1083 Assembler warnings in build on Fedora 32
  • #1062 Support read-only subset of Virtio-FS file system
  • #1047 Provide limited implementation of the tgkill syscall needed by Golang PIE apps
  • #1003 gdb did not know about "osv syms" command.
  • #991 aarch64 system call numbers are probably wrong
  • #922 Can't run osv-memcached in osv
  • #916 scripts/loader.py is not python3 compatible
  • #895 NFS Makefile cleanups
  • #813 mount-fs.so should gracefully handle the case of missing filesystem library
  • #796 JVM ballooning is disabled
  • #786 Add Mono (MITized) or CoreRT to OSV
  • #760 syscall set_mempolicy missing
  • #752 Sigar and (G)LibC
  • #747 Need sigsuspend and openat64 support to run Nginx in OSv
  • #717 OSv build on ARM processor
  • #687 Inconsistent mix of build_env = host / external
  • #675 "python" interpreter in scripts
  • #661 vnode v_mode = 0100444, even though ls -al says different
  • #648 When not using AWS default instance the script release-ec2.py will fail
  • #646 Read-only file system
  • #626 Added java "wrapper" module
  • #619 external/x64: "make build_env=external" fails
  • #544 Need to implement "pthread_setcancell_state"
  • #524 Fault when exiting the internal cli
  • #506 major() and friends macros are not Linux compatible
  • #504 Cassandra gets stuck when running ycsb workload-C
  • #498 build: failure because of old file modules/tests/usr.manifest
  • #455 Augment tracepoint backtrace with Java backtrace
  • #404 API: Use the swagger validator - to verify our swagger file is compatible with the spec
  • #385 JSON friendly value for processor features in the RESTful API
  • #379 Lost of network on GCE
  • #312 New performance regression in ctxsw micro-benchmark
  • #212 Allow running a statically-compiled Linux executable
  • #201 Intel MPX support for buffer overflow detection
  • #191 run "git submodule update --init" automatically
  • #189 Block IO tracing and visualization
  • #164 Our clock, even osv::clock::uptime, is not really monotonic
  • #151 fix miscompile with ld.gold
  • #102 Hang in tlb_flush()
  • #90 Support per-thread standard input/output
  • #84 per-module search path
  • #77 Integrate Apache Portable Runtime native library with OSv
  • #61 Hook the JVM dtrace to OSv shell
  • #59 Investigate EC2 network disconnects
  • #47 dlopen() and program::add_object() needs reference counting
  • #27 Integrate VisualVM support for JVM