Ang pagpapalabas ng posixutils-rs 0.2.1 na proyekto ay nai-publish, na naglalayong bumuo sa Rust na wika ng isang koleksyon ng mga command line utility na binanggit sa pamantayan ng POSIX at matugunan ang mga kinakailangan nito (cp, mv, awk, make, vi, find, sort, wc, xargs, sh, m4, sed, atbp.). Sa panahon ng pag-unlad, hangga't maaari, ang mga umiiral na pakete ng crate ay ginagamit. Ang posixutils-rs code ay ipinamahagi sa ilalim ng lisensya ng MIT.
Ang proyekto ay pangunahing nakatuon sa pagkamit ng pagsunod sa mga kinakailangan ng POSIX.2024 na detalye at hindi planong magbigay ng compatibility sa mga utility ng GNU, ang functionality na kung saan ay itinuturing ng mga may-akda bilang hindi makatwirang bloated. Gayunpaman, plano ng posixutils-rs na ipatupad ang pinakasikat na advanced na mga opsyon sa utility ng GNU na makikita sa mga kasalukuyang script.
Ang mga pagkakaiba sa proyekto ng uutils, na bumubuo sa pagpapatupad ng GNU Coreutils sa Rust, ay kinabibilangan ng mas malawak na saklaw ng mga utility, kabilang ang, bukod sa iba pang mga bagay, ang paglikha ng mga naturang bahagi ng system ng POSIX gaya ng vi, awk, bc, m4, cron at ang c99 compiler, pati na rin ang isang minimalistic na diskarte , na nagpapahiwatig ng pagbibigay lamang ng minimum na kinakailangang hanay ng mga opsyon na tinukoy sa detalye ng POSIX o kung saan ay may problemang gawin nang wala. Ang mga programa sa posixutils-rs suite ay unang ibinibigay bilang self-contained code na maaaring magamit sa ibang mga proyekto.
Sa kasalukuyan, 55 na mga utility na binuo ng proyekto ang sumusunod sa POSIX at nasa yugto ng saklaw ng pagsubok, 22 na mga utility ang nagbibigay ng kinakailangang functionality (ngunit ang saklaw ng pagsubok ay hindi pa naipapatupad), 20 ay nasa yugto ng draft, at nagtatrabaho sa 44 na mga utility ay hindi pa nagsimula pa. Kabilang sa mga utility na may ipinatupad na functionality: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. Kabilang sa mga utility, ang trabahong hindi pa nasisimulan: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .
Kasama sa mga pagbabago sa bagong release ang pagdaragdag ng mga pagpapatupad ng awk, m4, ps, realpath, join, time, fuser at gencat utilities, pati na rin ang paunang suporta para sa pagtatrabaho sa mga kapaligiran batay sa musl C library at ang probisyon ng ftw silid-aklatan para sa protektadong-estado na direktoryo na puno ng traversal race.
Bukod pa rito, mapapansin natin ang anunsyo ng proyektong rav1d, na bumubuo ng decoder na may mataas na pagganap para sa format ng video coding ng AV1, na nakasulat sa wikang Rust. Ang pag-unlad ay isinasagawa sa pamamagitan ng pag-port ng decoder code ng dav1d library, na kung saan ay nailalarawan sa pamamagitan ng mataas na pagganap, sa Rust. Ang inihandang port ay ganap na tugma sa dav1d library API. Ang pagpili na mag-port ng isang umiiral na library sa halip na magsulat ng aming sariling bersyon ay ipinaliwanag sa pamamagitan ng pagnanais na gumamit ng isang napatunayan na at nasubok na decoder bilang batayan upang maiwasan ang mga posibleng problema sa compatibility at isaalang-alang ang lahat ng mga intricacies ng pagtatrabaho sa AV1 format.
Sa kasalukuyang anyo nito, ang inihandang pagpapatupad ng rav1d ay 6% sa likod ng dav1d sa pagganap, ngunit sa hinaharap, pagkatapos i-optimize ang code, ito ay pinlano na makamit ang pagkakapantay-pantay sa pagganap. Upang makamit ang mataas na pagganap, ginamit ang isang diskarte kung saan ang mga pangunahing pag-andar para sa pag-decode ng mga primitive na halaga ay ipinatupad sa assembler sa anyo ng mga hindi ligtas na mga bloke (ginagamit ang code ng pagpupulong mula sa dav1d), ang data kung saan natanggap pagkatapos suriin gamit ang pag-parse ng stream mga function na nakasulat sa Rust (ang nakaraang karanasan sa pagtukoy ng mga kahinaan sa mga video decoder ay nagpapakita na ang mga problema ay pangunahing lumitaw sa mataas na antas na format ng parsing code, sa halip na sa mababang antas ng mga pagpapatakbo ng data).
Pinagmulan: opennet.ru
