Актуализация на версията на 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, добавянето на оптимизации за намаляване на размера на изпълнимите файлове, както и продължаването на експериментите с използването на uutils вместо GNU Coreutils и GNU Findutils в Debian и Ubuntu (един от основните разработчици на uutils преди това е работил по проекта за осигуряване на компилацията на Debian GNU/Linux с компилатора Clang). Допълнително се отбелязва подготовката на пакета uutils-coreutils за macOS, експерименти с подмяна на GNU Coreutils с uutils coreutils в NixOS, намерението да се използва uutils coreutils по подразбиране в дистрибутива Apertis и адаптиране на набора uutils за Redox OS.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster