Changes between Version 106 and Version 107 of ReleaseNotes/Mainline

2018-12-19T17:59:50Z (6 years ago)
Jakub Jermář


  • ReleaseNotes/Mainline

    v106 v107  
    33'''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 Git master. (But you will also get the latest bugs).
    5 HelenOS ''0.8.0 (Speranza)'' was released on ''December 19, 2018''.
     5HelenOS ''version (codename) '' was released on ''date''.
    7 This document contains a summary of changes made to HelenOS since release 0.7.2.
     7This document contains a summary of changes made to HelenOS since release previous release.
    99== Special Notes for this Release ==
    1313=== General ===
    15  * We partially revived the Doxygen [ reference documentation] and plan to further improve it.
    16  * HelenOS abandoned the `*-linux-gnu` and `*-unknown-elf` toolchain targets in favor of its [ own] `-helenos` target. Utilizing the compiler-provided headers and libraries avoids a number of problems and reduces the amount of architecture-support code that otherwise needs to be provided directly in HelenOS.
    1815=== Kernel ===
    20  * Kernel is now stored in standard ELF format
    21  * Ordered dictionary ({{{odict.h}}}) now available in kernel
    22    * Container based on red-black trees
    23    * Replaced AVL trees and B+trees
    24    * Unlike the B+tree implementation, which was also used in HelenOS address space management, the ordered dictionary comes with an API which does not allocate memory itself and is thus more favorable from the point of view of resource management.
    25  * The kernel used to pass kernel addresses of IPC phone objects (a.k.a. phone hashes) as connection identifiers to userspace. This intentional but unfortunate information leak was replaced in this release by purely user-defined labels negotiated during IPC connection setup handshake. Each connected phone now has a user-defined label and imprints this label on each IPC call which is routed through it.
    26  * In 2014 HelenOS got its own implementation of RCU (Read-Copy-Update) synchronization primitive along with a CHT (Concurrent Hash Table) data type based on RCU. Although sophisticated and interesting from the technological point of view, the RCU and CHT were mostly unused and unmaintained. We therefore decided to remove these very complex features.
    27  * The kernel waitq synchronization primitive was made available to userspace via capabilities. Consequently the userspace implementation of futexes was rewritten to use waitq's as the underlying synchronization mechanism. The custom support for futexes was removed from the kernel. One ramification of this change is that the underlying kernel object is no longer allocated lazily. This increases startup times of components that use futexes, but provides better failure modes, and better resource management possibilities in the future.
    2917=== Services and Drivers ===
    31  * Fixed support for ISA-only PCs
    32    * Was broken since 0.5.0/0.6.0 since DDF could not enumerate ISA-only PC
    33    * With custom build (ia32 + CPU=486) you can run in {{{qemu-system-i386 -M isapc}}}
    34  * Added standard PC parallel port driver
    35  * Running HelenOS on the Ski IA-64 simulator will show console output also before the userspace driver takes over.
    36  * Naming service improvements
    37    * Services now register individual interfaces with the naming service. This adds a degree of type safety, potentially allows the individual interfaces to be implemented by independent tasks and moves the code slightly closer to the full-fledged ports design.
    38    * Broker services (e.g. the location service) can still register a fallback port for receiving connections to all interface types explicitly using {{{service_register_broker()}}}.
    39  * Intel HD Audio
    40    * Added PCI IDs for Wildcat Point-LP and Broadwell-U audio controllers
    42 === GUI ===
    44  * Fix some display issues related to a bug in the alpha blending implementation
    4619=== File Systems ===
    48  * {{{fdisk}}} can now configure mount point for a volume
    49  * We can now create Ext4 (Ext2, actually) file systems
    50  * Support volume labels with Ext4
    51  * Ext4(2) is the default new file system type for fdisk
    52  * Sysinst now creates Ext4(2) to install HelenOS to
    53  * {{{vol insert}}} can be used to re-insert a previously ejected volume
    54  * Persistent storage / system volume
    55    * Sysinst will now configure a persistent /w directory
    56      * As a reminder, this can only be used to install on some ia32/amd64 configurations
    57    * Tetris will now store high-score table under /w
    58      * Allowing it to persist across reboots - on a system installed by sysinst
     21=== Networking ===
    6023=== Applications ===
    62  * [ GZX], a ZX Spectrum emulator
    63    * Experimental HelenOS support in upstream since January 2018
    64    * Now available via a harbour/package ({{{pkg install gzx}}})
    65  * [ Ccheck], C-style checker used to check HelenOS code ported to HelenOS
    66    * Available via harbour/package ({{{pkg install sycek}}})
    67  * {{{perf}}} is a new tool collecting several simple benchmarks
    68    * {{{perf ns_ping}}} moved from {{{tester ping_pong}}} now computes average and standard deviation across multiple runs
    69    * {{{perf ping_pong}}} IPC ping-pong benchmark using new dedicated IPC test server
    70    * {{{perf malloc1}}}, {{{perf malloc2}}} two simple user-space memory allocator benchmarks
    71  * {{{contacts}}} is a trivial interactive utility to demonstrate the use of SIF
    72  * {{{wavplay}}} and {{{modplay}}} now accept {{{-t <target>}}} option to select non-default audio target
    73  * {{{lprint}}} utility can be used to [wiki:UsersGuide/Printing print] a file or a short message
    7525=== Libraries ===
    77  * libc
    78     * Clean separation of fibrils and async framework
    79     * The async framework defines the label stored in connected IPC phones to be the userspace address of the connection structure. Because of this, the connection lookup hash table could have been dropped entirely as each incoming call already knows the connection from the label
    80     * added {{{strtold}}}
    81     * replaced {{{<atomic.h>}}} with standard {{{<stdatomic.h>}}}
    82     * replaced {{{<sys/time.h>}}} with standard {{{<time.h>}}}
    83     * 'x' fopen file mode modifier from C11
    84  * SIF an API for managing structured data
    8627=== Miscellaneous ===
    88  * Prevent endless loops when printing userspace stack traces
    89  * Eliminate use of custom linker scripts for user space code
    90  * Init data is now stored as a tar archive of gzip-compressed files
    91  * Server binaries under {{{/srv}}} are now in sub-directories (and /srv is no longer a search directory for commands)
    92  * Init data can now be configured to be uncompressed (used by default on GTA02 and ski) for faster boot
    93  * Can compile with undefined behavior sanitizer in either kernel, user space or both
    94  * XCW tools used to cross-compile out-of-tree HelenOS applications received fixes and enhancements
    95    * Fixed compilation on some ARM platforms
    96    * Use of export dir for better integration with Coastline
    97    * {{{helenos-bld-config --install-dir}}} useful when installing application into HelenOS workspace
    98    * {{{helenos-test}}} rebuilds HelenOS workspace and starts emulation
    10029== Regressions in This Release ==
    102 We have found the following regressions that prevent releasing the image for the respective platform:
    104  * #782 HelenOS does not boot on Raspberry Pi
    105  * #783 HelenOS does not boot on GTA02
    106  * #784 HelenOS does not boot on Dell !PowerEdge 3250
     30 * For the list of regressions since the previous release, see this [query:keywords=codename_regression report].
     31 * Notable regressions
    10833== Fixed Logged Bugs & Enhancements ==
    110  * For the list of all logged defects fixed in this release, see this [query:status=closed&resolution=fixed&milestone=0.8.0&type=defect report].
    111  * For the list of all logged enhancements integrated in this release, see this [query:status=closed&resolution=fixed&milestone=0.8.0&type=enhancement report].
     34 * For the list of all logged defects fixed in this release, see this [query:status=closed&resolution=fixed&milestone=release&type=defect report].
     35 * For the list of all logged enhancements integrated in this release, see this [query:status=closed&resolution=fixed&milestone=release&type=enhancement report].
    11337== Known Bugs ==
    11538 * For the list of known bugs still not fixed in this release, see this [report:3 report].
    11639 * For the list of all open tickets, see this [report:1 report].