toaruos icon indicating copy to clipboard operation
toaruos copied to clipboard

ToaruOS 2.1 Roadmap

Open klange opened this issue 2 years ago • 0 comments

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.
  • 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 as root.
  • 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.
  • 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...

klange avatar Mar 02 '22 02:03 klange