POSIX utilities အစုံနှင့် Rust တွင်ရေးထားသော AV1 ဒီကုဒ်ဒါတစ်ခု

posixutils-rs 0.2.1 ပရောဂျက်ကို POSIX စံနှုန်းတွင် ဖော်ပြထားသော command line utilities အစုအဝေးကို Rust ဘာသာစကားဖြင့် ဖွံ့ဖြိုးတိုးတက်စေရန် ရည်ရွယ်၍ ၎င်း၏လိုအပ်ချက်များ (cp, mv, awk, make, vi, find၊ sort၊ wc၊ xargs၊ sh၊ m4၊ sed စသဖြင့်)။ ဖွံ့ဖြိုးတိုးတက်မှုကာလအတွင်း၊ ဖြစ်နိုင်သည့်အခါတိုင်း၊ ရှိပြီးသားသေတ္တာပက်ကေ့ဂျ်များကို အသုံးပြုပါသည်။ posixutils-rs ကုဒ်ကို MIT လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။

ပရောဂျက်သည် POSIX.2024 သတ်မှတ်ချက်များ၏ လိုအပ်ချက်များနှင့် လိုက်လျောညီထွေဖြစ်စေရန် အဓိကအာရုံစိုက်ထားပြီး GNU utilities များနှင့် လိုက်လျောညီထွေဖြစ်စေမည့် လုပ်ဆောင်ချက်ကို စာရေးဆရာများက ယုတ္တိမတန်စွာ ဖောင်းပွသည်ဟု ယူဆသည့် လုပ်ဆောင်နိုင်စွမ်းကို ပေးဆောင်ရန် အစီအစဉ်မရှိပါ။ သို့သော်၊ posixutils-rs သည် ရှိပြီးသား scripts များတွင်တွေ့ရသော ရေပန်းအစားဆုံးအဆင့်မြင့် GNU utility options များကိုအကောင်အထည်ဖော်ရန်စီစဉ်ထားသည်။

Rust တွင် GNU Coreutils အကောင်အထည်ဖော်မှုကို ဖွံ့ဖြိုးတိုးတက်စေသည့် Uutils ပရောဂျက်နှင့် ကွာခြားချက်များတွင် vi, awk, bc, m4, cron နှင့် c99 compiler ကဲ့သို့သော POSIX စနစ်အစိတ်အပိုင်းများကို ဖန်တီးခြင်းအပါအဝင် ပိုမိုကျယ်ပြန့်သော အသုံးအဆောင်များပါဝင်သည်၊ ထို့အပြင် POSIX သတ်မှတ်ချက်တွင် သတ်မှတ်ထားသော အနိမ့်ဆုံးလိုအပ်သော ရွေးချယ်မှုအစုများကိုသာ ပေးဆောင်ခြင်း သို့မဟုတ် မလိုအပ်ဘဲ လုပ်ဆောင်ရန် ပြဿနာရှိသော အနည်းငယ်မျှသာသော ချဉ်းကပ်နည်းတစ်ခုလည်း ဖြစ်သည်။ posixutils-rs suite ရှိ ပရိုဂရမ်များကို အခြားပရောဂျက်များတွင် အသုံးပြုနိုင်သည့် ကိုယ်ပိုင်ပါရှိသော ကုဒ်အဖြစ် ကနဦး ပံ့ပိုးပေးထားသည်။

လက်ရှိတွင် ပရောဂျက်မှ တီထွင်ထားသော အသုံးဝင်မှု ၅၅ ခုသည် POSIX နှင့် ကိုက်ညီပြီး စမ်းသပ်မှုအဆင့်တွင် ရှိနေပြီး၊ utilities 55 ခုသည် လိုအပ်သော လုပ်ဆောင်နိုင်စွမ်းကို ပေးဆောင်သည် (သို့သော် စမ်းသပ်မှု အကျုံးဝင်မှု မရှိသေးပါ)၊ 22 သည် မူကြမ်းအဆင့်တွင် ရှိပြီး 20 utilities တွင် လုပ်ဆောင်နိုင်ခြင်း မရှိသေးပါ။ စတင်ခဲ့သေးသည်။ လုပ်ဆောင်နိုင်စွမ်းရှိသည့် utilities များထဲတွင် awk၊ basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, sort, strings, tail, tr, tty, wc, uniq. အသုံးအဆောင်များထဲတွင်၊ crontab၊ c44၊ 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 utilities များအပြင် musl C စာကြည့်တိုက်နှင့် ftw ၏ ပံ့ပိုးမှုအပေါ် အခြေခံသည့် ပတ်ဝန်းကျင်များတွင် အလုပ်လုပ်ရန်အတွက် ကနဦးပံ့ပိုးမှုလည်း ပါဝင်သည်။ ပြည်နယ်-ကာကွယ်ထားသော လမ်းညွှန်သစ်ပင် ဖြတ်ကျော်ပြိုင်ပွဲအတွက် စာကြည့်တိုက်။

ထို့အပြင်၊ Rust ဘာသာစကားဖြင့် ရေးသားထားသော AV1 ဗီဒီယိုကုဒ်ဖော်မတ်အတွက် စွမ်းဆောင်ရည်မြင့် ဒီကုဒ်ဒါကို တီထွင်နေသည့် rav1d ပရောဂျက်၏ ကြေညာချက်ကို ကျွန်ုပ်တို့ မှတ်သားနိုင်ပါသည်။ မြင့်မားသောစွမ်းဆောင်ရည်ဖြင့်ဖော်ပြသည့် dav1d စာကြည့်တိုက်၏ ဒီကုဒ်ဒါကုဒ်ကို Rust သို့ ပို့ခြင်းဖြင့် ဖွံ့ဖြိုးတိုးတက်မှုကို လုပ်ဆောင်သည်။ ပြင်ဆင်ထားသော ဆိပ်ကမ်းသည် dav1d စာကြည့်တိုက် API နှင့် အပြည့်အဝ တွဲဖက်အသုံးပြုနိုင်ပါသည်။ ကျွန်ုပ်တို့၏ကိုယ်ပိုင်ဗားရှင်းကိုရေးသားမည့်အစား ရှိပြီးသားစာကြည့်တိုက်တစ်ခုအား ပို့ရန်ရွေးချယ်မှုသည် ဖြစ်နိုင်ချေရှိသော လိုက်ဖက်ညီသောပြဿနာများကိုရှောင်ရှားရန်နှင့် AV1 ဖော်မတ်နှင့်လုပ်ဆောင်ခြင်း၏ရှုပ်ထွေးမှုများကိုထည့်သွင်းစဉ်းစားရန်အတွက် အခြေခံအဖြစ် သက်သေပြပြီး စမ်းသပ်ထားသော ဒီကုဒ်ဒါကိုအသုံးပြုလိုသောဆန္ဒဖြင့် ရှင်းပြပါသည်။

၎င်း၏လက်ရှိပုံစံတွင်၊ rav1d ၏ပြင်ဆင်ထားသည့်အကောင်အထည်ဖော်မှုသည် စွမ်းဆောင်ရည်တွင် dav6d ၏နောက်တွင် 1% ရှိသည်၊ သို့သော် နောင်တွင်၊ ကုဒ်ကိုအကောင်းဆုံးဖြစ်အောင်ပြုလုပ်ပြီးနောက်၊ စွမ်းဆောင်ရည်တွင် တူညီမှုရရှိရန်စီစဉ်ထားသည်။ မြင့်မားသောစွမ်းဆောင်ရည်ကိုရရှိရန်၊ ပဏာမတန်ဖိုးများကို ကုဒ်ပြခြင်းအတွက် အခြေခံလုပ်ဆောင်ချက်များကို မလုံခြုံသောဘလောက်များပုံစံဖြင့် assembler တွင် လုပ်ဆောင်သည် (dav1d မှစုဝေးမှုကုဒ်ကိုအသုံးပြုသည်)၊ stream parsing ဖြင့်စစ်ဆေးပြီးနောက်ရရှိသည့်ဒေတာကိုအသုံးပြုသည် Rust တွင်ရေးထားသောလုပ်ဆောင်ချက်များ (ဗီဒီယိုဒီကုဒ်ကိရိယာများတွင် အားနည်းချက်များကို ဖော်ထုတ်ရာတွင် ယခင်အတွေ့အကြုံက ပြသာနာများသည် အဆင့်နိမ့်ဒေတာလုပ်ဆောင်မှုများတွင်မဟုတ်ဘဲ အဆင့်မြင့်ဖော်မတ်ခွဲခြမ်းစိတ်ဖြာမှုကုဒ်တွင် အဓိကအားဖြင့် ဖြစ်ပေါ်လာကြောင်းပြသသည်)။

source: opennet.ru

မှတ်ချက် Add