You Got A Question? Ask    GNOME Community!


WebKitGTK+ 2.3.5 release and Epiphany 3.12

This concerns two projects, WebKitGTK and Epiphany 3.12 that already adopted the unstable WebKitGTK+ 2.3.5.


WebKitGTK+ 2.3.5

WebkitGTK+ 2.3.5 released in February 5, 2014 and is a development release leading toward 2.4 series. It brings the following major changes.

  • Add API to allow setting a multiple web process model.
  • Add API to pass initialization user data from the UI process to the web extensions.
  • Implement languages support with network process.
  • Implement custom URI schemes with network process.
  • Disable MemoryCache when the DOCUMENT_VIEWER cache model is set.
  • Expose aria-describedby with ATK_RELATION_DESCRIBED_BY.
  • Fix a bug that prevented from entering fullscreen again in HTML5 videos after fullscreen was left with ESC.
  • Set playback rate when pipeline is not ready in GStreamer media backend.
  • Fix a lockup when playing Icecast radio in GStreamer media backend.
  • Fix a web process crash when a download is cancelled.
  • Fix several crashes when printing via JavaScript.

WebKitGTK Home


About Process Models

I wanted to try the latest WebKitGTK so I had to build WebKit which it takes around 30 minutes. In the meanwhile I thought to read what Web Process Models are. This is how Chromium does it.

It uses 4 Process Models

  1. Process-per-site-instance
  2. Process-per-site
  3. Process-per-tab
  4. Single process

If you read the documentation of Chromium Project you will understand the advantages that Epiphany will get from this, together with the dis-advantages.

Chromium Process Models Design


Epiphany 3.12

Unlike with Chromium, Epiphany is using two process models.

  1. Shared-secondary-process ( Single Process )
  2. One-secondary-process-per-web-view ( Process-per-tab ) 

Actually it uses only one ( Shared-secondary-process ), but we can also try the Process-per-tab ( One-secondary-process-per-web-view ), if we use the unstable WebKitGTK.

From Chromium Project, and note that the implementation could be kinda different.

The process-per-site-instance and process-per-site models both consider the origin of the content when creating renderer processes.

Strengths

Simple to understand. Each tab has one renderer process dedicated to it that does not change over time.

Weaknesses

Leads to undesirable fate sharing between pages. If the user navigates a tab in a browsing instance to a different web site, the new page will share fate with any other pages in the browsing instance.

Note that this is for Epiphany 3.12. Epiphany 3.10 can only use Shared-secondary-process model.


In Practice

We can set the process models of Epiphany from GSettings. I am using the “One-secondary-process-per-web-view”.

epiphany-processmodels

One-secondary-process-per-web-view

As you see I am running 3 Tabs in Epiphany and I have 3 WebKitWeb processes, one for each Tab. We can “kill” one process and the rest will stay alive. In theory that means that if a process crash, Epiphany will keep working. But it spends some more RAM.

Epiphany 3.10 ( “Shared-secondary-process model” ) would give us just a single process, no matter how many tabs we had on.

The patch that adds multiple web process in Epiphany came from Carlos Garcia Campos of Igalia

 


 
  We can't watch comments unless G+ provides an API or if you send a notification, e.g +World Of Gnome
     Sometimes is better to place your questions on GNOME Community