ToaruOS 2.3 正式发布,这是一个完全自主开发的类 Unix 操作系统,它拥有独立的内核、引导加载程序、标准 C 库、包管理器、用户空间组件以及带有合成窗口管理器的图形界面。该项目最初由伊利诺伊大学开发,旨在研究如何创建新的合成图形界面,后来发展成为一个独立的操作系统。ToaruOS 2.1 的代码使用 C 语言编写,并以 BSD 许可证发布。用户可以下载 7.4 MB 的 Live 镜像,并在 QEMU、VMware 或 VirtualBox 中进行测试。 
ToaruOS 基于使用混合模块化架构的内核,该架构结合了整体框架和使用可加载模块的工具,这些模块构成了大多数可用的设备驱动程序,例如磁盘驱动程序(PATA 和 ATAPI)、EXT2 和 ISO9660 文件系统、帧缓冲区、键盘、鼠标、网卡(AMD PCnet FAST、Realtek RTL8139 和 Intel PRO/1000)、声音芯片(Intel AC'97)以及用于客户系统的 VirtualBox 附加组件。 内核支持Unix线程、TTY、虚拟文件系统、伪文件系统/proc、多线程、IPC、ramdisk、ptrace、共享内存、多任务等标准功能。
该系统采用合成式窗口管理器,支持动态链接的ELF可执行文件、多任务处理、图形堆栈,并可运行Python 3和GCC。文件系统采用ext2。引导加载程序支持BIOS和EFI。网络堆栈支持BSD风格的套接字API和网络接口,包括环回接口。
在众多原生应用中,类 Vi 代码编辑器 Bim 尤为突出。过去几年,它一直被用于开发 ToaruOS 特有的应用,例如文件管理器、终端模拟器、支持控件的图形工具栏、包管理器以及图像支持库(PNG、JPEG)和 TrueType 字体库。Vim、GCC、Binutils、FreeType、MuPDF、SDL、Cairo、Doom、Quake、超级任天堂模拟器、Bochs 等程序都已移植到 ToaruOS。
该项目还在开发自己的动态编程语言 Kuroko,旨在取代 Python,用于开发系统的实用程序和用户应用程序。该语言语法与 Python 类似(它被定位为带有显式变量定义的 Python 简化方言),并且实现非常紧凑。它支持字节码的编译和解释。字节码解释器提供垃圾回收器,并支持无需全局锁的多线程。编译器和解释器可以编译成一个小型共享库(约 500 KB),与其他程序集成,并通过 C API 进行扩展。除了 ToaruOS 之外,该语言还可以用于其他系统。 Linux, macOS, Windows 并且可以在支持 WebAssembly 的浏览器中运行。
在新版本中:
- 终端模拟器现在支持标签页,可以使用 Alt+数字组合键切换标签页。粗体字体模拟现在通过双字形叠加实现。新增了“终端状态”子菜单,用于显示各种模式的状态;新增了“发送信号”子菜单,用于向后台进程发送信号。
- 已实现一个系统手册查看器,支持 roff 格式的 man 手册。
- 上下文菜单中新增了一个用于管理窗口平铺的子菜单。
- 内核实现了新的系统调用,包括 pread/pwrite、sigsuspend、sigqueue、lchown、pipe2、dup3、getrusage 和 fcntl。新增了对 FD_CLOEXEC 和 FD_CLOFORK 标志的支持。内核启动地址随机化功能已实现。系统调用 ABI 已迁移至使用 syscall/sysret 指令。
- 虚拟控制台(TTY)的功能得到了显著扩展,并提供了基于帧缓冲区的VGA文本模式的模拟。
- 适用于 Aarch64 架构的版本能够在以下环境中运行: 虚拟机 基于QEMU。
- 网络协议栈已添加对多个 ICMP 套接字同时操作的支持。
- 以下函数已添加到标准 libc 库中:getdelim、getline、scandir、telldir、rewinddir、seekdir、ftruncate、fchmod、fchown、popen、pclose、sig2str、str2sig。
- 新增了以下标准实用程序:rmdir、uniq、cmp、zcat、realpath、id、nohup 和 cksum。ls、grep 和 fgrep 添加了新选项。ps、top、pstree、killall 和 pidof 实用程序已重写并迁移到新的 libtoaru_procfs 库,该库统一了对 /proc 伪文件系统的操作。esh 命令解释器已得到扩展。
- 添加了图像检查工具,用于检查图像是否可以被图形库加载,并显示图像大小。
- 黑子的编程语言已更新至 1.5rc2 版本。
- 受 Vim 启发而开发的 Bim 文本编辑器已更新至 3.2 版本。新版本改进了语法高亮显示,扩展了对 Kuroko 脚本的支持,并新增了自动补全系统。
来源: opennet.ru
