Genode Changelog

What's new in Genode 18.08

Aug 30, 2018
  • With Genode 18.08, we enter the third episode of our story of developing the Sculpt general-purpose OS. The release addresses four crucial concerns of general-purpose computing, namely the support of modern hardware, the ability to timely respond to the discovery of new CPU-level vulnerabilities by the means of applying microcode updates, the scalability of application workloads, and the interactive usability of the system. The latter is particularly exciting as Genode allows us to explore new user-interface paradigms to lay the power of capability-based security into the hands of the user.
  • The most prominent aspect of the current release is the framework's device-driver support, which includes the update of all Linux-based drivers to kernel version 4.16.3, a largely reworked wifi stack, the split of the USB driver into multiple components, and improved hardware compatibility of the PS/2 and network drivers. The release also introduces an experimental runtime for hosting drivers of Google's Fuchsia OS as Genode components.
  • Among the many further improvements are an extended Ada language runtime, added multi-processor support for our custom base-hw microkernel on x86, the ability to route network traffic between an arbitrary number of physical NICs, and a new way to select the networking stack of a component between lwIP and the Linux TCP/IP by a mere configuration change.

New in Genode 17.08 (Sep 4, 2017)

  • Hardware-accelerated graphics for Intel Gen-8 GPUs
  • The seL4 kernel on ARM and 64-bit x86 hardware
  • Base framework and OS-level infrastructure:
  • Simplified IOMMU handling
  • New report server for capturing reports to files
  • New runtime environment for starting components sequentially
  • Support for boot-time initialized frame buffer
  • Extended non-blocking operation of the VFS
  • Making block sessions read-only by default
  • Refined time handling
  • FatFS-based VFS plugin
  • Enhanced GUI primitives
  • C runtime
  • Libraries and applications:
  • Mesa adjustments
  • Package management
  • Platforms:
  • Genode as Xen DomU
  • Execution on bare hardware (base-hw)
  • Muen separation kernel
  • NOVA microhypervisor

New in Genode 17.05 (May 31, 2017)

  • Base framework:
  • New revision of the Genode Foundations book
  • Completed component transition to the modern API
  • Streamlining exception types
  • Assignment and trading of capability quota
  • Merged RAM and PD services of the core component
  • Explicit execution of static constructors
  • Separation of I/O signals from application-level signals
  • OS-level libraries and components:
  • Dynamic resource management and service forwarding via init
  • New API for user-level timing
  • In-band notifications in the file-system session
  • Log-based CPU-load display
  • Network-traffic monitoring
  • POSIX libc profile as shared library
  • State reporting of block-device-level components
  • Runtimes and applications:
  • Feature-completeness of VirtualBox 5 on NOVA
  • Nim programming language
  • Qt5 updated to version 5.8
  • Platforms:
  • Execution on bare hardware (base-hw)
  • Muen separation kernel update
  • Fiasco.OC kernel update
  • Tool chain:
  • GNU compiler collection (GCC) 6.3 including Ada support
  • Separated debug versions of built executables

New in Genode 13.11 (Nov 29, 2013)

  • Base framework:
  • Dynamic resource balancing
  • C++11 enabled by default
  • Improved event tracing
  • Low-level OS infrastructure:
  • Gigabit networking using the Linux TCP/IP stack
  • Improved nitpicker GUI server
  • New terminal services
  • New file-system server for hybrid Genode/Linux systems
  • New C-runtime plugin for accessing block devices
  • Device drivers:
  • Graphics and USB HID for Raspberry Pi
  • HDMI for Samsung Exynos 5
  • Applications and libraries:
  • Qt5 with support for OpenGL and QML
  • New file systems based on FUSE
  • Port of DosBox
  • Runtime environments:
  • Advanced GNU debugger features
  • ARM TrustZone support on Freescale i.MX53
  • Platforms:
  • Base-HW enabled for dynamic workloads
  • Lifetime management for kernel object on NOVA
  • Ballooning support for L4Linux running on Fiasco.OC

New in Genode 13.08 (Aug 16, 2013)

  • The release of version 13.08 marks the 5th anniversary of the Genode OS framework. We celebrate this anniversary with the addition of three major features that we have much longed for, namely the port of Qt5 to Genode, profound multi-processor support, and a light-weight event tracing framework. Additionally, the new version comes with new device drivers for SATA 3.0 and power management for the Exynos-5 SoC, improved virtualization support on NOVA on x86, updated kernels, and integrity checks for downloaded 3rd-party source code.
  • Over the course of the past five years, Genode's development was primarily motivated by adding and cultivating features to make the framework fit for as many application areas as possible. Now that we have a critical mass of features, the focus on mere functionality does not suffice anymore. The question of what Genode can do ultimately turns into the question of how well Genode can do something: How stable is a certain workload? How does networking perform? How does it scale to multi-processor systems? Because we are lacking concise answers to these kind of questions, we have to investigate.
  • When talking about stability, our recently introduced automated testing infrastructure makes us more confident than ever. Each night, over 200 automated tests are performed, covering various kernels and several hardware platforms. All those tests are publicly available in the form of so-called run scripts and are under continues development.
  • Regarding performance investigations, recently we have begun to benchmark application performance focusing on network throughput. Interestingly, our measurements reveal significant differences between the used kernels, but also shortcomings in our software stack. For example, currently we see that our version of lwIP performs poorly with gigabit networking. To thoroughly investigate such performance issues, the current version adds support for tracing the behaviour of Genode components. This will allow us to get a profound understanding of all inter-component interaction that are on the critical path for the performance of complex application-level workloads. Thanks to the Genode architecture, we could come up with a strikingly simple, yet powerful design for a tracing facility. Section Light-weight event tracing explains how it works.
  • When it comes to multi-processor scalability, we used to shy away from such inquiries because, honestly, we haven't paid much consideration to it. This view has changed by now. With the current release, we implemented the management of CPU affinities right into the heart of the framework, i.e., Genode's session concept. Additionally, we cracked a damn hard nut by enabling Genode to use multiple CPUs on the NOVA hypervisor. This kernel is by far the most advanced Open-Source microkernel for the x86 architecture. However, NOVA's MP model seemed to inherently contradict with the API design of Genode. Fortunately, we found a fairly elegant way to go forward and we're able to tame the beast. Section Enhanced multi-processor support goes into more detail.
  • Functionality-wise, we always considered the availability of Qt on Genode as a big asset. With the current release, we are happy to announce that we finally made the switch from Qt4 to Qt5. Section Qt5 available on all kernels gives insights into the challenges that we faced during porting work.
  • In addition to those highlights, the new version comes with improvements all over the place. To name a few, there are improved support for POSIX threads, updated device drivers, an updated version of the Fiasco.OC kernel and L4Linux, and new device drivers for Exynos-5. Finally, the problem of verifying the integrity of downloaded 3rd-party source codes has been addressed.

New in Genode 12.11 (Nov 30, 2012)

  • The central theme of version 12.11 of the Genode OS Framework is self-hosting Genode on Genode. With self-hosting, we understand the execution of the entire Genode build system within the Genode environment. There are two motivations for pursing this line of work. First, it is a fundamental prerequisite for the Genode developers to move towards using Genode as a day-to-day OS. Of course, this prerequisite could be realized using one of the available virtualization solutions. For example, we could run L4Linux on top of Genode on the Fiasco.OC kernel and use the Genode build system from within an L4Linux instance. However, this defeats the primary incentive behind Genode to reduce system complexity. By having both Genode and L4Linux in the picture, we would indeed increase the overall complexity in configuring, maintaining, and using the system. Therefore, we would largely prefer to remove the complex Linux user land from the picture. The second motivation is to prove that the framework and underlying base platforms are suited and stable enough for real-world use. If the system is not able to handle a workload like the build system, there is little point in arguing about the added value of having a microkernel-based system over current commodity OSes such as GNU/Linux.
  • We are happy to have reached the state where we can execute the unmodified Genode build system directly on Genode running on a microkernel. As the build system is based on GNU utilities and the GNU compiler collection, significant effort went into the glue between those tools and the Genode API. Section Building Genode on Genode provides insights into the way we achieved the goal and the current state of affairs.
  • Along with the work on bringing the build system to Genode came numerous stability improvements and optimizations all over the place, reaching from the respective kernels, over the C runtime, the file-system implementations, memory allocators, up to the actual programs the tool chain is composed of. Speaking of the tool chain, the official Genode tool chain has been updated from GCC version 4.6.1 to version 4.7.2. Thereby, all 3rd-party code packages were subjected to testing and fixing activities.
  • For running the build system, the project currently focuses on NOVA and Fiasco.OC as base platforms. However, our custom kernel platform for the ARM architecture has also received significant improvements. With added support for Freescale i.MX and Texas Instruments OMAP4, this platform proved to be very well adaptable to new SoCs whereas new cache handling brings welcome performance improvements. Furthermore, we have added experimental support for ARM TrustZone technology, which principally enables the execution of Genode in the so-called secure world of TrustZone while executing Linux in the so-called normal world.
  • As we discovered the increasing interest in using Genode as a middleware solution on Linux, we largely revisited the support for this kernel platform and discovered amazing new ways to align the concept of Genode with the mechanisms provided by the Linux kernel. Section Linux provides a summary of the new approaches taken for supporting this platform.
  • Functionality-wise, the new version introduces support for audio drivers of the Open Sound System, a new OMAP4 GPIO driver, improvements of the graphical terminal, and the initial port of an SSH client.

New in Genode 12.08 (Aug 23, 2012)

  • With Genode 12.08, the project focused on platform support. It enters the world of OMAP4-based ARM platforms, revived and vastly enhanced the support for the NOVA hypervisor, and becomes able to run directly on ARM platforms without the need for an underlying kernel.
  • The new base-hw platform is a deviation from Genode's traditional approach to complement existing kernels with user-land infrastructure. It completely leaves the separate kernel out of the picture and thereby dwarfs the base line of the trusted computing base of Genode-based systems to approximately the half. The new base platform is described in Section Genode on naked ARM hardware.
  • Speaking of base platforms, we are happy to have promoted the NOVA hypervisor to a first-class citizen among the base platforms. During the last months, this kernel underwent fundamental changes regarding its mode of development and its feature set. This prompted us to vastly improve Genode's support for this platform and leverage its unique features. If considering the use of Genode on x86-based hardware, NOVA has become a very attractive foundation. Section Embracing the NOVA Hypervisor describes the NOVA-specific changes.
  • The improvement of platform support with the current release does not entail the base platforms only but extends to profound additions of device drivers, in particular for the ARM-based OMAP4 SoC as used on the popular Pandaboard. We are proud to announce the availability of device drivers for HDMI output, SD-card, USB HID, and networking for this platform.
  • Beyond the low-level platform improvements, the new version comes with several new services, optimizations of existing components, and new ported libraries. In particular, the Noux runtime has reached a point where we can principally execute serious networking applications such as the Lynx web browser natively on Genode. Another example is the new FFAT-based file-system service, which makes persistent storage available via Genode's file-system interface. By combining this new service with existing components such as the partition service, Noux, or the file-system plugin of the libc, a lot of new application scenarios become available. Thanks to these new components, the framework has become able to perform on-target debugging via GDB running in Noux, or host the genode.org website via the lighttpd web server.

New in Genode 12.02 (Feb 28, 2012)

  • The release of Genode 12.02 marks an exciting point in the history of the project as it is the first version developed in the open rather than within the chambers of Genode Labs. Thereby, we have embraced GitHub as central facility for discussion and source-code management. This change has benefits for users and developers of the framework alike. For users, it has become possible to get hold of the latest developments using the official genodelabs/master branch and get involved with discussing the current activities. For regular Genode developers, the public Git repository replaces a former mix of public Subversion and company-internal Mercurial repositories, making life much easier. In Section Liberation of the development process, we outline the motivation behind this change and give pointers to the new resources.
  • The major new additions to the base system are a new framework API for accessing memory-mapped I/O resources, special support for using Genode as user-level component framework on Linux, and API support for the reuse of existing components in the form of sandboxed libraries. These changes are accompanied with new device-driver infrastructure such as the first version of a device driver manager and a new ACPI parser.
  • Feature-wise, the current release takes the first steps towards the goal of the Roadmap for 2012, turning Genode into a general-purpose OS ready for everyday use by its developers. According to the roadmap, we enhanced the Noux runtime with fork semantics so that we can run command-line based GNU programs such as the bash shell and coreutils unmodified and natively on various microkernels. Furthermore, the library infrastructure has been enhanced by porting and updating libraries such as Qt 4.7.4 and the MuPDF PDF rendering engine.

New in Genode 11.11 (Dec 1, 2011)

  • A Plethora of Levels of Virtualization:
  • Faithful x86 PC Virtualization enabled by the Vancouver VMM
  • Android paravirtualized
  • OS-level Virtualization using the Noux runtime environment
  • GDB debugging via application-level virtualization
  • Base framework, low-level OS infrastructure:
  • Handling CPU exceptions at user level
  • Remote access to thread state
  • Improved signaling latency
  • Optimization for large memory-mapping sizes
  • Standard C++ library
  • Terminal-session interface
  • Dynamic linker
  • Libraries and applications:
  • C runtime
  • Vancouver virtual machine monitor
  • TCP terminal
  • Framebuffer-based virtual terminal and ncurses
  • Noux
  • GDB monitor
  • L4Linux / L4Android:
  • Update to kernel version 3.0
  • Stub-driver support
  • L4Android
  • Device drivers:
  • Device-driver environment for iPXE network drivers
  • PL110 display driver
  • UART driver
  • Platform support:
  • NOVA Microhypervisor version 0.4
  • Fiasco.OC microkernel
  • Update to revision 38
  • Querying and manipulating remote threads
  • Versatile Express Cortex-A9x4
  • Linux
  • New IPC implementation based on UNIX domain sockets
  • Support for manually managing local sub address spaces
  • Improved handling of hybrid Linux/Genode programs
  • L4ka::Pistachio microkernel
  • Build system and tools:
  • New tool chain based on GCC 4.6.1
  • Optimization of the library-dependency build stage
  • Improved libports and ports package handling

New in Genode 11.05 (May 26, 2011)

  • New API for type-safe inter-process communication
  • Extended Fiasco.OC platform support
  • Shared libraries
  • Signalling framework
  • ARM RealView PBX-A9 support
  • x86 64-bit support
  • L4Linux (IA32 and ARM)
  • New experimental GDB support
  • Device-I/O support for MicroBlaze platform
  • ARM RealView PBX device drivers for input, display, network, and sdcard
  • New ready-to-use scripts for easy test-driving of various Genode features such as Qt4, lwIP, Noux, L4Linux, GDB

New in Genode 10.02 (Feb 24, 2010)

  • Among a variety of platform-related improvements, the release 10.02 adds support for the NOVA and Codezero kernels and introduces a new concept for managing real-time priorities.
  • Succeeding the previous feature-rich release, the Genode project took the chance to focus on extending the base-platform support of the framework. We are happy to report that we were able to complement the already broad range of supported kernels by two new modern microkernels namely NOVA and Codezero, both first released in 2009. Thereby, Genode provides a unified user-level infrastructure that runs directly on those kernels as well as on Linux (32 bit and 64 bit), OKL4v2 (x86 and ARMv4), L4/Fiasco, and L4ka::Pistachio. For developers creating microkernel-based applications, the framework hides the intricacies of the respective kernel. But it also strives to make the unique capabilities of each base platform accessible to the user. For example, with the new release, we made the real-time scheduling of OKL4 and L4ka::Pistachio available to Genode applications.

New in Genode 9.05 (May 27, 2009)

  • Applications:
  • Integration of Qt4
  • Qt4-based launchpad
  • OS services and drivers:
  • Nitpicker performance tweaks
  • Virtualized PCI bus for VESA driver
  • USB session and device interface
  • USB support:
  • USB HID driver
  • Host controller drivers for UHCI, OHCI, and EHCI
  • OKL4 as new platform
  • 64-bit Linux platform support
  • Base framework refinements

New in Genode 8.11 (Nov 21, 2008)

  • The current release contains the following changes and new features...
  • Base API:
  • Introduced typification of capabilities
  • Improved client-side connection handling
  • New semaphore
  • New API for asynchronous notifications
  • New region-manager fault handling
  • New managed dataspaces
  • Refined allocator interfaces
  • Refined interfaces to consistently use exceptions
  • OS services and libraries:
  • New framework called DDE kit for device drivers written in C
  • New alarm API for scheduling timed events
  • Improved PS/2 driver, supporting scan-code sets 1 and 2
  • Optimized output latency of the Nitpicker GUI server
  • New C runtime ported from FreeBSD
  • Applications:
  • Double-buffering for scout widgets
  • New execute links for the scout tutorial browser
  • Unified handling of child processes among scout and launchpad
  • New default document "Walking through Genode" for scout
  • Platform-specific changes:
  • Linux: Dissolved dependency from glibc by introducing custom system-call bindings
  • L4/Fiasco: Implementation of RM faults, managed dataspaces
  • L4/Fiasco: Implementation of cancel-blocking mechanism