ToaruOS v1.99.3
Pre-releaseToaruOS v1.99.3
What's New in v1.99.3?
This is an iterative development beta of ToaruOS 2.0. This release includes a number of new major features:
- Loadable kernel modules are supported again and a handful of device drivers have moved back into modules. Unlike in ToaruOS 1.x, modules are not loaded from Multiboot "modules", and instead only loaded from userspace with the
insmod
tool. In combination with PCI device ID scanning, the system startup scripts will load necessary modules for supported devices when the relevant devices are found. - A new TrueType text rasterization engine has been implemented, replacing the "signed distance field" text rasterization system used since ToaruOS 1.5. The SDF library has been removed and all applications have been ported to the new TrueType renderer. The implementation is incomplete, but has sufficient support for rendering the DejaVu Sans family, which is included as it was in previous releases.
- The panel has gone through some visual redesign.
- The graphics library now includes support for arbitrary, composable affine transformations of textures.
- The BIOS CD bootloader includes an automatic timeout.
Many other minor improvements and bug fixes have also been made.
Please note that from this point forward, ToaruOS 2.0 beta releases will not be marked as "pre-releases" on Github, in order to have them appear on the front page of the repository.
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 the Github Actions CI workflow. It uses ToaruOS's native bootloaders and should work in most virtual machines using BIOS.
When provided in a release, toaruos-grub.iso
is an alternative CD with GRUB as a bootloader. If you are attempting to run ToaruOS on real hardware, this is generally preferred.
Changelog
base
: Cleaned up volume iconsbase
: minor cleanup of /usr/sharebim
: sync with upstreamboot
: add menu timeoutboot
: adjust timeout a bitcompositor
: Avoid more transformations.compositor
: avoid transformations if we're just transparentcompositor
: stop dragging windows on esccompositor
: take screenshots on print screen keyfile-browser
: Recognize more file types by extensionfile-browser
: Set the default view mode to TILESfile-browser
: add a few more keyboard shortcutsfile-browser
: fix inner radius of focused text input boxfile-browser
: realign and blink the cursor in the input boxfile-browser
: stretch columns to fitfont-preview
: Include font name in window titlefont-preview
: Override preview text with argv[2]font-preview
: tool for viewing TrueType fontsgraphics
: Add affine transformations for spritesgraphics
: Match nearest-neighbor signature to bilinear for easier swappinggraphics
: ensure rounded rectangle rendering is bounded?graphics
: fix alpha painting of spritesgraphics
: general improvementsgraphics
: improved bilinear interpolatorgraphics
: only load image libraries oncegraphics
: short-circuit out of bounds lookups in bilinear interpolatori965
: Send mode change signal?imgviewer
: include filename in window titlekbd
: stop sending empty events to clientskernel
: (needs review) let threads sleep on their own children?kuroko
: Support keyword arguments to lambdaskuroko
: pull in version number updatekuroko
: update repold.so
: Stop leaking low heap to init functionslib
: update docslibc
: only elide fractional parts in g/G, not f/Flspci
: Add more device descriptions from my ThinkPadlspci
: add qemu's e1000e modelmake
: detect more base/ changesmenu
: Add fancy speech-bubble-style menus like Gnome hasmenu
: Rudimentary checkbox menu entriesmenu
: space out menu bars nicermodules
: Reimplement loadable kernel modulesmodules
: list modules in /proc/modulesmodules
: track loaded sizes so we can free modules laternet
: disable debug prints during TCP connectionpackage-manager
: update 'about' textpanel
: And improve the popup while we're at itpanel
: And make more room for long month namespanel
: Use full month name in date widgetpanel
: adjust size of 'Applications', clockpanel
: experiments with a new designpanel
: show logout dialog in a thread (temporary)polygons
: cleanuppolygons
: rasterizer demops2hid
: Fixup initialization sequence; unbreaks scrollwheel in vboxreadme
: update screenshotsplash-log
: handle display mode changesysfunc
: actually bother validating some valuesterminal
: Implement some quick and dirty font fallback supportterminal
: fix text width for DejaVu Sans Monoterminal
: fixup scroll damage rectstext
: Introduce new TrueType implementationtext
: Switch several apps/libs to new text librarytext
: allocate subsamples based on glyph boundstext
: fix clipped right-hand-side of some glyphstext
: fix overly trusting bounds calculationtext
: handle off-curve start pointtext
: purge the SDF renderer, RIPtext
: read fonts with short glyf table offsetstext
: read unitsPerEm from font, use for tt_set_sizetext
: remove sdf kerning configtext
: shadowed text, port file-browsertext
: support more flexible sizing in pt, pxtext
: support type 4 cmaps, old Microsoft fontstutorial
: remove reference to old irc networktutorial
: width/height should be minus decorationsvfs
: copied nodes should get their own refcountsvfs
: ramdisk length needs to be updated on the original nodevmware
: detect vmware by its PCI Express chipsetxhci
: start on controller driveryutani
: new grabby hand cursoryutani
: pointing hand cursor
Known Issues
- SMP support is experimental and highly unstable.
- Several utilities, libc functions, and hardware drivers are missing functionality.
- 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.