SlideShare a Scribd company logo
Igalia and WebKit:
Status update and plans
WebKit Contributors Meeting 2023
Cupertino (CA), 24-25 October 2023
Mario Sánchez Prada
mario@igalia.com
1
About me
CS Engineer, partner of Igalia
Involvement in some Open Source communities
e.g. GNOME, WebKit (WebKitGTK, a11y), Chromium
Other work done in the past:
Linux-based OS’s (i.e. Endless OS, Litl OS)
Maemo (Hildon Application Manager)
Samsung SmartTV platform
Currently coordinating Igalia's WebKit team
2
3
About Igalia
Specialized Open Source consultancy, founded in 2001
Fully remote, headquartered in A Coruña, Galicia (Spain)
Worker-owned, employee-run, flat structure (140+ igalians)
Top contributors to the main Web Rendering Engines:
WebKit, Chromium, Gecko and Servo
Active contributor to other areas and OSS projects
V8, SpiderMonkey, JSC, LLVM, Node.js, GStreamer, Mesa, Linux Kernel...
Members of several working groups:
W3C, WHATWG, WPT, TC39, OpenJS, Test262, Khronos...
https://www.igalia.com
4
Igalia and WebKit
5
Igalia and WebKit
Maintainers of the two upstream Linux-based WebKit ports
WebKitGTK: aimed at desktop (i.e. go-to solution for GTK applications)
WPE: aimed at embedded (i.e. low resources footprint, extra flexibility...)
Implementation of Web standards and JavaScript features
Port-independent contributions to WebCore and JavaScriptCore
Other:
e.g. bugfixing, security, performance improvements, QA, 32-bit support...
6
Examples of WebKit on embedded
Smart TVs, set-top-boxes and video game consoles
Smart home appliances and home automation devices
HiFi audio/sound systems & music streaming
In-vehicle and in-flight infotainment systems
Navigational and GPS-based instrumentation
Medical devices (e.g. patient health monitors)
Digital signage
QA & testing
7
Who are our users?
Port users (e.g. native apps developers, integrators...)
Platform providers (e.g. Web-based frameworks)
Web developers (e.g. Web applications)
End users!
8
Strategic goals
Web platform compatibility, interoperability
Performance and efficiency in small embedded devices
Quality assurance and Security
Better development tools and documentation
More efficient collaboration:
e.g. ports alignment (fewer different architectures, less port-specific code), better communication
increased collaboration among different teams...
9
Recent work
10
WebKit contributions 2023
Still the #2 committer in 2023 so far with 10.9% of all commits
11
WebKit contributions 2023
Zooming in: ~50% of all the non-Apple commits coming from Igalia
12
Main highlights
Web platform contributions
Graphics & Multimedia
JavaScriptCore
New WPE API
WebKit on Android
Quality assurance
Security
Development tools
13
Web platform contributions
CSS properties: content-visibility
content-visibility: auto particularly useful on large pages
HTML Fetch Priority attributes
Optimize resource loading
Popover API
Easy creation of native pop-over elements
Secure Curves in the Web Cryptography API
Algorithms Ed25519 and X25519 in WebKitGTK
Algorithm X25519 in the Mac port
14
Graphics
WebKitGTK and WPE graphics rendering architecture
Finished ANGLE integration and added WebGL2 support
Buffer sharing architecture (i.e. DMAbuf in linux)
Removed dependency on the internal Wayland server
Synchronization using displayLink architecture
2D rendering engine replacement for cairo
Experimental GPUProcess support (WIP).
New SVG engine (LBSE: Layer-Based SVG Engine)
SVG layers support as a 1st-class citizen in the engine
Enables HW acceleration for SVG rendering
15
Multimedia
DMABuf-based sink for HW-accelerated video
WebCodecs audio encoder/decoder from IDL to platform layers
Improvements on WebCodecs video encoder/decoder
GStreamer-based WebRTC backends
Improved video loop behaviour
Improved power comsumption (e.g. auto-play, muted videos)
General maintenance (e.g. MSE, EME...)
16
JavaScriptCore
ARMv7 improvements (32-bit)
Improved code generation for stack load/save in Air on ARMv7
Reduces generated code size for WASM by ~30%
Worked on Concurrent JIT
Worked on WASM BBQJIT (99% done)
Worked on the B3 low level optimizer
Needed to enable OMG for WASM and FTL for JavaScript
WASM GC
Contribute initial implementation (WIP)
17
New WPE API
Several problems with current model
Started working in a new proposal that will be part of WebKit
We started submitting patches to upstream the changes (WIP)
18
WebKit on Android
Goal: WebKit-based alternative to Android WebView
No new port needed, just the WPE's public API
Multiple architectures: arm64, armv7, x86-64, x86
Native integration with Android
HW acceleration and WebGL support
19
Quality Assurance
Increased gardening effort on WebKitGTK and WPE
Increased amount of tests running on WebKitGTK and WPE:
WebKitGTK: from ~62.5K to 69.5K tests (+11.2%)
WPE: from ~56K to 62.5K tests (+11.6%)
Reduced amount of skipped tests on WebKitGTK and WPE:
WebKitGTK: from ~14K tests to.7K tests (-10.2%)
WPE: from ~21.2K to 20K tests (-6%)
20
Quality Assurance
21
Security
Major, minor and unstable releases:
Feature (major) releases every 6-months (march, september)
Minor releases (i.e. bugfixes) and development releases
Aligned releases for WebKitGTK and WPE:
&
WebKit Security Advisories (WSA):
&
https://webkitgtk.org/releases https://wpewebkit.org/release
https://webkitgtk.org/security.html https://wpewebkit.org/security
22
Tooling and documentation
Problem: complex develpment environment:
Dependency on different libraries (and not all versions supported)
JHBuild not great for reproduceability; flatpak not great for development
Solution: container-based SDK (OCI compatible)
Reproduceable and share-able environment, it includes all the usual tools
Cover all the development workflows (including hacking on dependencies)
23
Next Steps
24
Web Platform contributions
Add support for
New API to manage browser navigation actions and examine history
Add support for
Attribute of the NavigateEvent interface
True if the UA performed a visual transition before a navigation event
Navigation API
hasUAVisualTransition
25
Graphics
WebKitGTK and WPE graphics rendering architecture
Completely integrate displayLink architecture, simplify and refactor
Extend the use of the DMAbuf architecture (API change in WPE)
2D rendering engine replacement for cairo
Integrate GPUProcess support.
New SVG engine (LBSE):
Finish upstreaming the remaining patches
Ensure good test coverage and no performance regressions
Turn on LBSE by default and remove the legacy SVG engine
26
Multimedia
Implementation of the GStreamer WebRTC backend
Improve WebCodecs integration with WebGL and WebAudio
General maintenance (e.g. MSE, EME...)
27
JavaScriptCore
Finish work on ARMv7 improvements:
Concurrent JIT
WASM BBQJIT (99% done)
Enable OMG for WASM and FTL for JavaScript
Need to finish implementing B3 support first
Investigate and optimize heap/JIT memory usage in 32-bit
WASM GC:
Land patches to provide full support and ship the feature
28
New WPE API
Finish initial version of the new API & start upstreaming ASAP
Review all API docs and write guides and tutorials
Deprecate the old API (won't be removed in the short term)
⚠️No specific release date (i.e. best-effort)
29
WebKit on Android
Goal: first usable version of WPE Android
Immediate steps:
Update to the latest stable version of WPE
WebDriver support + Web Platform Test suite
Implement missing functionality
Conformance testing
Other: HTTP/2 support, WebInspector...
30
Quality Assurance
Improve QA processes for WebKitGTK and WPE
Use the new SDK in the bots simplifying the QA procedure
Keep using flatpak for releasing nightlies (i.e. Epiphany Tech Preview)
Prepare GTK bots to use GTK4 by default
31
Tooling and documentation
Release initial version of the new SDK:
Finish the remaining features & tests in the SDK
Upload proper documentation and tutorials
32
Questions?
33
Thanks!
34
35

More Related Content

Similar to Igalia and WebKit: Status update and plans

Multimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/futureMultimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/future
philn2
 
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Igalia
 
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia
 
Embedding Chromium into AGL demo platform with WAM
Embedding Chromium into AGL demo platform with WAMEmbedding Chromium into AGL demo platform with WAM
Embedding Chromium into AGL demo platform with WAM
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 revolution
juanjosanchezpenas
 
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
juanjosanchezpenas
 
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
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
Igalia
 
WebRTC in WPE/GTK Ports: Current status and challenges
WebRTC in WPE/GTK Ports: Current status and challengesWebRTC in WPE/GTK Ports: Current status and challenges
WebRTC in WPE/GTK Ports: Current status and challenges
Igalia
 
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Nokia
 
CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018
CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018
CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018
Lucina Stricko, CSPO
 
Flux is incubating + the road ahead
Flux is incubating + the road aheadFlux is incubating + the road ahead
Flux is incubating + the road ahead
LibbySchulze
 
WebKit and GStreamer
WebKit and GStreamerWebKit and GStreamer
WebKit and GStreamer
calvaris
 
WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)
Igalia
 
WebKit Contributors Meeting 2022
WebKit Contributors Meeting 2022WebKit Contributors Meeting 2022
WebKit Contributors Meeting 2022
Igalia
 
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
 
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
Igalia
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your way
Johannes Brännström
 
GCP Meetup #3 - Approaches to Cloud Native Architectures
GCP Meetup #3 - Approaches to Cloud Native ArchitecturesGCP Meetup #3 - Approaches to Cloud Native Architectures
GCP Meetup #3 - Approaches to Cloud Native Architectures
nine
 

Similar to Igalia and WebKit: Status update and plans (20)

Multimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/futureMultimedia in WebKitGtk+, past/present/future
Multimedia in WebKitGtk+, past/present/future
 
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
Browsers and Web Runtimes for Automotive: Alternatives, Challenges, and Curre...
 
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
Igalia Focus and Goals 2020 (2019 WebKit Contributors Meeting)
 
Embedding Chromium into AGL demo platform with WAM
Embedding Chromium into AGL demo platform with WAMEmbedding Chromium into AGL demo platform with WAM
Embedding Chromium into AGL demo platform with WAM
 
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
 
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...
 
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
A Browser for the Automotive: Introduction to WebKit for Wayland (Automotive ...
 
WebRTC in WPE/GTK Ports: Current status and challenges
WebRTC in WPE/GTK Ports: Current status and challengesWebRTC in WPE/GTK Ports: Current status and challenges
WebRTC in WPE/GTK Ports: Current status and challenges
 
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009Next Generation Hybrid Applications with Qt - presentation for SEE 2009
Next Generation Hybrid Applications with Qt - presentation for SEE 2009
 
CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018
CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018
CNCF: Cross-cloud CI Dashboard v1.0.0 Release 01-26-2018
 
Flux is incubating + the road ahead
Flux is incubating + the road aheadFlux is incubating + the road ahead
Flux is incubating + the road ahead
 
WebKit and GStreamer
WebKit and GStreamerWebKit and GStreamer
WebKit and GStreamer
 
WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)WebKit and GStreamer (GStreamer Conference 2013)
WebKit and GStreamer (GStreamer Conference 2013)
 
WebKit Contributors Meeting 2022
WebKit Contributors Meeting 2022WebKit Contributors Meeting 2022
WebKit Contributors Meeting 2022
 
Wayland support in WebKit2GTK+ (GUADEC 2014)
Wayland support in WebKit2GTK+ (GUADEC 2014)Wayland support in WebKit2GTK+ (GUADEC 2014)
Wayland support in WebKit2GTK+ (GUADEC 2014)
 
Transforming the web into a real application platform
Transforming the web into a real application platformTransforming the web into a real application platform
Transforming the web into a real application platform
 
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
HTML5 on the AGL demo platform with Chromium and WAM (AGL AMM March 2021)
 
Red Hat and kubernetes: awesome stuff coming your way
Red Hat and kubernetes:  awesome stuff coming your wayRed Hat and kubernetes:  awesome stuff coming your way
Red Hat and kubernetes: awesome stuff coming your way
 
GCP Meetup #3 - Approaches to Cloud Native Architectures
GCP Meetup #3 - Approaches to Cloud Native ArchitecturesGCP Meetup #3 - Approaches to Cloud Native Architectures
GCP Meetup #3 - Approaches to Cloud Native Architectures
 

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 WPE
Igalia
 
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 Devices
Igalia
 
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
Igalia
 
Optimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdfOptimizing Scheduler for Linux Gaming.pdf
Optimizing Scheduler for Linux Gaming.pdf
Igalia
 
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
Igalia
 
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 GStreamer
Igalia
 
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
Igalia
 
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
Igalia
 
2023 in Chimera Linux
2023 in Chimera                    Linux2023 in Chimera                    Linux
2023 in Chimera Linux
Igalia
 
Building a Linux distro with LLVM
Building a Linux distro        with LLVMBuilding a Linux distro        with LLVM
Building a Linux distro with LLVM
Igalia
 
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
Igalia
 
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
Igalia
 
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
Igalia
 
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
Igalia
 
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
Igalia
 
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 Raspberry
Igalia
 

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

Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
nkrafacyberclub
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Aggregage
 

Recently uploaded (20)

Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptxSecstrike : Reverse Engineering & Pwnable tools for CTF.pptx
Secstrike : Reverse Engineering & Pwnable tools for CTF.pptx
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
Generative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionGenerative AI Deep Dive: Advancing from Proof of Concept to Production
Generative AI Deep Dive: Advancing from Proof of Concept to Production
 

Igalia and WebKit: Status update and plans

  • 1. Igalia and WebKit: Status update and plans WebKit Contributors Meeting 2023 Cupertino (CA), 24-25 October 2023 Mario Sánchez Prada mario@igalia.com 1
  • 2. About me CS Engineer, partner of Igalia Involvement in some Open Source communities e.g. GNOME, WebKit (WebKitGTK, a11y), Chromium Other work done in the past: Linux-based OS’s (i.e. Endless OS, Litl OS) Maemo (Hildon Application Manager) Samsung SmartTV platform Currently coordinating Igalia's WebKit team 2
  • 3. 3
  • 4. About Igalia Specialized Open Source consultancy, founded in 2001 Fully remote, headquartered in A Coruña, Galicia (Spain) Worker-owned, employee-run, flat structure (140+ igalians) Top contributors to the main Web Rendering Engines: WebKit, Chromium, Gecko and Servo Active contributor to other areas and OSS projects V8, SpiderMonkey, JSC, LLVM, Node.js, GStreamer, Mesa, Linux Kernel... Members of several working groups: W3C, WHATWG, WPT, TC39, OpenJS, Test262, Khronos... https://www.igalia.com 4
  • 6. Igalia and WebKit Maintainers of the two upstream Linux-based WebKit ports WebKitGTK: aimed at desktop (i.e. go-to solution for GTK applications) WPE: aimed at embedded (i.e. low resources footprint, extra flexibility...) Implementation of Web standards and JavaScript features Port-independent contributions to WebCore and JavaScriptCore Other: e.g. bugfixing, security, performance improvements, QA, 32-bit support... 6
  • 7. Examples of WebKit on embedded Smart TVs, set-top-boxes and video game consoles Smart home appliances and home automation devices HiFi audio/sound systems & music streaming In-vehicle and in-flight infotainment systems Navigational and GPS-based instrumentation Medical devices (e.g. patient health monitors) Digital signage QA & testing 7
  • 8. Who are our users? Port users (e.g. native apps developers, integrators...) Platform providers (e.g. Web-based frameworks) Web developers (e.g. Web applications) End users! 8
  • 9. Strategic goals Web platform compatibility, interoperability Performance and efficiency in small embedded devices Quality assurance and Security Better development tools and documentation More efficient collaboration: e.g. ports alignment (fewer different architectures, less port-specific code), better communication increased collaboration among different teams... 9
  • 11. WebKit contributions 2023 Still the #2 committer in 2023 so far with 10.9% of all commits 11
  • 12. WebKit contributions 2023 Zooming in: ~50% of all the non-Apple commits coming from Igalia 12
  • 13. Main highlights Web platform contributions Graphics & Multimedia JavaScriptCore New WPE API WebKit on Android Quality assurance Security Development tools 13
  • 14. Web platform contributions CSS properties: content-visibility content-visibility: auto particularly useful on large pages HTML Fetch Priority attributes Optimize resource loading Popover API Easy creation of native pop-over elements Secure Curves in the Web Cryptography API Algorithms Ed25519 and X25519 in WebKitGTK Algorithm X25519 in the Mac port 14
  • 15. Graphics WebKitGTK and WPE graphics rendering architecture Finished ANGLE integration and added WebGL2 support Buffer sharing architecture (i.e. DMAbuf in linux) Removed dependency on the internal Wayland server Synchronization using displayLink architecture 2D rendering engine replacement for cairo Experimental GPUProcess support (WIP). New SVG engine (LBSE: Layer-Based SVG Engine) SVG layers support as a 1st-class citizen in the engine Enables HW acceleration for SVG rendering 15
  • 16. Multimedia DMABuf-based sink for HW-accelerated video WebCodecs audio encoder/decoder from IDL to platform layers Improvements on WebCodecs video encoder/decoder GStreamer-based WebRTC backends Improved video loop behaviour Improved power comsumption (e.g. auto-play, muted videos) General maintenance (e.g. MSE, EME...) 16
  • 17. JavaScriptCore ARMv7 improvements (32-bit) Improved code generation for stack load/save in Air on ARMv7 Reduces generated code size for WASM by ~30% Worked on Concurrent JIT Worked on WASM BBQJIT (99% done) Worked on the B3 low level optimizer Needed to enable OMG for WASM and FTL for JavaScript WASM GC Contribute initial implementation (WIP) 17
  • 18. New WPE API Several problems with current model Started working in a new proposal that will be part of WebKit We started submitting patches to upstream the changes (WIP) 18
  • 19. WebKit on Android Goal: WebKit-based alternative to Android WebView No new port needed, just the WPE's public API Multiple architectures: arm64, armv7, x86-64, x86 Native integration with Android HW acceleration and WebGL support 19
  • 20. Quality Assurance Increased gardening effort on WebKitGTK and WPE Increased amount of tests running on WebKitGTK and WPE: WebKitGTK: from ~62.5K to 69.5K tests (+11.2%) WPE: from ~56K to 62.5K tests (+11.6%) Reduced amount of skipped tests on WebKitGTK and WPE: WebKitGTK: from ~14K tests to.7K tests (-10.2%) WPE: from ~21.2K to 20K tests (-6%) 20
  • 22. Security Major, minor and unstable releases: Feature (major) releases every 6-months (march, september) Minor releases (i.e. bugfixes) and development releases Aligned releases for WebKitGTK and WPE: & WebKit Security Advisories (WSA): & https://webkitgtk.org/releases https://wpewebkit.org/release https://webkitgtk.org/security.html https://wpewebkit.org/security 22
  • 23. Tooling and documentation Problem: complex develpment environment: Dependency on different libraries (and not all versions supported) JHBuild not great for reproduceability; flatpak not great for development Solution: container-based SDK (OCI compatible) Reproduceable and share-able environment, it includes all the usual tools Cover all the development workflows (including hacking on dependencies) 23
  • 25. Web Platform contributions Add support for New API to manage browser navigation actions and examine history Add support for Attribute of the NavigateEvent interface True if the UA performed a visual transition before a navigation event Navigation API hasUAVisualTransition 25
  • 26. Graphics WebKitGTK and WPE graphics rendering architecture Completely integrate displayLink architecture, simplify and refactor Extend the use of the DMAbuf architecture (API change in WPE) 2D rendering engine replacement for cairo Integrate GPUProcess support. New SVG engine (LBSE): Finish upstreaming the remaining patches Ensure good test coverage and no performance regressions Turn on LBSE by default and remove the legacy SVG engine 26
  • 27. Multimedia Implementation of the GStreamer WebRTC backend Improve WebCodecs integration with WebGL and WebAudio General maintenance (e.g. MSE, EME...) 27
  • 28. JavaScriptCore Finish work on ARMv7 improvements: Concurrent JIT WASM BBQJIT (99% done) Enable OMG for WASM and FTL for JavaScript Need to finish implementing B3 support first Investigate and optimize heap/JIT memory usage in 32-bit WASM GC: Land patches to provide full support and ship the feature 28
  • 29. New WPE API Finish initial version of the new API & start upstreaming ASAP Review all API docs and write guides and tutorials Deprecate the old API (won't be removed in the short term) ⚠️No specific release date (i.e. best-effort) 29
  • 30. WebKit on Android Goal: first usable version of WPE Android Immediate steps: Update to the latest stable version of WPE WebDriver support + Web Platform Test suite Implement missing functionality Conformance testing Other: HTTP/2 support, WebInspector... 30
  • 31. Quality Assurance Improve QA processes for WebKitGTK and WPE Use the new SDK in the bots simplifying the QA procedure Keep using flatpak for releasing nightlies (i.e. Epiphany Tech Preview) Prepare GTK bots to use GTK4 by default 31
  • 32. Tooling and documentation Release initial version of the new SDK: Finish the remaining features & tests in the SDK Upload proper documentation and tutorials 32
  • 35. 35