Skip to content

ToaruOS v2.2.0

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 28 Aug 01:10

ToaruOS v2.2.0

toaru_screen_2023-08-28_10_06_59

What's New in v2.2.0?

UI

  • Window decoration buttons have been improved with larger hit targets and visible hover states
    Screenshot from 2023-06-12 12-12-23
  • Yutani now supports window minimization
  • The panel has been redesigned and returns to a docked layout
  • The menu library has seen various bugfixes
  • The TrueType rasterizer has been improved and its path rendering functionality is now available to other applications
  • Screenshots are now stored with timestamps, and a toast notification is displayed to confirm their creation
    Screenshot from 2023-06-12 12-17-14

Kuroko

  • Kuroko has been updated to 1.4
  • Yutani bindings have been rewritten
  • mines.py from ToaruOS 1.2 has been ported to Kuroko as mines.krk
    toaru_screen_2023-06-12_12_16_17

Other

  • The Julia fractal viewer has new functionality, including a Mandelbrot set explorer
    toaru_screen_2023-06-12_12_18_40
  • /bin/sh is now a symlink to /bin/esh and can be changed to point to a proper POSIX shell such as Dash
  • Various bootloader improvements
  • Various libc improvements
  • Various bug fixes related to the operation of TTYs
  • Old wallpapers have been removed from the default installation and may be found in the package 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 by the Github Actions CI workflow. It uses ToaruOS's native bootloaders and should work in most virtual machines using BIOS.

Changelog

  • aarch64: don't print every time we do a dtb lookup
  • aarch64: don't set debug output as primary so we can print early log to framebuffer
  • aarch64: ensure module base address starts aligned
  • about: 2023
  • base: new wallpaper
  • base: Remove 'local' msk remote from default order
  • base: Remove old wallpapers (they're in the package repo now)
  • base: testing
  • base: update /etc/issue
  • base: update text_layout.krk
  • bim: sync with upstream
  • boot: add option for 'lfbwc', and enable it by default
  • boot: CONSOLE_FLAGS mb2 tag is optional
  • boot: Don't jump back to protected mode in EFI loader
  • boot: draw something when loading ramdisk in vga text mode
  • boot: fix stray bits in scancodes in bochs
  • boot: move declaration
  • boot: prefer 1920x1080 mode in BIOS loader
  • boot: Query shift state as bios doesn't give it to us?
  • boot: Set VGA text mode font to Deja Vu
  • compositor: Fix incorrect stride on blur texture in VMware
  • compositor: fix null pointer when clicking desktop sometimes
  • compositor: Improve screenshot saving with notifications
  • cpuwidget: add menu bar
  • dbg: fix implicit cast warning
  • decor: Add menu option for minimize
  • decor: consider minimize button when collapsing titles
  • decor: Improve buttons with hover states using focus hack
  • decor: Use a different button icon for unmaximize
  • efi: Accept ACPI 2 table pointer as config table
  • esh: Migrate shell to /bin/esh
  • gensym: avoid link step when generating symbol table
  • graphics: be more efficient at tracking mapped texture coordinates
  • graphics: expose matrix inversion in headers
  • graphics: fix clipping from bad rounding when drawing with transformations
  • graphics: support shear operation on transformation matrices
  • julia: Add mandlebrot mode, explore mode
  • julia: display zoom as multiplier
  • julia: render at least once so we don't flash black when panning
  • julia: usability improvements; progressive rendering
  • kernel: be more prudent with signal number bounds checking
  • kernel: brute-force locking around unmap syscall, should make thread stuff more stable?
  • kernel: clean up module loader
  • kernel: copy signal dispositions on fork; clear them on exec
  • kernel: fix swapped LCUC conversion in tty
  • kernel: fixup issues with timeouts in fswait3
  • kernel: Interrupting fswait should return -EINTR
  • kernel: mark sockets in stat; reject them in seek
  • kernel: More instances of unintended signed values causing problems
  • kernel: proc->group may have exited
  • kernel: Reject negative signum in signal, sigaction
  • kernel: writes to /dev/null should return number of bytes written
  • kuroko: bind class for transformation matrices
  • kuroko: bindings for Subregions
  • kuroko: bind props for TransformMatrix
  • kuroko: bump
  • kuroko: bump for 'zip' *-expansion fix
  • kuroko: expose path rasterizing functions directly
  • kuroko: fixup menu bindings?
  • kuroko: Pull in latest 1.4.0a1
  • kuroko: sync for 1.4.0b2
  • kuroko: sync for different fix
  • kuroko: sync to fix issues with va_ars on aarch64
  • kuroko: sync upstream
  • kuroko: sync upstream
  • kuroko: sync with upstream
  • kuroko: sync with upstream
  • kuroko: sync with upstream for v1.4.0 release
  • kuroko: sync with upstream (parseArgs updates)
  • kuroko: upstream fixes
  • lbic: aarch64 longjmp should pass second argument as return value
  • lfbvideo: disable write-combining by default; add 'lfbwc' option to enable it
  • lfbvideo: make that just a flag option
  • libc: aarch64 setjmp, untested
  • libc: add asprintf, fix vasprintf return value
  • libc: Additional defines to help curl build
  • libc: Add some missing bit-twiddly libm functions
  • libc: define F_DUPFD so srclib stuff builds
  • libc: define FILENAME_MAX like other platforms
  • libc: Fix float formatters showing '0.10', etc.
  • libc: fix incorrect cast of field width to char
  • libc: fix wrong argument order to bsearch comparator
  • libc: host entry list should be null-terminated
  • libc: only print debug info in poll with __libc_debug
  • libc: poll: handle POLLOUT better
  • libc: remove bad conflicting bad ceil for x86-64
  • libc: update wcwidth
  • markup: Fix leaks in container types in markup parser
  • menu: fix incorrect clearing of menu child in has_eventual_child
  • menu: fix silly old bug with submenu highlighting
  • menu: fixup overflowing rendering of menubars
  • menu: skip separators with keyboard navigation
  • meta: fixup nm step still referencing misaka-kernel.64
  • meta: highmem=off is not needed for virt-2.12 target
  • meta: let gensym.krk do the sorting + dedupe
  • meta: set -name in qemu
  • meta: Start calling this 2.2, new codename is 'Eternal Reality' (Railgun S OP2)
  • meta: update link to esh source in README
  • meta: Use -device AC97 instead of -soundhw option; no more pcspkr
  • mines: Port mines.py from toaru 1.2.x
  • net: Handle signals, disconnects while waiting to recv in tcp
  • net: Support getsockname, getpeername for tcp
  • net: Support ioctl FIONBIO to set non-blocking
  • panel: Adjust clockface, add counterweight to second hand
  • panel: Allow widgets to request faster update rate for animations
  • panel: don't focus windows when closing them from the context menu
  • panel: fix signature mismatch on widget_update_volume
  • panel: inform compositor of window tray locations
  • panel: knock off more of the gnome-shell panel design
  • panel: re-dock the panel
  • panel: Replace clock widget with recreation of classic theme
  • panel: Use move_relative when creating widget menu windows
  • path_demo: add more options
  • path_demo: Kuroko demo of path rendering lib
  • ping: use gettimeofday instead of relying on clock ticks
  • procfs: fix format of /proc/version
  • procfs: Update comment describing how this works
  • rm: accept and ignore -f
  • rm: print error messages
  • show-toasts: Fix outdated parsing of MemTotal
  • strace: support more stuff
  • terminal: also fix left arrow
  • terminal: Bitmap font can use uint8_t
  • terminal: cleanup some glyphs in the bitmap fallback font
  • terminal: configurable scrollback; increase default to 10000
  • terminal: fix arrow tails in bitmap font
  • terminal: xterm compatibility with cursor hang, \v \f
  • text: adhere to context clipping when painting paths
  • text: apply affine transformation matrices to Contours
  • text: Cleanup downstream libs, expose new methods in Kuroko
  • text: Contour edges don't have directions, let's make them different
  • text: expose method to extend existing path with new text
  • text: expose new path painting in Kuroko bindings
  • text: expose stroke-to-contour step
  • text: Expose vector engine, methods for drawing text to paths
  • text_layout: Asynchronous rendering
  • text: New path stroking algorithm
  • text: Obtain ascender + descender sizes
  • text: Path painting with textures from sprites
  • text: Unify 'ellipsify' implementation in text library
  • tmpfs: size of symlink is length of target string
  • toastd: Scale down large 'icons' in toasts instead of not showing them
  • tty: respect OPOST being unset
  • tty: support IUCLC since we support OLCUC
  • tutorial: Disable min/max buttons in decorations
  • util: fix gen_wcwidth for modern kuroko
  • virtio: handle queue overflow
  • virtio: name worker threads with square brackets
  • yutani: allow mainloop to be set up early so tasks can be scheduled
  • yutani: Allow panel to inform compositor iconified window position/size
  • yutani: animate minimized windows to panel location
  • yutani: animate upward?
  • yutani: Apply rotation correctly in minimize animation
  • yutani: bind more functions
  • yutani: Don't raise new exception when fswait is interrupted
  • yutani: Don't use __new__ to build wrapper types, it's a pain to subclass with
  • yutani: exit mainloop on session-end
  • yutani: fix incorrect allocation of menu bar objects
  • yutani: fixup some behaviours for minimized windows
  • yutani: Font.width is a method
  • yutani: Initial rewritten yutani module for kuroko
  • yutani: normalize rotation angles
  • yutani: replace old _yutani module
  • yutani: restore window bound debugging functionality
  • yutani: Rotate minimized window back while animating
  • yutani: Support custom menu entries widgets
  • yutani: Try resending resize offer if app doesn't respond
  • yutani: use : in parseArgs for __init__ methods in krk bindings
  • yutani: window minimization, first pass

Known Issues

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