Po dwóch latach prac rozwojowych i tydzień po 25. rocznicy powstania projektu, opublikowano szóstą wersję beta systemu operacyjnego Haiku R1. Projekt został początkowo stworzony w reakcji na zamknięcie systemu BeOS i rozwijał się pod nazwą OpenBeOS, ale w 2004 roku został przemianowany z powodu roszczeń związanych z używaniem znaku towarowego BeOS w nazwie. W celu oceny działania nowej wersji przygotowano kilka rozruchowych obrazów Live (x86_64, x86 1.4 GB). Źródłowe kody większości systemu Haiku są udostępniane na podstawie wolnej licencji MIT, z wyjątkiem niektórych bibliotek, kodeków multimedialnych i komponentów pochodzących z innych projektów.
System operacyjny Haiku jest ukierunkowany na komputery osobiste, używa własnego jądra opartego na modułowej architekturze, optymalizowanej pod kątem wysokiej responsywności na działania użytkownika oraz efektywnego wykonywania aplikacji wielowątkowych. Dla programistów udostępniono obiektowo zorientowane API. System oparty jest bezpośrednio na technologiach BeOS 5 i ma na celu binarną kompatybilność z aplikacjami dla tego systemu. Minimalne wymagania sprzętowe: procesor Pentium oraz 384 MB RAM (zaproponowane to Pentium4 i 512 MB RAM, a w przypadku kompilacji b — 2 GB RAM).
Jako system plików używany jest OpenBFS, wspierający rozszerzone atrybuty plików, dziennikowanie, 64-bitowe wskaźniki, wsparcie dla przechowywania metatagów (dla każdego pliku można zachować atrybuty w formie klucz=wartość, co sprawia, że system plików przypomina bazę danych) oraz specjalne indeksy przyspieszające ich wyszukiwanie. Do organizacji struktury katalogów stosowane są drzewa "B+ tree". Z kodu BeOS do Haiku zaadaptowano menedżer plików Tracker oraz pasek narzędzi Deskbar, których kody źródłowe zostały udostępnione po zniknięciu BeOS z rynku.
Główne nowości:
- Dodano wsparcie dla aktualnych wydań przeglądarki Firefox oraz projektów opartych na technologiach Mozilli, takich jak LibreWolf, Waterfox, Floorp i Icedove (Thunderbird), które teraz można zainstalować przez repozytorium HaikuDepot.

- Zaportowano hipernadzorcę NVMM (NetBSD Virtual Machine Monitor), dzięki czemu w QEMU można teraz uruchamiać maszyny wirtualne, wykorzystując mechanizmy sprzętowej wirtualizacji Intel VT-x i AMD-V.

- Projekt HaikuPorts zapewnia wsparcie dla portów różnych programów, w tym wielu aplikacji KDE i GNOME. Do repozytorium dodano port kompilatora oraz runtime dla języka programowania Go. Przeniesiono sterowniki graficzne firmy NVIDIA dla kart graficznych RTX 2xxx i nowszych.

- Wprowadzono liczne optymalizacje wydajności, które łącznie doprowadziły do skrócenia czasu kompilacji HaikuWebKit prawie o połowę (z 4h53m do 2h33m). Przyspieszono przetwarzanie typów MIME od 5 do 10 razy. Ulepszono realizację funkcji haszujących. W jądrze poprawiono działanie blokad w VFS oraz w systemie zarządzania pamięcią. Zwiększono wydajność anonimowych kanałów. Zwiększono efektywność buforowania elementów katalogów oraz inode, co przyczyniło się do znacznego przyspieszenia operacji przy pracy z dużą liczbą plików.
- Przeprowadzono refaktoryzację zarządzania pamięcią. Udoskonalono działanie w warunkach niedoboru pamięci. O 20% zmniejszono zużycie pamięci przez struktury w packagefs. Zwiększono efektywność obsługi atrybutów pamięci oraz obszarów mprotect. W libc dodano nową implementację funkcji malloc, opartą na kodzie z OpenBSD. Ulepszono implementację mmap. Wprowadzone optymalizacje pozwoliły na uruchomienie Haiku w trybie graficznym na 32-bitowym systemie mającym tylko 128 MB RAM.
- W menedżerze plików Tracker, po naciśnięciu klawisza Shift podczas otwartego menu, zaimplementowano zmianę działania niektórych elementów menu (na przykład zamiast przeniesienia do kosza wyświetla się przycisk do usunięcia).
- W interfejsie wyszukiwania plików dodano możliwość ograniczenia wyszukiwania do określonych katalogów.

- W SoftwareUpdater zaimplementowano automatyczne usuwanie starych stanów pakietów po pewnym czasie od ich usunięcia. W narzędziu pkgman dodano wyświetlanie rekomendacji do uruchomienia polecenia „pkgman cleanup” w przypadku wykrycia dużej liczby starych stanów pakietów.
- Do wbudowanego narzędzia do robienia zrzutów ekranu, wywoływanego klawiszem PrintScreen, dodano wsparcie dla zaznaczania obszaru, który ma być zapisany na ekranie.
- W narzędziu Team monitor, wywoływanym kombinacją klawiszy Ctrl+Alt+Del, zapewniono grupowanie aplikacji nie-GUI uruchomionych przez program z interfejsem graficznym.

- W menedżerze partycji DriveSetup dodano menu „Disk image” do pracy z obrazami dysków (montowanie obrazów, kopiowanie zawartości partycji dyskowych do obrazów i odwrotnie).
- W menedżerze aplikacji app_server i okienkowym serwerze dodano obsługę ponownego połączenia aplikacji oraz przywracania ich stanu (po awaryjnym zakończeniu działania app_server wszystkie wcześniej uruchomione aplikacje są teraz automatycznie ponownie łączone).
- W wskaźniku stanu akumulatorów PowerStatus dodano wsparcie dla systemów z wieloma akumulatorami.
- W różnych aplikacjach poprawiono wsparcie dla ciemnego motywu oraz HiDPI.
- W narzędziu launch_roster dodano możliwość wyświetlania stanu wszystkich usług i prac w formacie tabeli.
- W systemie plików FAT dodano obsługę sektorów 4KB oraz dysków o pojemności większej niż 2TB. W BFS zoptymalizowano skanowanie wolnych bloków.
- Poprawiono wsparcie dla sprzętu wydanego w ciągu ostatnich 5 lat. Rozwiązano problemy z dźwiękiem. Zwiększono wsparcie dla adapterów Ethernet i Wi-Fi z interfejsem USB przez przeniesienie sterowników z FreeBSD i OpenBSD.
- Rozszerzono kompatybilność z POSIX, dodano wsparcie dla funkcji getresuid, setresuid, getresgid, setresgid, pipe3, dup2, mkostemp, reallocarray, memmem, qsort_r, posix_devctl, pthread_getcpuclockid i posix_spawn_file_actions_add[f]chdir, jak również dla flag O_CLOFORK, MSG_CMSG_CLOEXEC, MSG_CMSG_CLOFORK, SOCK_SEQPACKET, MSG_TRUNC, MSG_PEEK i WCOREDUMP.
- Dodano wsparcie dla funkcji specyficznych dla systemów GNU i BSD: getloadavg, closefrom i closerange.
- Poprawiono kompatybilność z API FUSE, stosowanym w implementacjach systemów plików squashfs i exFAT.
- Kontynuowane jest rozwijanie portu dla architektury ARM64, który teraz uruchamia się poprawnie w maszynie wirtualnej. Przeprowadzane są eksperymenty z uruchamianiem Haiku na systemach z chipami Apple M1.
Źródło: opennet.ru





