Follow us on Google+ Follow us on Facebook Follow us on Twitter

Release Notes for HelenOS 0.4.1

HelenOS 0.4.1 (Escalopino) was released on 2009-08-04.

This document contains a summary of changes made to HelenOS since release 0.4.0.

Special Notes for this Release

HelenOS 0.4.1 contains an ATA disk driver which was only ever tested in Qemu and not on real hardware. There is no telling what it will do with real disks. Running HelenOS on real hardware is always at your own risk. However, under no circumstances you should try to load the ATA driver on your machine, unless your hard drive is disconnected or you consider your data (and possibly your hardware) expendable. Only use ata_bd in Qemu, never on hardware!

Features Introduced in This Release


  • Multilingual text support
    • HelenOS now uses UCS as its primary representation for characters and UTF-8 as the primary string encoding, both in kernel and in user space. (With UTF-32 as an alternative for some special internal purposes).
  • New string API
    • The kernel and user space use a new (non-standard) string API which allows convenient processing of UTF-8 strings.
  • Architecture independent I/O
    • Both kernel and user-space drivers now use PIO functions so the same drivers work on architectures with separate I/O space and memory mapped I/O space.
  • User-space drivers are more independent
    • User-space drivers can handle interrupts without help from a kernel 'little brother'.
  • PowerPC Hardware Support
    • The ppc32 now produces an ISO CD image instead of a kernel image. In addition to PearPC it can now boot in Qemu and on real Apple iMac G4 and iBook G4 (keyboard does not work yet, however).
  • ARM Hardware Support
    • HelenOS has been ported to Integrator/CP (ARM926EJ core module) QEMU target.


  • Kernel keyboard and output drivers were restructured for more flexibility and portability, with some redundant drivers removed.

Services and Drivers

  • kbd has been rewritten and modularized. It supports three layouts (US QWERTY, US Dvorak and Czech QWERTZ).
  • Console inheritance has been implemented at long last. Now tasks executed on the command line will use the same VC as their parent shell. The implementation makes use of the new devfs and a helper program, getvc.
  • rd now uses an abstract block device interface.
  • Added gxe_bd for GXemul disk device.
  • Added ata_bd for ATA disks simulated in Qemu.
  • Added file_bd block device backed by a file.

File Systems

  • Support for multiple file systems mounted at once. (#23)
  • Support for stat() and fstat() file system calls.
  • The file system block cache will write back blocks to the device, it still does not flush the cache periodically though.
  • tmpfs now handles hard links properly. (#73)
  • tmpfs now supports multiple instances. (#35)
  • Added devfs file system for handling access to console via a file handle.


  • Tester
    • tester is controlled by command-line arguments rather than being interactive.
  • Tetris
    • tetris now uses colors.
    • Score table is now persistent.
  • Bdsh
    • A program is started at the same console as the shell. Bdsh waits for it to finish. If it crashed or returned non-zero, the shell will print out a message.
    • Support for simple mv command.
    • Support for simple mount command.


  • New Memory Allocator
    • Doug Lee's memory allocator has been removed and replaced with a simple first-fit allocator. The new allocator has more readable code making it easier to debug, modify and maintain.
  • Build system
    • Pre-configured defaults greatly simplify the process of configuring a HelenOS build.
  • Fibril Synchronization Primitives
    • The C library now provides mutexes, reader-writer locks and condition variables that synchronize fibrils (as opposed to threads).
  • The recommended gcc version is 4.3.3. Other versions can result in build failures due to overzealous warnings turned into errors by the -Werror gcc option. The toolchain scripts in the contrib/toolchain will install a supported version of gcc and binutils.

Regressions in This Release

  • Support for mips32 malta machine
    • Support for the Simics model of the mips32 malta machine has been removed due to code cleanup.
  • Mouse support on ia32 and amd64
    • Mouse support was temporarily removed from the i8042 driver due to code cleanup. A new mouse driver will be reintroduced in a near future release.
  • Keyboard in PearPC
    • We are in progress of rewriting the Mac keyboard driver. The kernel driver is already better than the old one, but the user-space driver is not finished (which means there's no way you can get to the kernel console so you cannot do anything.)

Known Bugs

  • For the known bugs, please see the list of defects logged for the next releases.
Last modified 7 years ago Last modified on 2009-08-04T12:18:01Z