Հրապարակվել է posixutils-rs 0.2.1 նախագծի թողարկումը, որի նպատակն է Rust լեզվով մշակել POSIX ստանդարտում նշված հրամանի տողերի կոմունալ ծառայությունների հավաքածու և բավարարել դրա պահանջները (cp, mv, awk, make, vi, find, տեսակավորում, wc, xargs, sh, m4, sed և այլն): Մշակման ընթացքում, հնարավորության դեպքում, օգտագործվում են առկա տուփերի փաթեթները: 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 կոմունալ ծառայությունների վրա աշխատանքը չի իրականացվել: դեռ սկսված. Իրականացված ֆունկցիոնալությամբ կոմունալ ծառայություններից՝ 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-ի տրամադրում: գրադարան պետության կողմից պաշտպանված գրացուցակի ծառերի անցման մրցավազքի համար:
Բացի այդ, կարելի է նշել rav1d նախագծի հայտարարությունը, որը մշակում է բարձր արդյունավետության ապակոդավորիչ AV1 վիդեո կոդավորման ձևաչափի համար՝ գրված Rust լեզվով: Մշակումն իրականացվում է dav1d գրադարանի ապակոդավորիչ կոդը, որը բնութագրվում է բարձր կատարողականությամբ, Rust-ին տեղափոխելու միջոցով: Պատրաստված նավահանգիստը լիովին համատեղելի է dav1d գրադարանի API-ի հետ: Մեր սեփական տարբերակը գրելու փոխարեն գոյություն ունեցող գրադարան տեղափոխելու ընտրությունը բացատրվում է արդեն իսկ ապացուցված և փորձարկված ապակոդավորմամբ որպես հիմք օգտագործելու ցանկությամբ՝ հնարավոր համատեղելիության խնդիրներից խուսափելու և AV1 ձևաչափով աշխատելու բոլոր բարդությունները հաշվի առնելու համար:
Իր ներկայիս տեսքով rav1d-ի պատրաստված իրականացումը կատարողականով 6%-ով զիջում է dav1d-ին, սակայն ապագայում, ծածկագրի օպտիմալացումից հետո, նախատեսվում է հասնել կատարողականի հավասարության։ Բարձր կատարողականության հասնելու համար կիրառվել է մոտեցում, որում պարզունակ արժեքների վերծանման հիմնական գործառույթներն իրականացվում են assembler-ում անապահով բլոկների տեսքով (օգտագործվում է dav1d-ի հավաքման կոդը), որոնցում ստացվում են տվյալները հոսքի վերլուծությամբ ստուգելուց հետո։ Rust-ով գրված գործառույթներ (վիդեո ապակոդավորիչներում խոցելիությունները հայտնաբերելու նախկին փորձը ցույց է տալիս, որ խնդիրները հիմնականում առաջանում են բարձր մակարդակի ձևաչափի վերլուծման կոդի մեջ, այլ ոչ թե ցածր մակարդակի տվյալների գործառնությունների մեջ):
Source: opennet.ru
