WebKit: Difference between revisions
imported>Kri Undid revision 1290383390 by Kri (talk) |
imported>MonstoBusta2000 m Actually fixed the incorrect live link |
||
| (One intermediate revision by one other user not shown) | |||
| Line 1: | Line 1: | ||
{{Short description|Open source browser engine}} | {{Short description|Open source browser engine}} | ||
{{Use mdy dates|date= | {{Use mdy dates|date=December 2025}} | ||
{{Use American English|date=December 2025}} | |||
{{Infobox software | {{Infobox software | ||
| name = WebKit | | name = WebKit | ||
| Line 7: | Line 9: | ||
| screenshot = | | screenshot = | ||
| caption = logo used since 2015 | | caption = logo used since 2015 | ||
| author = [[Apple Inc.]]<ref name="macport">{{cite | | author = [[Apple Inc.]]<ref name="macport">{{cite mailing list |last=Mueller |first=Dirk |date=2003-01-07 |title=(fwd) Greetings from the Safari team at Apple Computer |url=https://marc.info/?l=kfm-devel&m=104197092318639&w=2 |mailing-list=kfm-devel |publisher=KDE Project |via=MARC |access-date=28 October 2025 |url-status=live |archive-url=https://web.archive.org/web/20150209072938/http://lists.kde.org/?m=104197092318639 |archive-date=February 9, 2015 }}</ref><ref>{{cite web |url=http://donmelton.com/2013/01/10/safari-is-released-to-the-world/ |title=Safari is released to the world |first=Don |last=Melton |publisher=Donmelton.com |access-date=January 13, 2013 |archive-date=June 4, 2021 |archive-url=https://web.archive.org/web/20210604070156/https://donmelton.com/2013/01/10/safari-is-released-to-the-world/ |url-status=live }}</ref> | ||
| developer = Apple Inc., [[Adobe Systems]], [[Sony]], [[KDE]], [[Igalia]], and others | | developer = Apple Inc., [[Adobe Systems]], [[Sony]], [[KDE]], [[Igalia]], and others | ||
| released = {{Start date and age|1998|11|04}} (KHTML released) | | released = {{ubli|{{Start date and age|1998|11|04}} (KHTML released)|{{Start date and age|2005|06|07}} (WebKit sourced)}} | ||
| latest release version = | | latest release version = | ||
| latest release date = | | latest release date = | ||
| latest preview version = Nightly<ref>{{cite web |title=WebKit Nightly Builds |url=https://webkit.org/downloads/ |website=WebKit.org |access-date=May 27, 2014 |url-status=live |archive-url=https://web.archive.org/web/20160403165617/https://webkit.org/downloads/ |archive-date=April 3, 2016 | | latest preview version = Nightly<ref>{{cite web |title=WebKit Nightly Builds |url=https://webkit.org/downloads/ |website=WebKit.org |access-date=May 27, 2014 |url-status=live |archive-url=https://web.archive.org/web/20160403165617/https://webkit.org/downloads/ |archive-date=April 3, 2016 }}</ref> | ||
| latest preview date = | | latest preview date = | ||
| repo = {{URL|github.com/WebKit/WebKit}} | | repo = {{URL|github.com/WebKit/WebKit}} | ||
| programming language = [[C++]]<ref>{{cite web|author=<!--unstated-->|title=Code Style Guidelines|url=https://webkit.org/code-style-guidelines/|website=WebKit.org|date=November 7, 2015|publisher=Apple, Inc.|access-date=2 May 2017|language=en|url-status=live|archive-url=https://web.archive.org/web/20170501132832/https://webkit.org/code-style-guidelines/|archive-date=May 1, 2017 | | programming language = [[C++]]<ref>{{cite web|author=<!--unstated-->|title=Code Style Guidelines|url=https://webkit.org/code-style-guidelines/|website=WebKit.org|date=November 7, 2015|publisher=Apple, Inc.|access-date=2 May 2017|language=en|url-status=live|archive-url=https://web.archive.org/web/20170501132832/https://webkit.org/code-style-guidelines/|archive-date=May 1, 2017}}</ref><!-- What of [[C (programming language)|C]], [[Objective-C]], and Objective-C++ as included in the Guidelines? --> | ||
| operating system = [[macOS]], [[iOS]], [[Linux]],<ref>{{cite web |title=WebKit Download |date=March 30, 2016 |url=https://webkit.org/downloads/ |access-date=14 August 2018}}</ref> [[Microsoft Windows]]<ref>{{cite web|title=WebKit on Windows | | operating system = [[macOS]], [[iOS]], [[Linux]],<ref>{{cite web |title=WebKit Download |website=WebKit.org |date=March 30, 2016 |url=https://webkit.org/downloads/ |access-date=14 August 2018 |archive-date=April 3, 2016 |archive-url=https://web.archive.org/web/20160403165617/https://webkit.org/downloads/ |url-status=live }}</ref> [[Microsoft Windows]]<ref>{{cite web|title=WebKit on Windows |url=https://webkit.org/webkit-on-windows/|website=WebKit.org|date=November 7, 2015|publisher=Apple, Inc.|access-date=August 8, 2021|language=en|url-status=live|archive-url=https://web.archive.org/web/20210808104008/https://webkit.org/webkit-on-windows/|archive-date=August 8, 2021}}</ref><ref>{{cite web|title=BuildingCairoOnWindows – WebKit|date=June 8, 2021|url=https://trac.webkit.org/wiki/BuildingCairoOnWindows|website=trac.webkit.org|publisher=Apple, Inc.|access-date=August 8, 2021|language=en|url-status=live|archive-url=https://web.archive.org/web/20210808103951/https://trac.webkit.org/wiki/BuildingCairoOnWindows|archive-date=August 8, 2021}}</ref> | ||
| genre = [[Browser engine]] | | genre = [[Browser engine]] | ||
| license = [[GNU Lesser General Public License| | | license = [[GNU Lesser General Public License|LGPL]] (rendering engine, JavaScript engine), [[BSD licenses|BSD 2-Clause]] (additional contributions from Apple)<ref name="licensing"/> | ||
| website = {{URL|webkit.org}} | | website = {{URL|https://webkit.org/}} | ||
}} | }} | ||
'''WebKit''' is a [[browser engine]] primarily used in [[Apple Inc.|Apple's]] [[Safari (web browser)|Safari]] [[web browser]], as well as all web browsers on [[iOS]] and [[iPadOS]]. WebKit is also used by the [[PlayStation]] consoles starting with the PS3, the [[Tizen]] mobile operating systems, the [[Amazon Kindle]] [[e-book]] reader, [[Nintendo video game consoles|Nintendo consoles]] starting with the [[Internet Browser (Nintendo 3DS)|3DS Internet Browser]], [[GNOME Web]], and the discontinued [[BlackBerry Browser]]. | '''WebKit''' is a [[browser engine]] primarily used in [[Apple Inc.|Apple's]] [[Safari (web browser)|Safari]] [[web browser]], as well as all web browsers on [[iOS]] and [[iPadOS]]. WebKit is also used by the [[PlayStation]] consoles starting with the PS3, the [[Tizen]] mobile operating systems, the [[Amazon Kindle]] [[e-book]] reader, [[Nintendo video game consoles|Nintendo consoles]] starting with the [[Internet Browser (Nintendo 3DS)|3DS Internet Browser]], [[GNOME Web]], and the discontinued [[BlackBerry Browser]]. | ||
WebKit started as a [[Fork (software development)|fork]] of the [[KHTML]] and [[KJS (software)|KJS]] libraries from [[KDE]],<ref name="macport"/><ref name=":0">{{cite web |url=https://webkit.org/ |title=The WebKit Open Source Project |access-date=April 7, 2012 |url-status=live |archive-url=https://web.archive.org/web/20120410164749/http://www.webkit.org/ |archive-date=April 10, 2012 | WebKit started as a [[Fork (software development)|fork]] of the [[KHTML]] and [[KJS (software)|KJS]] libraries from [[KDE]],<ref name="macport"/><ref name=":0">{{cite web |url=https://webkit.org/ |title=The WebKit Open Source Project |website=WebKit.org |access-date=April 7, 2012 |url-status=live |archive-url=https://web.archive.org/web/20120410164749/http://www.webkit.org/ |archive-date=April 10, 2012 }}</ref> and has since been further developed by [[KDE]] contributors, [[Apple Inc.|Apple]], [[Google]], [[Nokia]],<ref name=":0" /> [[Bitstream Inc.|Bitstream]], [[BlackBerry Limited|BlackBerry]], [[Sony]], [[Igalia]], and others.<ref>{{cite web |url=https://trac.webkit.org/wiki/Companies%20and%20Organizations%20that%20have%20contributed%20to%20WebKit |title=Companies and Organizations that have contributed to WebKit |last=Stachowiak |first=Maciej |date=November 9, 2008 |work=WebKit Wiki |access-date=November 17, 2008 |archive-date=May 17, 2019 |archive-url=https://web.archive.org/web/20190517151904/http://trac.webkit.org/wiki/Companies%20and%20Organizations%20that%20have%20contributed%20to%20WebKit |url-status=live }}</ref> WebKit supports [[macOS]], [[Microsoft Windows|Windows]], [[Linux]], and various other [[Unix-like]] operating systems.<ref name="webkitsite">{{cite web|url=https://webkit.org/getting-the-code|title=The WebKit Open Source Project – Getting the Code|website=Webkit.org|access-date=December 27, 2010|url-status=live|archive-url=https://web.archive.org/web/20160306112604/https://webkit.org/getting-the-code/|archive-date=March 6, 2016}}</ref> On April 3, 2013, Google announced that it had forked WebCore, a component of WebKit, to be used in future versions of [[Google Chrome]] under the name [[Blink (browser engine)|Blink]].<ref>{{cite web |last=Barth |first=Adam |url=https://blog.chromium.org/2013/04/blink-rendering-engine-for-chromium.html |title=Blink: A rendering engine for the Chromium project |website=Chromium Blog |date=April 3, 2013 |access-date=June 14, 2013 |url-status=live |archive-url=https://web.archive.org/web/20130404034320/http://blog.chromium.org/2013/04/blink-rendering-engine-for-chromium.html |archive-date=April 4, 2013 }}</ref><ref>{{cite web |last=Lawson |first=Bruce |url=http://www.brucelawson.co.uk/2013/hello-blink/ |title=Hello Blink |date=April 3, 2013 |website=Brucelawson.co.uk |access-date=June 14, 2013 |archive-date=April 4, 2013 |archive-url=https://web.archive.org/web/20130404014445/http://www.brucelawson.co.uk/2013/hello-blink/ |url-status=live }}</ref> Since version 15 in May 2013, [[Opera (web browser)|Opera web browser]] has dropped its own Presto layout engine in favor of WebKit as implemented by Google in the Chromium project. | ||
Its [[JavaScript]] engine, JavascriptCore, also powers the [[Bun (software)|Bun]] server-side JS runtime,<ref>{{Cite web |last=Omolana |first=Timilehin |date=2022-08-02 |title=What Is Bun.js and Why Is the JavaScript Community Excited About It? |url=https://www.makeuseof.com/what-is-bunjs-why-the-javascript-community-excited/ |access-date=2023-05-30 |website= | Its [[JavaScript]] engine, JavascriptCore, also powers the [[Bun (software)|Bun]] server-side JS runtime,<ref>{{Cite web |last=Omolana |first=Timilehin |date=2022-08-02 |title=What Is Bun.js and Why Is the JavaScript Community Excited About It? |url=https://www.makeuseof.com/what-is-bunjs-why-the-javascript-community-excited/ |access-date=2023-05-30 |website=MakeUseOf |language=en-US |archive-date=May 30, 2023 |archive-url=https://web.archive.org/web/20230530002356/https://www.makeuseof.com/what-is-bunjs-why-the-javascript-community-excited/ |url-status=live }}</ref> as opposed to [[V8 (JavaScript engine)|V8]] used by [[Node.js]], [[Deno (software)|Deno]], and [[Blink (engine)|Blink]]. WebKit's [[C++]] [[application programming interface]] (API) provides a set of [[Class (programming)|classes]] to display [[World Wide Web|Web]] content in [[Window (computing)|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 is [[open source]] and available under the [[BSD licenses|BSD 2-Clause]] license<ref>{{cite web |url=https://developer.apple.com/opensource/internet/webkit.html |title=Open Source – WebKit |publisher=Apple |access-date=March 5, 2009 |archive-url=https://web.archive.org/web/20090311132231/http://developer.apple.com/opensource/internet/webkit.html |archive-date=March 11, 2009 | WebKit is [[open source]] and available under the [[BSD licenses|BSD 2-Clause]] license<ref>{{cite web |url=https://developer.apple.com/opensource/internet/webkit.html |title=Open Source – WebKit |publisher=Apple |access-date=March 5, 2009 |archive-url=https://web.archive.org/web/20090311132231/http://developer.apple.com/opensource/internet/webkit.html |archive-date=March 11, 2009 }}</ref><ref name="licensing">{{Cite web |url=https://webkit.org/licensing-webkit/ |title=Licensing WebKit {{!}} WebKit |date=November 9, 2015 |access-date=March 12, 2022 |archive-date=March 16, 2022 |archive-url=https://web.archive.org/web/20220316072242/https://webkit.org/licensing-webkit/ |url-status=live }}</ref> with the exception of the [[#WebCore|WebCore]] and [[#JavaScriptCore|JavaScriptCore]] components, which are available under the [[GNU Lesser General Public License]]. As of March 7, 2013, WebKit is a trademark of Apple, registered with the [[United States Patent and Trademark Office]].<ref>{{cite web|url=http://www.patentlyapple.com/patently-apple/2013/03/apples-webkit-is-now-a-registered-trademark-in-the-us.html |first1=Jack |last1=Purcher |website=Patently Apple |date=March 7, 2013 |title=Apple's 'WebKit' is now a Registered Trademark in the US|access-date=March 7, 2013|url-status=live|archive-url=https://web.archive.org/web/20130309104912/http://www.patentlyapple.com/patently-apple/2013/03/apples-webkit-is-now-a-registered-trademark-in-the-us.html|archive-date=March 9, 2013}}</ref> | ||
==Origins== | ==Origins== | ||
The code that would become WebKit began in 1998 as the ''KDE HTML'' ([[KHTML]]) layout engine and ''KDE JavaScript'' ([[KJS (software)|KJS]]) engine. The WebKit project was started within Apple by Lisa Melton | The code that would become WebKit began in 1998 as the ''KDE HTML'' ([[KHTML]]) layout engine and ''KDE JavaScript'' ([[KJS (software)|KJS]]) engine. The WebKit project was started within Apple by Lisa Melton{{citation needed<!--Previous citation was too vague to support any claims.-->|date=October 2025}} on June 25, 2001,<!--Unreliable source: account not verified. Note that verification status post-Musk is not sufficient to show reliability. <ref>{{cite web|last=Melton|first=Don |title=Attention Internets! WebKit is not 10 years old today. That happened on June 25. I know the date because that's when I started the project.|url=https://www.twitter.com/donmelton/status/106603038575296512|work=Twitter|access-date=October 13, 2011|date=August 25, 2011 |url-status=live |archive-url=https://web.archive.org/web/20210420124207/https://twitter.com/donmelton/status/106603038575296512 |archive-date= April 20, 2021 }}</ref>--><ref name="start_date">{{cite news |last1=Henry |first1=Charlotte |title=Happy 20th Birthday, Safari and Webkit! |url=https://www.macobserver.com/news/happy-20th-birthday-safari-and-webkit/ |access-date=12 August 2023 |work=The Mac Observer |date=25 June 2021}}</ref> as a [[software fork|fork]] of [[KHTML]] and [[KJS (software)|KJS]]. Melton explained in an e-mail to KDE developers<ref name="macport" /> that [[KHTML]] and [[KJS (software)|KJS]] allowed easier development than other available technologies by virtue of being small (fewer than 140,000 [[lines of code]]), cleanly designed and standards-compliant. KHTML and KJS were ported to [[macOS]] with the help of an adapter [[Library (computing)|library]] and renamed WebCore and JavaScriptCore.<ref name="macport"/> JavaScriptCore was announced in an e-mail to a KDE [[mailing list]] in June 2002, alongside the first release of Apple's changes.<ref name="annjavascript">{{cite mailing list |url=http://www.opendarwin.org/pipermail/kde-darwin/2002-June/000034.html |title=JavaScriptCore, Apple's JavaScript framework based on KJS |mailing-list=kde-darwin |last=Stachowiak |first=Maciej |author-link=Maciej Stachowiak |date=June 13, 2002 |access-date=August 21, 2008 |archive-url=https://web.archive.org/web/20070310215550/http://www.opendarwin.org/pipermail/kde-darwin/2002-June/000034.html |archive-date=March 10, 2007 |url-status=dead}}</ref> | ||
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]] | 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.<ref>{{cite web |url=https://blogs.kde.org/2005/04/30/safari-and-khtml-again/ |title=Safari and KHTML again |first=Allan |last=Sandfeld<!--See his first post "Introducing Carewolf" for the identity of the pseudonym carewolf.--> |website=KDE Blogs |date=April 30, 2005 |access-date=28 October 2025}}</ref> | ||
===Split development=== | ===Split development=== | ||
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.<ref>{{cite web |url= | 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.<ref>{{cite web |url=https://blogs.kde.org/2005/04/28/so-when-will-khtml-merge-all-webcore-changes/ |title=So, when will KHTML merge all the WebCore changes? |first=Zack |last=Rusin |date=April 28, 2005 |website=KDE Blogs |access-date=28 October 2025 }}</ref> 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".<ref>{{cite web|url=https://blogs.kde.org/2005/04/29/bitter-failure-named-safari-and-khtml|title= The bitter failure named 'safari and khtml'|date= April 29, 2005|url-status= live|archive-url= https://web.archive.org/web/20150415005639/https://blogs.kde.org/2005/04/29/bitter-failure-named-safari-and-khtml|archive-date= April 15, 2015}}</ref> 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.<ref>{{cite web|url=http://news.cnet.com/Open-source-divorce-for-Apples-Safari/2100-1032_3-5703819.html|title=Open-source divorce for Apple's Safari?|url-status=live|archive-url= https://web.archive.org/web/20090707214349/http://news.cnet.com/Open-source-divorce-for-Apples-Safari/2100-1032_3-5703819.html|archive-date= July 7, 2009}}</ref> 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.<ref>{{cite web|url= http://lists.apple.com/archives/Webcore-dev/2005/Jun/msg00009.html|title= WebCore open source changes|access-date= May 14, 2016|url-status= dead|archive-url= https://web.archive.org/web/20160527125414/http://lists.apple.com/archives/Webcore-dev/2005/Jun/msg00009.html|archive-date= May 27, 2016}}</ref> | ||
During the publicized "divorce" period, KDE developer Kurt Pfeifle (''pipitas'') posted an article claiming KHTML developers had managed to [[backporting|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.<ref>{{cite web|url= | During the publicized "divorce" period, KDE developer Kurt Pfeifle (''pipitas'') posted an article claiming KHTML developers had managed to [[backporting|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.<ref>{{cite web|url=https://blogs.kde.org/2005/05/13/webcore-khtml-firefox-know-your-facts/ |date=13 May 2005 |author=Pipitas<!--RL identity not immediately clear.--> |title=WebCore – KHTML – Firefox: Know your facts! |access-date=October 28, 2025}}</ref> 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.<ref>{{cite web|url= https://blogs.kde.org/node/1129|title=Konqueror now passes Acid2 |url-status=live |archive-url=https://web.archive.org/web/20170621121118/https://blogs.kde.org/node/1129|archive-date= June 21, 2017}}</ref> | ||
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|revision-control]] repository.<ref name="kdenews2007-06-05">{{cite news |url= http://dot.kde.org/2005/06/07/apple-opens-webkit-cvs-and-bug-database |title= Apple Opens WebKit CVS and Bug Database |last= Molkentin |first= Daniel |date= June 7, 2005 |work= KDE News |access-date= January 16, 2007 |url-status= live |archive-url= https://web.archive.org/web/20090715100234/http://dot.kde.org/2005/06/07/apple-opens-webkit-cvs-and-bug-database |archive-date= July 15, 2009 | 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|revision-control]] repository.<ref name="kdenews2007-06-05">{{cite news |url=http://dot.kde.org/2005/06/07/apple-opens-webkit-cvs-and-bug-database |title=Apple Opens WebKit CVS and Bug Database |last=Molkentin |first=Daniel |date=June 7, 2005 |work=KDE News |access-date=January 16, 2007 |url-status=live |archive-url=https://web.archive.org/web/20090715100234/http://dot.kde.org/2005/06/07/apple-opens-webkit-cvs-and-bug-database |archive-date= July 15, 2009 }}</ref> | ||
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.<ref>{{cite web|url= https://arstechnica.com/journals/apple.ars/2007/06/12/ars-at-wwdc-interview-with-lars-knoll-creator-of-khtml|title= Ars at WWDC: Interview with Lars Knoll, creator of KHTML|date= June 12, 2007|url-status= live|archive-url= https://web.archive.org/web/20080531052913/http://arstechnica.com/journals/apple.ars/2007/06/12/ars-at-wwdc-interview-with-lars-knoll-creator-of-khtml|archive-date= May 31, 2008 | 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.<ref>{{cite web |url=https://arstechnica.com/journals/apple.ars/2007/06/12/ars-at-wwdc-interview-with-lars-knoll-creator-of-khtml |title=Ars at WWDC: Interview with Lars Knoll, creator of KHTML |first=Clint |last=Ecker |website=[[Ars Technica]] |date=June 12, 2007 |url-status=live |archive-url= https://web.archive.org/web/20080531052913/http://arstechnica.com/journals/apple.ars/2007/06/12/ars-at-wwdc-interview-with-lars-knoll-creator-of-khtml |archive-date=May 31, 2008}}</ref> | ||
In July 2007, ''[[Ars Technica]]'' reported that the KDE team would move from KHTML to WebKit.<ref name="arsunfork">{{cite web |url= https://arstechnica.com/journals/linux.ars/2007/07/23/the-unforking-of-kdes-khtml-and-webkit |title= The unforking of KDE's KHTML and WebKit |access-date= July 30, 2007 |last= Unrau |first= Troy |date= July 23, 2007 | | In July 2007, ''[[Ars Technica]]'' reported that the KDE team would move from KHTML to WebKit.<ref name="arsunfork">{{cite web |url=https://arstechnica.com/journals/linux.ars/2007/07/23/the-unforking-of-kdes-khtml-and-webkit |title=The unforking of KDE's KHTML and WebKit |access-date=July 30, 2007 |last=Unrau |first=Troy |date=July 23, 2007 |website=Ars Technica |url-status=live |archive-url=https://web.archive.org/web/20070930075415/http://arstechnica.com/journals/linux.ars/2007/07/23/the-unforking-of-kdes-khtml-and-webkit |archive-date=September 30, 2007 }}</ref> 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 continued until 2016 before it was officially discontinued in 2023.<ref name="kde4.5.0">{{cite web |url=http://kde.org/announcements/4.5/platform.php |title=KDE Development Platform 4.5.0 gains performance, stability, new high-speed cache and support for WebKit |url-status=live |archive-url=https://web.archive.org/web/20110314205743/http://www.kde.org/announcements/4.5/platform.php |archive-date=March 14, 2011}}</ref><ref name="discontinued">{{cite web |title=KHTML |quote=Removed for KF6, the 'kf5' branch contains the last maintained state. |url=https://github.com/KDE/khtml/tree/6d89b39ddb93aa5b655508c0b5295f3f4db626b8 |website=GitHub |access-date=5 May 2023 |archive-date=November 1, 2024 |archive-url=https://web.archive.org/web/20241101112323/https://github.com/KDE/khtml/tree/6d89b39ddb93aa5b655508c0b5295f3f4db626b8 |url-status=live }}</ref> | ||
{{cite web | |||
}} | |||
</ref><ref name="discontinued">{{cite web |title=KHTML | |||
===Open-sourcing=== | ===Open-sourcing=== | ||
On June 7, 2005, Safari developer [[Dave Hyatt]] announced on his [[weblog]] that Apple was open-sourcing WebKit (formerly, only WebCore and JavaScriptCore were open source) and opening up access to WebKit's [[revision control]] tree and the issue tracker.<ref name="kdenews2007-06-05"/> | On June 7, 2005, Safari developer [[Dave Hyatt]] announced on his [[weblog]] that Apple was open-sourcing WebKit (formerly, only WebCore and JavaScriptCore were open source) and opening up access to WebKit's [[revision control]] tree and the issue tracker.<ref name="kdenews2007-06-05"/> | ||
In mid-December 2005, support for [[Scalable Vector Graphics]] (SVG) was merged into the standard build.<ref name="kdestandard">{{cite web|url= | In mid-December 2005, support for [[Scalable Vector Graphics]] (SVG) was merged into the standard build.<ref name="kdestandard">{{cite web|url=https://dot.kde.org/2005/07/11/next-generation-kde-technologies-ported-webcore/|first=Kurt|last=Pfeifle|title=Next Generation KDE Technologies Ported to WebCore|date=July 10, 2005|access-date=28 October 2025}}</ref> | ||
WebKit's JavaScriptCore and WebCore components are available under the GNU Lesser General Public License, while the rest of WebKit is available under the BSD 2-Clause license.<ref name="licensing"/> | WebKit's JavaScriptCore and WebCore components are available under the GNU Lesser General Public License, while the rest of WebKit is available under the BSD 2-Clause license.<ref name="licensing"/> | ||
| Line 64: | Line 57: | ||
===Further development=== | ===Further development=== | ||
{{Update|section|date=July 2015}} | {{Update|section|date=July 2015}} | ||
Beginning in early 2007, the development team began to implement [[Cascading Style Sheets]] (CSS) extensions, including [[CSS Animations|animation]], transitions and both 2D and 3D transforms;<ref>{{cite | Beginning in early 2007, the development team began to implement [[Cascading Style Sheets]] (CSS) extensions, including [[CSS Animations|animation]], transitions and both 2D and 3D transforms;<ref>{{cite web|url=https://webkit.org/blog/130/css-transforms/|title=CSS Transforms|website=Webkit |date=October 26, 2007|url-status=live|archive-url=https://web.archive.org/web/20170113134857/https://webkit.org/blog/130/css-transforms/|archive-date=January 13, 2017}}</ref> such extensions were released as working drafts to the [[World Wide Web Consortium]] (W3C) in 2009 for standardization.<ref>{{cite web|url=http://dev.w3.org/csswg/css3-animations/|title=CSS3 Animations|publisher=W3C|url-status=live|archive-url=https://web.archive.org/web/20090221121910/http://dev.w3.org/csswg/css3-animations/|archive-date=February 21, 2009}}</ref> | ||
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.<ref>{{cite web|url=https://webkit.org/blog/140/html5-media-support/|title=HTML5 Media Support|last=Koivisto|first=Antti|work= | 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.<ref>{{cite web|url=https://webkit.org/blog/140/html5-media-support/|title=HTML5 Media Support|last=Koivisto|first=Antti|work=WebKit Blog|date=November 12, 2007|url-status=live|archive-url=https://web.archive.org/web/20170113134814/https://webkit.org/blog/140/html5-media-support/|archive-date=January 13, 2017}}</ref> | ||
On June 2, 2008, the WebKit project announced they rewrote JavaScriptCore as "SquirrelFish", a | On June 2, 2008, the WebKit project announced they rewrote JavaScriptCore as "SquirrelFish", a [[interpreter (computing)|bytecode interpreter]].<ref name="Announcing SquirrelFish">{{cite web|url=https://webkit.org/blog/189/announcing-squirrelfish/|title=Announcing SquirrelFish|date=June 2, 2008|url-status=live|archive-url=https://web.archive.org/web/20170127124319/https://webkit.org/blog/189/announcing-squirrelfish/|archive-date=January 27, 2017}}</ref><ref name="SquirrelFish project">{{cite web|url=https://trac.webkit.org/wiki/SquirrelFish|title=SquirrelFish project|access-date=January 12, 2017|archive-date=January 13, 2017|archive-url=https://web.archive.org/web/20170113134953/https://trac.webkit.org/wiki/SquirrelFish|url-status=live}}</ref> The project evolved into SquirrelFish Extreme (abbreviated SFX), announced on September 18, 2008, which [[compiler|compiles]] JavaScript into native [[machine code]], eliminating the need for a bytecode interpreter and thus speeding up JavaScript execution.<ref name="Introducing SquirrelFish Extreme">{{cite web|url=https://webkit.org/blog/214/introducing-squirrelfish-extreme/|title=Introducing SquirrelFish Extreme|date=September 18, 2008|url-status=live|archive-url=https://web.archive.org/web/20161126112934/https://webkit.org/blog/214/introducing-squirrelfish-extreme/|archive-date=November 26, 2016}}</ref> Initially, the only supported processor architecture for SFX was the [[x86]], but at the end of January 2009, SFX was enabled for macOS on [[x86-64]] as it passes all tests on that platform.<ref name="x86-64">{{cite web |url=https://trac.webkit.org/changeset/40439 |title=Changeset 40439 |website=Webkit Trac |date=January 30, 2009 |access-date=December 27, 2010 |archive-date=January 7, 2016 |archive-url=https://web.archive.org/web/20160107183928/https://trac.webkit.org/changeset/40439 |url-status=live }}</ref> | ||
===WebKit2=== | ===WebKit2=== | ||
On April 8, 2010, a project named WebKit2 was announced to redesign WebKit. Its goal was to abstract the components that provide | On April 8, 2010, a project named WebKit2 was announced to redesign WebKit. Its goal was to abstract the components that provide [[page layout]] and [[rendering (computer graphics)|rendering]] cleanly from their surrounding interface or application shell, creating a situation where, "web content (JavaScript, HTML, layout, etc) lives in a separate process from the application UI". This abstraction was intended to make reuse a more straightforward process for WebKit2 than for WebKit. WebKit2 had "an incompatible API change from the original WebKit", which motivated its name change.<ref name=webkit2wiki>{{cite web|url=https://trac.webkit.org/wiki/WebKit2|title=WebKit2 wiki|website=Webkit.org|access-date=August 3, 2012|archive-date=August 28, 2012|archive-url=https://web.archive.org/web/20120828174221/http://trac.webkit.org/wiki/WebKit2|url-status=live}}</ref> | ||
The WebKit2 targets were set to Linux, macOS, Windows, [[GTK]], and [[MeeGo]]-Harmattan.<ref>{{cite web |url=https://lists.webkit.org/pipermail/webkit-dev/2010-April/012235.html |title=Announcing WebKit2 |date=April 8, 2010 | | The WebKit2 targets were set to Linux, macOS, Windows, [[GTK]], and [[MeeGo]]-Harmattan.<ref>{{cite web |url=https://lists.webkit.org/pipermail/webkit-dev/2010-April/012235.html |title=Announcing WebKit2 |date=April 8, 2010 |website=Webkit.org |access-date=December 27, 2010 |url-status=live |archive-url=https://web.archive.org/web/20110423042000/https://lists.webkit.org/pipermail/webkit-dev/2010-April/012235.html |archive-date=April 23, 2011 }}</ref><ref name=meego-harmattan>{{cite web|url=http://conversations.nokia.com/2011/06/21/introducing-the-nokia-n9-all-it-takes-is-a-swipe/|title=Introducing the Nokia N9: all it takes is a swipe! |website=Nokia Conversations|publisher=Nokia Corporation|access-date=June 21, 2011|archive-url=https://web.archive.org/web/20110624125835/http://conversations.nokia.com/2011/06/21/introducing-the-nokia-n9-all-it-takes-is-a-swipe|archive-date=June 24, 2011|url-status=dead}}</ref> Safari for macOS switched to the new API with version 5.1.<ref>{{cite web|url=https://trac.webkit.org/browser/releases/Apple/Safari%205.1/WebKit2?rev=91373|title=Source code repository for public parts of Safari 5.1|publisher=The WebKit Open Source Project|access-date=July 20, 2011|archive-date=October 3, 2011|archive-url=https://web.archive.org/web/20111003153447/http://trac.webkit.org/browser/releases/Apple/Safari%205.1/WebKit2?rev=91373|url-status=dead}}</ref> Safari for iOS switched to WebKit2 with iOS 8.<ref>{{cite web|title=WWDC 2014 Session 206 - Introducing the Modern WebKit API - ASCIIwwdc|url=http://asciiwwdc.com/2014/sessions/206|access-date=December 13, 2014|archive-date=December 13, 2014|archive-url=https://web.archive.org/web/20141213032037/http://asciiwwdc.com/2014/sessions/206|url-status=dead}}</ref> | ||
The original WebKit API has been renamed WebKitLegacy API.<ref>{{cite web|url=https://bugs.webkit.org/show_bug.cgi?id=132399 | title=132399 – Move the legacy WebKit API into WebKitLegacy.framework and move it inside WebKit.framework| | The original WebKit API has been renamed WebKitLegacy API.<ref>{{cite web |url=https://bugs.webkit.org/show_bug.cgi?id=132399 |title=132399 – Move the legacy WebKit API into WebKitLegacy.framework and move it inside WebKit.framework |website=Webkit.org |access-date=June 9, 2019 |archive-date=June 9, 2019 |archive-url=https://web.archive.org/web/20190609061439/https://bugs.webkit.org/show_bug.cgi?id=132399 |url-status=live }}</ref> WebKit2 API has been renamed just plain WebKit API.<ref>{{cite web|url=https://lists.webkit.org/pipermail/webkit-dev/2017-July/029257.html|title=Renaming Directories and Project Files to Match Framework Names|date=July 10, 2017|website=Webkit.org|access-date=June 9, 2019|archive-date=June 9, 2019|archive-url=https://web.archive.org/web/20190609061400/https://lists.webkit.org/pipermail/webkit-dev/2017-July/029257.html|url-status=live}}</ref> | ||
== Use == | == Use == | ||
[[File:Usage share of web browsers (Source StatCounter).svg|thumb|right|[[Usage share of web browsers]] according to [[StatCounter]]]] | [[File:Usage share of web browsers (Source StatCounter).svg|thumb|right|[[Usage share of web browsers]] according to [[StatCounter]]]] | ||
WebKit is used as the rendering engine within [[Safari (web browser)|Safari]] and was used by [[Google]]'s [[Google Chrome|Chrome]] web browser on Windows, macOS, and [[Android (operating system)|Android]] (before version 4.4 KitKat). Chrome used only WebCore, and included its own [[JavaScript engine]] named [[Chrome V8|V8]] and a multiprocess system.<ref name="ars-blink" /> Chrome for [[iOS]] continues to use WebKit because Apple requires that web browsers on that platform must do so.<ref name="App Store Review Guidelines">{{cite web|url=https://developer.apple.com/app-store/review/guidelines/#software-requirements|title=App Store Review Guidelines}}</ref> Other applications on macOS and iOS make use of WebKit, such as Apple's e-mail client [[Mail (Apple)|Mail]], App Store, and the 2008 version of Microsoft's [[Microsoft Entourage|Entourage]] [[personal information manager]], both of which make use of WebKit to render HTML content. | WebKit is used as the rendering engine within [[Safari (web browser)|Safari]] and was used by [[Google]]'s [[Google Chrome|Chrome]] web browser on Windows, macOS, and [[Android (operating system)|Android]] (before version 4.4 KitKat). Chrome used only WebCore, and included its own [[JavaScript engine]] named [[Chrome V8|V8]] and a multiprocess system.<ref name="ars-blink" /> Chrome for [[iOS]] continues to use WebKit because Apple requires that web browsers on that platform must do so.<ref name="App Store Review Guidelines">{{cite web|url=https://developer.apple.com/app-store/review/guidelines/#software-requirements|title=App Store Review Guidelines|access-date=May 31, 2021|archive-date=March 4, 2020|archive-url=https://web.archive.org/web/20200304025827/https://developer.apple.com/app-store/review/guidelines/#software-requirements|url-status=live}}</ref> Other applications on macOS and iOS make use of WebKit, such as Apple's e-mail client [[Mail (Apple)|Mail]], App Store, and the 2008 version of Microsoft's [[Microsoft Entourage|Entourage]] [[personal information manager]], both of which make use of WebKit to render HTML content. | ||
=== Installed base === | === Installed base === | ||
New web browsers have been built around WebKit such as the [[S60 (software platform)|S60]] browser<ref name="Nokia S60 Webkit Browser">{{cite web|url=http://opensource.nokia.com/projects/S60browser/|title=Nokia S60 Webkit Browser|publisher=Nokia|url-status=dead|archive-url=https://web.archive.org/web/20051206034449/http://opensource.nokia.com/projects/S60browser/|archive-date=December 6, 2005 | New web browsers have been built around WebKit such as the [[S60 (software platform)|S60]] browser<ref name="Nokia S60 Webkit Browser">{{cite web|url=http://opensource.nokia.com/projects/S60browser/|title=Nokia S60 Webkit Browser|publisher=Nokia|url-status=dead|archive-url=https://web.archive.org/web/20051206034449/http://opensource.nokia.com/projects/S60browser/|archive-date=December 6, 2005}}</ref> on [[Symbian]] mobile phones, [[BlackBerry OS|BlackBerry]] Browser (ver 6.0+), [[Midori (web browser)|Midori]], [[Google Chrome|Chrome]] browser,<ref name="Google Chrome, Google's Browser Project">{{cite web|url=http://blogoscoped.com/archive/2008-09-01-n47.html|title=Google Chrome, Google's Browser Project|url-status=live|archive-url=https://web.archive.org/web/20080902065842/http://blogoscoped.com/archive/2008-09-01-n47.html|archive-date=September 2, 2008}}</ref><ref name="google-comic">{{cite web|url=https://www.google.com/googlebooks/chrome/|title=Comic describing the Google Chrome Project<!--Does this have an actual title?-->|url-status=live|archive-url=https://web.archive.org/web/20080903142023/http://www.google.com/googlebooks/chrome/|archive-date=September 3, 2008}}</ref> the [[Android (operating system)|Android]] Web browsers before version 4.4 KitKat, and the browser used in [[PlayStation 3 system software]] from version 4.10.<ref>{{cite web |url=http://d.hatena.ne.jp/amatanoyo/20120208/1328681210 |script-title=ja:PS3、ファームウェアv4.10からWebKitへ。 - あまたの何かしら。 |script-website=ja:あまたの何かしら。 |date=February 8, 2012 |access-date=January 13, 2013 |url-status=live |archive-url=https://web.archive.org/web/20121014094455/http://d.hatena.ne.jp/amatanoyo/20120208/1328681210 |archive-date=October 14, 2012 }}</ref>{{unreliable source?|reason=Appears to be a blog. Need a Japanese reader to verify reliability per [[WP:RS]] and especially [[WP:SPS]]|date=October 2025}} KDE's Rekonq web browser and [[Plasma Workspaces]] also use it as the native web rendering engine. WebKit has been adopted as the rendering engine in [[OmniWeb]], [[iCab]] and [[Web (web browser)|Web]] (formerly named Epiphany) and [[Sleipnir (web browser)|Sleipnir]], replacing their original rendering engines. GNOME's Web supported both [[Gecko (layout engine)|Gecko]] and WebKit for some time, but the team decided that Gecko's release cycle and future development plans would make it too cumbersome to continue supporting it.<ref>{{cite mailing list |last1=Persch |first1=Christian |date=1 April 2008 |title=ANNOUNCEMENT: The Future of Epiphany |url=https://mail.gnome.org/archives/epiphany-list/2008-April/msg00000.html|mailing-list=Epiphany Mailing List |publisher=GNOME Project |access-date=28 October 2025 |url-status=live |archive-url=https://web.archive.org/web/20120214042734/http://mail.gnome.org/archives/epiphany-list/2008-April/msg00000.html |archive-date=February 14, 2012}}</ref> [[webOS]] uses WebKit as the basis of its application runtime.<ref>{{cite magazine |last=Chen |first=Brian X. |url=https://www.wired.com/2011/02/hp-web-os-tablet |title=HP Launches WebOS-Powered Tablet, Phones |department=Gadget Lab |magazine=Wired |access-date=January 13, 2013 |url-status=live |archive-url=https://web.archive.org/web/20140410211728/http://www.wired.com/2011/02/hp-web-os-tablet |archive-date=April 10, 2014 }}</ref> WebKit is used to render HTML and run JavaScript in the [[Adobe Integrated Runtime]] application platform. In [[Adobe Creative Suite]] CS5, WebKit is used to render some parts of the user interface. As of the first half of 2010, an analyst estimated the cumulative number of mobile handsets shipped with a WebKit-based browser at 350 million.<ref>{{cite web|title=100 Million Club (H1 2010 update)|work=VisionMobile |date=October 18, 2010 |url=http://www.visionmobile.com/blog/2010/10/smart-feature-phones-the-unbalanced-equation-100-million-club-series/|access-date=March 1, 2011|url-status=live|archive-url=https://web.archive.org/web/20110301192936/http://www.visionmobile.com/blog/2010/10/smart-feature-phones-the-unbalanced-equation-100-million-club-series/|archive-date=March 1, 2011}}</ref> By mid-April 2015, WebKit [[usage share of web browsers|browser market share]] was 50.3%.<ref>{{cite web|url=http://gs.statcounter.com/#browser-ww-monthly-201504-201504-bar/|title=Top 5 Desktop, Tablet & Console Browsers|date=April 2015 |website=StatCounter|access-date=April 14, 2015|url-status=live|archive-url=https://archive.today/20120526/http://gs.statcounter.com/%23mobile_browser-ww-monthly-201012-201111-bar#browser-ww-monthly-201504-201504-bar/|archive-date=May 26, 2012}}</ref> | ||
=== | === <span class="anchor" id="WebKitGTK"></span>Ports === | ||
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.<ref>{{cite web |url=https://webkit.org/blog/87/safari-on-the-iphone/ |title=The Obligatory iPhone Post |last=Stachowiak |first=Maciej |date=January 10, 2007 |work= | 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.<ref>{{cite web |url=https://webkit.org/blog/87/safari-on-the-iphone/ |title=The Obligatory iPhone Post |last=Stachowiak |first=Maciej |date=January 10, 2007 |work=WebKit Blog |access-date=January 24, 2008 |url-status=live |archive-url=https://web.archive.org/web/20080219013741/http://webkit.org/blog/87/safari-on-the-iphone/ |archive-date=February 19, 2008 }}</ref> The [[Android (operating system)|Android]] mobile phone platform used WebKit (and later versions its [[Blink (browser engine)|Blink fork]]) as the basis of its web browser<ref name="andport">{{cite web|url=https://webkit.org/blog/142/android-uses-webkit/|title=Android Uses WebKit|url-status=dead|archive-url=https://web.archive.org/web/20170113134900/https://webkit.org/blog/142/android-uses-webkit/|archive-date=January 13, 2017|access-date=January 12, 2017}}</ref><ref>{{Cite news|url=https://webkit.org/blog/143/webkit-in-the-news/|title=WebKit in the News|date=2007-11-13|work=WebKit.org|access-date=2018-11-17}}</ref><ref>{{Cite web|url=https://gigaom.com/2007/11/13/webkit/|archive-url=https://web.archive.org/web/20071114150927/http://gigaom.com/2007/11/13/webkit/|url-status=dead|archive-date=November 14, 2007|title=The Amazing Rise of WebKit Mobile|date=2007-11-13|website=Gigaom|language=en-US|access-date=2018-11-17}}</ref> and the [[Palm Pre]], announced January 2009, has an interface based on WebKit.<ref name="palmPre">{{cite web|url=https://www.engadget.com/2009/01/08/palm-pre-in-depth-impressions-video-and-huge-hands-on-gallery/|title=Palm Pre in-depth impressions, video, and huge hands-on gallery|date=January 9, 2009 |url-status=live|archive-url=https://web.archive.org/web/20170113134056/https://www.engadget.com/2009/01/08/palm-pre-in-depth-impressions-video-and-huge-hands-on-gallery/|archive-date=January 13, 2017}}</ref> The [[Amazon Kindle]] 3 includes an experimental WebKit based browser.<ref>{{cite web|url=https://www.engadget.com/2010/07/28/new-amazon-kindle-announced-139-wifi-only-version-and-189-3g/|title=New Amazon Kindle announced: $139 WiFi-only version and $189 3G model available August 27th in the US and UK|last=Topolsky|first=Joshua|date=July 28, 2010 |url-status=live|archive-url=https://web.archive.org/web/20170113134059/https://www.engadget.com/2010/07/28/new-amazon-kindle-announced-139-wifi-only-version-and-189-3g/|archive-date=January 13, 2017}}</ref> | ||
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,<ref>{{cite web|title=Safari 6 available for Mountain Lion and Lion, but not Windows|author=Lex Friedman|date=July 26, 2012|website=MacWorld|publisher=International Data Group|language=en|url-status=live|url=https://www.macworld.com/article/218624/safari-6-available-for-mountain-lion-and-lion-but-not-windows.html|access-date=August 8, 2021|archive-url=https://web.archive.org/web/20210808110011/https://www.macworld.com/article/218624/safari-6-available-for-mountain-lion-and-lion-but-not-windows.html|archive-date=August 8, 2021}}</ref> WebKit's ports to Microsoft's operating system are still actively maintained.<ref>{{cite web|title=Buildbot: builder Apple-Win-10-Debug-Build|publisher=Apple, Inc.|website=WebKit.org|language=en|url-status=live|access-date=August 8, 2021|url=https://build.webkit.org/#/builders/56|archive-url=https://archive.today/20210808113400/https://build.webkit.org/%23/builders/56|archive-date=August 8, 2021}}</ref><ref>{{cite web|title=Buildbot: builder WinCairo-64-bit-WKL-Release-Build|publisher=Apple, Inc.|website=WebKit|language=en|url-status=live|url=https://build.webkit.org/#/builders/27|archive-url=https://archive.today/20210808112550/https://build.webkit.org/%23/builders/27|archive-date=August 8, 2021|access-date=August 8, 2021}}</ref> The Windows port uses Apple's proprietary libraries to function and is used for iCloud<ref>{{cite web|title=About the security content of iCloud for Windows 12.3 |website=Apple Support|publisher=Apple, Inc.|language=en|url-status=live|access-date=August 8, 2021|url=https://support.apple.com/en-us/HT212321|archive-url=https://web.archive.org/web/20210808112027/https://support.apple.com/en-us/HT212321|archive-date=August 8, 2021}}</ref> and iTunes<ref>{{cite web|title=About the security content of iTunes 12.11.3 for Windows |website=Apple Support|publisher=Apple, Inc.|language=en|url-status=live|access-date=August 8, 2021|url=https://support.apple.com/en-us/HT212319|archive-url=https://web.archive.org/web/20210808112513/https://support.apple.com/en-us/HT212319|archive-date=August 8, 2021}}</ref> for Windows, whereas the "WinCairo" port is a fully open-source and redistributable port.<ref>{{cite web|title=BuildingCairoOnWindows – WebKit|date=June 8, 2021|url=https://trac.webkit.org/wiki/BuildingCairoOnWindows|website=WebKit Trac|publisher=Apple, Inc.|access-date=August 8, 2021|language=en|url-status=live|archive-url=https://web.archive.org/web/20210808103951/https://trac.webkit.org/wiki/BuildingCairoOnWindows|archive-date=August 8, 2021}}</ref><ref>{{cite web|website=GitHub |title=WebKitForWindows/WebKitRequirements: Build scripts for the requirements of the WinCairo port of WebKit|publisher=Apple, Inc.|language=en|url-status=live|access-date=August 8, 2021|url=https://github.com/WebKitForWindows/WebKitRequirements|archive-url=https://web.archive.org/web/20210808113405/https://github.com/WebKitForWindows/WebKitRequirements|archive-date=August 8, 2021}}</ref> | |||
[[File:GNOME Web 47 - gnome.org.png|thumb|[[GNOME Web]] is a web browser on Linux that uses WebKitGTK.]] | [[File:GNOME Web 47 - gnome.org.png|thumb|[[GNOME Web]] is a web browser on Linux that uses WebKitGTK.]] | ||
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,<ref>{{Cite web|url=https://gitlab.gnome.org/World/eolie|title=World / Eolie}}</ref> [[GNOME Web]],<ref name="gtkportweb">{{cite web|url=https://webkitgtk.org/|title=WebKitGTK+ project website|url-status=live|archive-url=https://web.archive.org/web/20170130054419/https://webkitgtk.org/|archive-date=January 30, 2017 | 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,<ref>{{Cite web|url=https://gitlab.gnome.org/World/eolie|title=World / Eolie}}</ref>{{full citation needed|date=October 2025}} [[GNOME Web]],<ref name="gtkportweb">{{cite web|url=https://webkitgtk.org/|title=WebKitGTK+ project website|url-status=live|archive-url=https://web.archive.org/web/20170130054419/https://webkitgtk.org/|archive-date=January 30, 2017}}</ref><ref name="gtkport">{{cite web|url=http://www.atoker.com/blog/2007/06/12/webkitgtk-is-coming/|website=Alp Toker |title=WebKit/Gtk+ is coming|date=June 12, 2007|url-status=live|archive-url=https://web.archive.org/web/20080325050544/http://www.atoker.com/blog/2007/06/12/webkitgtk-is-coming/|archive-date=March 25, 2008}}</ref> [[Adobe Integrated Runtime]], [[Enlightenment Foundation Libraries]] (EFL), and the Clutter toolkit.<ref name="clutterportweb">{{cite web|url=https://trac.webkit.org/wiki/clutter|title=WebKitClutter project website}}</ref> [[Qt Software]] included a WebKit port in the Qt 4.4 release as a module called QtWebKit<ref name="Qt WebKit">{{cite web|url=http://www.qtsoftware.com/products/library/modular-class-library#info_webkit |title=QT WebKit |url-status=dead |archive-url=https://web.archive.org/web/20090803123246/http://www.qtsoftware.com/products/library/modular-class-library |archive-date=August 3, 2009}}</ref> (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<ref>{{cite web |url=http://profusion.mobi/ |title=Home |publisher=ProFusion |access-date=January 13, 2013 |archive-date=June 21, 2021 |archive-url=https://web.archive.org/web/20210621195809/https://profusion.mobi/ |url-status=live }}</ref>) focusing the embedded and mobile systems, for use as stand alone browser, widgets-gadgets, rich text viewer and composer.{{Citation needed|date=February 2014}} The Clutter port is developed by [[Collabora]] and sponsored by [[Robert Bosch GmbH]]. | ||
There was also a project synchronized with WebKit (sponsored by Pleyo)<ref name="pleyo">{{cite web|url=http://www.pleyo.org|title=pleyo|url-status=live|archive-url=https://web.archive.org/web/20080325144513/http://www.pleyo.org/|archive-date=March 25, 2008 | There was also a project synchronized with WebKit (sponsored by Pleyo)<ref name="pleyo">{{cite web|url=http://www.pleyo.org|title=pleyo|url-status=live|archive-url=https://web.archive.org/web/20080325144513/http://www.pleyo.org/|archive-date=March 25, 2008}}</ref>{{nonspecific|reason=Source needs to support the claim that the project was sponsored by Pleyo. A link to their website's home page is not helpful unless it does this|date=October 2025}} 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.<ref name="owb">{{cite web|url=http://www.sand-labs.org/owb|title=Welcome to OWB|website=OWB Trac|url-status=dead|archive-url=https://web.archive.org/web/20080509022705/http://www.sand-labs.org/owb/|archive-date=May 9, 2008}}</ref> This port is used for embedded devices such as [[set-top box]]es and PMP{{explain|date=October 2025}} and it has been ported into [[AmigaOS]],<ref name="owb_AmigaOS3.9">{{cite web |url=http://amigaweb.net/index.php?function=view_news&id=962 |archive-url=https://web.archive.org/web/20080502200402/http://www.amigaweb.net/index.php?function=view_news&id=962 |url-status=usurped |archive-date=May 2, 2008 |title=Origyn Web Browser 1.1 For m68k AmigaOS |date=1 April 2008 |publisher=AmigaWeb.net |access-date=June 2, 2010 }}</ref> [[AROS]],<ref name="owb_AROS">{{cite web|url=http://sszymczy.rootnode.net/index.php?menu=projects&submenu=owb|title=Origyn Web Browser for AROS|website=Cogville|url-status=dead|archive-url=https://web.archive.org/web/20090304120818/http://sszymczy.rootnode.net/index.php?menu=projects&submenu=owb|archive-date=March 4, 2009}}</ref> and [[MorphOS]]. MorphOS version 1.7 is the first version of [[Origyn Web Browser]] (OWB) supporting [[HTML5]] media tags.<ref name=mosport>{{cite web |title=Origyn Web Browser for MorphOS |url=http://fabportnawak.free.fr/owb/ |publisher=Fabian Coeurjoly |access-date=January 4, 2010 |url-status=live |archive-url=https://web.archive.org/web/20100317031009/http://fabportnawak.free.fr/owb/ |archive-date=March 17, 2010}}</ref><ref name=OWB_html5>{{cite web |title=Origyn Web Browser 1.7 Supports HTML5 Media, More |url=http://www.osnews.com/story/22971/Origyn_Web_Browser_1_7_Supports_HTML5_Media_More |website=OSNews |last=Holwerda |first=Thom |date=March 8, 2010 |access-date=March 8, 2010 |url-status=live |archive-url=https://web.archive.org/web/20100312050728/http://www.osnews.com/story/22971/Origyn_Web_Browser_1_7_Supports_HTML5_Media_More |archive-date=March 12, 2010 }}</ref> | ||
==== Web Platform for Embedded ==== | ==== Web Platform for Embedded ==== | ||
'''Web Platform for Embedded (WPE | '''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]]. | ||
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 === | === Forking by Google === | ||
On April 3, 2013, Google announced that it would produce a fork of WebKit's WebCore component, to be named [[Blink (layout engine)|Blink]]. Chrome's developers decided on the fork to allow greater freedom in implementing WebCore's features in the browser without causing conflicts upstream, and to allow simplifying its codebase by removing code for WebCore components unused by Chrome. In relation to [[Opera Software]]'s announcement earlier in the year that it would switch to WebKit by means of the [[Chromium (web browser)|Chromium]] codebase, it was confirmed that the [[Opera (web browser)|Opera web browser]] would also switch to Blink.<ref name=ars-blink>{{cite web|title=Google going its own way, forking WebKit rendering engine|date=April 3, 2013|url=https://arstechnica.com/information-technology/2013/04/google-going-its-own-way-forking-webkit-rendering-engine/| | On April 3, 2013, Google announced that it would produce a fork of WebKit's WebCore component, to be named [[Blink (layout engine)|Blink]]. Chrome's developers decided on the fork to allow greater freedom in implementing WebCore's features in the browser without causing conflicts upstream, and to allow simplifying its codebase by removing code for WebCore components unused by Chrome. In relation to [[Opera Software]]'s announcement earlier in the year that it would switch to WebKit by means of the [[Chromium (web browser)|Chromium]] codebase, it was confirmed that the [[Opera (web browser)|Opera web browser]] would also switch to Blink.<ref name=ars-blink>{{cite web|title=Google going its own way, forking WebKit rendering engine|date=April 3, 2013|url=https://arstechnica.com/information-technology/2013/04/google-going-its-own-way-forking-webkit-rendering-engine/|website=Ars Technica|access-date=April 4, 2013|url-status=live|archive-url=https://web.archive.org/web/20130404014119/http://arstechnica.com/information-technology/2013/04/google-going-its-own-way-forking-webkit-rendering-engine/|archive-date=April 4, 2013}}</ref> Following the announcement, WebKit developers began discussions on removing Chrome-specific code from the engine to streamline its codebase.<ref name=h-webkitchrome>{{cite web|title=WebKit developers planning Chromium extraction|url=http://www.h-online.com/open/news/item/WebKit-developers-planning-Chromium-extraction-1835224.html|website=The H|access-date=April 9, 2013|url-status=live|archive-url=https://web.archive.org/web/20130407033029/http://www.h-online.com/open/news/item/WebKit-developers-planning-Chromium-extraction-1835224.html|archive-date=April 7, 2013}}</ref> WebKit no longer has any Chrome specific code (e.g., buildsystem, V8 JavaScript engine hooks, platform code, etc.).{{Citation needed|date=January 2024|reason=provide a link to release notes, official blog post or similar confirming this}} | ||
== Components == | == Components == | ||
| Line 106: | Line 99: | ||
WebCore is a layout, rendering, and [[Document Object Model]] (DOM) [[Library (computing)|library]] for HTML and [[Scalable Vector Graphics]] (SVG), developed by the WebKit project. Its full source code is licensed under the [[GNU Lesser General Public License]] (LGPL). The WebKit framework wraps WebCore and JavaScriptCore, providing an Objective-C [[application programming interface]] to the [[C++]]-based WebCore rendering engine and JavaScriptCore script engine, allowing it to be easily referenced by applications based on the [[Cocoa API]]; later versions also include a [[cross-platform]] C++ platform abstraction, and various ports provide more APIs.{{Citation needed|date=May 2021}} | WebCore is a layout, rendering, and [[Document Object Model]] (DOM) [[Library (computing)|library]] for HTML and [[Scalable Vector Graphics]] (SVG), developed by the WebKit project. Its full source code is licensed under the [[GNU Lesser General Public License]] (LGPL). The WebKit framework wraps WebCore and JavaScriptCore, providing an Objective-C [[application programming interface]] to the [[C++]]-based WebCore rendering engine and JavaScriptCore script engine, allowing it to be easily referenced by applications based on the [[Cocoa API]]; later versions also include a [[cross-platform]] C++ platform abstraction, and various ports provide more APIs.{{Citation needed|date=May 2021}} | ||
WebKit passes the [[Acid2]] and [[Acid3]] tests, with pixel-perfect rendering and no timing or smoothness issues on reference hardware.<ref>{{cite web |url=https://webkit.org/blog/280/full-pass-of-acid-3/ |title=Full Pass Of Acid3 |access-date=September 29, 2008 |last=Stachowiak |first=Maciej |date=September 25, 2008 |work= | WebKit passes the [[Acid2]] and [[Acid3]] tests, with pixel-perfect rendering and no timing or smoothness issues on reference hardware.<ref>{{cite web |url=https://webkit.org/blog/280/full-pass-of-acid-3/ |title=Full Pass Of Acid3 |access-date=September 29, 2008 |last=Stachowiak |first=Maciej |date=September 25, 2008 |work=WebKit Blog |url-status=live |archive-url=https://web.archive.org/web/20080929003302/http://webkit.org/blog/280/full-pass-of-acid-3/ |archive-date=September 29, 2008}}</ref> | ||
=== JavaScriptCore === | === JavaScriptCore === | ||
JavaScriptCore is a framework that provides a [[JavaScript engine]] for WebKit implementations, and provides this type of scripting in other contexts within macOS.<ref name="annjavascript"/><ref name="webjavascript">{{cite web|url=https://webkit.org/projects/javascript/|title=The WebKit Open Source Project – JavaScript|url-status=live|archive-url=https://web.archive.org/web/20150814004755/http://www.webkit.org/projects/javascript/|archive-date=August 14, 2015 | JavaScriptCore is a framework that provides a [[JavaScript engine]] for WebKit implementations, and provides this type of scripting in other contexts within macOS.<ref name="annjavascript"/><ref name="webjavascript">{{cite web|url=https://webkit.org/projects/javascript/|title=The WebKit Open Source Project – JavaScript|website=WebKit.org|url-status=live|archive-url=https://web.archive.org/web/20150814004755/http://www.webkit.org/projects/javascript/|archive-date=August 14, 2015}}</ref> JavaScriptCore is originally derived from [[KDE]]'s JavaScript library [[KJS (JavaScript engine)|KJS]] (which is part of the KDE project) and the [[PCRE]] [[regular expression]] library. Since forking from KJS and PCRE, JavaScriptCore has been improved with many new features{{Example needed|date=May 2025}} and greatly improved performance.<ref name="javascriptshowdown">{{cite web |first=Jeff |last=Atwood |website=Coding Horror |title=The Great Browser JavaScript Showdown |url=http://www.codinghorror.com/blog/archives/001023.html |date=December 19, 2007 |url-status=dead |archive-url=https://web.archive.org/web/20080906204651/http://www.codinghorror.com/blog/archives/001023.html |archive-date=September 6, 2008}}</ref> | ||
On June 2, 2008, the WebKit project announced they rewrote JavaScriptCore as "SquirrelFish", | On June 2, 2008, the WebKit project announced they rewrote JavaScriptCore as "SquirrelFish",<ref name="Announcing SquirrelFish"/><ref name="SquirrelFish project"/> a [[Register machine|register]]-based [[Interpreter (computing)|bytecode interpreter]] replacing the original AST-walking interpreter. The project later evolved into SquirrelFish Extreme (abbreviated SFX, marketed as Nitro), announced on September 18, 2008, further speeding up JavaScript execution by introducing [[Just-in-time compilation]].<ref name="Introducing SquirrelFish Extreme" /> | ||
An optimizing [[Just-in-time compilation|just-in-time]] (JIT) compiler named ''FTL'' was announced on May 13, 2014.<ref name="ftljit">{{cite news|url=https://webkit.org/blog/3362/introducing-the-webkit-ftl-jit/|title=Introducing the WebKit FTL JIT|newspaper=Webkit |date=May 13, 2014|url-status=live|archive-url=https://web.archive.org/web/20170119202735/https://webkit.org/blog/3362/introducing-the-webkit-ftl-jit/|archive-date=January 19, 2017 | An optimizing [[Just-in-time compilation|just-in-time]] (JIT) compiler named ''FTL'' was announced on May 13, 2014.<ref name="ftljit">{{cite news|url=https://webkit.org/blog/3362/introducing-the-webkit-ftl-jit/|title=Introducing the WebKit FTL JIT|newspaper=Webkit |date=May 13, 2014|url-status=live|archive-url=https://web.archive.org/web/20170119202735/https://webkit.org/blog/3362/introducing-the-webkit-ftl-jit/|archive-date=January 19, 2017}}</ref> It uses [[LLVM]] to generate optimized machine code. "FTL" stands for "Fourth-Tier-LLVM", and unofficially for [[faster-than-light]], alluding to its speed.<ref>{{cite web|url=https://arstechnica.com/information-technology/2014/05/apple-integrates-llvm-compiler-to-boost-webkit-javascript-performance/|title=Apple integrates LLVM compiler to boost WebKit JavaScript performance|website=[[Ars Technica]]|date=May 16, 2014|url-status=live|archive-url=https://web.archive.org/web/20170708093248/https://arstechnica.com/information-technology/2014/05/apple-integrates-llvm-compiler-to-boost-webkit-javascript-performance/|archive-date=July 8, 2017}}</ref> As of February 15, 2016, the backend of FTL JIT is replaced by "Bare Bones Backend" (or B3 for short).<ref>{{cite web|url=https://webkit.org/blog/5852/introducing-the-b3-jit-compiler/|title=Introducing the B3 JIT Compiler|website=WebKit Blog|date=February 15, 2016|url-status=live|archive-url=https://web.archive.org/web/20170503053344/https://webkit.org/blog/5852/introducing-the-b3-jit-compiler/|archive-date=May 3, 2017}}</ref> | ||
== See also == | == See also == | ||
| Line 133: | Line 126: | ||
{{Widget engine}} | {{Widget engine}} | ||
{{Web browsers}} | {{Web browsers}} | ||
{{DEFAULTSORT:Webkit}} | {{DEFAULTSORT:Webkit}} | ||
[[Category:1999 software]] | [[Category:1999 software]] | ||
[[Category:2005 software]] | [[Category:2005 software]] | ||
| Line 147: | Line 140: | ||
[[Category:Software using the BSD license]] | [[Category:Software using the BSD license]] | ||
[[Category:Apple Inc. developed frameworks]] | [[Category:Apple Inc. developed frameworks]] | ||
[[Category:JavaScript engines]] | |||
Latest revision as of 11:13, 19 December 2025
Template:Short description Template:Use mdy dates Template:Use American English
Script error: No such module "Infobox".Template:Template other Script error: No such module "Check for unknown parameters".Script error: No such module "Check for conflicting parameters".
WebKit is a browser engine primarily used in Apple's Safari web browser, as well as all web browsers on iOS and iPadOS. WebKit is also used by the PlayStation consoles starting with the PS3, the Tizen mobile operating systems, the Amazon Kindle e-book reader, Nintendo consoles starting with the 3DS Internet Browser, GNOME Web, and the discontinued BlackBerry Browser.
WebKit started as a fork of the KHTML and KJS libraries from KDE,[1][2] and has since been further developed by KDE contributors, Apple, Google, Nokia,[2] Bitstream, BlackBerry, Sony, Igalia, and others.[3] WebKit supports macOS, Windows, Linux, and various other Unix-like operating systems.[4] On April 3, 2013, Google announced that it had forked WebCore, a component of WebKit, to be used in future versions of Google Chrome under the name Blink.[5][6] Since version 15 in May 2013, Opera web browser has dropped its own Presto layout engine in favor of WebKit as implemented by Google in the Chromium project.
Its JavaScript engine, JavascriptCore, also powers the Bun server-side JS runtime,[7] as opposed to V8 used by Node.js, Deno, and Blink. 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 is open source and available under the BSD 2-Clause license[8][9] with the exception of the WebCore and JavaScriptCore components, which are available under the GNU Lesser General Public License. As of March 7, 2013, WebKit is a trademark of Apple, registered with the United States Patent and Trademark Office.[10]
Origins
The code that would become WebKit began in 1998 as the KDE HTML (KHTML) layout engine and KDE JavaScript (KJS) engine. The WebKit project was started within Apple by Lisa MeltonScript error: No such module "Unsubst". on June 25, 2001,[11] as a fork of KHTML and KJS. Melton explained in an e-mail to KDE developers[1] that KHTML and KJS allowed easier development than other available technologies by virtue of being small (fewer than 140,000 lines of code), cleanly designed and standards-compliant. KHTML and KJS were ported to macOS with the help of an adapter library and renamed WebCore and JavaScriptCore.[1] JavaScriptCore was announced in an e-mail to a KDE mailing list in June 2002, alongside the first release of Apple's changes.[12]
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.[13]
Split development
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.[14] 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".[15] 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.[16] 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.[17]
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.[18] 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.[19]
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.[20]
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.[21]
In July 2007, Ars Technica reported that the KDE team would move from KHTML to WebKit.[22] 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 continued until 2016 before it was officially discontinued in 2023.[23][24]
Open-sourcing
On June 7, 2005, Safari developer Dave Hyatt announced on his weblog that Apple was open-sourcing WebKit (formerly, only WebCore and JavaScriptCore were open source) and opening up access to WebKit's revision control tree and the issue tracker.[20]
In mid-December 2005, support for Scalable Vector Graphics (SVG) was merged into the standard build.[25]
WebKit's JavaScriptCore and WebCore components are available under the GNU Lesser General Public License, while the rest of WebKit is available under the BSD 2-Clause license.[9]
Further development
Script error: No such module "Unsubst". Beginning in early 2007, the development team began to implement Cascading Style Sheets (CSS) extensions, including animation, transitions and both 2D and 3D transforms;[26] such extensions were released as working drafts to the World Wide Web Consortium (W3C) in 2009 for standardization.[27]
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.[28]
On June 2, 2008, the WebKit project announced they rewrote JavaScriptCore as "SquirrelFish", a bytecode interpreter.[29][30] The project evolved into SquirrelFish Extreme (abbreviated SFX), announced on September 18, 2008, which compiles JavaScript into native machine code, eliminating the need for a bytecode interpreter and thus speeding up JavaScript execution.[31] Initially, the only supported processor architecture for SFX was the x86, but at the end of January 2009, SFX was enabled for macOS on x86-64 as it passes all tests on that platform.[32]
WebKit2
On April 8, 2010, a project named WebKit2 was announced to redesign WebKit. Its goal was to abstract the components that provide page layout and rendering cleanly from their surrounding interface or application shell, creating a situation where, "web content (JavaScript, HTML, layout, etc) lives in a separate process from the application UI". This abstraction was intended to make reuse a more straightforward process for WebKit2 than for WebKit. WebKit2 had "an incompatible API change from the original WebKit", which motivated its name change.[33]
The WebKit2 targets were set to Linux, macOS, Windows, GTK, and MeeGo-Harmattan.[34][35] Safari for macOS switched to the new API with version 5.1.[36] Safari for iOS switched to WebKit2 with iOS 8.[37]
The original WebKit API has been renamed WebKitLegacy API.[38] WebKit2 API has been renamed just plain WebKit API.[39]
Use
WebKit is used as the rendering engine within Safari and was used by Google's Chrome web browser on Windows, macOS, and Android (before version 4.4 KitKat). Chrome used only WebCore, and included its own JavaScript engine named V8 and a multiprocess system.[40] Chrome for iOS continues to use WebKit because Apple requires that web browsers on that platform must do so.[41] Other applications on macOS and iOS make use of WebKit, such as Apple's e-mail client Mail, App Store, and the 2008 version of Microsoft's Entourage personal information manager, both of which make use of WebKit to render HTML content.
Installed base
New web browsers have been built around WebKit such as the S60 browser[42] on Symbian mobile phones, BlackBerry Browser (ver 6.0+), Midori, Chrome browser,[43][44] the Android Web browsers before version 4.4 KitKat, and the browser used in PlayStation 3 system software from version 4.10.[45]Script error: No such module "Unsubst". KDE's Rekonq web browser and Plasma Workspaces also use it as the native web rendering engine. WebKit has been adopted as the rendering engine in OmniWeb, iCab and Web (formerly named Epiphany) and Sleipnir, replacing their original rendering engines. GNOME's Web supported both Gecko and WebKit for some time, but the team decided that Gecko's release cycle and future development plans would make it too cumbersome to continue supporting it.[46] webOS uses WebKit as the basis of its application runtime.[47] WebKit is used to render HTML and run JavaScript in the Adobe Integrated Runtime application platform. In Adobe Creative Suite CS5, WebKit is used to render some parts of the user interface. As of the first half of 2010, an analyst estimated the cumulative number of mobile handsets shipped with a WebKit-based browser at 350 million.[48] By mid-April 2015, WebKit browser market share was 50.3%.[49]
Ports
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.[50] The Android mobile phone platform used WebKit (and later versions its Blink fork) as the basis of its web browser[51][52][53] and the Palm Pre, announced January 2009, has an interface based on WebKit.[54] The Amazon Kindle 3 includes an experimental WebKit based browser.[55]
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,[56] WebKit's ports to Microsoft's operating system are still actively maintained.[57][58] The Windows port uses Apple's proprietary libraries to function and is used for iCloud[59] and iTunes[60] for Windows, whereas the "WinCairo" port is a fully open-source and redistributable port.[61][62]
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,[63]Script error: No such module "Unsubst". GNOME Web,[64][65] Adobe Integrated Runtime, Enlightenment Foundation Libraries (EFL), and the Clutter toolkit.[66] Qt Software included a WebKit port in the Qt 4.4 release as a module called QtWebKit[67] (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[68]) focusing the embedded and mobile systems, for use as stand alone browser, widgets-gadgets, rich text viewer and composer.Script error: No such module "Unsubst". The Clutter port is developed by Collabora and sponsored by Robert Bosch GmbH.
There was also a project synchronized with WebKit (sponsored by Pleyo)[69]Script error: No such module "Unsubst". 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.[70] This port is used for embedded devices such as set-top boxes and PMPTemplate:Explain and it has been ported into AmigaOS,[71] AROS,[72] and MorphOS. MorphOS version 1.7 is the first version of Origyn Web Browser (OWB) supporting HTML5 media tags.[73][74]
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
On April 3, 2013, Google announced that it would produce a fork of WebKit's WebCore component, to be named Blink. Chrome's developers decided on the fork to allow greater freedom in implementing WebCore's features in the browser without causing conflicts upstream, and to allow simplifying its codebase by removing code for WebCore components unused by Chrome. In relation to Opera Software's announcement earlier in the year that it would switch to WebKit by means of the Chromium codebase, it was confirmed that the Opera web browser would also switch to Blink.[40] Following the announcement, WebKit developers began discussions on removing Chrome-specific code from the engine to streamline its codebase.[75] WebKit no longer has any Chrome specific code (e.g., buildsystem, V8 JavaScript engine hooks, platform code, etc.).Script error: No such module "Unsubst".
Components
WebCore
WebCore is a layout, rendering, and Document Object Model (DOM) library for HTML and Scalable Vector Graphics (SVG), developed by the WebKit project. Its full source code is licensed under the GNU Lesser General Public License (LGPL). The WebKit framework wraps WebCore and JavaScriptCore, providing an Objective-C application programming interface to the C++-based WebCore rendering engine and JavaScriptCore script engine, allowing it to be easily referenced by applications based on the Cocoa API; later versions also include a cross-platform C++ platform abstraction, and various ports provide more APIs.Script error: No such module "Unsubst".
WebKit passes the Acid2 and Acid3 tests, with pixel-perfect rendering and no timing or smoothness issues on reference hardware.[76]
JavaScriptCore
JavaScriptCore is a framework that provides a JavaScript engine for WebKit implementations, and provides this type of scripting in other contexts within macOS.[12][77] JavaScriptCore is originally derived from KDE's JavaScript library KJS (which is part of the KDE project) and the PCRE regular expression library. Since forking from KJS and PCRE, JavaScriptCore has been improved with many new featuresScript error: No such module "Unsubst". and greatly improved performance.[78]
On June 2, 2008, the WebKit project announced they rewrote JavaScriptCore as "SquirrelFish",[29][30] a register-based bytecode interpreter replacing the original AST-walking interpreter. The project later evolved into SquirrelFish Extreme (abbreviated SFX, marketed as Nitro), announced on September 18, 2008, further speeding up JavaScript execution by introducing Just-in-time compilation.[31]
An optimizing just-in-time (JIT) compiler named FTL was announced on May 13, 2014.[79] It uses LLVM to generate optimized machine code. "FTL" stands for "Fourth-Tier-LLVM", and unofficially for faster-than-light, alluding to its speed.[80] As of February 15, 2016, the backend of FTL JIT is replaced by "Bare Bones Backend" (or B3 for short).[81]
See also
Script error: No such module "Portal".
References
<templatestyles src="Reflist/styles.css" />
- ↑ a b c Cite error: Script error: No such module "Namespace detect".Script error: No such module "Namespace detect".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ a b Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "Citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
- ↑ Script error: No such module "citation/CS1".
Script error: No such module "Check for unknown parameters".
External links
- Script error: No such module "Official website".Script error: No such module "Check for unknown parameters".
- Script error: No such module "Official website".Script error: No such module "Check for unknown parameters". for WebKitGTK
- SunSpider 1.0 JavaScript Benchmark Template:Webarchive
Template:Web browser engines Script error: No such module "Navbox". Script error: No such module "Navbox". Template:Widget engine Script error: No such module "Navbox".
- Pages with script errors
- Pages with reference errors
- Pages using Infobox software with version errors
- Pages with broken file links
- 1999 software
- 2005 software
- Application programming interfaces
- Free layout engines
- Free software programmed in C++
- Mobile software
- Software based on WebKit
- Software forks
- Software that uses Cairo (graphics)
- Software that uses GTK
- Software using the BSD license
- Apple Inc. developed frameworks
- JavaScript engines