Blink (браузерний рушій)

Blink
Типбраузерний рушій
РозробникGoogle, Opera Software
Операційна системакрос-платформовий
Мова програмуванняC++
ЛіцензіяBSD v2.0 та GNU LGPL v2.1
Репозиторійchromium.googlesource.com/chromium/src/+/master/third_party/blink/
Вебсайтwww.chromium.org/blink

Blink — вільний рушій для відображення вебсторінок, розроблений компаніями Google та Opera Software на основі початкового коду WebCore з WebKit для браузера Chromium.[1] Blink базується на багатопроцесній архітектурі і суттєво відрізняється від основної архітектури розпаралелювання операцій у WebKit.

Історія розробки

Проєкт WebKit був створений в 2001 році як форк рушія KHTML, який розвивала спільнотою KDE.

У представленому в 2008 році браузері Chrome компанія Google використовувала підсистему WebKit WebCore для рендерингу HTML і CSS, але замість JavaScript-рушія WebKit JavaScriptCore використовувала власний рушій V8. Фактично компанія Google спочатку розвивала в Chrome форк WebKit, тому що використовує у своєму браузері окрему гілку WebKit, безпосередньо вносячи в неї власні зміни і портуючи сторонні зміни з WebKit, після чого повертаючи свої покращення в upstream. У WebKit2 з'явилося багато нових можливостей і особливостей, які не мала наміру використовувати Google, але які доводилось враховувати при портуванні. У підсумку ресурси витрачані на портування стали неприйнятно великі.

Основною причиною створення форку стала зростаюча трудомісткість паралельної підтримки розробки окремої багато-процесорної моделі, спочатку використовуваної в Google Chrome, але неприйнятної для універсального рушія WebKit і деяких інших браузерах. Суть відмінностей зводиться до того, що WebKit2 надає спеціальний фреймворк для поділу за різними процесами обробки контенту та формування інтерфейсу, а механізм поділу за процесами Chrome заснований на ідеї використання WebKit WebCore як одного з багато-процесних модулів, котрі взаємодіють з іншими модулями через окремий диспетчер ресурсів. В процесі розробки спостерігалося постійне ускладнення коду як WebKit, так і Chrome, що помітно гальмувало розробку Chrome через необхідність постійного портування коду. Крім того, із створенням форку у Google з'являться нові можливості з оптимізації рушія і збільшенню продуктивності, що потребують внесення кардинальних змін до WebKit. Створення Blink зняло з Google зобов'язання з повернення змін до WebKit.

На думку Google, створення нового браузерного рушія не відіб'ється негативно на екосистемі і лише оздоровить її, бо конкуренція спонукає до розвитку інновацій, так само як поява кількох конкурентних браузерів стимулювала розвиток Веб. При цьому розробники Blink відзначають як пріоритетний напрямок співпрацю з творцями інших браузерних рушіїв в плані забезпечення сумісності, слідування інтернетовим стандартам і створення нових вебтехнологій. Першим часом розвиток Blink був сфокусований на поліпшенні внутрішньої архітектури і спрощенні кодової бази. Наприклад, припинено підтримку 7 складальних систем і вилучено близько 7 тисяч файлів, що включають понад 4.5 млн рядків коду.

Про намір перейти до використання рушія Blink заявила компанія Opera, в процесі своєї міграції на WebKit з власного рушія Presto. Таким чином, сформована навколо WebKit спільнота розкололася на два табори, що представляють технології та інтереси проєктів Google Chrome і Apple Safari.

У квітні 2013 компанія Adobe, що раніше брала участь у розвитку WebKit, оголосила про намір підключитися до роботи над рушієм Blink.[2][3] Adobe продовжить свою співпрацю з проєктами WebKit і Mozilla, але створюваний Adobe продукт Edge Tools базуватиметься на наданому проєктом Chromium фреймворці для інтеграції браузерних функцій в сторонні продукти.

У вересні 2013 про підтримку Blink оголосив проєкт Qt.[4] Ларс Нол (Lars Knoll), творець рушія KHTML, керівник проєкту Qt Project і директор з розвитку фреймворку Qt в компанії Digia, представив Qt WebEngine[5], новий компонент для використання браузерного рушія в Qt-застосунках. Qt WebEngine йде на зміну Qt WebKit і відрізняється переходом на кодову базу проєкту Blink.

Відмінності від WebKit

Серед причин переходу на Blink називають[4]

  • У розробці Chromium велика увага приділяється крос-платформовості, підтримуються всі основні настільні платформи і Android. У WebKit підтримка сучасних платформ відстає від Chromium
  • Багато можливостей, що вимагають додаткового доопрацювання при використанні WebKit, доступні з коробки в Chromium. Наприклад, Chromium спрощує використання напрацювань з адаптації продукту для різних платформ і операційних систем, без додаткових надбудов працюють мультимедійні можливості і WebRTC
  • При використанні Chromium спрощується інтеграція з операційною системою, що дозволяє зосередити увагу на розвитку API
  • Розробка Chromium ведеться під дуже серйозним контролем відповідно до високих вимог до якості, що спрощує тестування похідних продуктів

З планів розвитку архітектури Blink можна відзначити:[6]

  • Реалізація обробки вмісту iframe в окремому ізольованому процесі. У WebKit зазначена можливість не може бути інтегрована, бо вона вимагає значної реструктуризації методів обробки iframe і зав'язана на особливостях sandbox-ізоляції і методів управління процесами в Chrome.
  • Прискорення і спрощення коду для забезпечення мережевої взаємодії. Мережева підсистема WebKit обмежена необхідністю забезпечення сумісності зі старим API для платформ Mac, що не дозволяє інтегрувати в WebKit деякі поліпшення і змушує використовувати в Chrome ряд обхідних методів, реалізація яких не найкраща.
  • Переклад обробки Document Object Model (DOM) на плечі JavaScript-рушія, що дозволить істотно прискорити доступ до DOM з JavaScript-скриптів. Втілення в життя подібної ідеї вимагає повної переробки реалізації DOM в WebKit і утруднено у світлі підтримки в WebKit одночасно двох рушіїв JavaScript;
  • Розбиття WebKit WebCore на модулі і розширення засобів розпаралелювання обробки контенту (парсинг HTML, рушій обробки стилів, парсер JavaScript);
  • Пряме використання у рушії основного Platform API для управління sandbox-ізоляцією;
  • Перехід на використання високопродуктивного менеджера розподілу пам'яті tcmalloc;
  • Використання JIT-компіляції при організації доступу з JavaScript коду до деяких атрибутів DOM, таких як div.id і div.firstChild;
  • Підтримка збереження снапшотів у рушії V8, що дозволить позбутися від стадії розбору для вже завантажених раніше сторінок;
  • Поліпшення ізоляції ниті, що відповідає за формування виводу (compositor).
  • Рішення позбутися CSS-префіксів для експериментальних можливостей. Замість префікса «-webkit» вирішено не вводити префікси «-blink» або «-chrome», а наслідувати приклад Mozilla і додавати всі експериментальні можливості без префіксів, але включати їх тільки при зміні спеціальних налаштувань в браузері.

Поза цими озвученими змінами Blink залишається відносно подібним до WebCore.[7]

Див. також

  • Портал «Вільне програмне забезпечення»
  • V8 (рушій JavaScript)
  • Dart

Примітки

  1. The Changing Web Platform Landscape: More Fragmentation?. Архів оригіналу за 5 жовтня 2013. Процитовано 4 жовтня 2013.
  2. Adobe присоединился к разработке Blink, форка WebKit от компании Google. Архів оригіналу за 5 жовтня 2013. Процитовано 4 жовтня 2013.
  3. а б Qt переходить з WebKit на браузерний рушій Blink і технології Chromium [Архівовано 21 вересня 2013 у Wayback Machine.] (рос.)
  4. Introducing the Qt WebEngine. Архів оригіналу за 21 вересень 2013. Процитовано 4 жовтень 2013.
  5. Компанія Google представила Blink, форк рушія WebKit [Архівовано 4 жовтня 2013 у Wayback Machine.] (рос.) // opennet.ru 04.04.2013

Посилання

  • Blink
  • Blink developer FAQ [Архівовано 1 травня 2013 у Wayback Machine.]
  • www.chromestatus.com [Архівовано 16 квітня 2011 у Wayback Machine.]
  • п
  • о
  • р
Можливості · стандарти · протоколи
Можливості
Вебстандарти
Протоколи
Діючі
На основі Blink
На основі Gecko
На основі WebKit
Інші
Розробку припинено
На основі Gecko
На основі MSHTML
На основі WebKit
Інші


Товстим шрифтом виділені популярні браузери