Changes between Initial Version and Version 1 of ReleaseNotes/0.7.2

2018-07-15T21:23:21Z (6 years ago)
Jakub Jermář

Create release notes for 0.7.2


  • ReleaseNotes/0.7.2

    v1 v1  
     1= Release Notes for HelenOS 0.7.2 =
     3HelenOS ''0.7.2 (Boosted Effort) '' was released on ''July 15, 2018''.
     5This document contains a summary of changes made to HelenOS since release [wiki:ReleaseNotes/0.7.1 0.7.1].
     7== Special Notes for this Release ==
     9  * HelenOS is still an experimental operating system at this point in time and support for many platforms and hardware devices is not production-ready. For the time being, the agile 6-month release cycle might therefore produce releases that are slightly less "polished" in certain aspects, but it is also a driving force towards turning HelenOS into a production-ready operating system in the near future.
     11== Features Introduced in This Release ==
     13=== General ===
     14  * Integrate support for the [ Sycek] C style checker into the build system. Sycek helps to make HelenOS source code nice and tidy, and in some cases can even spot real bugs. Run either with `make ccheck` or as part of `make check`.
     15  * Thanks to our move to !GitHub after the last release, we were able to integrate with [ Travis CI] and get basic build tests run for each commit.
     16  * Kernel console improvements:
     17     * Kernel output is now mirrored to the serial port by default on amd64, arm32/icp and ia32 platforms. This is complemented by `tools/` connecting serial port to console stdio by default (can be overridden using `-noserial`, see below).
     18     * Kernel console output printed from user tasks via `kio_printf()` facility is now prefixed with the identity of the source, and some effort is made to prevent splitting of lines.
     19     * When an assertion fails in a user task, the full report is printed to kernel console before an attempt is made to print it via regular channels.
     21=== Kernel ===
     23  * Most of the work on the kernel focused on improving the capability system:
     24    * IPC calls in userspace are no longer represented by the so-called call ID's or hashes which were essentially leaked kernel addresses. Instead they are now managed using task-local call capability handles.
     25    * Improved life-cycle management of kernel objects, especially phones, and capabilities. When allocating a new capability the kernel does no longer attempt to reclaim an unused allocated one. Instead, each kernel object is now deallocated immediately when its reference count drops to zero. For phones, this now newly means that the phone has no active calls.
     26    * Capability handles are now type-safe so that it is no longer possible to confuse eg. a phone capability handle with a call capability handle. Or a capability handle with an integer.
     27  * On amd64 and ia32 architectures, the kernel now survives a deferred debug exception during a system call. More details can be read in this blog [ post].
     28  * Generalized the kernel ns16550 driver to work with more chips. Some UART controllers are compatible with 16550A, but have more spacing between registers. In particular, ARMADA 385, which is the basis of Turris Omnia router, has a compatible UART with 32-bit registers instead of 8-bit.
     29  * Instead of using plain malloc, the slab allocator now uses a dedicated cache for allocating the per-CPU magazines of caches.
     31=== Services and Drivers ===
     33  * [ USB 3 support]
     34    * General overhaul of the existing USB 1.x and 2.0 framework
     35    * New host controller driver has been implemented to control various xHC models (among others, NEC Renesas uPD720200).
     36    * Isochronous data transfer mode
     37    * Support for explicit USB device removal
     38    * USB tablet driver
     39  * Automatic volume mounting
     40    * Volumes with volume label are auto-mounted under /vol/LABEL.
     41    * This works for FAT, exFAT, ISO 9660 (e.g. USB sticks, CD/DVD-ROM).
     42    * `vol` command to list volumes, `vol eject /vol/LABEL` to unmount.
     43    * Currently this cannot be customized.
     44    * Hard drive partitions (ATA) are not auto-mounted for safety reasons.
     45  * Unify all the different character device interfaces accrued over the years and use only the one provided by `io/chardev.h` and `io/chardev_srv.h`.
     46  * ADB keyboard and mouse support was moved from the input server into separate drivers.
     47  * DDF conversions of ski, sun4u and msim console drivers were finished.
     48  * Added new NIC driver for virtio-net.
     49  * The `nic` command now works with the ne2k driver too.
     51=== File Systems ===
     53  * TMPFS is now populated from a TAR archive when used as a root file system.
     55=== Applications ===
     57  * Fix text editor screen being broken when editing files with long names.
     59=== Libraries ===
     61  * Added `libvirtio` to aid writing VIRTIO device drivers.
     62  * The async framework API has been streamlined and the abstraction no longer leaks the internals of the low-level IPC mechanism. The async framework server calls no longer require the call capability handle and the pointer to the IPC call structure serves as an universal identifier of the given IPC call on the server side.
     63  * Improved ISO C comformance
     64    * Some ISO C symbols that were previously only available through `libposix` now moved to `libc`.
     65    * In many cases improved implementation
     66    * `scanf` family, temporary file functions from stdio.h, `(at)exit` family from `stdlib.h`, etc.
     67  * Previously, HelenOS used negative error codes, which made it difficult to align with the ISO C standard which mandates that the error constants are positive. In this release we therefore switch the sign. A nice summary of this refactoring operation is provided [ here].
     68  * C++14 Runtime support
     69    * C++ source files are compiled with `-std=c++17` (which grants most, if not all, C++17 language features). These files are detected by having `.cpp`, `.cxx` or `.cc` as their extension.
     70    * Runtime:
     71      * RTTI (`type_info` and `typeid`, no `dynamic_cast` at the moment)
     72      * Thread-safe local static variable initialization
     73      * Global static variable initialization/destruction
     74      * No support for exceptions at the moment, though `try`/`catch`/`throw` are redefined and should not break code (inclusion of `<__bits/trycatch.hpp>` needed)
     75    * Standard library:
     76      * All containers except `forward_list` (some algorithms missing, such as sort() on `list`), including adaptors
     77      * Most of utilities
     78        * `<type_traits>`, `<ratio>` complete
     79        * `<utility>`, `<tuple>`, `<memory>`, `<function>`, `<chrono>`, `<bitset>` mostly complete
     80        * `<scoped_allocator>` not implemented
     81      * I/O library is complete, but does not throw and ignores localization.
     82        * `<locale>` is defined, but is a stub (implementing it will add its functionality to I/O types)
     83      * Threading mostly complete, timed try_lock operations block, `<future>` only stub
     84      * Iterator traits and adaptors complete
     85      * Numerics have only `<numeric>` complete and `<random>` partially implemented (missing some distributions and adaptors).
     86      * Partial `<algorithm>` implementation
     87      * `<regex>` and `<atomic>` not implemented
     88      * `<string>` implemented, but wide strings are untested (missing wide string functions in libc).
     89      * C library header wrappers are only partially implemented because features are missing from libc.
     90      * Types from diagnostics library (`<exception>`, `<stdexcept>`, `<system_error>`) are implemented, but exception handling does not work.
     92=== Miscellaneous ===
     94  * Continuous effort to make our use of [ ELF binary format] more similar to other systems, to better exploit preexisting tools and libraries.
     95  * Headers with structures and their respective member offsets shared between C code and assembly are no longer generated from a YAML description, but are instead provided in a readily-usable header file and checked for consistency by the build system.
     96  * Userspace portions of HelenOS can now be built with undefined behavior sanitizer enabled, making it easier to detect certain kinds of problems.
     97  * The `tools/` script used for starting HelenOS in various emulators now accepts some new arguments:
     98    * `-noxhci`: The XHCI USB host controller is enabled by default. Use this switch to override.
     99    * `-notablet`: When used with QEMU, the USB tablet offers better user experience over plain USB or PS/2 mouse as the mouse cursor can seamlessly move between the guest window and the host. Use this option to disable.
     100    * `-noserial`: By default the serial output is enabled if supported by the configuration. This option overrides this.
     101    * `-bigmem`: Some configurations are memory hungry and need more memory. Use `-bigmem` to set maximum RAM size to 4GB.
     102    * `-net virtio-net`: Use this to enable the VIRTIO network inteface.
     104== Regressions in This Release ==
     106 * Both the new USB framework and the NIC framework aspire to own the DDF device node, which crashes the driver initializing the DDF device node at hand. This affects the Atheros !WiFi (ar9271) driver, which uses both frameworks (#730).
     108== Fixed Logged Bugs & Enhancements ==
     109 * For the list of all logged defects fixed in this release, see this [query:status=closed&resolution=fixed&milestone=0.7.2&type=defect report].
     110 * For the list of all logged enhancements integrated in this release, see this [query:status=closed&resolution=fixed&milestone=0.7.2&type=enhancement report].
     112== Known Bugs ==
     113 * For the list of known bugs still not fixed in this release, see this [report:3 report].
     114 * For the list of all open tickets, see this [report:1 report].