Skip to content

ToaruOS v1.99.10

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 01 Dec 12:43

ToaruOS v1.99.10

What's New in v1.99.10?

This is the last beta release of ToaruOS 2.0.

  • A number of issues with the ATA disk drivers and ext2 filesystem have been fixed, though both are still considered unstable and disk-based installations are not recommended.
  • The panel has been largely rewritten to load libraries for widgets. Further improvements are planned for the panel widget system.
  • The window switcher has been vastly improved with multiple window previews and a design I totally stole from Gnome.
  • The terminal emulator's rendering pipeline has been rewritten. Asynchronous redraws allow for significant improvements in throughput, though some latency may be visible.
  • Copy-on-write support has been added to the kernel for fork() operations.
  • An issue with the userspace dynamic linker that caused gcc to have extremely long startup times (up to a second) has been resolved.

What is ToaruOS?

ToaruOS is a hobbyist, educational operating system for x86-64 PCs, focused primarily on use in virtual machines. It provides a Unix-like environment, complete with a graphical desktop interface, shared libraries, feature-rich terminal emulator, and support for running, GCC, Quake, and several other ports. The core of ToaruOS, provided by the CD images in this release, is built completely from scratch. The bootloader, kernel, drivers, C standard library, and userspace applications are all original software created by the authors, as are the graphical assets.

Who wrote ToaruOS?

ToaruOS is primarily written by a single maintainer, with several contributions from others. A complete list of contributors is available from AUTHORS.

Running ToaruOS

It is recommended that you run ToaruOS in a virtual machine / emulator, for maximum compatibility. ToaruOS's driver support is limited, and running on real "bare metal", while possible, does not provide the most complete experience of the OS's capabilities except on very particular hardware. ToaruOS is regularly tested in VirtualBox, QEMU, and VMWare Player, and can be successfully booted (with poor performance) in Bochs. ToaruOS is intended to run from a live CD, though it is possible to install to a hard disk. Additional details on running ToaruOS in different virtual machines is available from the README.

Release Files

image.iso is the standard build of ToaruOS, built by the Github Actions CI workflow. It uses ToaruOS's native bootloaders and should work in most virtual machines using BIOS.

Changelog

  • ata: New disk scheduler; less terrible but very slow
  • ata: deal in pages, not sectors
  • ata: drop the disk scheduler task and just use a proper sleepable mutex
  • ata: fix badly allocated prdt
  • ata: slap a warning at the top of that
  • base: make sure dir exists to build host Kuroko
  • bim: sync with upstream
  • bim: version 3.0.0
  • block-dev-stats: Test tool for ongoing ata rewrite
  • boot: Select current mode on video menu; esc to go back without changing
  • boot: first pass at cleanup, just make sure everything has lead comments
  • e1000: Remove debug procfs entry that was causing errors
  • ext2: Add some necessary mutexes around block and inode allocation
  • ext2: Assign correct ownership of new files
  • ext2: No cache for you
  • ext2: Try to make this less broken
  • ext2: fix block group calculation for inodes
  • ext2: fixup expanding directories
  • gunzip: Hidden option to print progress reports, for debugging
  • ioctl: request should be 'unsigned long'
  • kernel: Add simple mutex with a wait queue
  • kernel: Implement basic copy-on-write for fork()
  • kernel: Possibly fix sporadic lockup in compositor?
  • kernel: Use local APIC timer for preemption on APs, not an IPI
  • kernel: at least add full lead comments to everything
  • kernel: bad ordering of list insert / wakeup caused crashes
  • kernel: clean up kernel/arch/x86_64/{cmos,pit}.c
  • kernel: cleanup kernel/arch/x86_64/idt.c
  • kernel: cleanup kernel/arch/x86_64/smp.c
  • kernel: cleanup kernel/arch/x86_64/user.c
  • kernel: cleanup kernel/generic.c
  • kernel: cleanup things introduced in COW
  • kernel: prevent modules from being loaded multiple times
  • ld.so: Use a much bigger hash size and cc1 loads a lot faster
  • menu: Better tail alignment for bubble windows
  • menu: Disallow dragging/resizing of menu windows
  • meta: Stop recommended recursive git checkout, since it pulls in gcc/binutils
  • meta: Update all of the heading comments in apps/
  • meta: Update leading comments in modules/
  • meta: We shouldn't need to link -lgcc in the kernel
  • meta: purge most instances of vim hints
  • netty: quick hack to use threads so pasting doesn't deadlock
  • panel: Add notifications when a network connects/disconnects
  • panel: Apply smarter alignment to popup menus
  • panel: Don't crash when alt-tab window is open and the last tabable window closes
  • panel: First pass at modularization
  • panel: Improvements to the window switcher
  • panel: Little improvements to weather widget
  • panel: always prefer center alignment for popups
  • panel: cleanup widgets, part 1
  • panel: fixup window title display in alt-tab switcher
  • panel: redo layout when panel resizes
  • sync: Support argument
  • sync: temporary thing for testing; not a proper sync
  • sysinfo: Try to be slightly smarter about printing logo
  • tarfs: throw EROFS on create
  • terminal-vga: Rewrite display caching so it's actually fast, and buffered
  • terminal: Add some functionality to the -g flag
  • terminal: defer updates; not fully asynchronous
  • terminal: rewrite redraw logic to be more buffered
  • terminal: support ^[[3J to clear scrollback
  • text: Should have been doing two box blurs this whole time
  • top: Allow sorting by command line
  • top: Don't cap at 100, but do format >=100 differently
  • top: cap CPU%/CPUA at 100
  • x86_64: fixup bad memory walk when doing backtraces

Known Issues

  • Several utilities, libc functions, and hardware drivers are missing functionality.
  • The ext2 driver is known to set incorrect block counts on inodes.
  • There are many known security issues with ToaruOS. You should not use ToaruOS in a production environment - it is a hobby project, not a production operating system. If you find security issues in ToaruOS and would like to responsibly report them, please file a regular issue report here on GitHub.