28 de abril e 5 de maio ocorreram os lançamentos 2.3 e 2.3.1 do sistema operacional semelhante ao Unix ToaruOS, desenvolvido do zero e fornecido com seu próprio núcleo, carregador de inicialização, biblioteca padrão em C, gerenciador de pacotes, componentes de espaço do usuário e uma interface gráfica com um gerenciador de janelas composto.
Inicialmente, o projeto foi desenvolvido na Universidade de Illinois como um trabalho de pesquisa na criação de novas interfaces gráficas compostas, mas depois se transformou em um sistema operacional independente. O código do projeto é escrito em C e é distribuído sob licença BSD. Um imagem live (2.3.1), com tamanho de 7.4 MB, foi preparada para ser testada no QEMU, VMware ou VirtualBox.
A base do ToaruOS é um núcleo que utiliza uma arquitetura híbrida modular, combinando uma base monolítica e meios para usar módulos carregáveis, nos quais a maioria dos drivers de dispositivo existentes é estruturada, como drivers de disco (PATA e ATAPI), sistema de arquivos Ext2 e ISO9660, framebuffer, teclados, mouses, placas de rede (AMD PCnet FAST, Realtek RTL8139 e Intel PRO/1000), chips de som (Intel AC’97), assim como adições do VirtualBox para sistemas convidados. O núcleo suporta threads Unix, TTY, sistema de arquivos virtual, pseudo-sistema de arquivos /proc, multithreading, IPC, ramdisk, ptrace, memória compartilhada, multitarefa e outras funcionalidades típicas.
O sistema é equipado com um gerenciador de janelas composto, suporta arquivos executáveis vinculados dinamicamente no formato ELF, multitarefa, pilha gráfica, pode executar Python 3 e GCC. O sistema de arquivos utilizado é o ext2. O carregador de inicialização suporta BIOS e EFI. O stack de rede permite usar a API de sockets no estilo dos sistemas BSD e suporta interfaces de rede, incluindo loopback.
Entre os aplicativos próprios, destaca-se o editor de código semelhante ao Vi, Bim, que tem sido utilizado nos últimos anos para desenvolver aplicativos específicos para o ToaruOS, como gerenciador de arquivos, emulador de terminal, painel gráfico com suporte a widgets, gerenciador de pacotes, além de bibliotecas para suporte a imagens (PNG, JPEG) e fontes TrueType. O ToaruOS teve a portabilidade de programas como Vim, GCC, Binutils, FreeType, MuPDF, SDL, Cairo, Doom, Quake, emulador do Super Nintendo, Bochs, etc.
O projeto também está desenvolvendo sua própria linguagem de programação dinâmica Kuroko, destinado a substituir o Python no desenvolvimento de utilitários e aplicativos de usuário para o sistema. A linguagem, que lembra a sintaxe do Python (posicionada como um dialecto reduzido do Python com definição explícita de variáveis), se distingue pela implementação muito compacta. Suporta compilação e interpretação de bytecode. O interpretador de bytecode possui um coletor de lixo, suporta multithreading sem utilizar bloqueio global. O compilador e o interpretador podem ser empacotados como uma pequena biblioteca compartilhada (~500KB), integrável com outros programas e extensível através da API C. Além do ToaruOS, a linguagem pode ser utilizada no Linux, macOS, Windows e executada em navegadores com suporte a WebAssembly.
Em nova versão:
- O emulador de terminal ganhou suporte a abas, podendo alternar entre elas com a sequência Alt-número. Foi implementada a emulação de negrito por meio da sobreposição dupla de glifos. Adicionados submenus "Estado do terminal" para mostrar o estado de vários modos e "Enviar sinal" para enviar sinais a processos em segundo plano.
- Foi implementado um visualizador de manuais do sistema, que suporta páginas man no formato roff.
- Adicionado um submenu no menu de contexto para gerenciar o layout de mosaico das janelas.
- Novas chamadas de sistema foram implementadas no núcleo, incluindo pread/pwrite, sigsuspend, sigqueue, lchown, pipe2, dup3, getrusage e fcntl. Adicionada a supporte para flags FD_CLOEXEC e FD_CLOFORK. Implementado suporte para randomização do endereço de carregamento do núcleo. A ABI das chamadas de sistema foi traduzida para usar as instruções syscall/sysret.
- As funcionalidades do console virtual (TTY) foram significativamente ampliadas, proporcionando emulação do modo texto VGA com base no framebuffer.
- Na versão para arquitetura Aarch64, foi implementada a capacidade de inicializar em máquinas virtuais baseadas em QEMU.
- O stack de rede ganhou suporte para operação simultânea com múltiplos sockets ICMP.
- Novas funções foram adicionadas à biblioteca padrão libc: getdelim, getline, scandir, telldir, rewinddir, seekdir, ftruncate, fchmod, fchown, popen, pclose, sig2str, str2sig.
- Novas utilitários padrão foram adicionados: rmdir, uniq, cmp, zcat, realpath, id, nohup, cksum. Novas opções foram adicionadas a ls, grep e fgrep. As utilitários ps, top, pstree, killall e pidof foram reescritas, sendo convertidas para a nova biblioteca libtoaru_procfs, que unifica o funcionamento com o pseudo-FS /proc. O interpretador de comandos esh foi ampliado.
- Foi adicionada a ferramenta check-image para verificar a capacidade da biblioteca gráfica de carregar uma imagem e exibir o tamanho da imagem.
- A linguagem de programação Kuroko foi atualizada para a versão 1.5rc2.
- O editor de texto foi atualizado para a versão 3.2 Bim (github.com), criado com base no Vim. A nova versão melhorou a realce de sintaxe, expandiu o suporte a scripts na linguagem Kuroko e adicionou um novo sistema de autocompletar.
Fonte: linux.org.ru
