= Release Notes for HelenOS mainline = HelenOS ''0.4.3 (Sashimi)'' was released on ''March 26, 2011''. This document contains a summary of changes made to HelenOS since release 0.4.2. == Special Notes for this Release == * Contrary to the previous releases, most of the binaries distributed with this release are debug binaries. This will allow us to receive better feedback for problems encountered by our external testers. The debug binaries received the best testing coverage and are the default that the developers run. The only exception is the size-optimized binary for sparc64/serengeti, which is released as non-debug. * The new device manager is not started by default in this release and normally you don't need to start it since most drivers still don't use it. * Most users will not find networking usable since TCP is not working yet (although UDP is) == Features Introduced in This Release == === General === * New boot infrastructure * The new boot infrastructure is more unified and offers similar boot behavior on all supported platforms. * Except for HelenOS/ia32 and HelenOS/amd64, the boot image will be deflated to conserve space. Unfortunately, this also increases the boot time of such images because they first need to be inflated. * PearPC support discontinued * PearPC was the original PowerPC simulator used for the development of HelenOS/ppc32 port. However, since this simulator is no longer in active development and even severe flaws have not been fixed for more that 4 years (OFW memory management calls, etc.), we have decided to drop support for this simulator completely instead of adding more quirks to our bootloader and kernel code. Qemu/PPC is currently our PowerPC simulator of choice. * Added support for the Neo FreeRunner smartphone (based on the ARMv4 architecture). * A u-Boot image is provided which you can simply load on an SD card and boot from it. * Output goes to the LCD, the serial debug console is used for keyboard input. * Touch screen input also works, but since the screen is 480x640 you cannot do anything except moving the mouse pointer. === Kernel === * Observability * Kernel panics now have a more unified look and print more informative, meaningful and compact messages. * Experimental support for kernel stack traces on mips32, ppc32 and sparc64. * Robustness * The debug kernel will detect and report programming errors such as sleeping while holding a spinlock or when locks are not being held as necessary or when interrupts are not in the desired state. === Services and Drivers === * New device driver framework (DDF) and a set of DDF-compatible drivers (not started by default) * New root driver. * New virtual root driver and a set of sample test drivers. * New platform driver for the PC platform (ia32 and amd64). * New driver for the Intel PCI bus controller. * New driver for the ns8250 serial port. * Removed the old ```pci``` driver. * ```file_bd``` can take the block size as a parameter. * Minimalistic support for ATAPI CD-ROM in ```ata_bd``` (only works in Qemu so far). === File Systems === * FAT file system server * Sequential file I/O has linear time complexity in number of blocks for most use patterns. Previously, time complexity of sequential I/O was always quadratic in number of blocks. * DEVFS was improved to handle recursive requests better. * VFS now supports file systems that wish to serialize I/O on files themselves. * VFS uses async framework sessions to allow making parallel requests to endpoint file systems. * VFS now maintains per-client tables of open files as compared to per-connection tables. === Networking === * The bundle build of the networking subsystem was discontinued and the only supported option is the modular build in which all networking modules run as separate tasks. * The networking code has been cleaned-up, streamlined and better integrated with the rest of the system. * The dp8390 NIC driver has been almost entirely rewritten. * The ARP module will now wait for answer to each request it sends so that e.g. the first ping will not time out. * The TCP module got some fixes, but is still not working as expected. === Applications === * Statistics * Added ```top``` utility which can print nearly real-time statistics for various system entities. * Added ```stats``` utility which prints various system statistics, such as list of tasks, threads, processors, and the information about the system load. * Programming languages * Added ```sbi``` interpreter of the [wiki:Sysel] experimental programming language. * ```klog``` writes its output also to /log/klog. * Task termination * Added ```kill``` command to kill a specific task by its task ID. * Added ```killall``` command to kill all tasks of the given name. * Added simple ```sysinfo``` command to allow basic sysinfo tree inspection from user interface. * ```bdsh``` * Added paging feature and the possibility to print in hex to ```cat```. * Added support for recursive directory removal. === Libraries === * Standard library * Heap allocator * The allocator was made thread-safe. * The allocator strategy was changed from first-fit to next-fit. * The allocator can now span discontiguous virtual memory regions. * Robustness * The standard library will detect and report programming errors such as certain types of deadlocks, improper mixing of serialization means, and when locks are not being held as necessary. * Concurrency * Added the concept of sessions to the async framework, giving async framework clients a standard means of making parallel requests. * The VFS client code was rewritten to make use of the async framework sessions. * Added ```clui``` library to be used by applications with some form of text input. * CLUI-based applications can be terminated by pressing Ctrl-Q when waiting for text input. === Miscellaneous === * Build system * It is now possible to perform a hands-off build of HelenOS by simply typing ```make PROFILE=```''profile_name''``` HANDS_OFF=y```. * ```make check``` or ```tools/check.sh``` can be used to report build breakages. * ```make release``` automatically builds source tarball and release images, making the release process much easier. * The build system now auto-detects essential information about the build system and the target architecture, and performs sanity checks before starting the compilation. * It is now possible to do a barebone build in which only essential binaries are included. * Support for GCC 4.5+ link-time optimizations. * The temporary file system is mounted under /tmp. == Regressions in This Release == * For the list of regressions since the previous release, see this [query:keywords=sashimi_regression report]. * Notable regressions * HelenOS/ia64 regressions * Removed support for running on real hardware. * Removed support for detecting and booting on SMP hardware. * These will be eventually fixed in some of the future releases. * HelenOS/ppc32 regressions * The PowerPC port has two major design issues which make it currently unable to boot or function properly. Therefore the port is unusable in this release. * The affected code will be eventually redesigned and fixed in some of the future releases. * HelenOS/sparc64/sun4v regression * We found a last-minute regression of the sparc64/sun4v image. While the image works on a virtual sun4v machine, it fails to boot on a real Sun SPARC Enterprise T1000. == Fixed Logged Bugs & Enhancements == * For the list of all logged defects fixed in this release, see this [query:status=closed&resolution=fixed&milestone=0.4.3&type=defect report]. * For the list of all logged enhancements integrated in this release, see this [query:status=closed&resolution=fixed&milestone=0.4.3&type=enhancement report]. == Known Bugs == * For the list of known bugs still not fixed in this release, see this [report:3 report]. * For the list of all open tickets, see this [report:1 report].