SlideShare a Scribd company logo
1 of 36
Download to read offline
Web 3.12 
A browser to make us proud 
Eduardo Lima 
Igalia 
Strasbourg, July 27th, 2014
+ = 
3/36
scope 
· 
Web 3.12: released March 2014 
· 
(Web 3.10 released September 2013) 
· 
WebKitGTK+ 2.4.0: also released March 2014 
4/36
scope 
focus on last stable release cycle 
5/36
WebKitGTK+ 2.4 
6/36
WebKitGTK+ 
· What happened? 
Multiple Web processes 
DOM touch events support 
Plugins cache 
New API 
WebKit1 API deprecation 
many bugfixes, as usual 
· 
· 
· 
· 
· 
· 
7/36
Multiple Web processes 
by Adrian Perez 
8/36
Multiple Web processes 
Essentially, one process per tab 
plus other auxiliary processes 
Goals 
Enabled by default in Web, possible to opt-out 
· 
· 
· 
Page crashes don't crash the browser 
Put vulnerable data into a separate address space 
· 
· 
· 
9/36
Multiple Web processes 
before 2.4 
10/36
Multiple Web processes 
after 2.4 
11/36
Multiple Web processes in practice: 
screenshot by Alex Diavatis 
12/36
Multiple Web processes 
Opt-in/out (GSettings) 
gsettings set org.gnome.Epiphany  
process-model one-secondary-process-per-web-view // or 'shared-secondary-process' 
13/36
Multiple Web processes 
Opt-in/out (API) 
int main(int argc, char **argv) 
{ 
webkit_web_context_set_process_model ( 
webkit_web_context_get_default (), 
WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES); 
/* The rest of the application code, unmodified */ 
} 
14/36
Multiple Web processes 
by Adrian Perez 
15/36
Multiple Web processes 
· Downside: 
More memory hungry 
Added complexity on Web extensions setup 
Added complexity on process management (spawning/killing) 
- 
- 
- 
16/36
Multiple Web processes 
It is possible for Web views to share a Web process (new API) 
GtkWidget *view, *related_view, *unrelated_view; 
void create_views () 
{ 
/* Create two views which share a Web Process */ 
view = webkit_web_view_new (); 
related_view = 
webkit_web_view_new_with_related_view (WEBKIT_WEB_VIEW (view)); 
/* This view will spawn a new Web Process */ 
unrelated_view = webkit_web_view_new (); 
} 
17/36
Multiple Web processes 
· Initializing Web extensions now (new API) 
· #define WEB_EXTENSIONS_DIRECTORY /* ... */ 
int main (int argc, char **argv) 
{ 
WebKitWebContext *context = webkit_web_context_get_default (); 
GVariant *data = get_data_for_web_extensions (); 
webkit_web_context_set_web_extensions_directory ( 
context, WEB_EXTENSIONS_DIRECTORY); 
webkit_web_context_set_web_extensions_initialization_user_data ( 
context, data); 
GtkWidget *view = webkit_web_view_new (); 
/* ... */ 
} 
18/36
Multiple Web processes 
· ... and in the extension 
· void webkit_web_extension_initialize_with_user_data ( 
WebKitWebExtension *extension, GVariant *user_data) 
{ 
/* Initialize the extension, using “user_data” */ 
} 
19/36
Multiple Web processes 
· More complexity: Different data per instance of a Web extension 
New signal ::initialize-web-extensions 
(I promise next is the last slide with code) 
· 
· 
20/36
#define WEB_EXTENSIONS_DIRECTORY /* ... */ 
static void 
initialize_web_extensions (WebKitWebContext *context, gpointer user_data) 
{ 
/* Web Extensions get a different ID for each Web Process */ 
static guint32 unique_id = 0; 
webkit_web_context_set_web_extensions_directory ( 
context, WEB_EXTENSIONS_DIRECTORY); 
webkit_web_context_set_web_extensions_initialization_user_data ( 
context, g_variant_new_uint32 (unique_id++)); 
} 
int main (int argc, char **argv) 
{ 
g_signal_connect (webkit_web_context_get_default (), 
"initialize-web-extensions", 
G_CALLBACK (initialize_web_extensions), 
NULL); 
GtkWidget *view = webkit_web_view_new (); 
/* ... */ 
} 
21/36
DOM touch events support 
VVVVViiiiidddddeeeeeooooo fffffooooorrrrrmmmmmaaaaattttt ooooorrrrr MMMMMIIIIIMMMMMEEEEE tttttyyyyypppppeeeee iiiiisssss nnnnnooooottttt sssssuuuuuppppppppppooooorrrrrttttteeeeeddddd..... 
00::0000 
screencast by Carlos Garnacho 
· 
22/36
Plugins cache 
Plugins are synchronously scanned on first use, can't be avoided 
but now that's done once, and cached for later 
· 
· 
23/36
WebKit1 deprecation 
WebKit1 completely removed from trunk 
Have you already ported your app? 
2.6 will no longer ship WebKit1 API 
· 
· 
· 
24/36
Web 3.12 
25/36
Overview turned into an HTML page 
Removed complex GTK+ widgets, along with 1000s of lines of code 
Overview now a themable and animatable HTML document 
· 
· 
26/36
Overview turned into an HTML page 
VVVVViiiiidddddeeeeeooooo fffffooooorrrrrmmmmmaaaaattttt ooooorrrrr MMMMMIIIIIMMMMMEEEEE tttttyyyyypppppeeeee iiiiisssss nnnnnooooottttt sssssuuuuuppppppppppooooorrrrrttttteeeeeddddd..... 
00::0000 
screencast by Claudio Saavedra 
27/36
A new location/title headerbar 
VVVVViiiiidddddeeeeeooooo fffffooooorrrrrmmmmmaaaaattttt ooooorrrrr MMMMMIIIIIMMMMMEEEEE tttttyyyyypppppeeeee iiiiisssss nnnnnooooottttt sssssuuuuuppppppppppooooorrrrrttttteeeeeddddd..... 
00::0000 
screencast by Claudio Saavedra 
28/36
Most dialogs cleaned up and revamped 
screenshot by Claudio Saavedra 
29/36
New designs for incognito mode 
screenshot by Claudio Saavedra 
30/36
Other improvements 
· Configure search engine from Preferences 
31/36
The future 
32/36
The future 
Next releases: Web 3.16 for September 2014 
WebKitGTK+ 2.6 (a bit behind schedule) 
· 
· 
33/36
The future 
· WebKitGTK 
WebRTC 
Accelerated-compositing support on Wayland 
Sandbox WebProcesses 
New API 
Initial WebCrypto spec support 
Database Process? 
· 
· 
· 
· 
User scripts and messaging 
API for loading arbitrary content-type 
· 
· 
· 
· 
34/36
The future 
· GNOME Web 
Important security and stability improvements 
Bring back the pop-up blocker 
More multi-WebProcess models 
- 
HTTPS blocking 
Mixed-content blocking (HTTPS vs. HTTP) 
- 
- 
- 
- 
- i.e: One process per security-domain 
35/36
Thank You! 
(q&a) 
twitter @elimitev 
www blogs.igalia.com/elima 
36/36

More Related Content

What's hot

Stop the internet, i want to go offline
Stop the internet, i want to go offlineStop the internet, i want to go offline
Stop the internet, i want to go offlineBoyan Mihaylov
 
Wayland support in WebKit2GTK+ (GUADEC 2014)
Wayland support in WebKit2GTK+ (GUADEC 2014)Wayland support in WebKit2GTK+ (GUADEC 2014)
Wayland support in WebKit2GTK+ (GUADEC 2014)Igalia
 
ASP.NET Internals
ASP.NET InternalsASP.NET Internals
ASP.NET InternalsGoSharp
 
Multimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/futureMultimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/futurephiln2
 
WebKit for Wayland (Web Engines Hackfest 2014)
WebKit for Wayland (Web Engines Hackfest 2014)WebKit for Wayland (Web Engines Hackfest 2014)
WebKit for Wayland (Web Engines Hackfest 2014)Igalia
 
OpenStack Ansible for private cloud at Kaidee
OpenStack Ansible for private cloud at KaideeOpenStack Ansible for private cloud at Kaidee
OpenStack Ansible for private cloud at KaideeJirayut Nimsaeng
 
WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms philn2
 
Blazing fast sites using Blaze, Hybrid CMS NYC
Blazing fast sites using Blaze, Hybrid CMS NYCBlazing fast sites using Blaze, Hybrid CMS NYC
Blazing fast sites using Blaze, Hybrid CMS NYCJesus Manuel Olivas
 

What's hot (10)

Stop the internet, i want to go offline
Stop the internet, i want to go offlineStop the internet, i want to go offline
Stop the internet, i want to go offline
 
Wayland support in WebKit2GTK+ (GUADEC 2014)
Wayland support in WebKit2GTK+ (GUADEC 2014)Wayland support in WebKit2GTK+ (GUADEC 2014)
Wayland support in WebKit2GTK+ (GUADEC 2014)
 
ASP.NET Internals
ASP.NET InternalsASP.NET Internals
ASP.NET Internals
 
Multimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/futureMultimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/future
 
Web view
Web viewWeb view
Web view
 
WebKit for Wayland (Web Engines Hackfest 2014)
WebKit for Wayland (Web Engines Hackfest 2014)WebKit for Wayland (Web Engines Hackfest 2014)
WebKit for Wayland (Web Engines Hackfest 2014)
 
OpenStack Ansible for private cloud at Kaidee
OpenStack Ansible for private cloud at KaideeOpenStack Ansible for private cloud at Kaidee
OpenStack Ansible for private cloud at Kaidee
 
WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms WebKit, HTML5 media and GStreamer on multiple platforms
WebKit, HTML5 media and GStreamer on multiple platforms
 
Blazing fast sites using Blaze, Hybrid CMS NYC
Blazing fast sites using Blaze, Hybrid CMS NYCBlazing fast sites using Blaze, Hybrid CMS NYC
Blazing fast sites using Blaze, Hybrid CMS NYC
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 

Similar to Web 3.12: A browser to make us proud (GUADEC 2014)

ChronicleMap non-blocking cache for Gerrit v3.3
ChronicleMap non-blocking cache for Gerrit v3.3ChronicleMap non-blocking cache for Gerrit v3.3
ChronicleMap non-blocking cache for Gerrit v3.3Luca Milanesio
 
State of the kit (FOSDEM 2013)
State of the kit (FOSDEM 2013)State of the kit (FOSDEM 2013)
State of the kit (FOSDEM 2013)Igalia
 
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitHybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitAriya Hidayat
 
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitHybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitAriya Hidayat
 
Introduction to QtWebKit
Introduction to QtWebKitIntroduction to QtWebKit
Introduction to QtWebKitAriya Hidayat
 
Igalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plansIgalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plansIgalia
 
Node.js on microsoft azure april 2014
Node.js on microsoft azure april 2014Node.js on microsoft azure april 2014
Node.js on microsoft azure april 2014Brian Benz
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitAriya Hidayat
 
Csphtp1 20
Csphtp1 20Csphtp1 20
Csphtp1 20HUST
 
The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)Igalia
 
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 RevolutionWebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutionjuanjosanchezpenas
 
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...Igalia
 
Git, YouTrack and TeamCity - DDDSydney 2011
Git, YouTrack and TeamCity - DDDSydney 2011Git, YouTrack and TeamCity - DDDSydney 2011
Git, YouTrack and TeamCity - DDDSydney 2011thinkddd
 
WebKitGTK+ status and roadmap to WebKit2 (FOSDEM 2012)
WebKitGTK+ status and roadmap to WebKit2 (FOSDEM 2012)WebKitGTK+ status and roadmap to WebKit2 (FOSDEM 2012)
WebKitGTK+ status and roadmap to WebKit2 (FOSDEM 2012)Igalia
 
WebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolutionWebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolutionjuanjosanchezpenas
 
How to use WebKitGtk+
How to use WebKitGtk+How to use WebKitGtk+
How to use WebKitGtk+Joone Hur
 
Midwest PHP Presentation - New MSQL Features
Midwest PHP Presentation - New MSQL FeaturesMidwest PHP Presentation - New MSQL Features
Midwest PHP Presentation - New MSQL FeaturesDave Stokes
 
What’s new in grails framework 5?
What’s new in grails framework 5?What’s new in grails framework 5?
What’s new in grails framework 5?Puneet Behl
 
Webhooks in FME Server, Cityworks & GIS Applications
Webhooks in FME Server, Cityworks & GIS ApplicationsWebhooks in FME Server, Cityworks & GIS Applications
Webhooks in FME Server, Cityworks & GIS ApplicationsSafe Software
 

Similar to Web 3.12: A browser to make us proud (GUADEC 2014) (20)

ChronicleMap non-blocking cache for Gerrit v3.3
ChronicleMap non-blocking cache for Gerrit v3.3ChronicleMap non-blocking cache for Gerrit v3.3
ChronicleMap non-blocking cache for Gerrit v3.3
 
State of the kit (FOSDEM 2013)
State of the kit (FOSDEM 2013)State of the kit (FOSDEM 2013)
State of the kit (FOSDEM 2013)
 
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitHybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
 
Hybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKitHybrid Apps (Native + Web) using WebKit
Hybrid Apps (Native + Web) using WebKit
 
Introduction to QtWebKit
Introduction to QtWebKitIntroduction to QtWebKit
Introduction to QtWebKit
 
Igalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plansIgalia and WebKit: Status update and plans
Igalia and WebKit: Status update and plans
 
Node.js on microsoft azure april 2014
Node.js on microsoft azure april 2014Node.js on microsoft azure april 2014
Node.js on microsoft azure april 2014
 
Hybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKitHybrid Apps (Native + Web) via QtWebKit
Hybrid Apps (Native + Web) via QtWebKit
 
Csphtp1 20
Csphtp1 20Csphtp1 20
Csphtp1 20
 
The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)The WebKit project (LinuxCon North America 2012)
The WebKit project (LinuxCon North America 2012)
 
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 RevolutionWebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
 
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolutio...
 
Git, YouTrack and TeamCity - DDDSydney 2011
Git, YouTrack and TeamCity - DDDSydney 2011Git, YouTrack and TeamCity - DDDSydney 2011
Git, YouTrack and TeamCity - DDDSydney 2011
 
WebKitGTK+ status and roadmap to WebKit2 (FOSDEM 2012)
WebKitGTK+ status and roadmap to WebKit2 (FOSDEM 2012)WebKitGTK+ status and roadmap to WebKit2 (FOSDEM 2012)
WebKitGTK+ status and roadmap to WebKit2 (FOSDEM 2012)
 
WebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolutionWebKit and Blink: open development powering the HTML5 revolution
WebKit and Blink: open development powering the HTML5 revolution
 
How to use WebKitGtk+
How to use WebKitGtk+How to use WebKitGtk+
How to use WebKitGtk+
 
Sprint 62
Sprint 62Sprint 62
Sprint 62
 
Midwest PHP Presentation - New MSQL Features
Midwest PHP Presentation - New MSQL FeaturesMidwest PHP Presentation - New MSQL Features
Midwest PHP Presentation - New MSQL Features
 
What’s new in grails framework 5?
What’s new in grails framework 5?What’s new in grails framework 5?
What’s new in grails framework 5?
 
Webhooks in FME Server, Cityworks & GIS Applications
Webhooks in FME Server, Cityworks & GIS ApplicationsWebhooks in FME Server, Cityworks & GIS Applications
Webhooks in FME Server, Cityworks & GIS Applications
 

More from Igalia

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEIgalia
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesIgalia
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceIgalia
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfIgalia
 
Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JITIgalia
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!Igalia
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerIgalia
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in MesaIgalia
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIgalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera LinuxIgalia
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVMIgalia
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsIgalia
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesIgalia
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSIgalia
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webIgalia
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersIgalia
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...Igalia
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on RaspberryIgalia
 

More from Igalia (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Building End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPEBuilding End-user Applications on Embedded Devices with WPE
Building End-user Applications on Embedded Devices with WPE
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Automated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded DevicesAutomated Testing for Web-based Systems on Embedded Devices
Automated Testing for Web-based Systems on Embedded Devices
 
Embedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to MaintenanceEmbedding WPE WebKit - from Bring-up to Maintenance
Embedding WPE WebKit - from Bring-up to Maintenance
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdf
 
Running JS via WASM faster with JIT
Running JS via WASM      faster with JITRunning JS via WASM      faster with JIT
Running JS via WASM faster with JIT
 
To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!To crash or not to crash: if you do, at least recover fast!
To crash or not to crash: if you do, at least recover fast!
 
Implementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamerImplementing a Vulkan Video Encoder From Mesa to GStreamer
Implementing a Vulkan Video Encoder From Mesa to GStreamer
 
8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa8 Years of Open Drivers, including the State of Vulkan in Mesa
8 Years of Open Drivers, including the State of Vulkan in Mesa
 
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por IgaliaIntroducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
Introducción a Mesa. Caso específico dos dispositivos Raspberry Pi por Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
 
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUsturnip: Update on Open Source Vulkan Driver for Adreno GPUs
turnip: Update on Open Source Vulkan Driver for Adreno GPUs
 
Graphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devicesGraphics stack updates for Raspberry Pi devices
Graphics stack updates for Raspberry Pi devices
 
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOSDelegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
Delegated Compositing - Utilizing Wayland Protocols for Chromium on ChromeOS
 
MessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the webMessageFormat: The future of i18n on the web
MessageFormat: The future of i18n on the web
 
Replacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shadersReplacing the geometry pipeline with mesh shaders
Replacing the geometry pipeline with mesh shaders
 
I'm not an AMD expert, but...
I'm not an AMD expert, but...I'm not an AMD expert, but...
I'm not an AMD expert, but...
 
Status of Vulkan on Raspberry
Status of Vulkan on RaspberryStatus of Vulkan on Raspberry
Status of Vulkan on Raspberry
 

Recently uploaded

Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 

Recently uploaded (20)

Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 

Web 3.12: A browser to make us proud (GUADEC 2014)

  • 1.
  • 2. Web 3.12 A browser to make us proud Eduardo Lima Igalia Strasbourg, July 27th, 2014
  • 4. scope · Web 3.12: released March 2014 · (Web 3.10 released September 2013) · WebKitGTK+ 2.4.0: also released March 2014 4/36
  • 5. scope focus on last stable release cycle 5/36
  • 7. WebKitGTK+ · What happened? Multiple Web processes DOM touch events support Plugins cache New API WebKit1 API deprecation many bugfixes, as usual · · · · · · 7/36
  • 8. Multiple Web processes by Adrian Perez 8/36
  • 9. Multiple Web processes Essentially, one process per tab plus other auxiliary processes Goals Enabled by default in Web, possible to opt-out · · · Page crashes don't crash the browser Put vulnerable data into a separate address space · · · 9/36
  • 10. Multiple Web processes before 2.4 10/36
  • 11. Multiple Web processes after 2.4 11/36
  • 12. Multiple Web processes in practice: screenshot by Alex Diavatis 12/36
  • 13. Multiple Web processes Opt-in/out (GSettings) gsettings set org.gnome.Epiphany process-model one-secondary-process-per-web-view // or 'shared-secondary-process' 13/36
  • 14. Multiple Web processes Opt-in/out (API) int main(int argc, char **argv) { webkit_web_context_set_process_model ( webkit_web_context_get_default (), WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES); /* The rest of the application code, unmodified */ } 14/36
  • 15. Multiple Web processes by Adrian Perez 15/36
  • 16. Multiple Web processes · Downside: More memory hungry Added complexity on Web extensions setup Added complexity on process management (spawning/killing) - - - 16/36
  • 17. Multiple Web processes It is possible for Web views to share a Web process (new API) GtkWidget *view, *related_view, *unrelated_view; void create_views () { /* Create two views which share a Web Process */ view = webkit_web_view_new (); related_view = webkit_web_view_new_with_related_view (WEBKIT_WEB_VIEW (view)); /* This view will spawn a new Web Process */ unrelated_view = webkit_web_view_new (); } 17/36
  • 18. Multiple Web processes · Initializing Web extensions now (new API) · #define WEB_EXTENSIONS_DIRECTORY /* ... */ int main (int argc, char **argv) { WebKitWebContext *context = webkit_web_context_get_default (); GVariant *data = get_data_for_web_extensions (); webkit_web_context_set_web_extensions_directory ( context, WEB_EXTENSIONS_DIRECTORY); webkit_web_context_set_web_extensions_initialization_user_data ( context, data); GtkWidget *view = webkit_web_view_new (); /* ... */ } 18/36
  • 19. Multiple Web processes · ... and in the extension · void webkit_web_extension_initialize_with_user_data ( WebKitWebExtension *extension, GVariant *user_data) { /* Initialize the extension, using “user_data” */ } 19/36
  • 20. Multiple Web processes · More complexity: Different data per instance of a Web extension New signal ::initialize-web-extensions (I promise next is the last slide with code) · · 20/36
  • 21. #define WEB_EXTENSIONS_DIRECTORY /* ... */ static void initialize_web_extensions (WebKitWebContext *context, gpointer user_data) { /* Web Extensions get a different ID for each Web Process */ static guint32 unique_id = 0; webkit_web_context_set_web_extensions_directory ( context, WEB_EXTENSIONS_DIRECTORY); webkit_web_context_set_web_extensions_initialization_user_data ( context, g_variant_new_uint32 (unique_id++)); } int main (int argc, char **argv) { g_signal_connect (webkit_web_context_get_default (), "initialize-web-extensions", G_CALLBACK (initialize_web_extensions), NULL); GtkWidget *view = webkit_web_view_new (); /* ... */ } 21/36
  • 22. DOM touch events support VVVVViiiiidddddeeeeeooooo fffffooooorrrrrmmmmmaaaaattttt ooooorrrrr MMMMMIIIIIMMMMMEEEEE tttttyyyyypppppeeeee iiiiisssss nnnnnooooottttt sssssuuuuuppppppppppooooorrrrrttttteeeeeddddd..... 00::0000 screencast by Carlos Garnacho · 22/36
  • 23. Plugins cache Plugins are synchronously scanned on first use, can't be avoided but now that's done once, and cached for later · · 23/36
  • 24. WebKit1 deprecation WebKit1 completely removed from trunk Have you already ported your app? 2.6 will no longer ship WebKit1 API · · · 24/36
  • 26. Overview turned into an HTML page Removed complex GTK+ widgets, along with 1000s of lines of code Overview now a themable and animatable HTML document · · 26/36
  • 27. Overview turned into an HTML page VVVVViiiiidddddeeeeeooooo fffffooooorrrrrmmmmmaaaaattttt ooooorrrrr MMMMMIIIIIMMMMMEEEEE tttttyyyyypppppeeeee iiiiisssss nnnnnooooottttt sssssuuuuuppppppppppooooorrrrrttttteeeeeddddd..... 00::0000 screencast by Claudio Saavedra 27/36
  • 28. A new location/title headerbar VVVVViiiiidddddeeeeeooooo fffffooooorrrrrmmmmmaaaaattttt ooooorrrrr MMMMMIIIIIMMMMMEEEEE tttttyyyyypppppeeeee iiiiisssss nnnnnooooottttt sssssuuuuuppppppppppooooorrrrrttttteeeeeddddd..... 00::0000 screencast by Claudio Saavedra 28/36
  • 29. Most dialogs cleaned up and revamped screenshot by Claudio Saavedra 29/36
  • 30. New designs for incognito mode screenshot by Claudio Saavedra 30/36
  • 31. Other improvements · Configure search engine from Preferences 31/36
  • 33. The future Next releases: Web 3.16 for September 2014 WebKitGTK+ 2.6 (a bit behind schedule) · · 33/36
  • 34. The future · WebKitGTK WebRTC Accelerated-compositing support on Wayland Sandbox WebProcesses New API Initial WebCrypto spec support Database Process? · · · · User scripts and messaging API for loading arbitrary content-type · · · · 34/36
  • 35. The future · GNOME Web Important security and stability improvements Bring back the pop-up blocker More multi-WebProcess models - HTTPS blocking Mixed-content blocking (HTTPS vs. HTTP) - - - - - i.e: One process per security-domain 35/36
  • 36. Thank You! (q&a) twitter @elimitev www blogs.igalia.com/elima 36/36