Skip to content
This repository has been archived by the owner on Mar 19, 2024. It is now read-only.

ToaruOS v1.99.3

Pre-release
Pre-release
Compare
Choose a tag to compare
@github-actions github-actions released this 19 Jul 11:56

ToaruOS v1.99.3

Screenshot from 2021-07-19 20-50-04

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 icons
  • base: minor cleanup of /usr/share
  • bim: sync with upstream
  • boot: add menu timeout
  • boot: adjust timeout a bit
  • compositor: Avoid more transformations.
  • compositor: avoid transformations if we're just transparent
  • compositor: stop dragging windows on esc
  • compositor: take screenshots on print screen key
  • file-browser: Recognize more file types by extension
  • file-browser: Set the default view mode to TILES
  • file-browser: add a few more keyboard shortcuts
  • file-browser: fix inner radius of focused text input box
  • file-browser: realign and blink the cursor in the input box
  • file-browser: stretch columns to fit
  • font-preview: Include font name in window title
  • font-preview: Override preview text with argv[2]
  • font-preview: tool for viewing TrueType fonts
  • graphics: Add affine transformations for sprites
  • graphics: Match nearest-neighbor signature to bilinear for easier swapping
  • graphics: ensure rounded rectangle rendering is bounded?
  • graphics: fix alpha painting of sprites
  • graphics: general improvements
  • graphics: improved bilinear interpolator
  • graphics: only load image libraries once
  • graphics: short-circuit out of bounds lookups in bilinear interpolator
  • i965: Send mode change signal?
  • imgviewer: include filename in window title
  • kbd: stop sending empty events to clients
  • kernel: (needs review) let threads sleep on their own children?
  • kuroko: Support keyword arguments to lambdas
  • kuroko: pull in version number update
  • kuroko: update repo
  • ld.so: Stop leaking low heap to init functions
  • lib: update docs
  • libc: only elide fractional parts in g/G, not f/F
  • lspci: Add more device descriptions from my ThinkPad
  • lspci: add qemu's e1000e model
  • make: detect more base/ changes
  • menu: Add fancy speech-bubble-style menus like Gnome has
  • menu: Rudimentary checkbox menu entries
  • menu: space out menu bars nicer
  • modules: Reimplement loadable kernel modules
  • modules: list modules in /proc/modules
  • modules: track loaded sizes so we can free modules later
  • net: disable debug prints during TCP connection
  • package-manager: update 'about' text
  • panel: And improve the popup while we're at it
  • panel: And make more room for long month names
  • panel: Use full month name in date widget
  • panel: adjust size of 'Applications', clock
  • panel: experiments with a new design
  • panel: show logout dialog in a thread (temporary)
  • polygons: cleanup
  • polygons: rasterizer demo
  • ps2hid: Fixup initialization sequence; unbreaks scrollwheel in vbox
  • readme: update screenshot
  • splash-log: handle display mode change
  • sysfunc: actually bother validating some values
  • terminal: Implement some quick and dirty font fallback support
  • terminal: fix text width for DejaVu Sans Mono
  • terminal: fixup scroll damage rects
  • text: Introduce new TrueType implementation
  • text: Switch several apps/libs to new text library
  • text: allocate subsamples based on glyph bounds
  • text: fix clipped right-hand-side of some glyphs
  • text: fix overly trusting bounds calculation
  • text: handle off-curve start point
  • text: purge the SDF renderer, RIP
  • text: read fonts with short glyf table offsets
  • text: read unitsPerEm from font, use for tt_set_size
  • text: remove sdf kerning config
  • text: shadowed text, port file-browser
  • text: support more flexible sizing in pt, px
  • text: support type 4 cmaps, old Microsoft fonts
  • tutorial: remove reference to old irc network
  • tutorial: width/height should be minus decorations
  • vfs: copied nodes should get their own refcounts
  • vfs: ramdisk length needs to be updated on the original node
  • vmware: detect vmware by its PCI Express chipset
  • xhci: start on controller driver
  • yutani: new grabby hand cursor
  • yutani: 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.