Skip to content
tzach edited this page Nov 2, 2014 · 5 revisions

We are pleased to announce the release of OSv 0.13 Alpha Release. Some of the noteworthy new features and improvements below.

New OSv Virtual Appliances

  • New applications are validated on OSv each month, some of the latest are NodeJS and MySQL 5.6.

This mean you can now run any NodeJS application on top of OSv for a minimal OS+runtime solution. See a simple example here. NodeJS is available as Capstan base image.

  • New example of using New Relic agent with a Java app here

REST API

We are continuously extending REST API coverage Latest additions are:

  • a new reboot API, os/reboot
  • ifconfig to return MAC address, network/ifconfig

Up to date API spec is here

New CLI

Starting from this release the Lua CLI is becoming the default in our stand alone image. The new CLI can run either on OSv VM (for local VM) or externally (for both local and cloud deployment). On both cases, the CLI communicate with OSv VM over REST API and is subjected to its security (like SSL).

Running external CLI have the following advantage:

  • No need to build the CLI into the image in advance
  • Using the CLI in combination with your familiar host tools. For example, ls is a guest tool, grep is a host tool:
./cli --api=http://192.168.122.89:8000 -- ls -l | grep so

Better tracing

Backtrace data generated by the OSv tracing and profiling tools now include symbol information on Java JIT code as well as exported dynamic library functions.

Get the new release

Images of the new release are available at osv.io/downloads and using capstan search

EC2 community AMI are available here

Full List of contributions

Amnon Heiman (11):
      Http Server: List all envinronment variable
      Http server: Adds reboot API
      Http server: ifconfig to return MAC address
      Http server: List all fs API
      Http Server: Handling of a type conversion in complex types
      Http Server: No need to search for question mark in the path
      Swagger API: clean the API to alligned to 1.2
      Swagger Definition file: Allign to java swagger-codegen
      Change permission on import-to-nss.sh script
      routecache fails when the cache is full
      Http Server: jolokia API should return 404 when there is no jvm

Asias He (9):
      Revert "Revert "epoll: fix up lock ordering issues""
      epoll: Do not remove _file map twice
      epoll: Get rid of registered_epoll
      poll: Remove poll_wake_count
      epoll: Drop leftover comments
      epoll: Reduce lock contetion in epoll_file::wake
      epoll: Do not search again in EPOLLONESHOT case
      epoll: Update comments in epoll::wait
      epoll: Fix clearing evt.events in EPOLLONESHOT case

Avi Kivity (5):
      Update boost to version 1.54
      Update misc.bin for boost-regex
      setup.py: add ncurses for the CLI
      setup.py: require libstdc++-static
      build: default to external environment for cross-builds

Boqun Feng (1):
      libedit: pass CFLAGS and LDFLAGS to configure

Calle Wilund (14):
      scripts/trace.py: Transparent dumpfile/tracefile usage + extended symbol resolution (if avail)
      java: Mechanism to auto-load resident JVMTI agents iff included in image
      trace: Add callback registry for trace symbol resolution
      modules/josvsym: Optional module to add JVM JIT symbol resolution to trace dumps
      Tracedump: Add public library symbols (exports) to dump symbol table
      Jolokia: Ensure all requests are run with context classloader set
      Httpserver: http headers should be treated case-insensitive
      Httpserver: HTTP body request content should not be dependent on "Content-Type"
      Httpserver: Do not pick up empty string as "allowed domain" for CORS
      Httpserver test: Don't kill OSv instance if running in "connect mode"
      Httpserver tests: Trace REST API tests
      Httpserver tests: Jolokia REST API tests
      Add weak symbols for __strtol_internal (etc)
      Run DT_INIT/DT_FINI iff present in libs.

Claudio Fontana (14):
      build.mk: replace kernel base include file
      aarch64: gic: set target mask to zero for the uniproc
      build.mk: remove unrelated change creep
      aarch64: dtb: read amount of memory from device tree
      aarch64: dtb: better cmdline handling
      aarch64: dtb: get the base address of pl011 from dtb
      build.mk: fix parallel build with libtools, route
      aarch64: loader.ld: fix ELF initial program counter offset
      aarch64: arm-clock: get the timer interrupt from dtb
      aarch64: arch-setup: linear map uart using base addr
      aarch64: arch-setup: get gic address from dtb
      arch-dtb: cascading props should ignore current node
      virtio: assert on PCI configuration failure
      virtio: move functionality out of assert expression

David Halls (5):
      libc: Add more functions needed by Node.js
      linux: Add system calls required by Node.js
      libc: open64_2
      libc: Add more _chk functions
      libc: Stdio-based syslog

Dmitry Fleytman (4):
      routecache: initialize route cache early
      release-ec2: mark created AMIs as permanent
      scripts: introduce EC2 garbage collector script
      setup.py: install p11-kit package

Glauber Costa (21):
      implement reboot call
      libc: missing __isnanf
      pthread: implement missing scope functions
      libc: implement ftime.c
      libc: import getsrvbyname from musl
      actually implement umask
      cpiod: respect original mode of files
      cpiod: fix broken build
      utimensat: fix access check
      tst-fpu: change debug to printf
      eventfd2: provide it as an alias for eventfd
      musl: import floating point rounding and exceptions
      save fpu state/control registers on every context switch
      fpu: enhance test for FPU
      memcpy: make small_memcpy go to larger numbers
      musl: bring in crypt functions
      loader: prepare commands later
      loader: set an environment variable with the amount of cpus we have
      loader: support environment variables in command line
      fs: fix namei lookup
      tests: enhance tst-stat

Gleb Natapov (8):
      initialize FPU before starting a new thread
      Change vma_list_mutex from mutex to rwlock
      Drop write_lock while retrieving ARC buffer
      mmu: flush tlb lazily for cpus that are running system threads
      disable jvm balloon
      provide correct iterator to std::copy_if in flush_tlb_all()
      sched: reduce number of wakeup IPIs
      remove prototype of non existing function

Haifeng Gao (2):
      tests:remove unused code in misc-timeslice.cc
      select: add exceptfds for poll request

Nadav Har'El (35):
      sched: add tracepoint for wakeup IPIs
      sched: add tracepoint for yield
      sched: add tracepoint for rescheduling
      build.mk: fix parallel build with libtools
      reboot() - remove redundant "extern C"
      osv::reboot(): don't halt on failure
      top.py: fix no-cpu case
      top.py: add "-s" option for context-switch statistics
      sched: separate thread statistics
      sched: per-thread switch statistics
      top.py: add "-s" option for context-switch statistics
      top.py: make number of lines a parameter
      top.py: remove extra newline
      top.py: add migration counts
      top.py: add per-thread preemption statistics
      top.py: rewrite to make it easier to add and configure columns
      upload_manifest.py: fix python3 support
      upload_manifest.py: Fix crash when files have non-ascii names
      remove unneeded includes of <cxxabi.h>
      <osv/demangle.hh> - add missing include
      execinfo: implement backtrace_symbols*
      Another osv::demangle() variant
      setup.py: add "wget" as a requirement for Fedora
      doxygen: add include strip path
      demangle: add a "demangler" class
      sched: allow sched::thread::sleep() in a shared object
      libc: implement drand48 et al.
      Always show stubbing.hh's messages
      libc: fix *rand48 bug
      queue-mpsc: fix comments
      libc: take rand() and rand_r() from musl
      elf: function for finding shared-object containing an address
      Fix thread_local support on recent gcc
      test-pipe.cc: make it run on Linux as well
      poll: generate POLLERR even if no events requested

Or Cohen (45):
      cli: Created context module
      cli: Add option to choose API address
      cli: No print from formatting utilities
      cli: Add API renderer for response class 'Threads'
      cli: Ad-hoc command execution
      cli: Properly parse string command line
      cli: Refactor function names for consisitency
      cli: Improve ls command
      cli: Fix table format padding
      cli: Remove alt_getopt and use stdlib's OptParse
      cli: Override default --help handler
      cli: Separate URL constructing code
      cli: Add testing module and test command function
      cli: Add -T,--test flag to test commands
      cli: Enable mocking of OSv API for testing
      cli: Add test for echo command
      cli: Add test for dmesg
      cli: Add test for cat
      cli: Add test for cd
      cli: Add test for date
      cli: Add test for df
      cli: Add test for free
      cli: Add test for mkdir
      cli: Add test for rm
      cli: Add test for ls
      Lua: Don't parallel LuaRocks installations
      cli: top.py CLI replacement
      cli: Fix, refactor top.lua
      cli: Small fixes in lib/osv_api
      cli: Various fixes and improvements to osv command
      cli: Rename osv command to api
      cli: Fix test for ls
      cli: Move command_filename to util
      cli: Add help command
      cli: Fix relative path in 'rm' command
      cli: Fix error output
      cli: Fix df error message when mount not found
      cli: Fix -h causing shell to terminate
      cli: Fix 'api' working with remaning args
      cli: Add help where missing in commands
      cli: Add cooperative interrupt for ^C
      cli: Use cli_interrupt() in top
      cli: Enable non-200 replies in osv_mock_request
      cli: Add tests for non-200 API responses
      gitignore for httpserver and tests modules

Pekka Enberg (35):
      mgmt: update to latest
      Revert "top.py: add "-s" option for context-switch statistics"
      libc: Add missing syslog.c
      apps: bump up to latest version
      Add Node to Capstan release images
      vfs: Move __open_2() function to vfs/main.cc
      mgmt: bump up to latest
      images/default: Switch to new CLI by default
      Instruct people to use scripts/setup.py for Fedora prerequisites
      scripts/setup.py: Add 'unzip' to prerequisites
      apps: update to latest
      libc: Fix missing in6addr_loopback
      apps: update to latest
      httpserver/osv-gui: update to latest
      cloud-init: Cassandra configuration module
      cloud-init: External and internal IP accessors
      scripts/ec2-simulator: Public IP address
      cloud-init: External and internal IPs templating
      ec2-simulator: EC2 availability zone
      cloud-init: Add address resolution to HTTP client
      scripts/ec2-simulator: Make default launch index zero
      cloud-init: Add launch index, reservation ID, and hostname to data source
      cloud-init: JSON support
      cloud-init: DataStax reflector support for Cassandra
      httpserver/osv-gui: update to latest
      httpserver/osv-gui: update to latest
      apps: update to latest
      cloud-init/cassandra: Use debug() for logging
      cloud-init: Remove dead code
      cloud-init/cassandra: Fix logging printout
      apps: update to latest
      apps: update to latest
      apps: update to latest
      Revert "vfs/zfs: remove per-file lock enforcement for ZFS read/write ops"
      apps: update to latest

Raphael S. Carvalho (7):
      tests: misc-concurrent-io: refactor code and add new tests
      gdb: osv zfs: add zfs prefetch stats
      fs: add __open_2 function
      zfs: update zfs_write to check for maximum allowed offset
      vfs: fix comment describing locking in get_arcbuf
      vfs: fix sys_open error handling
      zfs: return failure when O_DIRECT is requested

Takuya ASADA (2):
      vmxnet3: initialize buf array to prevent assertion error on reboot
      cli: Ignore empty line

Tomasz Grabiec (22):
      net: fix page fault in route_cache::lookup() when no route is found
      trace: make 'status' command print time ranges for each CPU
      trace: add sched_idle/sched_idle_ret tracepoints
      trace: add prof-idle command
      modules: introduce require_running()
      cli: require httpserver to be running
      bsd: avoid space in thread name
      trace: fix formatting of per-CPU time ranges
      trace: introduce 'wakeup-latency' command
      sched: add sched_load() tracepoint
      trace: introduce 'cpu-load' command
      trace: make symbol resolution more efficient
      virtio: move virtio_kicked_event_idx tracepoint
      virtio: remove unimplemented function
      virtio: fix typos
      httpserver: fix command line arguments
      build: use the host's build environment by default
      java: add josvsym by default
      cli: set TCP_NODELAY for HTTP request socket
      libc: define __strtok_r
      runtime: add stub for sysctl()
      modules/certs: fix nss import error

Tzach Livyatan (1):
      Add patch to Fedora prerequisite packages

Vlad Zolotarov (13):
      libc: added pthread_rwlockattr_destroy()/init() emtpy wrappers.
      net: moved struct if_data into a separate file
      net: Added wakeup statistics counters to if_data struct
      virtio::net: added wakeup statistics
      netfront: Added the missing statistics counters
      netfront: added ifnet->if_getinfo callback
      vmxnet3: Collect wakeup statistics
      vmxnet3: Added an rx_bh_wakeups statistics counter
      httpserver: added wakeup statistics to ifconfig interface
      virtio::net: Improve the Rx refill policy
      virtio::vring: make a refill condition less agressive
      Tx-no-IPI: initial commit
      percpu_xmit: prevent a Tx worker thread from running endlessly on a single CPU

William Dauchy (21):
      setup.py: fixing typo in Ubuntu packages list
      setup.py: adding base support for debian
      scripts: clean leading whitespaces in python scripts
      scripts: remove unused import
      scripts: fix indentation for ec2-gc script
      scripts: fixing spaces for ec2-gc script
      scripts: unify strings in ec2-gc
      scripts: reorder imports and main for ec2-gc
      scripts: replace old-style class for ec2-gc
      scripts: move global variable used in main only
      scripts: clean spaces behavior to follow a bit of pep8
      scripts: clean brackets in run.py
      scripts: no space allowed around keyword argument assignment
      scripts: unnecessary semicolon
      scripts: unnecessary parens after 'if' keyword
      scripts: except import error for stringIO
      scripts: remove all unnecessary semicolon
      scripts: remove all unnecessary parens after 'if' keyword
      scripts: fix all bad-indentation (spaces)
      scripts, modules: massive cleaning of unused import
      modules: BaseException is not meant to be directly inherited

Zifei Tong (2):
      build: do not use 'private' in build.mk
      scripts: use items() instead of iteritems()
Clone this wiki locally