RenderingNG

الاستعداد للجيل القادم من محتوى الويب

Chris Harrelson
Chris Harrelson

تُعدّ RenderingNG بنية عرض من الجيل التالي تتفوق بشكلٍ كبير على ما كان يحدث من قبل. تم إنشاء RenderingNG على مدار أكثر من ثماني سنوات ويمثل العمل الجماعي للعديد من مطوري Chromium المتخصصين. فهي تتيح لك إمكانات هائلة لإنشاء محتوى ويب تفاعلي وسريع وموثوق به وسريع الاستجابة.

رسم تخطيطي للعناصر المختلفة في RenderingNG
RenderingNG

هنا، ستتعرف على ما أنشأناه ولماذا أنشأناه وكيف يعمل.

هدف نجم الشمال

يكمن الهدف الأهم الذي يحفّز RenderingNG في أنّ تنفيذ محرّك المتصفّح، وثراء واجهات برمجة التطبيقات للعرض، يجب ألا يكونا عاملين مشروطين لتجربة المستخدم على الويب.

لا داعي للقلق بشأن أخطاء المتصفّح التي تجعل الميزات غير موثوق بها أو تؤدي إلى تعطُّل عرض موقعك الإلكتروني.

يجب ألا تكون هناك منحدرات غامضة للأداء. كما يجب ألا تكون بحاجة إلى حل مشكلة عدم استخدام الميزات المضمنة.

من المفترض أن تنجح العملية.

ويشكّل RenderingNG خطوة كبيرة نحو هذا الهدف النجمي. قبل استخدام RenderingNG، كان بإمكاننا (وفعلنا ذلك) إضافة ميزات عرض وتحسين الأداء، ولكننا واجهنا صعوبة في جعل هذه الميزات موثوقة للمطوّرين، وكانت هناك العديد من الآثار المترتّبة على الأداء. والآن لدينا بنية تقليص العديد من هذه المشكلات بشكل منهجي، بالإضافة إلى إزالة حظر الميزات المتقدمة التي لم تكن قابلة للتنفيذ من قبل. إذ إنه:

  • يتضمّن ميزات أساسية صلبة في مجموعات مختلفة من الأنظمة الأساسية والأجهزة وأنظمة التشغيل.
  • تحقّق أداءً موثوقًا ويمكن توقُّعه.
  • زيادة استخدام إمكانات الأجهزة (النواة ووحدة معالجة الرسومات ودرجة دقة الشاشة ومعدلات التحديث وواجهات برمجة التطبيقات النقطية منخفضة المستوى)
  • يؤدي هذا الخيار العمل اللازم فقط لعرض المحتوى المرئي.
  • يحتوي على دعم مدمج للتصميم المرئي الشائع والصور المتحركة وأنماط تصميم التفاعل.
  • توفّر واجهات برمجة التطبيقات للمطوّرين لإدارة تكاليف العرض بسهولة.
  • يوفر نقاط امتداد مسار العرض للوظائف الإضافية لمطوّري البرامج.
  • تحسين كل المحتوى—HTML وCSS ولوحة الرسم الثنائية الأبعاد واللوحات الثلاثية الأبعاد والصور والفيديوهات والخطوط

المقارنة مع محركات عرض المتصفّح الأخرى

نفذت أيضًا Gecko وWebkit معظم الميزات الهندسية الموضّحة في مشاركات المدونات هذه، وفي بعض الحالات تمت إضافتها قبل Chromium.

فأي متصفح سريع وأكثر موثوقية يكون سببًا للاحتفال ويكون له تأثير حقيقي. الهدف النهائي هو تحسين المتوقع لجميع المتصفحات، حتى يتمكن المطورون من الاعتماد عليه.

هرم النجاح

فلسفتي هي أنّ النجاح يأتي نتيجة تحقيق الموثوقية أولاً، ثم الأداء القابل للتطوير، وأخيرًا القابلية للتوسّع.

هرم عليه تسميات الموثوقية في القاعدة،
الأداء في المنتصف، قابلية التوسع في الأعلى

وكما هو الحال مع هرم واقعي، يوفّر كل مستوى أساسًا متينًا بالضرورة للمستوى أعلاه.

الموثوقية

رسم تخطيطي يوضّح كيفية إضافة ميزات RenderingNG بدون زيادة كبيرة في حالات الإحباط

إذا كان من الممكن الحصول على تجارب مستخدم غنية ومعقدة، فأول شيء نحتاجه هو منصة قوية. يجب أن تعمل الميزات والأسس الأساسية بشكل صحيح، وأن تستمر في العمل بمرور الوقت. ومن المهم أيضًا أن تؤلّف هذه الميزات بطريقة جيدة وألّا تتضمّن سلوكًا أو أخطاءً غريبة.

يُظهر Sketch طبيعة دائرية لإضافة العناصر والحصول على الملاحظات وتحسين الموثوقية.

لهذا السبب، تشكّل الموثوقية الجزء الأهم في RenderingNG. والموثوقية هي نتيجة الاختبار الجيد وحلقات الملاحظات عالية الجودة والمقاييس وأنماط تصميم البرامج.

لإعطائي فكرة عن مدى أهمية الموثوقية التي أعتقد أنها، قضينا معظم السنوات الثماني الماضية في التركيز على هذا الجزء فقط. أولاً، حصلنا على معرفة عميقة بالنظام من خلال التعلّم من تقارير الأخطاء التي تشير إلى نقاط الضعف وإصلاحها، وإعداد الاختبارات الشاملة، وفهم متطلبات الأداء للمواقع الإلكترونية والقيود المفروضة على أداء Chromium. ثم صممنا وطرحنا أنماط التصميم وهياكل البيانات الرئيسية بعناية وتدريجية. عندها فقط كنا مستعدين لإضافة عناصر أولية من الجيل التالي للتصميم سريع الاستجابة، وقابلية التوسع، وتخصيص العرض.

رسم بياني تخطيطي يوضّح تحسُّن الموثوقية والأداء وقابلية التوسّع بمرور الوقت

وهذا لا يعني أنه لم يتم إدخال أي تحسينات خلال ذلك الوقت في Chromium. في الواقع، العكس هو الصواب! شهدت تلك السنوات زيادة ثابتة ومستدامة في الموثوقية والأداء حيث أعدنا هيكلة الجهاز وطرحناه خطوة بخطوة.

الاختبار والمقاييس

وعلى مدار الأعوام الثمانية الماضية، أضفنا عشرات الآلاف من اختبارات الوحدة والأداء والتكامل. بالإضافة إلى ذلك، طوّرنا مقاييس شاملة تقيس عدة جوانب من سلوك العرض في Chromium ضمن الاختبار المحلي ومقاييس الأداء وعلى المواقع الإلكترونية الحقيقية مع مستخدمين وأجهزة حقيقية.

وبغض النظر عن مدى روعة RenderingNG (أو محرك عرض في متصفح آخر في هذا الشأن)، سيظل من الصعب تطويره على الويب إذا كان هناك الكثير من الأخطاء أو الاختلافات في السلوك بين المتصفحات. ولتحقيق ذلك، نعمل أيضًا على الاستفادة إلى أقصى حد من اختبارات منصة الويب. يتأكد كل من هذه الاختبارات من نمط استخدام نظام الويب الأساسي الذي يجب أن تهدف جميع المتصفحات إلى اجتيازه. نراقب أيضًا عن كثب مقاييس اجتياز المزيد من الاختبارات بمرور الوقت وزيادة التوافق الأساسي.

تُعد اختبارات النظام الأساسي للويب جهدًا تعاونيًا. على سبيل المثال، أضاف مهندسو Chromium حوالي% 10 فقط من إجمالي اختبارات WPT لميزات CSS؛ ويساهم موردو المتصفحات الآخرون والمساهمون المستقلون ومؤلفو المواصفات في الباقي. يتطلب الأمر قرية لتحسين شبكة الويب القابلة للتشغيل التفاعلي.

اجتياز الاختبارات في محركات مختلفة
بدءًا من wpt.fyi/compat2021، سيتم قياس معدل اجتياز WPT للميزات الأساسية

أنماط تصميم البرامج الجيدة

ويكون تقديم برامج ذات جودة عالية بشكل موثوق به أسهل بكثير إذا كانت التعليمات البرمجية سهلة الفهم ومصمّمة بطريقة تقلّل من احتمال حدوث أخطاء. سيكون لدينا الكثير لقوله حول تصميم برنامج RenderingNG في مشاركات المدونة اللاحقة.

أداء قابل للتطور

يُعدّ تحقيق أداء رائع على مستوى السرعة والذاكرة واستخدام الطاقة ثاني أهم جانب في RenderingNG. نريد أن تكون التفاعلات مع جميع مواقع الويب سلسة وسريعة الاستجابة، ولكننا نريد ألا نضحى في استقرار الجهاز.

ولكن لا نريد فقط تحقيق أداء أفضل، بل نريد أيضًا أداء قابلاً للتطوير، وهو بنية تحقّق أداءً جيدًا بشكل موثوق على الأجهزة المنخفضة التطور والعالية التطور، وعلى مختلف الأنظمة الأساسية للتشغيل. أسمي هذا التوسع - مستفيدًا من كل ما يمكن للجهاز تحقيقه - ثم تقليصه - زيادة الكفاءة وتقليل الطلب على النظام عند الحاجة.

لتحقيق ذلك، احتجنا إلى الاستفادة إلى أقصى حد من التخزين المؤقت، وعزل الأداء، وتسريع أجهزة وحدة معالجة الرسومات. لنفكر في كل منها بالترتيب. ولجعل الأمر ملموسًا، لنفكر في كيفية مساهمة كل واحد منهم في أداء تفاعل مهم للغاية على صفحات الويب وهو: التمرير.

التخزين المؤقت

في منصة واجهة مستخدم ديناميكية وتفاعلية مثل الويب، يُعد التخزين المؤقت الوسيلة الأكثر أهمية لتحسين الأداء بشكل كبير. إنّ أكثر أنواع التخزين المؤقت شهرة في المتصفّح هو ذاكرة التخزين المؤقت HTTP، ولكن العرض يتضمّن أيضًا العديد من ذاكرات التخزين المؤقت. وأهم ذاكرة تخزين مؤقت للتمرير هي زخارف وحدة معالجة الرسومات وقوائم العرض المخزّنة مؤقتًا، والتي تتيح التمرير سريعًا للغاية مع تقليل استنزاف البطارية والعمل بشكل جيد على مجموعة متنوعة من الأجهزة.

يساعد التخزين المؤقت على عمر البطارية وعدد اللقطات في الثانية للصور المتحركة عند التمرير، ولكن الأهم من ذلك هو أنّه يزيل حظر عزل الأداء من سلسلة التعليمات الرئيسية.

عزل الأداء

في أجهزة الكمبيوتر المكتبية الحديثة، لا داعي للقلق أبدًا بشأن إبطاء تطبيقات الخلفية للتطبيق الذي تعمل عليه. ويرجع ذلك إلى تعدد المهام الاستباقي، وهو شكل من أشكال عزل الأداء: التأكد من أن المهام المستقلة لا تؤدي إلى إبطاء بعضها البعض.

أفضل مثال على عزل الأداء هو التمرير على الويب. حتى في المواقع الإلكترونية التي تحتوي على الكثير من لغة JavaScript البطيئة، يمكن أن يكون التمرير سلسًا جدًا، لأنه يتم تشغيله على سلسلة محادثات مختلفة لا تعتمد على سلسلة تعليمات JavaScript وتخطيط التنسيق. لقد بذلنا جهدًا كبيرًا في RenderingNG للتأكد من أنّ كل تمرير ممكن متسلسل، من خلال التخزين المؤقت الذي يتجاوز مجرد قائمة العرض إلى المواقف الأكثر تعقيدًا. وتشمل الأمثلة رموزًا برمجية لتمثيل العناصر ذات الموضع الثابت والثابت، وأدوات معالجة الأحداث السلبية، وعرض النص عالي الجودة.

يوضِّح Sketch (الرسم البياني) أنّه باستخدام RenderingNG يبقى ثابتًا حتى عندما يكون JavaScript بطيئًا جدًا.

تسريع وحدة معالجة الرسومات

تعمل وحدة معالجة الرسومات على إنشاء وحدات البكسل والرسم على الشاشة بشكل أسرع بكثير. وفي حالات كثيرة، يمكن رسم كل بكسل بالتوازي مع كل وحدة بكسل أخرى، ما ينتج عنه زيادة هائلة في السرعة. يعَدّ العرض النقطي لوحدة معالجة الرسومات من المكوّنات الرئيسية في RenderingNG والرسم في كل مكان. يستخدم ذلك وحدة معالجة الرسومات على جميع الأنظمة الأساسية وجميع الأجهزة لتسريع عملية عرض محتوى الويب وتحريكه. وتبرز أهمية ذلك على وجه الخصوص على الأجهزة ذات المواصفات المنخفضة أو المتطوّرة جدًا التي غالبًا ما تتضمّن وحدة معالجة رسومات أكثر فعالية مقارنةً بأجزاء الجهاز الأخرى.

يُظهر الرسم البياني أنّه باستخدام RenderingNG، لا يتراجع أداء RenderingNG كثيرًا.

القابلية للتوسّع: الأدوات المناسبة للوظيفة

بعد حصولنا على أداء موثوق وقابل للتطور، أصبحنا جاهزين الآن للاستناد إلى مجموعة كبيرة من الأدوات لمساعدة المطوّرين على توسيع الأجزاء المضمّنة من HTML وCSS وCanvas، وبطرق لا تتجاوز الموثوقية والأداء اللذَين تم اكتسابهما.

يتضمّن ذلك واجهات برمجة تطبيقات مضمَّنة لعرض JavaScript لحالات الاستخدام المتقدّمة للتصميم السريع الاستجابة، والعرض التدريجي، والسلاسة والاستجابة، والعرض المتسلسل.

أتاحت RenderingNG استخدام واجهات برمجة تطبيقات الويب المفتوحة التالية، والتي يدعمها Chromium، وكانت تعتبر في السابق غير قابلة للتنفيذ.

وتم تطوير جميع هذه الأدوات بمواصفات مفتوحة وتعاون مع شركاء الويب المفتوحين، وهم مهندسون في متصفحات وخبراء ومطوّري برامج آخرين. في مشاركات المدونة اللاحقة، سنتعمق في كل منها ونوضح كيف يتيح RenderingNG ذلك.

  • content-visibility: تسمح للمواقع الإلكترونية بتجنُّب عرض المحتوى خارج الشاشة بسهولة، وعرض ذاكرة التخزين المؤقت لمشاهدات تطبيقات الصفحة الواحدة غير المعروضة حاليًا.
  • OffscreenCanvas: السماح بعرض ملء الشاشة (كل من واجهة برمجة التطبيقات ثنائي الأبعاد للوحة الرسم وWebGL) على سلسلة خاصة به للحصول على أداء ممتاز وموثوق به ويشكّل هذا المشروع أيضًا معلمًا رئيسيًا آخر للويب، وهو أول واجهة برمجة تطبيقات على الويب تتيح JavaScript (أو WebAssembly) عرض مستند صفحة ويب واحد من سلاسل محادثات متعددة.
  • طلبات البحث الخاصة بالحاويات: تسمح لمكون واحد بتصميم نفسه بشكل متجاوب مع مختلف الأجهزة، وإزالة الحظر عن مجموعة كاملة من مكوّنات الأجهزة الملحقة والتشغيل (ميزة تجريبية حاليًا).
  • عزل المصادر: تسمح للمواقع الإلكترونية بتفعيل المزيد من عزل الأداء بين إطارات iframe.
  • أدوات تلوين خارج السلسلة الرئيسية: توفّر للمطوّرين طريقة لتوسيع طريقة عرض العناصر، باستخدام رمز يتم تشغيله على سلسلة تعليمات المكوّنات.

بالإضافة إلى واجهات برمجة تطبيقات الويب الصريحة، أتاح لنا RenderingNG توفير العديد من "الميزات التلقائية" المهمة جدًا والتي تفيد جميع المواقع الإلكترونية:

  • عزل المواقع الإلكترونية: تضع إطارات iframe من مصادر متعددة في عمليات وحدة المعالجة المركزية المختلفة، لتحسين مستوى الأمان وعزل الأداء.
  • Vulkan وD3D12 وMetal: تستفيد من واجهات برمجة التطبيقات ذات المستوى الأدنى التي تستخدم وحدات معالجة الرسومات بكفاءة أكبر من OpenGL.
  • المزيد من الصور المتحركة المركبة: SVG، لون الخلفية.

في ما يلي بعض الميزات القادمة الإضافية التي أطلقها RenderingNG والتي نتطلّع إلى حلها، وهي:

المشاريع الرئيسية التي تشكِّل RenderingNG

في ما يلي قائمة بالمشاريع الرئيسية ضمن RenderingNG.

CompositeAfterPaint

يفرّق CompositeAfterPaint بين النمط والتنسيق والطلاء، ما يسمح بتحسين الموثوقية والأداء الذي يمكن توقّعه، وزيادة سرعة معالجة البيانات، واستخدام ذاكرة أقل بدون التضحية بالأداء.

Year مدى التقدُّم
2015 قوائم عرض السفن
2017 عملية إبطال صلاحية جديدة للشحن
2018 أشجار ممتلكات السفن، الجزء 1.
2019 أشجار ممتلكات السفن، الجزء 2.
2021 تم إكمال شحن المشروع.

LayoutNG

إعادة كتابة شاملة لجميع خوارزميات التنسيق للحصول على مستوى أعلى من الموثوقية والأداء المتوقع للتنبؤ.

اطّلِع على المزيد من المعلومات حول LayoutNG.

Year مدى التقدُّم
2019 تدفق كتلة السفن
2020 استعراض عضلات السفينة، التعديل
2021 شحن كل المنتجات الأخرى

BlinkNG

لقد أعدنا ضبط الإعدادات وأزلنا محرك عرض Blink ليصبح مراحل مسار مشروع منفصلة. ويسمح ذلك بالتخزين المؤقت والموثوقية بشكل أفضل وميزات إعادة المشاركة أو العرض المتأخر، مثل إمكانية رؤية المحتوى وطلبات بحث الحاوية.

تسريع وحدة معالجة الرسومات على جميع الأجهزة

يوفر تسريع وحدة معالجة الرسومات تسريعًا هائلاً لمعظم المحتوى، لأنه يمكن معالجة كل وحدة بكسل بشكل متوازٍ. ويُعتبر أيضًا طريقة فعالة لتحسين الأداء على الأجهزة المنخفضة المواصفات التي تحتوي على وحدة معالجة رسومات.

Year مدى التقدُّم
2014 دعم "لوحة الرسم". يتم الشحن وفقًا لمحتوى المشاركة على أجهزة Android.
2016 الشحن على Mac.
2017 يتم استخدام وحدة معالجة الرسومات في أكثر من% 60 من مشاهدات الصفحات على الأجهزة التي تعمل بنظام التشغيل Android.
2018 يمكنك الشحن على نظام التشغيل Windows وChromeOS وAndroid Go.
2019 المسح المجالي لوحدة معالجة الرسومات التي تتضمّن سلسلة محادثات
2020 شحن محتوى Android المتبقي.

التمرير المتسلسل والصور المتحركة وفك الترميز

جهد طويل الأمد لنقل جميع الرسوم المتحركة التي لا تحتوي على تنسيق، وفك ترميز الصور، خارج سلسلة التعليمات الرئيسية. إنها مستمرة.

Year مدى التقدُّم
2011 الدعم الأولي للتمرير المتسلسل والرسوم المتحركة.
2015 ضغط الطبقة.
2016 التمرير الشامل العام
2017 فك ترميز الصور في سلسلة محادثات أداة الإنشاء
2018 الصور المتحركة في سلسلة محادثات المكوّنة
2020 تثبيت موضع ثابت دائمًا
2021 النسبة المئوية لتحويل الصور المتحركة، والرسوم المتحركة بتنسيق SVG.

تصور

عملية مركزية للرسم النقطي والرسم في Chromium تزيد من سرعة معالجة البيانات وتحسّن الذاكرة وتسمح باستخدام أفضل إمكانات الأجهزة. وله فوائد أخرى أقل وضوحًا للمطوّرين على الويب، لكنّها تظهر للمستخدمين كثيرًا، مثل إزالة حظر ميزة "عزل المواقع الإلكترونية" وفصل مسار العرض عن عرض واجهة مستخدم المتصفّح.

Year مدى التقدُّم
2018 يتم شحن OOP-R على Android وMac وWindows.
2019 تم شحن OOP-D. يتم شحن OOP-R إلى كل مكان (باستثناء "لوحة الرسم"). يتم شحن SkiaRenderer إلى Linux.
2020 يتم شحن SkiaRenderer على نظامي التشغيل Windows وAndroid. تم شحن Vulkan على Android.
2021 تمّ شحن SkiaRenderer إلى أجهزة Mac (وقريبًا على ChromeOS).

تعريفات المصطلحات في الرسم البياني أعلاه:

OOP-D
مكوّن العرض خارج المعالجة. إن إنشاء العرض هو نفس نوع نشاط مكوّن نظام التشغيل. ويعني "خارج المعالجة" القيام بذلك في عملية التصور بدلاً من عملية عرض صفحة الويب أو عملية واجهة المستخدم في المتصفح.
OOP-R
الصورة النقطية خارج المعالجة. تعمل الصور النقطية على تحويل قوائم العرض إلى وحدات بكسل. وخارج المعالجة، يعني تنفيذها ضمن عملية التصور بدلاً من عملية عرض صفحة الويب.
SkiaRenderer
تطبيق جديد لأداة إنشاء شاشة العرض يمكن أن يدعم تنفيذ مجموعة مختلفة من واجهات برمجة التطبيقات الأساسية المختلفة لوحدة معالجة الرسومات، مثل Vulkan أو D3D12 أو Metal.

عرض اللوحة المتسلسلة والمسرَّعة

هذا هو المشروع الذي جعل OffscreenCanvas ممكنًا.

Year مدى التقدُّم
2018 سفينة OffscreenCanvas.
2019 إرسال ImageBitmapRenderingContext.
2021 سفينة OOP-R

VideoNG

تهدف VideoNG إلى توفير تشغيل فيديو بشكل فعّال وموثوق وعالي الجودة على الويب.

Year مدى التقدُّم
2014 تم تقديم إطار عمل العرض المستند إلى Mojo.
2015 تم شحن Project Butter وتراكبات الفيديو لتوفير عرض أكثر سلاسة للفيديوهات.
2016 تم شحن مسارات فك الترميز والعرض الموحّدة لأجهزة Android والكمبيوتر المكتبي.
2017 تم شحن HDR وعرض الفيديو بتصحيح الألوان.
2018 تم شحن مسار فك ترميز الفيديوهات المستند إلى Mojo.
2019 تم تحميل مسار عرض الفيديوهات المستندة إلى سطح المكتب.
2021 تم شحن إمكانية عرض المحتوى المحمي بدقة 4K على نظام التشغيل ChromeOS.

تعريفات المصطلحات في الرسم البياني أعلاه:

موجو
نظام IPC من الجيل التالي لمتصفِّح Chromium
مساحات العرض
مفهوم يشكِّل جزءًا من تصميم مشروع Viz.

الرسوم التوضيحية من قبل "أونا كرافيتس".