[ Home | Weather | Wiki | RSS | HN | xkcd ] [ Search | Settings | About ]
[ Related articles | Random article | Open in Wikipedia ]
WebKit is a browser engine developed by Apple and primarily used in its Safari web browser, as well as all web browsers on iOS and iPadOS. WebKit is also used by the PlayStation consoles beginning from the PS3, the Tizen mobile operating systems, the Amazon Kindle e-book reader, Nintendo consoles beginning from the 3DS Internet Browser, and the discontinued BlackBerry Browser. WebKit's C++ application programming interface (API) provides a set of classes to display Web content in windows, and implements browser features such as following links when clicked by the user, managing a back-forward list, and managing a history of pages recently visited.
WebKit started as a fork of the KHTML and KJS libraries from KDE, and has since been further developed by KDE contributors, Apple, Google, Nokia, Bitstream, BlackBerry, Sony, Igalia, and others. WebKit supports macOS, Windows, Linux, and various other Unix-like operating systems. On April 3, 2013, Google announced that it had forked WebCore, a component of WebKit, to be used in future versions of Google Chrome and the Opera web browser, under the name Blink.
Table of contents
Use Components See also
According to Apple, some changes which called for different development tactics involved macOS-specific features that are absent in KDE's KHTML, such as Objective-C, KWQ (pronounced "quack") an implementation of the subset of Qt required to make KHTML work on macOS written in Objective C++, and macOS calls.
The exchange of code between WebCore and KHTML became increasingly difficult as the code base diverged because both projects had different approaches in coding and code sharing. At one point KHTML developers said they were unlikely to accept Apple's changes and claimed the relationship between the two groups was a "bitter failure". They claimed Apple submitted their changes in large patches containing multiple changes with inadequate documentation, often in relation to future additions to the codebase. Thus, these patches were difficult for the KDE developers to integrate back into KHTML. Also, Apple had demanded that developers sign non-disclosure agreements before looking at Apple's source code and even then they were unable to access Apple's bug database.
During the publicized "divorce" period, KDE developer Kurt Pfeifle (pipitas) posted an article claiming KHTML developers had managed to backport many (but not all) Safari improvements from WebCore to KHTML, and they always appreciated the improvements coming from Apple and still do so. The article also noted Apple had begun to contact KHTML developers about discussing how to improve the mutual relationship and ways of future cooperation. In fact, the KDE project was able to incorporate some of these changes to improve KHTML's rendering speed and add features, including compliance with the Acid2 rendering test.
Following the appearance of a story of the fork in the news, Apple released the source code of the WebKit fork in a public revision-control repository.
The WebKit team had also reversed many Apple-specific changes in the original WebKit code base and implemented platform-specific abstraction layers to make committing the core rendering code to other platforms significantly easier.
In July 2007, Ars Technica reported that the KDE team would move from KHTML to WebKit. Instead, after several years of integration, KDE Development Platform version 4.5.0 was released in August 2010 with support for both WebKit and KHTML, and development of KHTML continues.
In mid-December 2005, support for Scalable Vector Graphics (SVG) was merged into the standard build.
Beginning in early 2007, the development team began to implement Cascading Style Sheets (CSS) extensions, including animation, transitions and both 2D and 3D transforms; such extensions were released as working drafts to the World Wide Web Consortium (W3C) in 2009 for standardization.
In November 2007, the project announced that it had added support for media features of the HTML5 draft specification, allowing embedded video to be natively rendered and script-controlled in WebKit.
The WebKit2 targets were set to Linux, macOS, Windows, GTK, and MeeGo-Harmattan. Safari for macOS switched to the new API with version 5.1. Safari for iOS switched to WebKit2 with iOS 8.
The original WebKit API has been renamed WebKitLegacy API. WebKit2 API has been renamed just plain WebKit API.
The week after Hyatt announced WebKit's open-sourcing, Nokia announced that it had ported WebKit to the Symbian operating system and was developing a browser based on WebKit for mobile phones running S60. Named Web Browser for S60, it was used on Nokia, Samsung, LG, and other Symbian S60 mobile phones. Apple has also ported WebKit to iOS to run on the iPhone, iPod Touch, and iPad, where it is used to render content in the device's web browser and e-mail software. The Android mobile phone platform used WebKit (and later versions its Blink fork) as the basis of its web browser and the Palm Pre, announced January 2009, has an interface based on WebKit. The Amazon Kindle 3 includes an experimental WebKit based browser.
In June 2007, Apple announced that WebKit had been ported to Microsoft Windows as part of Safari. Although Safari for Windows was silently discontinued by the company, WebKit's ports to Microsoft's operating system are still actively maintained. The Windows port uses Apple's proprietary libraries to function and is used for iCloud and iTunes for Windows, whereas the "WinCairo" port is a fully open-source and redistributable port.
WebKit has also been ported to several toolkits that support multiple platforms, such as the GTK toolkit for Linux, under the name WebKitGTK which is used by Eolie, GNOME Web, Adobe Integrated Runtime, Enlightenment Foundation Libraries (EFL), and the Clutter toolkit. Qt Software included a WebKit port in the Qt 4.4 release as a module called QtWebKit (since superseded by Qt WebEngine, which uses Blink instead). The Iris Browser on Qt also used WebKit. The Enlightenment Foundation Libraries (EFL) port - EWebKit - was developed (by Samsung and ProFusion) focusing the embedded and mobile systems, for use as stand alone browser, widgets-gadgets, rich text viewer and composer. The Clutter port is developed by Collabora and sponsored by Robert Bosch GmbH.
There was also a project synchronized with WebKit (sponsored by Pleyo) called Origyn Web Browser, which provided a meta-port to an abstract platform with the aim of making porting to embedded or lightweight systems quicker and easier. This port is used for embedded devices such as set-top boxes, PMP and it has been ported into AmigaOS, AROS and MorphOS. MorphOS version 1.7 is the first version of Origyn Web Browser (OWB) supporting HTML5 media tags.
Web Platform for Embedded
Web Platform for Embedded (WPE) is a WebKit port designed for embedded applications; it further improves the architecture by splitting the basic rendering functional blocks into a general-purpose routines library (libwpe), platform backends, and engine itself (called WPE WebKit). The GTK port, albeit self-contained, can be built to use these base libraries instead of its internal platform support implementation. The WPE port is currently maintained by Igalia.
Forking by Google
WebKit passes the Acid2 and Acid3 tests, with pixel-perfect rendering and no timing or smoothness issues on reference hardware.
An optimizing just-in-time (JIT) compiler named FTL was announced on May 13, 2014. It uses LLVM to generate optimized machine code. "FTL" stands for "Fourth-Tier-LLVM", and unofficially for faster-than-light, alluding to its speed. As of February 15, 2016, the backend of FTL JIT is replaced by "Bare Bones Backend" (or B3 for short).
Wikipedia is available under the Creative Commons Attribution-ShareAlike License 3.0.
These pages best viewed with Netscape Navigator 1.1 or later.