بازنویسی کامل React Native ExecuTorch در نسخه v0.10
خلاصهٔ کاملتر
تیم Software Mansion از انتشار نسخه v0.10.0 کتابخونه React Native ExecuTorch خبر داده و میگه این یه بازنویسی کامل از صفره، نه یه آپدیت معمولی. تا حالا هر تسک (مثل بینایی ماشین یا LLM محلی) توی یه ماژول بستهی ++C پیاده میشد که کنترل زیادی روش نداشتی. حالا معماری دولایه شده: کد نیتیو فقط رانتایم ExecuTorch و عملگرهای پایه رو در اختیار میذاره، و کل orchestration توی تایپاسکریپت شفافه؛ یعنی میتونی هر مرحله رو ببینی، تغییرش بدی، چند مدل رو زنجیر کنی، بدون اینکه خط ++C بنویسی.
نسخه قبلی (v0.9) بیشتر روی CPU اجرا میشد، اما v0.10 شتابدهی سختافزاری واقعی رو برای بیش از ۱۳۰ نسخهی مدل آورده: Core ML (چارچوب اپل برای اجرا روی تراشهی عصبی و GPU آیفون) برای بیش از ۷۰ مدل، MLX (فریمورک اپل با shaderهای Metal برای اجرای سریع مدلهای زبانی روی سیلیکون اپل) برای نزدیک ۴۰ مدل، و Vulkan برای شتابدهی GPU روی اندروید در بیش از ۲۵ مدل. گوشیهای بدون شتابدهندهی اختصاصی هم fallback بهینهشدهی XNNPACK روی CPU رو دارن.
این کتابخونه حالا با react-native-worklets یکپارچه شده: هر تابع نیتیو JSI بهصورت پیشفرض worklet حساب میشه، یعنی میتونی بدون بار اضافهی بریج، حتی مستقیم روی ترد UI صداش کنی. این یکپارچگی کار رو با VisionCamera سادهتر کرده تا مدل بینایی مستقیم روی استریم زندهی دوربین اجرا بشه. توزیع باینری هم عوض شده: باینریهای نیتیو و دلیگیتهای شتابدهی موقع نصب دانلود میشن؛ توی package.json میشه فقط بکاند لازم رو مشخص کرد تا حجم build کوچیک بمونه.
نویسنده تأکید میکنه که با وجود بازنویسی کامل، v0.10 پارتی صددرصد عملکردی با نسخهی قبل داره؛ هر قابلیتی که توی v0.9 بود دوباره توی معماری جدید پیاده شده. برای مهاجرت تدریجی، یه ورودی جدا به اسم react-native-executorch/legacy هست که کل API قدیمی رو نگه میداره تا تیمها بتونن صفحهبهصفحه به معماری جدید کوچ کنن؛ این ماژول قدیمی منسوخ علامت خورده و توی نسخههای بعدی حذف میشه.
نکات کلیدی:
- نسخه v0.10.0 یه بازنویسی کامل از صفره با معماری دولایه (پایپلاین تایپاسکریپتی + هستهی نیتیو)
- شتابدهی سختافزاری روی بیش از ۱۳۰ مدل: Core ML و MLX روی آیفون، Vulkan روی اندروید
- یکپارچگی کامل با react-native-worklets برای اجرای بدون بریج، حتی روی ترد UI
- باینریهای نیتیو حالا موقع نصب دانلود میشن؛ با تنظیم package.json میشه فقط بکاند لازم رو گرفت
- پارتی صددرصد عملکردی با v0.9 حفظ شده؛ ماژول legacy برای مهاجرت تدریجی موجوده ولی منسوخ شده و حذف میشه




