= Release Notes for HelenOS Trunk = '''Note:''' This document is a draft describing a future HelenOS release and is subject to change. The software described here has not been released yet. To get these latest and greatest features now, check out our SVN trunk. (But you will also get the latest bugs). HelenOS ''version'' was released on ''date''. This document contains a summary of changes made to HelenOS since release 0.4.0. == Special Notes for this Release == HelenOS 0.4.0 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 == === General === * 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 userspace drivers now use PIO functions so the same drivers work on architectures with separate I/O space and memory mapped I/O space. * Userspace drivers are more independent * Userspace 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 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 === * Kernel keyboard and output drivers were restructured for more flexibility and portability, with some redundant drivers removed. === Services and Drivers === * Device mapper * ''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. === Applications === * 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. === Miscellaneous === * 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 * Preconfigured 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 ==