= Release Notes for HelenOS mainline = '''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 Bazaar mainline. (But you will also get the latest bugs). HelenOS ''0.4.3 (Sashimi) '' was released on ''date''. This document contains a summary of changes made to HelenOS since release 0.4.2. == Special Notes for this Release == Text. == 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). === 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. * 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```. === 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. === 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 discontinuous 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. * 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 == * Temporary 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. == Known Bugs == * For the known bugs, please see the [http://trac.helenos.org/trac.fcgi/query?status=accepted&status=assigned&status=new&status=reopened&group=status&order=priority&col=id&col=summary&col=type&col=owner&col=priority&col=component&col=version&keywords=!~doc&keywords=!~wiki&type=defect list] of defects logged for the next releases.