نمای کلی اجرایی و اهمیت معماری
با انتشار نسخه ۱.۱۰۰.۰ زبان راست (demoting-i686-windows-targets-to)، پروژه راست یک هرس معماری قابل توجه را در رابطه با اهداف ۳۲ بیتی x86 ویندوز آغاز کرده است. به طور خاص، رده هدف i686-pc-windows-msvc از رده ۱ با ابزارهای میزبان به رده ۱ بدون ابزارهای میزبان تنزل یافته است، در حالی که قابلیت ابزارهای میزبان هدف i686-pc-windows-gnu حذف شده و تعریف رده آن بر این اساس کاهش یافته است. این تصمیم استراتژیک منعکسکننده یک تغییر گسترده در سطح صنعت به دور از معماریهای سختافزاری قدیمی ۳۲ بیتی است که با پایان یافتن پشتیبانی عمومی از ویندوز ۳۲ بیتی توسط مایکروسافت در اکتبر ۲۰۲۵ مطابقت دارد و اذعان میکند که پردازندههای ۳۲ بیتی x86 دسکتاپ و سرور بیش از پانزده سال است که از نظر تجاری مقرونبهصرفه نیستند.
از دیدگاه مهندسی کامپایلر، حفظ ابزارهای میزبان بومی ۳۲ بیتی کاملاً کاربردی به یک گلوگاه ناپایدار تبدیل شده است. تیمهای مهندسی انتشار و کامپایلر راست به طور مداوم با موانع معماری شدیدی روبرو بودند؛ از جمله کرش کردن باینریهای کامپایلر هنگام ساخت تحت هدف ۳۲ بیتی MSVC، و شکست خوردن ابزار GNU C++ با خطاهای کمبود حافظه (OOM) در طول فرآیندهای ساخت فشرده LLVM. با تنزل این اهداف، پروژه تضمین میکند که تمرکز توسعهدهندگان اصلی و منابع CI به سمت اکوسیستمهای مدرن ۶۴ بیتی و ناهمگن هدایت شود، بدون اینکه کاربران پاییندستی که همچنان به خروجیهای باینری ۳۲ بیتی برای محیطهای استقرار قدیمی نیاز دارند، کاملاً رها شوند.
بهینهسازیهای کلیدی و ارگونومی توسعهدهنده
اگرچه این انتشار با کاستن مشخص میشود تا افزودن، اما نحوه تعامل توسعهدهندگان با ابزار راست بر روی سختافزار قدیمی را به طور بنیادی بازمعماری میکند. تحت این پارادایم جدید، میزبانهای بومی ۳۲ بیتی ویندوز دیگر نمیتوانند میزبان کامپایلر راست یا باینریهای ابزار مرتبط باشند. توسعهدهندگانی که سعی میکنند نصبها را مستقیماً در محیطهای i686-pc-windows اجرا کنند، متوجه خواهند شد که ابزارهای میزبان از طریق rustup در دسترس نیستند. در عوض، استاندارد معماری رو به جلو کاملاً به کامپایل متقابل (Cross-compilation) متکی است. توسعهدهندگان اکنون باید از یک پلتفرم میزبان مدرن که همچنان پشتیبانی میشود - مانند ابزار ۶۴ بیتی ویندوز - برای هدف قرار دادن باینریهای ۳۲ بیتی ویندوز استفاده کنند.
علیرغم حذف ابزارهای میزبان بومی، ساخت کتابخانه استاندارد برای هر دو هدف i686-pc-windows-msvc و i686-pc-windows-gnu همچنان به طور رسمی توزیع میشود. علاوه بر این، i686-pc-windows-msvc وضعیت رده ۱ خود را در رابطه با آزمایشهای دقیق یکپارچهسازی مداوم (CI) حفظ میکند و تضمین میکند که قابلیت اطمینان خروجی باینری بدون تغییر باقی بماند. این رویکرد ترکیبی تضمین میکند که تیمهای نگهداری نرمافزارهای قدیمی همچنان میتوانند برنامههای مدرن و امن راست را برای اهداف ۳۲ بیتی ویندوز کامپایل کنند، به شرطی که خطوط لوله ساخت خود را به زیرساخت مدرن کامپایل متقابل منتقل کنند و به ماشینهای توسعهدهنده بومی ۳۲ بیتی متکی نباشند.
ماتریس مقایسه معماری
| معیار / بعد | مبنای قبلی (ابزارهای میزبان بومی i686) | انتشار فعلی (demoting-i686-windows-targets-to) |
تأثیر معماری |
|---|---|---|---|
| تأخیر ساخت | خطر بالای گلوگاههای کامپایل و کرش ابزار | بهینهسازی شده از طریق کامپایل متقابل ۶۴ بیتی | کاهش چشمگیر زمان ساخت و حذف خرابیهای بومی OOM |
| فضای حافظه | تحت فشار در محدودههای فضای آدرس ۳۲ بیتی (سقف حدود ۴ گیگابایت) | برونسپاری شده به سیستمهای میزبان ۶۴ بیتی | حذف محدودیتهای حافظه ۳۲ بیتی در مراحل تولید کد LLVM |
| APIها و کتابخانههای هدف | کتابخانه استاندارد کامل به علاوه توزیع کامپایلر بومی | فقط کتابخانه استاندارد؛ ابزارهای میزبان حذف شدند | تغییر پارادایم از توسعه بومی به کامپایل متقابل |
| قابلیت اطمینان CI | مستعد خرابیهای متناوب در گرههای ساخت قدیمی | تمرکز سادهسازی شده CI بر روی تأیید هدف متقابل | افزایش پایداری برای باینریهای ۳۲ بیتی تولید شده |
تغییرات ناسازگار و نکات مهاجرت
تغییرات معرفیشده در نسخه ۱.۱۰۰.۰ زبان راست، تغییرات اساسی و ناسازگاری در جریان کار برای هر توسعهدهنده باقیماندهای است که از سیستمعاملهای ۳۲ بیتی ویندوز به عنوان محیط توسعه اصلی خود استفاده میکند. نصب یا بهروزرسانی ابزارهای بومی بهطور مستقیم روی میزبانهای i686-pc-windows دیگر امکانپذیر نیست. علاوه بر این، الزامات ابزار GNU C++ برای هدف i686-pc-windows-gnu دیگر به عنوان محیطهای میزبان در کانالهای توزیع رسمی پشتیبانی نمیشوند. پروژههایی که به اسکریپتهای ساخت بومی اجرا شده مستقیماً روی ماشینهای ۳۲ بیتی ویندوز متکی هستند، بلافاصله پس از ارتقای پیکربندی ابزار خود با شکست مواجه خواهند شد.
راهنمای گامبهگام ارتقا
برای تطبیق محیطهای توسعه و CI/CD خود با این انتشار، مراحل مهاجرت زیر را دنبال کنید:
- مهاجرت محیط میزبان: ایستگاه کاری توسعه یا سیستمعامل عطف CI خود را از ویندوز ۳۲ بیتی به یک محیط مدرن ویندوز ۶۴ بیتی (یا یک میزبان پشتیبانیشده لینوکس/macOS) ارتقا دهید.
- پیکربندی کامپایل متقابل: ابزار پروژه خود را طوری تنظیم کنید که با استفاده از افزونههای استاندارد هدف
rustup، به صراحت معماری ۳۲ بیتی را از میزبان ۶۴ بیتی خود هدف قرار دهد:rustup target add i686-pc-windows-msvc - تنظیم دستورات ساخت: باارسال صریح پرچم هدف به جای تکیه بر هدف بومی پیشفرض، باینریهای خود را کامپایل کنید:
cargo build --target i686-pc-windows-msvc --release
