POSIX стандартад дурдсан командын шугамын хэрэгслүүдийн цуглуулгыг Rust хэл дээр хөгжүүлэх, түүний шаардлагад нийцүүлэх (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m0.2.1, sed гэх мэт). Боломжтой бол хөгжүүлэлтийн явцад одоо байгаа хайрцагны багцуудыг ашигладаг. posixutils-rs кодыг MIT лицензийн дагуу түгээдэг.
Төсөл нь юуны түрүүнд POSIX.2024 техникийн үзүүлэлтийн шаардлагыг хангахад чиглэгдсэн бөгөөд GNU хэрэгслүүдтэй нийцтэй байдлыг хангахаар төлөвлөөгүй бөгөөд зохиогчид функцийг нь үндэслэлгүй томруулсан гэж үздэг. Гэсэн хэдий ч posixutils-rs нь одоо байгаа скриптүүдээс олдсон хамгийн алдартай дэвшилтэт GNU хэрэгслийн сонголтуудыг хэрэгжүүлэхээр төлөвлөж байна.
Rust дахь GNU Coreutils хэрэгжилтийг хөгжүүлдэг uutils төслөөс ялгаатай нь илүү өргөн хүрээний хэрэгслүүд, үүнд vi, awk, bc, m4, cron болон c99 хөрвүүлэгч зэрэг POSIX системийн бүрэлдэхүүн хэсгүүдийг бий болгох, түүнчлэн POSIX-ийн тодорхойлолтод тодорхойлогдсон эсвэл үүнгүйгээр хийх нь асуудалтай хамгийн бага шаардлагатай сонголтуудын багцыг өгөхийг илэрхийлдэг минималист арга. Posixutils-rs багц дахь программуудыг эхлээд бусад төслүүдэд ашиглаж болох бие даасан код хэлбэрээр нийлүүлдэг.
Одоогийн байдлаар төслөөс боловсруулсан 55 хэрэгсэл POSIX стандартад нийцэж байгаа бөгөөд туршилтын хамрах шатандаа, 22 хэрэгсэл шаардлагатай функцээр хангагдсан (гэхдээ туршилтын хамрах хүрээ хараахан хэрэгжээгүй байна), 20 нь төслийн шатанд, 44 хэрэгсэл дээр ажиллаагүй байна. хараахан эхэлсэн. Хэрэгжүүлсэн функцтэй хэрэгслүүдийн дунд: 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 C номын санд суурилсан орчинд ажиллах анхны дэмжлэг, ftw программ хангамж зэргийг багтаасан болно. улсын хамгаалалттай лавлах мод уралдах номын сан.
Нэмж дурдахад, Rust хэл дээр бичигдсэн AV1 видео кодчилолын форматын өндөр хүчин чадалтай декодчилогчийг хөгжүүлж буй rav1d төслийн зарыг тэмдэглэж болно. Өндөр гүйцэтгэлээр тодорхойлогддог dav1d номын сангийн декодер кодыг Rust руу шилжүүлэх замаар хөгжүүлэлт хийдэг. Бэлтгэсэн порт нь dav1d номын сангийн API-тай бүрэн нийцдэг. Өөрийнхөө хувилбарыг бичихийн оронд одоо байгаа номын санг зөөвөрлөх сонголт нь нийцтэй байдлын асуудлаас зайлсхийх, AV1 форматтай ажиллах бүх нарийн ширийн зүйлийг харгалзан үзэхийн тулд аль хэдийн батлагдсан, туршиж үзсэн декодер ашиглах хүсэлтэй байгаатай холбоотой юм.
Одоогийн байдлаар rav1d-ийн бэлтгэсэн хэрэгжилт нь гүйцэтгэлийн хувьд dav6d-ээс 1% хоцорч байгаа боловч ирээдүйд кодыг оновчтой болгосны дараа гүйцэтгэлийн паритетийг бий болгохоор төлөвлөж байна. Өндөр гүйцэтгэлд хүрэхийн тулд анхдагч утгыг тайлах үндсэн функцуудыг ассемблер дээр аюултай блок хэлбэрээр (dav1d-ийн угсрах кодыг ашигладаг) хэрэгжүүлсэн аргыг ашигласан бөгөөд өгөгдлийг урсгал задлан шинжилж шалгасны дараа хүлээн авдаг. Rust хэл дээр бичигдсэн функцууд (видео декодчилогчдын эмзэг байдлыг олж илрүүлсэн өнгөрсөн туршлагаас харахад асуудал нь доод түвшний өгөгдлийн үйлдлээс илүүтэйгээр дээд түвшний форматын задлан шинжлэлийн кодонд үүсдэг).
Эх сурвалж: opennet.ru
