پرش به محتوای اصلی
پرش به محتوای مقاله

Rust در برابر Zig؛ راهکار Bun برای توقف کراش‌های مداوم سیستم

·۱۸ تیر ۱۴۰۵۲۳ دقیقه مطالعه۱ بازدید
بازنویسی Bun با Rust: چرا تیم سازنده تصمیم به تغییر زبان گرفت
بازنویسی Bun با Rust: چرا تیم سازنده تصمیم به تغییر زبان گرفت
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

استفاده از یک ارتش ۶۴ تایی از عامل‌های هوش مصنوعی برای تبدیل مکانیکی و بازبینی خصمانه کد در مقیاس صنعتی، که زمان مهاجرت معماری را ۹۷٪ کاهش داد.

تصور کنید بخواهید موتور یک ماشین را در حال حرکت، بدون توقف ترافیکی، کاملاً عوض کنید. این دقیقاً همان کاری است که یک مهندس در تیم Bun با کمک ارتشی از مدل‌های زبانی انجام داد. در حالی که یک مهاجرت معماری کامل در این مقیاس معمولاً به تیمی از متخصصان و یک سال تقویمی زمان نیاز دارد، یک تک‌مهندس این وظیفه را تنها در ۱۱ روز به پایان رساند. او با به‌کارگیری ناوگانی متشکل از ۶۴ عامل هوش مصنوعی که از نسخه‌ی پیش‌عرضه‌ی Claude Fable 5 قدرت می‌گرفتند، موفق شد کل محیط زمان‌سنج یا رانتایم (Runtime) Bun را به زبان Rust بازنویسی کند.

طبق گزارش فنی منتشرشده در ۸ جولای ۲۰۲۶ در وب‌سایت bun.com، این تیم موفق شد کل رانتایم — شبیه به موتور مرکزی یک نرم‌افزار که دستورات را اجرا می‌کند — را از زبان Zig به Rust منتقل کند. این بازنویسی گسترده در حالی رخ داد که Bun ماهانه ۲۲ میلیون بار دانلود می‌شود و هر خطا در آن می‌تواند میلیون‌ها کاربر را تحت تأثیر قرار دهد.

Bun در ابتدا به عنوان یک پروژه‌ی بلندپروازانه با زبان Zig نوشته شده بود تا دسترسی سطح پایین به سخت‌افزار و کنترل حداکثری روی عملکرد را داشته باشد. اگرچه Zig امکان رشد سریع اولیه پروژه را فراهم کرد، اما رانتایم در نهایت با مشکلات پایداری دست‌وپنج نرم کرد؛ مشکلاتی که در محیط‌های با مدیریت دستی حافظه رایج است. همان‌طور که در تحلیل‌های پیشین ما درباره‌ی امنیت مدل‌های بازمتن اشاره کردیم، پایداری در مقیاس بالا همیشه چالش اصلی است. طبق گزارش فنی، تیم با چرخه‌ای تکرارشونده از کرش‌های «استفاده پس از آزادسازی» (use-after-free) و نشت‌های حافظه مواجه بود که با افزایش مقیاس دانلودها، قابلیت اطمینان پلتفرم را تهدید می‌کرد.

این موانع پایداری به‌ویژه به این دلیل شدید بودند که Bun یک زبان با جمع‌آوری زباله (JavaScript) را با حافظه‌ای که به صورت دستی مدیریت می‌شود (Zig) ترکیب می‌کند. تیم توسعه سال‌ها وقت صرف وصله کردن کامپایلر Zig و اجرای آزمون‌های فشار مداوم با Fuzzilli کردند، اما این‌ها اقدامات واکنشی بودند. علت ریشه‌ای، نبود یک سیستم مالکیت رسمی (Formal Ownership System) در Zig بود. این موضوع توسعه‌دهندگان را مجبور می‌کرد تا به دستورات دستی defer و راهنمای سبک کدنویسی (Style Guides) سخت‌گیرانه‌ای تکیه کنند که اجرای آن‌ها در مقیاس بزرگ غیرممکن بود.

فرآیند مکانیکی مهاجرت

برای حل این مشکل، تیم Rust را انتخاب کرد. در Rust، سیستم «بررسی‌کننده‌ی قرض‌گیری» (Borrow Checker) و الگوهای RAII (Kسب منبع همان مقداردهی اولیه است) خطاهای حافظه را به خطاهای کامپایل تبدیل می‌کنند تا پیش از اجرای برنامه شناسایی شوند. این رویکرد بازنویسی با کمک هوش مصنوعی برای انتقال به زبان Rust شباهت زیادی به پروژه Grit دارد که در آن نیز از عوامل هوشمند برای بازنویسی یکی از حیاتی‌ترین ابزارهای دنیای برنامه‌نویسی استفاده شد. برای اینکه توسعه‌ی ویژگی‌های جدید برای یک سال متوقف نشود، مهندس مربوطه به‌جای بازنویسی دستی سنتی، از Claude Code برای ساخت یک خط لوله اتوماسیون عظیم استفاده کرد.

بازنویسی Bun با Rust: بررسی عملکرد و مقایسه با نسخه اصلی Zig

این فرآیند یک پرامپت ساده نبود، بلکه مجموعه‌ای از ۵۰ جریان کاری پویا بود. مهندس بازنویسی را به چندین فاز مجزا تقسیم کرد:

  • نقشه راه (The Blueprint): سه ساعت گفتگو با Claude برای نقشه‌برداری از الگوهای Zig به Rust. این مرحله منجر به ایجاد یک راهنمای PORTING.md و یک فایل LIFETIMES.tsv برای مدیریت مالکیت‌های پیچیده حافظه شد.
  • انتقال (The Port): یک ترجمه مکانیکی از ۱,۴۴۸ فایل .zig به فایل‌های .rs. در اوج سرعت، هوش مصنوعی حدود ۱,۳۰۰ خط کد در دقیقه می‌نوشت.
  • بازبینی خصمانه (Adversarial Review): برای تضمین صحت کد، تیم از مدل «یک پیاده‌ساز، دو بازبین» استفاده کرد. یک عامل Claude کد را می‌نوشت و دو عامل مجزا — که در نقش حریف یا مخالف بودند — به‌دنبال باگ‌ها و پس‌رفت‌ها (Regressions) می‌گشتند.
  • حلقه اصلاح (The Fix Loop): ۶۴ عامل هم‌زمان Claude روی ۱۶,۰۰۰ خطای کامپایل کار کردند و کریت به کریت (crate by crate) پیش رفتند تا زمانی که کد کاملاً کامپایل شود.
  • تأیید نهایی (Validation): تیم از مجموعه‌ی تست TypeScript مستقل از زبان Bun استفاده کرد که شامل بیش از یک میلیون ادعا (Assertion) است تا رفتار نرم‌افزار را در سیستم‌های لینوکس، مک و ویندوز تأیید کند.

بهبودهای قابل اندازه‌گیری

انتقال به Rust دستاوردهای فوری و قابل اندازه‌گیری در عملکرد و کارایی به همراه داشت. چشم‌گیرترین بهبود در پایداری حافظه بود. در نسخه‌ی ۱.۳.۱۴، فراخوانی‌های مکرر Bun.build() باعث نشت حافظه می‌شد و پس از ۲۰۰۰ بار بیلد، مصرف حافظه به ۶.۷ گیگابایت می‌رسید. اما در نسخه‌ی ۱.۴.۰ که بر پایه Rust است، مصرف حافظه در سطح پایدار ۶۰۹ مگابایت متوقف شد.

سایر دستاوردهای فنی عبارتند از:

  • اندازه باینری: حجم فایل اجرایی در لینوکس و ویندوز حدود ۲۰٪ کاهش یافت. این اتفاق به دلیل حذف کدهای اضافی comptime در Zig و افزودن بهینه‌سازی‌های لینکر مانند «تتاپ کد یکسان» (Identical Code Folding) رخ داد.
  • سرعت: توان عملیاتی (Throughput) برای Bun.serve حدود ۴.۸٪ افزایش یافت و زمان‌های اجرای next build نیز ۴.۵٪ بهبود یافت.
  • استفاده از پشته: تحلیل‌گرهای بازگشتی-نزولی (Recursive-descent parsers) برای TOML و JSON اکنون فضای بسیار کمتری از پشته (Stack) را اشغال می‌کنند که مدیون تولید کد LLVM IR در Rust برای استفاده مجدد از متغیرهای پشته است.

هزینه اتوماسیون

این انتقال رایگان نبود. این فرآیند ۵.۹ میلیارد توکن ورودی غیر-کش (uncached) و ۷۲ میلیارد خوانش کش‌شده مصرف کرد که هزینه API آن حدود ۱۶۵,۰۰۰ دلار بود. با این حال، این هزینه در برابر جایگزینش — یعنی یک سال رکود در توسعه یا مبارزه دائمی با فساد حافظه — کاملاً توجیه‌پذیر بود.

البته بازنویسی کامل نبود. تیم ۱۹ مورد بازگشت (Regression) شناسایی کرد که عمدتاً ناشی از تفاوت‌های معنایی بین دو زبان بود. برای مثال، assert در Zig تابعی است که در هر بیلد اجرا می‌شود، در حالی که debug_assert! در Rust یک ماکرو است که در بیلد‌های Release حذف می‌شود؛ این تفاوت باعث شد برای مدت کوتاهی قابلیت Hot Module Reloading در برخی پروژه‌های React مختل شود.

این اتفاق توسط Anthropic (که Bun را در دسامبر ۲۰۲۵ خرید) نشان داد که فرض پیشین مبنی بر اینکه انتخاب زبان برای پروژه‌ای در این مقیاس یک «تصمیم یک‌طرفه و غیرقابل بازگشت» است، باطل شده است. با تبدیل بازنویسی به یک مسئله‌ی «تبدیل داده» که توسط LLMها حل می‌شود، به جای یک تکلیف کدنویسی دستی، Anthropic امکان‌پذیری مهاجرت‌های معماری با محوریت هوش مصنوعی را به اثبات رساند.

توسعه‌دهندگان اکنون باید نظاره‌گر باشند که تیم چگونه ۴٪ باقی‌مانده از بلوک‌های unsafe در Rust را کاهش می‌دهد و آیا این جریان کاری «عامل خصمانه» به استانداردی برای مهاجرت کدهای قدیمی C++ یا Zig به زبان‌های ایمن از نظر حافظه تبدیل خواهد شد یا خیر.

گام بعدی شما

  • اگر کدبیسی در زبان‌های قدیمی مثل C++ دارید، مدل «بازبینی خصمانه» (Adversarial Review) را برای مهاجرت به زبان‌های ایمن امتحان کنید.
  • بررسی کنید آیا کاهش ۲۰ درصدی حجم باینری در پروژه‌های شما منجر به کاهش تأخیر در لود اولیه می‌شود یا خیر.
  • ابزارهای اتوماسیون کد مانند Claude Code را برای بازنویسی توابع تکراری در مقیاس کوچک تست کنید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است؛ به تحلیل ما درباره‌ی تاثیر تراشه‌های جدید در کاهش هزینه‌ی استنتاج این عامل‌ها مراجعه کنید.

چرا این موضوع مهم است؟

این پروژه با تکیه بر تجربه عملی در مقیاس میلیونی، نشان داد که عامل‌های هوش مصنوعی می‌توانند جایگزین تیم‌های بزرگ مهندسی در پروژه‌های حیاتی شوند. اعتبار این دستاورد در کاهش چشمگیر نشت حافظه و افزایش پایداری سیستم نهفته است.

تأثیر برای ایران

برای برنامه‌نویسان ایرانی، این الگو فرصتی است تا کدهای قدیمی و سنگین میراثی (Legacy) را با هزینه کم و سرعت بالا به زبان‌های مدرن مثل Rust منتقل کنند.

·نگاه ما
تحریریه دات‌هوش

این مورد ثابت می‌کند که «بدهی فنی» (Technical Debt) دیگر یک حکم ابدی نیست. وقتی بازنویسی یک هسته پیچیده از یک سال به ۱۱ روز کاهش می‌یابد، مدل کسب‌وکار نرم‌افزاری از «نگهداری طولانی‌مدت» به «بازسازی سریع و مداوم» تغییر می‌کند. در آینده، انتخاب زبان برنامه‌نویسی در ابتدای پروژه اهمیت کمتری خواهد داشت چون هزینه‌ی مهاجرت ساختاری به‌شدت افت می‌کند.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.