Version 89 (modified by 6 years ago) ( diff ) | ,
---|
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 Git master. (But you will also get the latest bugs).
HelenOS version (codename) was released on date.
This document contains a summary of changes made to HelenOS since release previous release.
Special Notes for this Release
Features Introduced in This Release
General
- We partially revived the Doxygen documentation and plan to further improve it.
- Prevent endless loops when printing userspace stack traces
Kernel
- Kernel is now stored in standard ELF format
- Ordered dictionary (
odict.h
) now available in kernel- Container based on red-black trees
- Replaced AVL trees (storing task and thread structures)
- Replaced some uses of B+trees
- 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.
- 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.
- The kernel waitq synchronization primitive was made available to userpace 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.
Services and Drivers
- Fixed support for ISA-only PCs
- Was broken since 0.5.0/0.6.0 since DDF could not enumerate ISA-only PC
- With custom build (ia32 + CPU=486) you can run in
qemu-system-i386 -M isapc
GUI
- Fix some display issues related to a bug in the alpha blending implementation
File Systems
fdisk
can now configure mount point for a volume- We can now create Ext4 (Ext2, actually,) file systems
- Support volume labels with Ext4
- Ext4(2) is the default new file system type for fdisk
- Sysinst now creates Ext4(2) to install HelenOS to
vol insert
can be used to re-insert a previously ejected volume- Persistent storage / system volume
- Sysinst will now configure a persistent /w directory
- As a reminder, this can only be used to install on some ia32/amd64 configurations
- Tetris will now store high-score table under /w
- Allowing it to persist across reboots - on a system installed by sysinst
- Sysinst will now configure a persistent /w directory
Networking
Applications
- LaiNES, an NES emulator ported (video)
- GZX, a ZX Spectrum emulator
- Experimental HelenOS support in upstream since January 2018
- Now available via a harbour/package (
pkg install gzx
)
- Ccheck, C-style checker used to check HelenOS code ported to HelenOS
- Available via harour/package (
pkg install sycek
)
- Available via harour/package (
perf
is a new tool collecting several simple benchmarksperf ns_ping
moved fromtester ping_pong
now computes average and standard deviation across multiple runsperf ping_pong
IPC ping-pong benchmark using new dedicated IPC test serverperf malloc1
,perf malloc2
two simple user-space memory allocator benchmarks
contacts
is a trivial interactive utility to demonstrate the use of SIF
Libraries
- libc
- Clean separation of fibrils and async framework
- 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.
- added
strtold
- replaced
<atomic.h>
with standard<stdatomic.h>
- 'x' fopen file mode modifier from C11
- SIF an API for managing structured data
Miscellaneous
- Eliminate use of custom linker scripts for user space code
- Further work on reviving Doxygen Reference
- Init data is now stored as a tar archive of gzip-compressed files
- Server binaries under
/srv
are now in sub-directories (and /srv is no longer a search dir for commands) - Init data can now be configured to be uncompressed (used by default ont GTA02 and ski) for faster boot
- Can compile with undefined behavior sanitizer in either kernel, user space or both
- XCW tools used to cross-compile out-of-tree HelenOS applications received fixes and enhancements
- Fixed compilation on some ARM platforms
- Use of export dir for better integration with Coastline
helenos-bld-config --install-dir
useful when installing application into HelenOS workspacehelenos-test
rebuilds HelenOS workspace and starts emulation
Regressions in This Release
- For the list of regressions since the previous release, see this report.
- Notable regressions
Fixed Logged Bugs & Enhancements
- For the list of all logged defects fixed in this release, see this report.
- For the list of all logged enhancements integrated in this release, see this report.
Known Bugs
Attachments (2)
-
edit.png
(4.0 KB
) - added by 3 years ago.
Text Editor ported to UI library (with menu bar and dialog window)
-
nav.png
(13.9 KB
) - added by 3 years ago.
Navigator (HelenOS file manager)
Download all attachments as: .zip
Note:
See TracWiki
for help on using the wiki.