toaruos
toaruos copied to clipboard
ToaruOS 2.1 Roadmap
This ticket tracks functionality planned for ToaruOS 2.1, which is focused on releasing AArch64 support.
Bug fixes and general improvements added since 2.0.1
- 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.
- An experimental
- 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.
- 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 asroot
.
- A
- Initial architecture support for AArch64 (ARMv8) has been added:
- Initial platform target support for the
virt
machine target inqemu-system-aarch64
has been added. - Experimental support for Raspberry Pi 400 has been added.
- Initial platform target support for the
- 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.
Planned functionality:
- [ ] Expand package availability for AArch64 target
- [ ] Improve package manager support for architecture-specific packages
- [ ] Basic support for USB HID devices on Raspberry Pi 400
- [ ] Essential xhci host controller support. Try to make sure this is applicable to other platforms.
- [ ] USB hub, keyboard, mouse drivers
- [ ] USB tablet drivers? (test with 55" infrared touch frame)
- [ ]
genet
network support for RPi400? Might need to be delayed...