xSend Logo xSend

إعادة بناء الأساسيات: لماذا صممنا بديلاً لـ LocalSend باستخدام لغة Rust

كنا من كبار مستخدمي أدوات مذهلة مثل LocalSend و Snapdrop، لنقرر في النهاية بناء برنامج xSend من الصفر باستخدام Rust. اكتشف القفزة الهائلة في الأداء.

قبل كتابة أي سطر برمجي في xSend، كنا محملين بأدوات مثل LocalSend، و Snapdrop، وغيرها. أدوات رائعة أنقذت الكثيرين من عذاب النقل بين iOS و Windows و Android. لكن كمطورين، عندما يتعلق الأمر بنقل مئات الجيجابايت، أو بالبقاء كخادم مخفي في الخلفية بلا استهلاك حقيقي للذاكرة، أدركنا أن البرمجيات المبنية على أطر عمل التطبيقات عالية المستوى كانت تصطدم بسقفها الفيزيائي المحدود.

لذلك اخترنا إعادة هندسة شبكة النقل بالكامل باستخدام Rust. وهذا سمح لنا بتخطي 3 هوات تقنية عميقة:

1. تجاوز جحيم “جامع القمامة” (Garbage Collector): Dart ضد Rust

تطبيق LocalSend مكتوب بلغة Dart. في عمليات الدخل والخرج (I/O) الكثيفة، يقوم جامع القمامة الخاص بـ Dart بالتأثير الشديد على السرعة وإنتاج تقطعات دقيقة جداً من خلال إيقاف العمليات لتنظيف الذاكرة (Stop-the-world).

محرك xSend المكتوب بلغة Rust يتجنب عملية التنظيف الديناميكية كلياً في مرحلة التشغيل بسبب طريقة تعامل Rust مع “الملكية” (Ownership)، ونتيجة لذلك: يستهلك النظام لدينا قرابة الـ 5 ميجابايت فقط، ويدفع كروت الشبكة حتى حافتها القصوى من دون إجهاد.

2. تحطيم صندوق الحماية: من المتصفح (WebRTC) إلى النواة الأصلية (Native)

بعض الأدوات تعمل بالكامل بواسطة متصفح الويب. ولكن، لا تمتلك تطبيقات الويب القدرة على العمل بحرية في “الخلفية”. مجرد الدخول في شاشة القفل يتم تجميد المتصفح وإيقاف الإرسال تماماً.

معماريتنا مبنية على كون البرنامج أصلياً (Native Core Everywhere). إنه يتعامل مع TCP و QUIC مباشرة خارج المتصفح بأسلوب ديناميكي ليمنحك قدرة استئناف لا تقهر وتفوق في نقل الشبكات المحلية يتجاوز الـ WebRTC بـ 3 إلى 5 أضعاف.

3. إنهاء كابوس “الشبكة الخاطئة”: التوجيه التلقائي الذكي

في شبكات الشركات الواسعة حيث يوجد العديد من شبكات الـ VLANs المعزولة، تطبيقات المشاركة التقليدية المبنية على mDNS غالباً تفشل تماماً. بنينا في xSend هندسة شبكة طرق ذكية (Auto-Route) مكوّنة من 3 طبقات:

  1. الطبقة الأولى (LAN Native): سرعة فائقة جداً عند التطابق.
  2. الطبقة الثانية (WAN P2P): عند الاختلاف، اختراق P2P لعمل نفق مباشر بـ UDP باستخدام كود من 6 أرقام.
  3. الطبقة الثالثة (TURN Relay): حتى لو كان النظام مغلقاً ومشفراً (Symmetric NAT) سنقوم بإنشاء نفق خاص بك كحل نهائي ومضمون.

أنت لا تحتاج إلى إدخال عنوان IP ولا فهم ما إذا كنتما في نفس الشبكة… النظام ينفذ المطلوب في الخفاء.

لماذا Rust؟ لأنها لغة تعطينا سرعات الـ C++ مع خلو تام من مخاطر تجاوز سعة التخزين وحماية موثقة لتشفير ChaCha20-Poly1305.