This concerns two projects, WebKitGTK and Epiphany 3.12 that already adopted the unstable 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.
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
- 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.
Unlike with Chromium, Epiphany is using two process models.
- Shared-secondary-process ( Single Process )
- 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.
Simple to understand. Each tab has one renderer process dedicated to it that does not change over time.
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.
We can set the process models of Epiphany from GSettings. I am using the “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