React Compiler حالا تو Oxc هم پشتیبانی میشه
خلاصهٔ کاملتر
تیم پروژهٔ Oxc (همون ابزارهای سریع جایگزین Babel، ESLint و Prettier که با Rust نوشته شدن) از پشتیبانی کامل React Compiler خبر داده. React Compiler یعنی کامپایلری که کامپوننتها و هوکهای React رو در زمان build خودکار memoize میکنه تا دیگه لازم نباشه دستی سراغ useMemo و useCallback بری. Oxlint حالا ۲۲ قانون لینتی داره که از همون موتور اعتبارسنجی React Compiler استفاده میکنن تا نقض قوانین React رو پیدا کنن؛ کافیه پلاگین react رو تو تنظیمات فعال کنی:
{
"plugins": ["react"],
"categories": {
"correctness": "error"
}
}برای memoization خودکار هم پکیج جدید oxc-transform-react اومده که طبق بنچمارک اولیهٔ تیم، بیش از ۱۰ برابر از babel-plugin-react-compiler سریعتره؛ فایلی که قبلاً حدود ۱۰۰ میلیثانیه طول میکشید الان حدود ۱۰ میلیثانیه کامپایل میشه. یکپارچگی با Vite هم از @vitejs/plugin-react نسخهٔ ۶.۱.۰ در دسترسه.
نویسنده تعریف میکنه که مسیر رسیدن به اینجا ساده نبوده. اول یه فورک همگامشده از کامپایلر Rust رو منتشر کردن تا SWC و Bun و Biome هم بتونن ازش استفاده کنن، ولی چون اون نسخه هنوز روی AST بهسبک Babel کار میکرد، Oxc مجبور بود قبل و بعدش AST رو تبدیل کنه که کند بود. در نهایت تصمیم گرفتن کامپایلر رو مستقیم داخل Oxc جا بدن و AST میانی Babel رو کلاً حذف کنن.
نتیجهش نسخهای شده که تقریباً دو برابر پورت اصلی Rust سریعتره، خروجیش رو روی بیش از ۱۰۰ ریپازیتوری بزرگ و بیش از ۱۰۰ هزار فایل سورس تست کردن تا مطمئن شن با آخرین نسخهٔ آزمایشی babel-plugin-react-compiler یکی درمیاد، و پیامهای خطا (مثل هشدار immutability) رو هم واضحتر کردن. حجم باینری هم از ۸.۶۶ مگابایت اولیه به ۳.۹۷ مگابایت رسیده.
هنوز کار تمومه نشده؛ به گفتهٔ نویسنده تو کد فعلی هنوز ۱۰ مورد TODO باقیمونده و تیم قول داده رو تکمیل کردنش و رفع باگهای گزارششده کار کنه.
نکات کلیدی:
- Oxlint حالا ۲۲ قانون مبتنی بر React Compiler داره که تو دستهٔ correctness قرار میگیرن
- پکیج oxc-transform-react بیش از ۱۰ برابر از babel-plugin-react-compiler سریعتره
- یکپارچگی رسمی با Vite از طریق @vitejs/plugin-react نسخهٔ ۶.۱.۰ اومده
- حجم باینری از ۸.۶۶ مگابایت به ۳.۹۷ مگابایت کاهش پیدا کرده
- هنوز ۱۰ مورد TODO تو نسخهٔ فعلی کامپایلر باقیمونده




