פרסום פרויקט posixutils-rs 0.2.1, שמטרתו לפתח בשפת Rust אוסף של כלי עזר של שורת הפקודה המוזכרים בתקן POSIX ועומדים בדרישות שלו (cp, mv, awk, make, vi, find, sort, 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. היציאה המוכנה תואמת לחלוטין ל-API של ספריית dav1d. הבחירה לנייד ספרייה קיימת במקום לכתוב גרסה משלנו מוסברת על ידי הרצון להשתמש במפענח שכבר מוכח ובדוק כבסיס על מנת למנוע בעיות תאימות אפשריות ולקחת בחשבון את כל המורכבויות בעבודה עם פורמט AV1.
במתכונתו הנוכחית, היישום המוכן של rav1d נמצא בפיגור של 6% ב-dav1d בביצועים, אך בעתיד, לאחר אופטימיזציה של הקוד, הוא מתוכנן להשיג זוגיות בביצועים. כדי להשיג ביצועים גבוהים, נעשה שימוש בגישה שבה הפונקציות הבסיסיות לפענוח ערכים פרימיטיביים מיושמות ב-Assembler בצורה של בלוקים לא בטוחים (משתמשים בקוד הרכבה מ-dav1d), שהנתונים אליהם מתקבלים לאחר בדיקה עם ניתוח זרם פונקציות שנכתבו ב-Rust (ניסיון העבר בזיהוי נקודות תורפה במפענחי וידאו מראה שבעיות מתעוררות בעיקר בקוד ניתוח פורמט ברמה גבוהה, ולא בפעולות נתונים ברמה נמוכה).
מקור: OpenNet.ru
