A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace including a composited graphical UI, dynamic linker, syntax-highlighting text editor, network stack, etc.
This ticket tracks functionality planned for ToaruOS 2.1, which is focused on releasing AArch64 support.
What's New in v2.1.0
Initial architecture support for AArch64 (ARMv8) has been added:
Initial platform target support for the virt machine target in qemu-system-aarch64 has been added.
Experimental support for Raspberry Pi 400 has been added.
Hardware driver support for this platform is limited and will be expanded in ToaruOS 2.2.
Several bugs have been fixed:
An issue in which the e1000 network device driver mapped pages as user-accessible has been resolved.
An issue in which segmentation faults were not properly delivered to processes on x86-64 has been resolved.
An issue in which animating windows were incorrectly rendered in the compositor has been resolved.
An issue in which exiting processes could be scheduled and delay cleanup has been resolved.
An issue in which mktime calculated incorrect dates has been resolved.
A number of issues related to incorrect or insufficient lock ordering around IPC primitives have been resolved.
An issue in which the PC serial console can cause unexpected lockups has been resolved.
Various issues with invalid/corrupt ELF files have been resolved in readelf.
An issue in which attempting to delete directories from a tmpfs would cause a kernel panic has been resolved.
An issue in which traced processes could exec SUID binaries as been resolved.
The implementation of signals has been largely replaced:
Signal delivery no longer induces a nested kernel execution context.
Signal handling occurs only during transitions to userspace.
Userspace signal context is now stored on the userspace stack.
Basic signals are now blocked on execution of their handlers.
Several issues related to nested signal handling have been resolved.
System call interfaces can now support automatic restart when interrupted by a signal.
Signal delivery in the debugger / ptrace interface has been improved.
sigaction, sigprocmask, sigwait, sigsuspend have been implemented.
waitpid will no longer return immediately when a candidate process is suspended and did not change state.
Adjustments have been made to the text printed when a signal key sequence is sent to a TTY.
Userspace memory management has been improved:
An experimental munmap system call has been added.
The libc malloc/free can now release memory from large allocations.
The fixed addresses of shared memory mappings have been relocated.
Some functionality of the compositor has been improved:
Resize events are now sent during mouse-initiated window resize.
When the cursor is over a rotated window, it will be rotated to match the orientation of the window during software rendering. (Hardware cursors, where supported, are not rotated.)
Blur effects are now available.
Window advertisement events are now sent when a window is resized.
Terminal rendering has been improved.
Deferred rendering has been implemented and improved.
A glyph cache for TrueType text provides greatly improved rendering speed.
Specialized rendering of some box drawing characters has been implemented, improving the appearance of lines and shaded blocks.
The dynamic linker has been improved:
Symbol resolution in some corner cases that were previously mishandled has been fixed.
TLS (thread-local storage) data has been relocated relative to the thread pointer.
Some dynamic TLS relocations are now supported.
Kuroko and Bim have received upstream updates.
Mechanisms for the setting the clock time have been added:
A settimeofday system call and corresponding libc function are now available.
The date utility can now parse some time strings and set the time when run as root.
Some improvements have been made to the networking stack:
ifconfig now supports setting IPv4 addresses and some route configuration.
recvfrom on UDP and ICMP sockets is now supported for obtaining source address information.
ICMP sockets have been made to work like other operating systems, returning only the ICMP payload.
The PC BIOS loader now uses BIOS calls to read keyboard input, which should allow it to work with USB keyboards.
The File Browser now has a context menu option to delete files.
The display of graphs in the System Monitor application has been improved.
A regex-capable grep utility has been added.
The regex dialect is not compatible with POSIX BREs, but this is subject to change; the current regex engine comes from Bim.
The output format of the ps command has been improved with additional columns.
This ticket tracks functionality planned for ToaruOS 2.1, which is focused on releasing AArch64 support.
What's New in v2.1.0
virt
machine target inqemu-system-aarch64
has been added.mktime
calculated incorrect dates has been resolved.readelf
.ptrace
interface has been improved.sigaction
,sigprocmask
,sigwait
,sigsuspend
have been implemented.waitpid
will no longer return immediately when a candidate process is suspended and did not change state.munmap
system call has been added.malloc
/free
can now release memory from large allocations.settimeofday
system call and corresponding libc function are now available.date
utility can now parse some time strings and set the time when run asroot
.ifconfig
now supports setting IPv4 addresses and some route configuration.recvfrom
on UDP and ICMP sockets is now supported for obtaining source address information.grep
utility has been added.ps
command has been improved with additional columns.