Một bộ tiện ích POSIX và bộ giải mã AV1 được viết bằng Rust

Việc phát hành dự án posixutils-rs 0.2.1 đã được xuất bản, nhằm mục đích phát triển bằng ngôn ngữ Rust một tập hợp các tiện ích dòng lệnh được đề cập trong tiêu chuẩn POSIX và đáp ứng các yêu cầu của nó (cp, mv, awk, make, vi, find, sắp xếp, wc, xargs, sh, m4, sed, v.v.). Trong quá trình phát triển, bất cứ khi nào có thể, các gói thùng hiện có sẽ được sử dụng. Mã posixutils-rs được phân phối theo giấy phép MIT.

Dự án tập trung chủ yếu vào việc đạt được sự tuân thủ các yêu cầu của đặc tả POSIX.2024 và không có kế hoạch cung cấp khả năng tương thích với các tiện ích GNU, chức năng của tiện ích này được các tác giả cho là cồng kềnh một cách vô lý. Tuy nhiên, posixutils-rs có kế hoạch triển khai các tùy chọn tiện ích GNU nâng cao phổ biến nhất được tìm thấy trong các tập lệnh hiện có.

Sự khác biệt so với dự án uutils, dự án phát triển triển khai GNU Coreutils trong Rust, bao gồm phạm vi tiện ích rộng hơn, bao gồm, trong số những thứ khác, việc tạo ra các thành phần hệ thống POSIX như vi, awk, bc, m4, cron và trình biên dịch c99, cũng như cách tiếp cận tối giản, ngụ ý chỉ cung cấp bộ tùy chọn bắt buộc tối thiểu được xác định trong đặc tả POSIX hoặc nếu không có sẽ gặp khó khăn. Các chương trình trong bộ posixutils-rs ban đầu được cung cấp dưới dạng mã độc lập có thể được sử dụng trong các dự án khác.

Hiện tại, 55 tiện ích do dự án phát triển tuân thủ POSIX và đang ở giai đoạn thử nghiệm, 22 tiện ích cung cấp các chức năng cần thiết (nhưng phạm vi thử nghiệm chưa được triển khai), 20 tiện ích đang ở giai đoạn dự thảo và 44 tiện ích chưa hoạt động. vẫn chưa bắt đầu. Trong số các tiện ích có chức năng được triển khai: awk, basename, bc, cp, cut, chown, date, diff, file, find, grep, ls, nice, ps, Sort, strings, tail, tr, tty, wc, uniq. Trong số các tiện ích, công việc chưa bắt đầu: crontab, c17, cflow, ctags, gettext, ed, ex, iconv, lex, locale, mailx, make, patch, pax, sed, sh, sccs, yacc, uucp, vi .

Những thay đổi trong bản phát hành mới bao gồm việc bổ sung việc triển khai các tiện ích awk, m4, ps, realpath, join, time,fuser và gencat, cũng như hỗ trợ ban đầu để làm việc trong các môi trường dựa trên thư viện musl C và việc cung cấp ftw thư viện dành cho cuộc đua duyệt cây thư mục được nhà nước bảo vệ.

Ngoài ra, chúng ta có thể lưu ý thông báo về dự án rav1d, dự án đang phát triển bộ giải mã hiệu suất cao cho định dạng mã hóa video AV1, được viết bằng ngôn ngữ Rust. Quá trình phát triển được thực hiện bằng cách chuyển mã giải mã của thư viện dav1d, được đặc trưng bởi hiệu suất cao, sang Rust. Cổng đã chuẩn bị hoàn toàn tương thích với API thư viện dav1d. Lựa chọn chuyển một thư viện hiện có thay vì viết phiên bản của riêng chúng tôi được giải thích bởi mong muốn sử dụng bộ giải mã đã được chứng minh và thử nghiệm làm cơ sở để tránh các vấn đề tương thích có thể xảy ra và tính đến tất cả những điều phức tạp khi làm việc với định dạng AV1.

Ở dạng hiện tại, việc triển khai rav1d đã chuẩn bị chậm hơn 6% về hiệu suất của dav1d, nhưng trong tương lai, sau khi tối ưu hóa mã, nó được lên kế hoạch để đạt được hiệu suất ngang bằng. Để đạt được hiệu suất cao, một phương pháp đã được sử dụng trong đó các hàm cơ bản để giải mã các giá trị nguyên thủy được triển khai trong trình biên dịch chương trình dưới dạng các khối không an toàn (sử dụng mã lắp ráp từ dav1d), dữ liệu được nhận sau khi kiểm tra bằng phân tích luồng các chức năng được viết bằng Rust (kinh nghiệm trước đây trong việc xác định các lỗ hổng trong bộ giải mã video cho thấy các vấn đề chủ yếu phát sinh ở mã phân tích cú pháp định dạng cấp cao, thay vì trong các hoạt động dữ liệu cấp thấp).

Nguồn: opennet.ru

Thêm một lời nhận xét