This post was supposed to come out on the 14th-15th of February, however things happened, I'm ill again for the 2nd time in 2 weeks and I totally forgot.
It's official, ToaruOS is planned to have a 2.3 release almost 3 years after 2.2.0 was released (and the only source available 2.2.1).
On February 13th 2026, klange created an issue named "ToaruOS 2.3 Planning".
The issue reads as follows:
It has been over two years since the last numbered release of ToaruOS.
Major changes that have already landed for 2.3 include:
- An improved DNS resolver.
- Several improvements in Kuroko.
- New system calls like pread, fcntl, rename.
- Support for multiple ICMP sockets so you can send simultaneous pings.
- A real sigsuspend, and improved support for signals overall.
- Support for current versions of the virt QEMU AArch64 configuration.
However a line was edited out which talks about 2.2.1, despite no proper release:
We have been using the intermediary version "2.2.1" since then, but it has been so long that we should rename this to "2.3" and begin planning for a formal release.
Since this announcement, many other things have been done in ToaruOS. For example, the mv, cp and rm commands have gotten a bit of an overhaul. To quote klange:
mvnow at least callsrenameto attempt to perform local moves before falling back tocpandrm, but it would be better ifmvdirectly performed the actions fromcpandrm. Sharing code between these three utilities is fairly common in other implementations.Avoiding the extra execs is beneficial on its own, but it also means we can more easily report appropriate error messages - at the moment, if
mvhas to callcpandcpfails the error message will saycpinstead ofmv.
This was then followed by:
I have largely rewritten
mvto hopefully do more correct things and support moving multiple files into a directory withrename.
Along with this, there have been a ton of fixes to the Toaru libc along with small little bugs in userspace programs. It also seems like we are getting fchmod, fchown, truncate and ftruncate capability in ToaruOS, mentioned in ToaruOS's issues by a friend of mine from the Arikoto project.
Now I know this is really silly for me to say about a hobby OS that isn't even supposed to be used like a real OS But I think the most exciting part about all of this for me is that ToaruOS might finally also be getting a Netsurf package in the repositories!
klange said in, the now almost 3 years old, issue #277 "Restore Netsurf port":
I have had a separate checkout of the main OS repo for going on three years now with the build environment for Netsurf. I double checked that the built binaries still work in a current build of the OS, which it does:
I am trying to work out what I actually patched in Netsurf. The Netsurf source tree is not from a revision control repository, so I need to directly diff it against a fresh download of the same version.
Additionally, I believe I did this previous work before the last (ever?) release of Netsurf, so upgrading might also be worthwhile. There's also been some development in Netsurf since that release...
klange also plans to give msk it's own dedicated packaging format again, which also includes a little detailed explanation!
In ToaruOS 1.2.x, backed by Python, we had a dedicated package format consisting of compressed tarballs with a JSON control file containing information on dependencies, package names, descriptions, etc. As we abandoned Python and gzip in the NIH project, this package format was dropped, and for a time the package management system was reverted to its pre-1.2 state of installing files directly. Eventually, the package system regained support for tarballs and then compressed tarballs with the introduction of our own
inflatelibrary. We also have ajsonlibrary in C, plus a separate JSON parser for Kuroko, so the dependency chain for supporting similar "all-in-one" packages has returned.The entire
mskpackage manager could use a rewrite: It suffers from a number of issues related to how it downloads and unpacks tarballs, it relies on having an available terminal emulator to display progress, and it's still built around support for all of these weird "package" formats (raw binaries, tarballs installed to particular directories, etc.).I think it's about time we actually do this...
The last version of the original MSK package manager is here: https://github.com/klange/toaruos/blob/v1.2.3/userspace/py/bin/msk.py And its GUI frontend is here: https://github.com/klange/toaruos/blob/v1.2.3/userspace/py/bin/package_manager.py
The format of the original MSK packages is worth bringing back directly, I think. A classic MSK package was a gzipped tarball consisting of a
manifest.jsonat the root, preferably the first file, and then a.directory containing the root filesystem contents for the package.The basic structure of our current
tgzfiles matches the filesystem contents of the old packages - we're just missing that manifest at the beginning.Let's look at a sample
manifest.jsonfrom the glgears package:
{"package": "glgears", "version": [1, 0, 0], "description": "Displays 3D rotating gears.", "maintainer": "K Lange <klange@toaruos.org>", "friendly-name": "GL Gears", "depends": ["mesa"], "icon": "gears"}We have a JSON object with the following members:
packageis the name of the package.versionis an array of three integer version numbers, so 1.0.0 is[1,0,0].descriptionis a textual description of the package. These could contain markup in psuedo-HTML syntax, but this was rare.maintaineris a git-author/email style description of package maintainer.friendly-nameis the name displayed in the package manager GUI.dependsis an array of dependencies that must be installed first. In theory these are all just strings, but we could support more complicated dependencies with minimum version numbers.iconis the name of an icon to display; the icons had to already be installed to be supported. We could probably do something better where the icon is embedded or expected to be found in./usr/share/icons/48/within the package.The original MSK format also didn't support post-install scripts.
Our current setup includes post-install scripts in the archive and specifies them in the (global) manifest file.
We could take a cue from deb and have the post-install script be in the archive but not in the installed content.
I cannot wait for the release of ToaruOS 2.3 and I hope this means that ToaruOS, Kuroko, Bim and other Toaru projects are back in some form of active development, or regular committing.
But the real question is, will pull request #322 make it into ToaruOS 2.3?
