EN
→ بازگشت به خبرخوان
شمارهٔ ۰۲۵۵Rust۲ دقیقه۲ منبع

خود Crate همان Artifact است: crates.io کد منتشرشده Rust را قابل ممیزی می‌کند

زبانه Code جدید در crates.io به توسعه‌دهندگان اجازه می‌دهد فایل‌هایی را که Cargo واقعاً دانلود می‌کند بررسی کنند و ممیزی وابستگی را به Artifact منتشرشده نزدیک‌تر می‌سازد.

اشتراک‌گذاری
راست (Rust)
خود Crate همان Artifact است: crates.io کد منتشرشده Rust را قابل ممیزی می‌کند
تصویر: تولید هوش مصنوعی

ممیزی وابستگی‌های Rust اکنون هدفی ملموس‌تر دارد: همان بسته‌ای که Cargo واقعاً دانلود می‌کند.

تیم crates.io در گزارش توسعه ۱۳ ژوئیه اعلام کرد که زبانه Code را به صفحات Crateها افزوده است. توسعه‌دهندگان می‌توانند محتوای نسخه‌های منتشرشده را مستقیماً در crates.io ببینند؛ این محتوا حتی شامل فایل‌های Cargo.toml نرمال‌شده‌ای می‌شود که هنگام بسته‌بندی تولید می‌شوند. این تفاوت مهم است، چون آرشیو منتشرشده ممکن است با مخزن لینک‌شده در صفحه Crate یکسان نباشد.

این نمایشگر برای کار ممیزی طراحی شده است: درخت فایل، جست‌وجو، برجسته‌سازی نحوی و لینک‌های قابل اشتراک‌گذاری برای خطوط کد دارد. crates.io همچنین هر آرشیو .crate را به یک ZIP قابل جست‌وجو به‌همراه Manifest JSON تبدیل می‌کند تا رابط کاربری بتواند فایل‌ها را با درخواست‌های HTTP range به‌صورت جداگانه بارگذاری کند. طبق اعلام تیم، نسخه‌های قدیمی نیز در این سامانه وارد شده‌اند.

این تغییر پرسش عملی توسعه‌دهندگان هنگام بازبینی را عوض می‌کند. تیم‌ها به‌جای بررسی صرفاً مخزن GitHub، اکنون می‌توانند بسته نسخه‌گذاری‌شده‌ای را ببینند که وارد Build می‌شود: Manifest تولیدشده، فایل‌های موجود، Build Scriptها و Assetهایی که قواعد بسته‌بندی اجازه ورودشان را داده‌اند.

مستندات انتشار Cargo دلیل این تفاوت را توضیح می‌دهد. cargo publish پروژه را به یک فایل .crate فشرده می‌کند، بخش‌هایی از Manifest را بازنویسی و نرمال می‌سازد، قواعد include و exclude را اعمال می‌کند و بسته استخراج‌شده را بررسی می‌کند. چیزی که Registry توزیع می‌کند آرشیو نهایی است، نه Checkout مخزن.

یک گردش‌کار مفید اکنون ساده است: نسخه دقیق Crate را در crates.io باز کنید، زبانه Code را بررسی کنید، فایل‌های بسته‌بندی‌شده را با مخزن و خروجی cargo package --list مقایسه کنید و سپس تغییرات را پیش از Upgrade بازبینی کنید. این کار برای Build Scriptها، کد تولیدشده، داده‌های همراه و Metadata مربوط به Workspace که ممکن است در مخزن اصلی نادیده بمانند، ارزش ویژه‌ای دارد.

ملاحظه مهم این است که زبانه Code یک سطح بازرسی است، نه سامانه کامل اثبات منشأ. این زبانه Artifact منتشرشده را نشان می‌دهد و می‌تواند تفاوت آن را با مخزن لینک‌شده آشکار کند، اما به‌تنهایی ثابت نمی‌کند که آرشیو از یک Commit مشخص ساخته شده است. تیم‌هایی که الزامات سخت‌گیرانه‌تری برای زنجیره تأمین دارند باید همچنان Checksumها را ثبت کنند، Lockfileها را بازبینی کنند و فرایند Build و Release خود را اعتبارسنجی کنند.

تیم crates.io می‌گوید نمایشگر Diff بین نسخه‌ها نیز در دست توسعه است. اگر این قابلیت عرضه شود، Registry از محلی برای کشف وابستگی‌ها به محلی برای بازبینی دقیق تغییرات Sourceای تبدیل خواهد شد که مصرف‌کنندگان دریافت می‌کنند.

برچسب‌هاRustCargocrates.ioزنجیره تأمین نرم‌افزار
منابع مستند۲ مرجع
  1. [۰۱]crates.io: development updateblog.rust-lang.org
  2. [۰۲]Publishing on crates.io — The Cargo Bookdoc.rust-lang.org
خواندنی بعدی

خبرخوان را در ایمیل بگیرید

هر سیگنال تازه، مستقیم از خط تولید. بدون مزاحمت، لغو عضویت در هر زمان.

خوراک RSS در دسترس · بدون هرزنامه