การเปิดตัวโครงการ 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 ที่เตรียมไว้นั้นช้ากว่า dav6d 1% ในด้านประสิทธิภาพ แต่ในอนาคต หลังจากปรับโค้ดให้เหมาะสมแล้ว ก็มีแผนเพื่อให้บรรลุความเท่าเทียมกันในประสิทธิภาพ เพื่อให้มีประสิทธิภาพสูงจึงได้ใช้วิธีการที่ใช้ฟังก์ชันพื้นฐานสำหรับการถอดรหัสค่าดั้งเดิมในแอสเซมเบลอร์ในรูปแบบของบล็อกที่ไม่ปลอดภัย (ใช้รหัสแอสเซมบลีจาก dav1d) ข้อมูลที่ได้รับหลังจากตรวจสอบด้วยการแยกวิเคราะห์สตรีม ฟังก์ชั่นที่เขียนด้วย Rust (ประสบการณ์ที่ผ่านมาในการระบุช่องโหว่ในตัวถอดรหัสวิดีโอแสดงให้เห็นว่าปัญหาส่วนใหญ่เกิดขึ้นในโค้ดการแยกวิเคราะห์รูปแบบระดับสูงมากกว่าในการดำเนินการข้อมูลระดับต่ำ)
ที่มา: opennet.ru
