Абнаўленне варыянту 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

Дадаць каментар