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

بازطراحی پوشهٔ ساخت Cargo، چیدمان کش را به مرز ابزارها تبدیل می‌کند

چیدمان جدید پوشهٔ ساخت Cargo فقط پاک‌سازی فایل‌ها نیست؛ این تغییر زمینه را برای کش میان‌فضاکاری، قفل‌گذاری ریزدانه‌تر و مدیریت امن‌تر خروجی‌ها فراهم می‌کند. سازندگان Rust روی ICP باید جزئیات داخلی target را رابطی ناپایدار بدانند.

اشتراک‌گذاری
راست (Rust)
بازطراحی پوشهٔ ساخت Cargo، چیدمان کش را به مرز ابزارها تبدیل می‌کند
تصویر: تولید هوش مصنوعی

خروجی ساخت Cargo در حال تبدیل‌شدن به یک مرز داخلیِ روشن‌تر است. تیم Cargo در به‌روزرسانی ۸ سپتامبر، کار Ross Sullivan روی چیدمان جدید پوشهٔ ساخت را برجسته کرد و کش میان‌فضاکاری را یکی از اهداف پروژه برای سال ۲۰۲۶ دانست. اهمیت این تغییر در آن است که Cargo خروجی‌های میانی را بر اساس واحدهای ساختِ تولیدکنندهٔ آن‌ها سازمان‌دهی می‌کند، نه عمدتاً بر اساس نقش فایل‌ها.

این سازمان‌دهی مسیر سه بهبود عملی را باز می‌کند. Cargo در آینده می‌تواند واحدهای ساخت قدیمی را بدون ردیابی تک‌تک فایل‌های نامرتبط جمع‌آوری کند. همچنین می‌تواند قفل‌ها را با دانه‌بندی ریزتر اعمال کند تا رقابت میان دستورهایی مانند cargo check، cargo test و ساخت‌های ناشی از ویرایشگر کاهش یابد. افزون بر این، می‌تواند ورودی‌های کشِ مستقل و قابل استفادهٔ مجدد میان فضاهای کاری را شناسایی کند.

بنابراین تغییر چیدمان، یک مرز ابزارهاست، نه صرفاً تغییر نام پوشه‌ها. فراخوان رسمی Cargo برای آزمایش می‌گوید بسیاری از ابزارهای اکوسیستم به جزئیات مشخص‌نشدهٔ build-dir و target-dir وابسته بوده‌اند. ابزارهایی که target/debug/deps را اسکن می‌کنند، نام خروجی‌ها را حدس می‌زنند، این پوشه‌ها را به PATH اضافه می‌کنند یا فرض می‌کنند فایل‌های متادیتا در یک پوشهٔ پروفایل خاص قرار دارند، ممکن است با تکامل چیدمان از کار بیفتند.

برای سازندگان canisterهای ICP که از Rust استفاده می‌کنند، درس فوری این است که خودکارسازی ساخت را روی رابط‌های پشتیبانی‌شدهٔ Cargo نگه دارند. به‌جای خواندن ساختار پوشه‌ها، از پیام‌های JSON مربوط به Cargo، متغیرهای محیطی مستند و مسیرهای صریح خروجی استفاده کنید. در CI، ورودی‌های کش باید بر اساس lockfile، toolchain، هدف، پروفایل و پیکربندی مرتبط تعیین شوند، نه بر اساس فرضی دربارهٔ محتوای فعلی target/. اگر pipeline به خروجی نهایی Wasm یا canister نیاز دارد، آن خروجی را به‌عنوان محصول صریح مرحلهٔ ساخت تعریف کنید، نه فایلی که با نامی حدس‌زده‌شده انتخاب می‌شود.

این موضوع برای بازتولیدپذیری نیز مهم است. کش مشترک می‌تواند سرعت را بالا ببرد، اما پرسش‌هایی دربارهٔ مالکیت، بی‌اعتبارسازی و نویسندگان هم‌زمان ایجاد می‌کند. تا زمانی که Cargo قرارداد پایداری برای کش میان فضاهای کاری مستند نکرده است، استفادهٔ مشترک از build-dir باید آزمایشی تلقی شود. تیم Cargo صراحتاً گفته است که استفادهٔ مشترک از build-dir میان فضاهای کاری را به‌طور رسمی تأیید نمی‌کند، هرچند چیدمان جدید برای کاهش خطر برخورد طراحی شده است.

یک caveat مهم وجود دارد: چیدمان قدیمی و گزینهٔ موقت انصراف از آن هنوز در همه‌جا حذف نشده‌اند. issue پیگیری Cargo می‌گوید پاک‌سازی چیدمان قدیمی پس از پایدارشدن چیدمان جدید دنبال می‌شود، اما ثابت نمی‌کند که همهٔ مسیرهای سازگاری همین حالا حذف شده‌اند. سازندگان باید toolchain پایدار فعلی و هر پیکربندی nightly را جداگانه آزمایش کنند، به‌ویژه اگر از پوشهٔ ساخت سفارشی یا ابزارهای شخص ثالث استفاده می‌کنند.

داستان گسترده‌تر Rust روشن است: Cargo به سمت خروجی‌هایی می‌رود که بتوان آن‌ها را به‌عنوان واحدهایی با مالکیت روشن‌تر مدیریت کرد. برای پروژه‌های ICP، این دلیلی است برای ممیزی اسکریپت‌های CI از همین حالا. امن‌ترین pipeline ساخت، pipelineای است که خروجی‌های اعلام‌شده و رابط‌های ماشین‌خوان Cargo را مصرف می‌کند و جزئیات داخلی کش کامپایلر را آزاد می‌گذارد تا تغییر کند.

برچسب‌هاRustCargoسیستم‌های ساختCI
منابع مستند۲ مرجع
  1. [۰۱]Welcome Dongpo and Ross to the Cargo teamblog.rust-lang.org
  2. [۰۲]Cargo build-dir legacy layout post stabilization cleanup · Issue #17182github.com
خواندنی بعدی

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

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

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