The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Набор POSIX-утилит и декодировщик AV1, написанные на Rust

22.09.2024 08:26

Опубликован выпуск проекта posixutils-rs 0.2.1, нацеленного на разработку на языке Rust коллекции утилит командной строки, упоминаемых в стандарте POSIX и соответствующих его требованиям (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed и т.п.). При разработке по возможности используются уже существующие crate-пакеты. Код posixutils-rs распространяется под лицензией MIT.

Проект сосредоточен главным образом на достижении соответствия требованиям спецификации POSIX.2024 и не планирует обеспечивать совместимость с утилитами GNU, функциональность которых воспринимается авторами как необоснованно раздутая. Тем не менее, в posixutils-rs планируется реализовать наиболее популярные расширенные опции утилит GNU, встречающиеся в существующих скриптах.

Из отличий от проекта uutils, развивающего реализацию GNU Coreutils на Rust, упоминается более широкий охват утилит, включающий, среди прочего, создание таких упоминаемых в POSIX компонентов системы, как vi, awk, bc, m4, cron и компилятора c99, а также минималистичный подход, подразумевающий предоставление только минимально необходимого набора опций, определённых в спецификации POSIX или без которых проблематично обойтись. Программы в наборе posixutils-rs изначально поставляются в виде самодостаточного кода, который можно использовать в других проектах.

В настоящее время 55 развиваемых проектом утилит соответствуют POSIX и находятся на стадии покрытия тестами, в 22 утилитах обеспечена необходимая функциональность (но пока не реализовано покрытие тестами), 20 находятся на стадии чернового варианта, а работа над 44 утилитами ещё не начата. Среди утилит c реализованной функциональностью: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Среди утилит, работа над которыми не начиналась: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi.

Из изменений в новом выпуске отмечается добавление реализаций утилит awk, m4, ps, realpath, join, time, fuser и gencat, а также начальная поддержка работы в окружениях на базе Си-библиотеки musl и предоставление библиотеки ftw для обхода дерева каталогов с защитой от состояний гонки.

Дополнительно можно отметить анонс проекта rav1d, развивающего высокопроизводительный декодировщик формата кодирования видео AV1, написанный на языке Rust. Разработка ведётся через портирование на Rust кода декодировщика библиотеки dav1d, отличающейся высокой производительностью. Подготовленный порт полностью совместим с API библиотеки dav1d. Выбор в пользу портирования существующей библиотеки вместо написания собственного варианта объясняется желанием использовать в качестве основы уже проверенный и протестированый декодировщик, чтобы избежать возможных проблем с совместимостью и учесть все тонкости работы с форматом AV1.

В текущем виде подготовленная реализация rav1d на 6% отстаёт по производительности от dav1d, но в дальнейшем после оптимизации кода планируется добиться паритета в производительности. Для достижения высокой производительности использован подход при котором базовые функции декодирования примитивных значений реализованы на ассемблере в виде unsafe-блоков (задействован ассемблерный код из dav1d), данные в которые поступают после проверки написанными на Rust функциями разбора потока (прошлый опыт выявления уязвимостей в декодировщиках видео показывает, что проблемы в основном возникают в высокоуровневом коде разбора формата, а не в низкоуровневых операциях с данными).

  1. Главная ссылка к новости (https://github.com/rustcoreuti...)
  2. OpenNews: Выпуск набора утилит GNU Coreutils 9.5 и его варианта на языке Rust
  3. OpenNews: Первый стабильный выпуск sudo-rs, реализации утилит sudo и su на языке Rust
  4. OpenNews: Подготовлен вариант GNU Coreutils, переписанный на языке Rust
  5. OpenNews: Адаптация Debian для использования реализации coreutils на языке Rust
  6. OpenNews: Эксперимент по переводу Gentoo на использование варианта Coreutils на языке Rust
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/61908-rust
Ключевые слова: rust
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (18) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Walker (??), 09:11, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Количество звездочек на GitHub свидетельствует о том, что это не вызывает большого интереса у пользователей.


     
     
  • 2.3, Аноним (3), 09:18, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Это всё потому что вы ставите мало лайков и не подписыватесь на канал во время пулреквеста. Алгоритмы гитхаба не продвигают проект! Все ссылки и куаркоды в описании!
     
  • 2.17, Аноним (17), 10:19, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так эта шляпа только опубликовалась. У uutils 17k звёзд, например.
     
  • 2.22, Facemaker (?), 10:27, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Количество звездочек на GitHub свидетельствует о том, что это не вызывает большого интереса у пользователей.

    Спасибо за напоминание, добавил звезду.

     

  • 1.5, Аноним (5), 09:28, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    как там, cargo уже дотягивает до conan или хотя бы до vcpkg?
     
  • 1.7, Аноним (7), 09:31, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Поясните, каким образом эти новости связаны? Связь в том, что оба проекта -- едва рабочая шляпа?
     
  • 1.10, Аноним (10), 09:34, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >не планирует обеспечивать совместимость с утилитами GNU, функциональность которых воспринимается авторами как необоснованно раздутая.

    Рекомендую авторам хотябы недельку поюзать солярку без гнутых утилит, а потом говорить о раздутой функциональности.

     
  • 1.13, Аноним (13), 09:45, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А что, пусть люди тренируются. Всяко лучше, чем заниматся всякими ...
     
  • 1.14, Fracta1L (ok), 09:54, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вчера я попробовал собрать amdgpu_top, написанный на расте. Оно по зависимостям скачало адову тучу крейтов (на мелкую утилитку, ага), среди которых была пачка чего-то там для windows.

    Сдаётся мне, в лице растаманов мир увидит такое цунами дерьмокодинга, какого не видел даже в лице джаваскрипто- и питоноприматов.

     
  • 1.15, n00by (ok), 10:06, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    6% производительность вроде бы немного -- такую разницу иногда можно получить, просто сменив транслятор. Но это потеря на обёртке над оптимизированным асмом. Если в первом приближении принять, что работа обёртки занимает 10% времени, то получается новый код медленнее на 60%?
     
  • 1.18, Аноним (18), 10:19, 22/09/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

     ....ответы скрыты (2)

  • 1.24, Аноним (24), 10:43, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > Код posixutils-rs распространяется под лицензией MIT.

    Опять корпорациям помогают.

     
  • 1.25, Аноним (25), 10:46, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > rav1d
    > написанный на языке Rust.

    Assembly 65.3%
    Rust 17.1%
    C 16.1%

     
     
  • 2.29, Я (??), 11:26, 22/09/2024 [^] [^^] [^^^] [ответить]  
  • +/
    на 17.1% безопаснее по памяти и лучше алгоритмы, чем остальные
     

  • 1.28, мяв (?), 11:18, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    зачем оно надо, если rust - не в POSIX? было б куда интереснее увидеть это все на с99.
     
  • 1.31, Аноним (31), 11:49, 22/09/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    То есть, они переписали их на rust не один раз, а два?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру