Совсем недавно компания Apple объявила в списке рассылке о создании WebKit2. Это не новый «движок», как ошибочно предполагают некоторые, а новый API, разработанный компанией Apple с чистого листа и уже используемый при разработке новых версий продуктов. Главной особенностью новой версии является то, что модель разделения процессов уже встроена, поэтому разработчикам не придётся реализовывать это своими силами, как сделали в Google Chrome.
Если говорить о стеке средств WebKit2, то его можно разделить на две части: процесс пользовательского интерфейса и веб-процесс. Теперь часть WebKit работает в процессе пользовательского интерфейса, а остальная часть вместе с WebCore и обработкой JS находится в веб-процессе. Таким образом, веб-процесс изолирован от пользовательского интерфейса. Это позволит получить улучшенную отзывчивость, стабильность, безопасность (путём создания изолированной «песочницы» для выполнения веб-процесса) и улучшенную поддержку многопроцессорных систем. И обо всём этом разработчику не требуется ломать голову - всё уже встроено в сам WebKit.
Другой особенностью нового API является отсутствие блокировок. Для достижения этого результата и сохранения всех возможностей WebKit, были использованы следующие технические решения:
- обратные вызовы (callback) в виде уведомления клиенту - обычное уведомление, которое происходит при определённом событии и не даёт возможности что-то сделать с источником уведомления;
- обратные вызовы в виде политик - позволяют выбрать дальнейшее действие, уведомляя страницу через объект прослушивания;
- параметры политик - позволяют задать заранее определённые политики без использования обратных вызовов в пользовательском процессе;
- встраиваемый код - некоторый код может быть загружен в веб-процесс в тех случаях, когда других возможностей для этого не хватает, например это удобно при доступе к DOM (находится на стадии реализации).
При этом Apple заявила, что доступный на данные момент WebCore API меняться не будет для сохранения обратной совместимости. На данный момент WebKit2 работает в MacOS X и Windows, но разработчики с радостью примут патчи для поддержки других операционных систем и платформ. Думаю, стоит сказать Apple спасибо в очередной раз за разработку передовых решений в области свободного ПО.
>>> Подробности