کامپایلر React کامل رفت روی Rust
خلاصهٔ کاملتر
تیم پشت Outlyne (یه سایتساز) کدبیس ۱۰۳۶ فایلی React Router خودش رو برد روی نسخهٔ Rust کامپایلر React (همون ابزاری که کامپوننتها رو خودکار memo میکنه تا رندر اضافه نگیرن). تو این مقاله اومده که بخش کامپایلِ بیلد از ۱۴.۳ ثانیه با Babel رسید به ۰.۸۱ ثانیه، یعنی حدود ۱۷.۶ برابر سریعتر. زمینهش هم اینه که تیم oxc تو ۴ آگوست ۲۰۲۶ پشتیبانی رسمی از React Compiler رو با پکیج oxc-transform-react بیرون داد.
نویسنده میگه سرعت مهمترین دلیل این مهاجرت بوده، چون با ریتم تند توسعهٔ agent-محور، دقیقههای GitHub Actions تبدیل به یه هزینهٔ واقعی شده و منتظر CI موندن هم حال آدم رو میگیره. ولی خودش تأکید میکنه این عدد فقط مال بخش کامپایله، نه کل بیلد. تو پروژهٔ خودشون کل بیلد ۲.۴ برابر سریعتر شد: از ۲۲.۱ ثانیه به ۹.۳ ثانیه.
جدا از سرعت، به گفتهٔ نویسنده جذابتر اینه که نسخهٔ Rust چند تا محدودیت قدیمی رو برداشته. الان هر جور منطق شرطی داخل بلوک try/catch پشتیبانی میشه که تو نسخهٔ ۱.۰ بابلی یه بلاکر جدی بود. مقداردهی دوبارهٔ یه prop که با destructuring گرفته شده و بعد تو یه closure استفاده میشه، و کلیدهای محاسبهشدهٔ آبجکت هم دیگه باعث bailout (یعنی رد شدن کامپایلر از اون کامپوننت) نمیشن.
همین فیکسها تو اپ خودشون هفت تابع دیگه رو قابلکامپایل کرده: پنج تا از try/catch و دو تا از کلیدهای محاسبهشده. هنوز همهچیز پوشش داده نشده و دو الگو باعث رد شدن کامپوننت یا هوک میشن: throw از داخل بلوک try و عملگرهای انتساب منطقی مثل ??= و &&= و ||=. یه سود جانبی هم اینه که حالا لینتر و بیلد از یه نسخهٔ مشترک کامپایلر استفاده میکنن؛ قبلاً اختلاف v0.144.0 و v0.145.0 بین Oxlint و بیلد باعث شده بود نویسنده یه ایشوی اشتباه تو oxc ثبت کنه.
سوییچ کردن هم بیشتر شبیه ساده کردن کانفیگه تا اضافه کردن چیز جدید. اگه روی Vite v8 به بالا هستی، کافیه oxc-transform-react رو نصب کنی، @rolldown/plugin-babel رو دور بندازی و به پلاگین React گزینهٔ compiler: true بدی:
// vite.config.js
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
export default defineConfig({
plugins: [react({ compiler: true })],
});برای پروژههای React Router تو framework mode که پلاگین Vite خودشون رو دارن، نویسنده پکیج سبک @acusti/vite-plugin-react-compiler رو معرفی میکنه که جای vite-plugin-babel و babel-plugin-react-compiler و @babel/preset-typescript میشینه.
نکات کلیدی:
- پشتیبانی رسمی oxc-transform-react از ۴ آگوست ۲۰۲۶ منتشر شد
- کامپایل ۱۰۳۶ فایل: ۱۴.۳ ثانیه با Babel در برابر ۰.۸۱ ثانیه با نسخهٔ Rust (حدود ۱۷.۶ برابر)
- کل زمان بیلد ۲.۴ برابر بهتر شد: ۲۲.۱ ثانیه به ۹.۳ ثانیه
- @vitejs/plugin-react نسخهٔ 6.1.0 با { compiler: true } روی Vite v8 به بالا
- برای React Router در framework mode: پکیج @acusti/vite-plugin-react-compiler
- هنوز پشتیبانی نمیشه: throw داخل try و عملگرهای ??= و &&= و ||=




