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

رژیم شبانه Cargo برای دیسک؛ جداسازی متادیتای کامپایل از آرتیفکت‌های قابل‌لینک

Cargo در کانال nightly در حال آزمایش تغییری است که متادیتای تکراری crate را از فایل‌های rlib و dylib حذف می‌کند؛ تغییری که می‌تواند فشار روی دیسک CI و فرایند ساخت canisterهای ICP را کاهش دهد.

اشتراک‌گذاری
راست (Rust)
رژیم شبانه Cargo برای دیسک؛ جداسازی متادیتای کامپایل از آرتیفکت‌های قابل‌لینک
تصویر: تولید هوش مصنوعی

کاربردی‌ترین تحول این هفته در Rust، خارج از سطح زبان و در لایه Cargo رخ می‌دهد: Cargo در کانال nightly در حال آزمایش کوچک‌تر کردن پوشه target است.

تیم Cargo در گزارش ۱۸ اوت توضیح داد که کامپایل خط‌لوله‌ای می‌تواند متادیتای crate را در دو محل نگه دارد. Cargo فایل‌های .rmeta را تولید می‌کند تا crateهای وابسته پیش از پایان ساخت یک کتابخانه، کامپایل را آغاز کنند؛ در همین حال، فایل نهایی .rlib یا .dylib نیز متادیتا را در خود جای می‌دهد. بنابراین ممکن است اطلاعات یکسان دو بار روی دیسک ذخیره شود.

این آزمایش در nightly گزینه -Zembed-metadata=no را به‌صورت پیش‌فرض فعال می‌کند. با این تنظیم، متادیتا در فایل‌های .rmeta باقی می‌ماند و داخل آرتیفکت‌های rlib و dylib جاسازی نمی‌شود. مستندات قابلیت‌های ناپایدار Cargo روش فعال‌سازی دستی آن را نیز نشان می‌دهد:

text
cargo +nightly -Zno-embed-metadata build

برای سازندگان ICP، اهمیت فوری این تغییر عملیاتی است، نه معنایی. ساخت یک canister مبتنی بر Rust ممکن است در CI به‌طور مکرر و برای چند target یا عضو workspace اجرا شود. آرتیفکت‌های میانی کوچک‌تر می‌توانند فشار روی cache و runnerهای موقت را کاهش دهند، اما تیم‌ها نباید بدون اندازه‌گیری، مقدار صرفه‌جویی مشخصی را فرض کنند.

مرز ایمنی مهم است: این یک آزمایش nightly برای جمع‌آوری بازخورد است و تضمینی برای ابزار stable محسوب نمی‌شود. آن را به‌صورت یک آزمون کنترل‌شده در CI اجرا کنید. زمان ساخت، اندازه cache، رفتار بازساخت افزایشی، نتیجه لینک‌کردن و آرتیفکت‌های دقیق مورد استفاده در خط انتشار را مقایسه کنید. مگر آن‌که ریسک nightly را آگاهانه پذیرفته و بازتولیدپذیری را بررسی کرده باشید، jobهای انتشار تولیدی را روی toolchain پایدار نگه دارید.

درس گسترده‌تر این است که خروجی build در Rust بخشی از سطح مهندسی سیستم است. جداسازی متادیتای کامپایل از آرتیفکت‌های قابل‌لینک می‌تواند بهره‌برداری از workspaceهای بزرگ را آسان‌تر کند؛ هم‌زمان، این آزمایش به نگه‌دارندگان نشان می‌دهد که آیا این صرفه‌جویی، workflowهای واقعی کاربران Cargo را بدون اختلال حفظ می‌کند یا نه.

برچسب‌هاRustCargonightlyسیستم‌های build
منابع مستند۳ مرجع
  1. [۰۱]Experiment in reducing target directory size on nightlyblog.rust-lang.org
  2. [۰۲]Unstable Features - The Cargo Bookdoc.rust-lang.org
  3. [۰۳]Enable -Zembed-metadata=no by default on nightly Cargogithub.com
خواندنی بعدی

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

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

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