كان أحد أهداف فريق Project Fugu هو إتاحة إمكانية تنفيذ المطوّرين لأي إجراء على الويب يمكن للتطبيقات المخصّصة للمنصة تنفيذه، لذلك كان الفريق مشغولاً بإضافة الميزات المفقودة التي يحتاجها مطوّرو الويب لسدّ الفجوة بين التطبيقات. إذا لم تصدقني، ما عليك سوى الاطّلاع على قسم "تم الشحن" في خدمة تتبُّع Fugu API. في ما يلي واجهات برمجة التطبيقات الـ 55 التي تم إرسالها، بترتيب من الأقل استخدامًا إلى الأكثر استخدامًا مؤخرًا:
هذه قائمة طويلة، وهناك المزيد من المهام التي نسعى إلى إنجازها. لا تزال هناك بعض واجهات برمجة التطبيقات والميزات التي يخضع استخدامها حاليًا للتجربة من قِبل المطوّرين (أي أنّها قيد التنفيذ، ولكنها غير متاحة إلا من خلال ميزة قيد الاختبار)، وبعض الميزات التي بدأنا في العمل عليها، والعديد من الميزات قيد المراجعة. كما يمكنك ملاحظة، لم يحن الوقت بعد للاسترخاء والقول بأنّنا انتهينا.
طرق الملفات المتزامنة لنظام الملفات الخاص الأصلي
على العكس تمامًا، بدلاً من الإعلان عن اكتمال جهودنا، نحن في الواقع في مرحلة البدء
فقط. على سبيل المثال، راجِع الرسم البياني أدناه الذي يوضّح
الزيادة النسبية الهائلة في معدّل الاستخدام
لطريقة
navigator.storage.getDirectory()
، والتي تُستخدَم كنقطة دخول إلى نظام الملفات الخاص الأصلي (OPFS). تُستخدَم هذه الطريقة، مثلاً، لتلبية احتياجات مساحة التخزين العالية الأداء في Photoshop، والتي يهتم بها المنتدى المعنيّ بمساحة التخزين
منذ بدء إيقاف Web SQL نهائيًا وحتى قبل ذلك.
والآن بعد أن بدأ المزيد من المستخدمين في استخدام ميزة "الإعلانات على شبكة البحث"، ظهرت متطلبات إضافية. على سبيل المثال، الحاجة إلى مجموعة متزامنة بالكامل من طرق الملفات في سياق عامل التشغيل (اطّلِع على whatwg/fs#7 للتعرّف على الخلفية). على الرغم من أنّ واجهات برمجة تطبيقات الويب الجديدة غير متزامنة بشكل عام، فإنّ توفُّر طُرق متزامنة سيجعل العمل مع OPFS أسهل بكثير في سياق Wasm، وبما أنّ ذلك يحدث في أحد عمال التشغيل، لا يمكن حظر سلسلة التعليمات الرئيسية.
تحسينات على الخصوصية في واجهات برمجة التطبيقات الخاصة بالأجهزة
ومن الأمثلة الأخرى واجهات برمجة التطبيقات للأجهزة التي تتيح لك الاتصال بأجهزة
HID والتسلسلي وUSB و
البلوتوث وNFC. على الرغم من أنّ بعض
هذه واجهات برمجة التطبيقات متوفّرة منذ فترة، لم يكن بالإمكان حتى وقت قريب حذف بيانات جهاز سبق أن
تم ربطه. والآن، بفضل طرق
forget()
، أصبح بإمكانك استخدام بعض واجهات برمجة التطبيقات. على سبيل المثال، إليك كيفية حذف جهاز تسلسلي سبق أن تم ربطه، ما يُحسِّن من خصوصية
واجهة برمجة التطبيقات.
// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();
تحسينات على واجهة برمجة التطبيقات Multi-Screen Window Placement API
ومن الأمثلة الأخيرة على ذلك
Multi-Screen Window Placement API، حيث تم استبدال تصنيفات الشاشات العامة السابقة، مثل "Internal Display 1"
،
بتسميات أكثر وضوحًا، مثل "Built-in Retina Display"
، استنادًا إلى ملاحظات المطوّرين، لكي يتمكّن المستخدمون من ربط
هذه التصنيفات بسهولة أكبر بشاشات الإعداد المتعدّد للشاشات.
الاستنتاجات
كما يمكنك أن ترى من خلال هذه الأمثلة الثلاثة فقط، لا يزال مشروع Fugu بعيدًا عن الاكتمال. مواصلة استخدام واجهات برمجة التطبيقات أو البدء باستخدامها وإرسال الملاحظات بما أنّ جميع مواصفات Fugu يتم تطويرها بشكل علني على GitHub، يمكنك الإبلاغ عن مشكلة في المواصفات على مستودع GitHub المقابل أو إضافة ملاحظاتك إلى مشكلة حالية. إذا عثرت على خطأ في عملية تنفيذ Chrome أو اكتشفت أنّ عملية التنفيذ تختلف عن المواصفات، يُرجى الإبلاغ عن الخطأ على new.crbug.com. احرص على تضمين أكبر عدد ممكن من التفاصيل وتقديم تعليمات بسيطة لإعادة إنتاج الخطأ.
وإذا كنت قلقًا بشأن توافق المتصفّح، توفّر العديد من واجهات برمجة تطبيقات Fugu تحسينات رائعة ومبرمَجة بشكل تدريجي. يمكنك الاطّلاع على مقالتي SVGcode: تطبيق متوافق مع الأجهزة الجوّالة للويب لتحويل الصور المخصّصة للطباعة إلى رسومات SVG موجّهة للحصول على الإلهام. ولن نعتبر أنّنا أكملنا مهمتنا إلا بعد أن تصبح واجهات برمجة التطبيقات هذه متوافقة مع بعضها، وسنواصل السعي إلى المزيد من عمليات القياس والتوحيد والاختبار والاعتماد من قِبل المتصفّحات الأخرى.