Aktualizacja GNU Coreutils przepisana w Rust

Przedstawiono wydanie zestawu narzędzi uutils coreutils 0.0.12, w ramach którego rozwijany jest odpowiednik pakietu GNU Coreutils, przepisany w języku Rust. Coreutils zawiera ponad sto narzędzi, w tym sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln i ls. W tym samym czasie wydano pakiet uutils findutils 0.3.0 z implementacją narzędzi z pakietu GNU Findutils w języku Rust (find, location, updatedb i xargs).

Powodem powstania projektu i wykorzystania języka Rust jest chęć stworzenia wieloplatformowej, alternatywnej implementacji Coreutils i Findutils, która może działać również na platformach Windows, Redox i Fuchsia. Inną ważną różnicą w stosunku do uutils jest to, że jest rozpowszechniany na licencji permissive MIT zamiast licencji typu copyleft GPL.

Obecnie implementacja 88 narzędzi jest w pełni zrównana z GNU Coreutils. Poszczególne błędy odnotowano w 18 narzędziach, w tym cp, dd, date, df, install, ls, more, sort, split, tail i test. Tylko narzędzie stty pozostaje niezaimplementowane. Po przejściu zestawu testów z projektu GNU Coreutils pomyślnie ukończono 214 testów, ale analog Rusta nie przeszedł jeszcze 313 testów. Jednocześnie wyraźnie wzrosła intensywność rozwoju projektu – miesięcznie dodawanych jest 400-470 łatek od 20-50 programistów zamiast 30-60 od 3-8 programistów rok temu.

Aktualizacja GNU Coreutils przepisana w Rust

Spośród ostatnich osiągnięć odnotowano optymalizację wydajności - w obecnym stanie wiele narzędzi, takich jak head i cut, znacznie przewyższa pod względem wydajności opcje z GNU Coreutils. Pokrycie zestawu testów wzrosło z 55% do 75% całego kodu (80% to wystarczający cel). Kod został zrefaktoryzowany, aby uprościć konserwację, na przykład ujednolicono obsługę błędów w różnych programach, a kod do pracy z prawami dostępu połączono w chgrp i chown. Dodano liczne zmiany poprawiające kompatybilność z GNU Coreutils.

Plany na przyszłość obejmują wdrożenie narzędzia stty, dalsze prace nad poprawą kompatybilności z GNU Coreutils, dodanie optymalizacji w celu zmniejszenia rozmiaru plików wykonywalnych oraz dalsze eksperymenty z wykorzystaniem uutils zamiast GNU Coreutils i GNU Findutils (jeden z głównych deweloperzy uutils) w Debianie i Ubuntu, wcześniej pracowali nad projektem mającym na celu udostępnienie kompilacji Debiana GNU/Linux przy użyciu kompilatora Clang). Dodatkowo odnotowuje się przygotowanie pakietu uutils-coreutils dla macOS, eksperymenty z zastąpieniem GNU Coreutils przez uutils coreutils na NixOS, zamiar używania domyślnie uutils coreutils w dystrybucji Apertis oraz adaptację zestawu uutils dla Redox OS .

Źródło: opennet.ru

Dodaj komentarz