
Topcoat 0.9 يجلب إشارات المتصفح ودفع التحديثات من الخادم لتطبيقات Rust
نشرت Tokio تدوينة عن Topcoat، إطار عمل Rust المتكامل، بعد شهرين من إعلانه، وأطلقت الإصدار 0.9. يضيف الإصدار إشارات في المتصفح وتحديثات واجهة متدفقة من الخادم ودفعًا عبر WebSocket، مع ميزات جديدة في Toasty.
في 24 سبتمبر 2026 نشرت Tokio تدوينة عن Topcoat: بعد شهرين من الإعلان عن الإطار صدر الإصدار 0.9. كتب التدوينة كارل ليرشي وجوليان شولتز.
يجمع Topcoat العروض والمكوّنات وإرسال البريد وخط أنابيب الأصول وORM يُدعى Toasty، وتُرسَم كل علامات HTML على الخادم، لذا يمكن أن تكون المكوّنات غير متزامنة وتستعلم قاعدة البيانات مباشرة دون طبقة API منفصلة.
إشارات في المتصفح وshards: تفاعلية بلا WebAssembly
تعتمد التفاعلية على الإشارات (signals)، وهي متغيرات حالة تُهيَّأ على الخادم لكنها تعيش في المتصفح، وعلى تعبيرات runtime داخل ماكرو view!. هذه التعبيرات مجموعة فرعية من Rust تخضع لفحص أنواع كامل، ويقيّمها Topcoat على الخادم للعرض الأول ويحوّلها أيضًا إلى JavaScript، لذا لا يحتاج سلوك بسيط مثل فتح لوحة وإغلاقها إلى طلب من الخادم ولا إلى حزمة WebAssembly.
عندما يحتاج جزء من الواجهة إلى بيانات جديدة، يُعلَم المكوّن بوصفه shard: فبمجرد تغيّر وسيطه يرسل المتصفح القيمة الجديدة، ويعيد الخادم عرض المكوّن ويستجيب بـ HTML محدّث يُستبدل في مكانه. ومنذ الإصدار 0.8 يستطيع الـ shard قراءة إشارة أثناء العرض، وعندها يجلب Topcoat من جديد الأجزاء التي تتبع تلك القيمة فقط. لا تُستبدل العناصر المحدّثة بالكامل، بل تخضع لعملية morphing.
تحديثات متدفقة ودفع من الخادم في 0.9
للتحديثات الصادرة من الخادم يوفر الإطار ماكروي live! وemit!: يمكن لعرض live! أن يرسل عددًا غير محدود من تحديثات الواجهة في استجابة واحدة، فيُرسل مؤشر تحميل أولًا ثم يحل المحتوى الحقيقي مكانه عند وصول البيانات.
ويضيف الإصدار 0.9 الدفع من الخادم: يفتح المتصفح اتصال WebSocket ويشترك في تغييرات الواجهة عبر اتصال طويل الأمد، كما في مكوّن المحادثة الذي يصفه المؤلفان.
Toasty: ماكروات جديدة وحقول مستندات وعلاقات متعددة الأشكال
تتناول التدوينة أيضًا Toasty، وهو ORM متاح للاستخدام منذ أبريل 2026. يولّد ماكرو update! عبارة SQL واحدة تحدّث الحقول وتزيد العدّادات دون تحميل السجل أولًا. وتمنح حقول المستندات دعمًا كاملًا لأعمدة JSON وتحوّل عوامل التصفية إلى استعلامات JSONB في PostgreSQL، أما العلاقات متعددة الأشكال فتُعبَّر عنها بمزج enums في Rust مع علاقات عادية.
لماذا وُجد هذا الإطار
يقدّم ليرشي، العضو السابق في فريق Ruby on Rails الأساسي، المشروع كمحاولة لنقل إنتاجية ذلك العصر إلى Rust، حيث يمكن لتطبيق ويب أن يعمل بعشرات قليلة من الميغابايتات في الذاكرة. ويربط حجّته بالتطوير المدعوم بالذكاء الاصطناعي: فالاصطلاحات والتجريدات المحددة جيدًا تساعد النموذج على العمل أسرع، بعدد أقل من الرموز وأخطاء أقل. Topcoat وToasty مشروعان مفتوحا المصدر على GitHub.
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.