Cap از Tauri به GPUI مهاجرت کرد
خلاصهٔ کاملتر
تیم Cap، یه اپ متنباز برای ضبط صفحه، نسخهٔ 0.6.1 رو منتشر کرده که اولین نسخهٔ بدون مرورگر داخلیه. تا قبل از این، اپ با Tauri ساخته شده بود. Tauri شبیه Electron هست ولی بهجای اینکه Chromium رو با اپ بفرسته، از web view سیستمعامل استفاده میکنه، یعنی همون موتور مرورگری که از قبل روی سیستم هست. حالا همهٔ پنجرهها با GPUI کشیده میشن، فریمورک UI که تیم Zed برای ادیتورش ساخته.
نویسنده میگه مشکل اصلی این بود که Cap عملاً روی سه مرورگر اجرا میشد: WKWebView روی مک، WebView2 روی ویندوز و WebKitGTK روی لینوکس. این مرورگرها بدون دخالت تیم آپدیت میشدن و هر کدوم باگ خودشون رو داشتن. مثلاً روی بعضی درایورهای لینوکس پنجرهها خالی نشون داده میشدن، تو ویندوز با بزرگ کردن «Text size» پنلها بیرون میزدن، و انتخاب ناحیه روی WebKit همون اول drag کنسل میشد.
GPUI مثل یه بازی ویدیویی کار میکنه، نه مثل یه صفحهٔ وب. یعنی DOM و CSS و JavaScript نداره؛ کل صفحه رو به یه لیست از پنج نوع شکل تبدیل میکنه (سایه، مستطیل، حروف، آیکون و تصویر) و با چند shader کوچیک روی Metal، Direct3D 11 یا Vulkan میکشه. چون موتور Cap از اول با Rust نوشته شده بود، حالا رابط کاربری مستقیم همون crateها رو صدا میزنه و دیگه لازم نیست هر دستور به JSON تبدیل بشه.
بزرگترین تغییر تو ادیتوره. قبلاً هر فریم بعد از رندر روی GPU به حافظهٔ معمولی کپی میشد، از WebSocket رد میشد، به یه worker جاوااسکریپت میرسید و دوباره به GPU برمیگشت؛ یعنی حدود 216 مگابایت پیکسل در ثانیه. حالا روی مک فریم تو یه IOSurface (حافظهٔ گرافیکی مشترک بین دو renderer) میره و کل مسیر روی GPU میمونه. یه پنجرهٔ بیکار هم روی مک از 121 بار بیدار شدن در ثانیه به 1 بار رسیده.
خروجیها هم بهتر شدن. روی یه لپتاپ ویندوزی، export یه ویدیوی 83 ثانیهای از 99.5 ثانیه به حدود 20 ثانیه رسید، چون renderer منتظر تایمر 15.6 میلیثانیهای ویندوز میموند. روی مک هم با درست کردن فاصلهٔ keyframeها، یه ویدیوی یه دقیقهای 4K از 93 به 30 مگابایت رسید. حجم دانلود روی مک و لینوکس هم حدوداً نصف شده.
البته به گفتهٔ تیم این تغییر هزینه هم داشته: text field، منو و scroll رو خودشون ساختن (text field بهتنهایی حدود 2,700 خط Rust شده)، hot reload ندارن، ناوبری با کیبورد هنوز کامل نیست و چهار تا patch روی GPUI نگه میدارن. اپ جدید حدود 182 هزار خط Rust هست، تقریباً هماندازهٔ 181 هزار خط کد قبلی.
نکات کلیدی:
- Cap 0.6.1 از Tauri به GPUI، فریمورک Rust تیم Zed، منتقل شده.
- رندر با Metal روی macOS، Direct3D 11 روی ویندوز و Vulkan روی لینوکس انجام میشه.
- مسیر فریم ادیتور روی مک با IOSurface کامل روی GPU میمونه، بهجای جابهجایی 216 MB در ثانیه.
- حجم دانلود مک Apple silicon از 189.6 به 95.8 مگابایت رسیده (49 درصد کمتر).
- از اواسط اوت 65 نفر PR داشتن که 111 تاش کار روی performance بوده.




