Оновлення варіанта GNU Coreutils, переписаного мовою Rust

Представлено випуск інструментарію uutils coreutils 0.0.12, у рамках якого розвивається аналог пакету GNU Coreutils, переписаний мовою Rust. До складу coreutils входить більше ста утиліт, включаючи sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln та ls. Одночасно випущено пакет uutils findutils 0.3.0 з реалізацією мовою Rust утиліт з набору GNU Findutils (find, locate, updatedb та xargs).

Як причина створення проекту та використання мови Rust називається бажання створити крос-платформну альтернативну реалізацію Coreutils та Findutils, здатну працювати в тому числі на платформах Windows, Redox та Fuchsia. Ще однією важливою відмінністю uutils є поширення під пермісивною ліцензією MIT замість копілефт-ліцензії GPL.

В даний час повністю доведена до паритету з GNU Coreutils реалізація 88 утиліт. Окремі недоробки відзначаються у 18 утилітах, включаючи cp, dd, date, df, install, ls, more, sort, split, tail та test. Нереалізованою залишається лише утиліта stty. При проходженні тестового набору від проекту GNU Coreutils успішно виконуються 214 тестів, але 313 тестів аналога на Rust поки не проходять. При цьому інтенсивність розробки проекту помітно збільшилася – на місяць додається 400-470 патчів від 20-50 розробників замість 30-60 від 3-8 розробників рік тому.

Оновлення варіанта GNU Coreutils, переписаного мовою Rust

З останніх досягнень відзначається оптимізація продуктивності - у поточному стані багато утилітів, такі як head і cut, значно перевершують за продуктивністю варіанти з GNU Coreutils. Охоплення тестовим набором розширено з 55% до 75% всього коду (достатньою метою є 80%). Проведено рефакторинг коду для спрощення супроводу, наприклад, уніфіковано обробку помилок у різних програмах, а chgrp і chown об'єднано код для роботи з правами доступу. Додано численні зміни для покращення сумісності з GNU Coreutils.

З планів на майбутнє відзначається реалізація утиліти stty, продовження роботи з поліпшення сумісності з GNU Coreutils, додавання оптимізацій для зменшення розміру файлів, що виконуються, а також продовження експериментів з використання в Debian і Ubuntu утиліт uutils замість GNU Coreutils і GNU Findutils (один раніше займався проектом забезпечення зборки Debian GNU/Linux з використанням компілятора Clang). Додатково відзначається підготовка пакету uutils-coreutils для macOS, експерименти із заміною GNU Coreutils на uutils coreutils у NixOS, намір використовувати uutils coreutils за умовчанням у дистрибутиві Apertis та адаптація набору uutils для Redox OS.

Джерело: opennet.ru

Додати коментар або відгук