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