پروژه uutils coreutils 0.10.0 (Rust Coreutils)، توسعهای از بسته GNU Coreutils که با زبان Rust نوشته شده است، منتشر شده است. coreutils شامل بیش از ۱۰۰ ابزار کاربردی از جمله sort، cat، chmod، chown، chroot، cp، date، dd، echo، hostname، id، ln و ls است. هدف این پروژه ایجاد یک جایگزین چند پلتفرمی برای Coreutils است که بتواند روی پلتفرمهای زیر اجرا شود: Windows، ردوکس و فوشیا.
Rust Coreutils به طور پیشفرض در نسخه فعال شده است Ubuntu ۲۵.۱۰ و تا حدی در Ubuntu ۲۶ آوریل. Rust Coreutils همچنین در توزیعهای AerynOS (Serpent OS) و Apertis (توسعهیافته توسط Collabora) استفاده میشود. برخلاف GNU Coreutils، پیادهسازی Rust تحت مجوز MIT permissive توزیع شده است، نه تحت مجوز Copyleft GPL. علاوه بر این، همان تیم توسعهدهندگان در حال توسعه معادلهای مبتنی بر Rust از مجموعههای ابزار util-linux، diffutils، findutils، procps و acl و همچنین برنامههای sed و login هستند.
در نسخه جدید Rust Coreutils:
- میزان سازگاری با مجموعه بنچمارک GNU Coreutils 93.48٪ بود (کاهش از 90.58٪). 645 آزمایش با موفقیت انجام شد، 20 مورد بیشتر از نسخه قبلی (625). 29 آزمایش ناموفق بود (کاهش از 56)، یک آزمایش منجر به خطا شد و 15 آزمایش رد شد (کاهش از 8).
- برخی از اختلافات با GNU Coreutils در رفتار ابزارهای pr، nproc، date، numfmt، ls، du، install، od، truncate، fold، head/tail، sum و stat برطرف شد.
- کار برای تقویت امنیت به منظور جلوگیری از آسیبپذیریهای ناشی از شرایط رقابتی ادامه یافت، شرایطی که امکان تغییر دادهها پس از تأیید اطلاعات اما قبل از انجام عملیات را فراهم میکنند. به عنوان مثال، یک فایل میتواند با یک پیوند نمادین بین تکمیل تأیید و شروع عملیات جایگزین شود. هنگام استفاده از ابزارهای cp، chmod و mv در اسکریپتهای سیستمی که با امتیازات root اجرا میشوند، چنین آسیبپذیریهایی امکان کپی یا رونویسی فایلهای دلخواه را فراهم میکنند. امنیت برای ابزارهای touch، mkfifo، mkdir، mknod، mv، chroot، head، split و chcon تقویت شده است.
- کارهایی برای حذف خاتمههای غیرعادی از طریق مکانیسم وحشت در ابزارهای shuf، printf، numfmt، fmt، pr، chroot، dircolors، install، ln، touch، stat، split، expand، more، kill، cp، du، rm، runcon، sort، chown/chgrp، dirname، expr، cksum، dd، truncate، hashsum انجام شده است.
- عملکرد ابزارهای cksum، sum، split، expand/unexpand، base*، tee، cat، cp، mv، expr، uniq و du بهینه شده است.
- پشتیبانی از هدف ساخت wasm32-wasip2 اضافه شد.
- ابزار mv گزینه "--exchange" را برای جابجایی دو فایل یا دایرکتوری پیادهسازی میکند.
- ابزار نصب، گزینه "--reflink" را پیادهسازی میکند و امکان استفاده همزمان از گزینههای "-C" و "--preserve-timestamps" را فراهم میکند.
- گزینه "--one-file-system" به ابزار rm اضافه شده است.
- ابزار cut امکان کار با کدگذاریهای چندبایتی را هنگام استفاده از زبانهای غیر UTF-8 فراهم میکند.
- از پشت صحنه OpenSSL برای محاسبه سریع چک سام ها استفاده می شود.
منبع: opennet.ru
