Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Igalia and WebKit: Status update and plans (2023)

Igalia and WebKit: Status update and plans (2023)

(c) WebKit Contributors Meeting 2023
October 2023, 24 to 25
Cupertino - California (USA)
https://webkit.org/meeting

Mario Sánchez Prada

October 26, 2023
Tweet

More Decks by Mario Sánchez Prada

Other Decks in Technology

Transcript

  1. Igalia and WebKit: Status update and plans WebKit Contributors Meeting

    2023 Cupertino (CA), 24-25 October 2023 Mario Sánchez Prada [email protected] 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
  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
  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
  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
  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
  9. Main highlights Web platform contributions Graphics & Multimedia JavaScriptCore New

    WPE API WebKit on Android Quality assurance Security Development tools 13
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. Multimedia Implementation of the GStreamer WebRTC backend Improve WebCodecs integration

    with WebGL and WebAudio General maintenance (e.g. MSE, EME...) 27
  22. 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
  23. 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
  24. 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
  25. 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
  26. Tooling and documentation Release initial version of the new SDK:

    Finish the remaining features & tests in the SDK Upload proper documentation and tutorials 32
  27. 35