WebKit

Source: Wikipedia, the free encyclopedia.

WebKit
Initial releaseNovember 4, 1998; 25 years ago (1998-11-04) (KHTML released)
June 7, 2005; 19 years ago (2005-06-07) (WebKit sourced)
Preview release
Nightly[3]
Repositorygithub.com/WebKit/WebKit
Written inC++[4]
Operating systemmacOS, iOS, Linux,[5] Microsoft Windows[6][7]
TypeBrowser engine
LicenseLGPLv2.1 (rendering engine, JavaScript engine), BSD 2-Clause (additional contributions from Apple)[8]
Websitewebkit.org

WebKit is a

BlackBerry Browser
.

Its

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

KJS libraries from KDE,[1][10] and has since been further developed by KDE contributors, Apple, Google, Nokia,[10] Bitstream, BlackBerry, Sony, Igalia, and others.[11] WebKit supports macOS, Windows, Linux, and various other Unix-like operating systems.[12] 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.[13][14]

WebKit is open source and available under the BSD 2-Clause license[15][8] 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 U.S. Patent and Trademark Office.[16]

Origins

The code that would become WebKit began in 1998 as the KDE HTML (

lines of code), cleanly designed and standards-compliant. KHTML and KJS was 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.[19]

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.[20]

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.[21] 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".[22] 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.[23] 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.[24]

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.[25] 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.[26]

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.[27]

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.[28]

In July 2007, Ars Technica reported that the KDE team would move from KHTML to WebKit.[29] 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.[30]

Open-sourcing

On June 7, 2005, Safari developer

revision control tree and the issue tracker.[27]

In mid-December 2005, support for

Scalable Vector Graphics (SVG) was merged into the standard build.[31]

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.[8]

Further development

Beginning in early 2007, the development team began to implement

animation, transitions and both 2D and 3D transforms;[32] such extensions were released as working drafts to the World Wide Web Consortium (W3C) in 2009 for standardization.[33]

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.[34]

On June 2, 2008, the WebKit project announced they rewrote JavaScriptCore as "SquirrelFish", a bytecode interpreter.[35][36] 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.[37] 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.[38]

WebKit2

On April 8, 2010, a project named WebKit2 was announced to redesign WebKit. Its goal was to abstract the components that provide web 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.[39]

The WebKit2 targets were set to Linux, macOS, Windows, GTK, and MeeGo-Harmattan.[40][41] Safari for macOS switched to the new API with version 5.1.[42] Safari for iOS switched to WebKit2 with iOS 8.[43]

The original WebKit API has been renamed WebKitLegacy API.[44] WebKit2 API has been renamed just plain WebKit API.[45]

Use

Usage share of web browsers according to StatCounter

WebKit is used as the rendering engine within

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

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.[54] By mid-April 2015, WebKit browser market share was 50.3%.[55]

Ports

The week after Hyatt announced WebKit's open-sourcing, Nokia announced that it had ported WebKit to the

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.[56] The Android mobile phone platform used WebKit (and later versions its Blink fork) as the basis of its web browser[57][58][59] and the Palm Pre, announced January 2009, has an interface based on WebKit.[60] The Amazon Kindle 3 includes an experimental WebKit based browser.[61]

In June 2007, Apple announced that WebKit had been ported to Microsoft Windows as part of Safari. Although Safari for Windows was silently discontinued[62] by the company, WebKit's ports to Microsoft's operating system are still actively maintained.[63][64] The Windows port uses Apple's proprietary libraries to function and is used for iCloud[65] and iTunes[66] for Windows, whereas the "WinCairo" port is a fully open-source and redistributable port.[67][68]

GNOME Web is a major web browser on Linux that uses WebKitGTK.

WebKit has also been ported to several toolkits that support multiple platforms, such as the

Robert Bosch GmbH
.

There was also a project synchronized with WebKit (sponsored by Pleyo)

AROS[79] and MorphOS. MorphOS version 1.7 is the first version of Origyn Web Browser (OWB) supporting HTML5 media tags.[80][81]

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

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.[46] Following the announcement, WebKit developers began discussions on removing Chrome-specific code from the engine to streamline its codebase.[82] WebKit no longer has any Chrome specific code (e.g., buildsystem, V8 JavaScript engine hooks, platform code, etc.).[citation needed
]

Components

WebCore

WebCore is a layout, rendering, and

cross-platform C++ platform abstraction, and various ports provide more APIs.[citation needed
]

WebKit passes the Acid2 and Acid3 tests, with pixel-perfect rendering and no timing or smoothness issues on reference hardware.[83]

JavaScriptCore

JavaScriptCore is a framework that provides a

PCRE regular expression library. Since forking from KJS and PCRE, JavaScriptCore has been improved with many new features and greatly improved performance.[85]

On June 2, 2008, the WebKit project announced they rewrote JavaScriptCore as "SquirrelFish", a bytecode interpreter.[35][36] The project evolved into SquirrelFish Extreme (abbreviated SFX, marketed as Nitro), announced on September 18, 2008 further speeding up JavaScript execution.[37]

An optimizing just-in-time (JIT) compiler named FTL was announced on May 13, 2014.[86] It uses LLVM to generate optimized machine code. "FTL" stands for "Fourth-Tier-LLVM", and unofficially for faster-than-light, alluding to its speed.[87] As of February 15, 2016, the backend of FTL JIT is replaced by "Bare Bones Backend" (or B3 for short).[88]

See also

References

  1. ^ a b c d "'(fwd) Greetings from the Safari team at Apple Computer' – MARC". Lists.kde.org. January 7, 2003. Archived from the original on February 9, 2015. Retrieved May 2, 2017.
  2. ^ "Safari is released to the world". Donmelton.com. Retrieved January 13, 2013.
  3. ^ "WebKit Nightly Builds". WebKit.org. Archived from the original on April 3, 2016. Retrieved May 27, 2014.
  4. ^ "Code Style Guidelines". WebKit.org. Apple, Inc. November 7, 2015. Archived from the original on May 1, 2017. Retrieved May 2, 2017.
  5. ^ "WebKit Download". March 30, 2016. Retrieved August 14, 2018.
  6. ^ "WebKit on Windows | WebKit". WebKit.org. Apple, Inc. November 7, 2015. Archived from the original on August 8, 2021. Retrieved August 8, 2021.
  7. ^ "BuildingCairoOnWindows – WebKit". trac.webkit.org. Apple, Inc. June 8, 2021. Archived from the original on August 8, 2021. Retrieved August 8, 2021.
  8. ^ a b c Licensing WebKit | WebKit
  9. ^ Omolana, Timilehin (August 2, 2022). "What Is Bun.js and Why Is the JavaScript Community Excited About It?". makeuseof.com. Retrieved May 30, 2023.
  10. ^ a b "The WebKit Open Source Project". Archived from the original on April 10, 2012. Retrieved April 7, 2012.
  11. ^ Stachowiak, Maciej (November 9, 2008). "Companies and Organizations that have contributed to WebKit". WebKit Wiki. Retrieved November 17, 2008.
  12. ^ "The WebKit Open Source Project – Getting the Code". Webkit.org. Archived from the original on March 6, 2016. Retrieved December 27, 2010.
  13. ^ Barth, Adam (April 3, 2013). "Chromium Blog: Blink: A rendering engine for the Chromium project". Blog.chromium.org. Archived from the original on April 4, 2013. Retrieved June 14, 2013.
  14. ^ Lawson, Bruce (April 3, 2013). "Bruce Lawson's personal site: Hello Blink". Brucelawson.co.uk. Retrieved June 14, 2013.
  15. ^ "Open Source – WebKit". Apple. Archived from the original on March 11, 2009. Retrieved March 5, 2009.
  16. ^ Purcher, Jack (March 7, 2013). "Apple's "WebKit" is now a Registered Trademark in the US". Patently Apple. Archived from the original on March 9, 2013. Retrieved March 7, 2013.
  17. ^ Melton, Don (August 25, 2011). "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". Twitter. Archived from the original on April 20, 2021. Retrieved October 13, 2011.
  18. ^ Henry, Charlotte (June 25, 2021). "Happy 20th Birthday, Safari and Webkit!". The Mac Observer. Retrieved August 12, 2023.
  19. ^ a b Stachowiak, Maciej (June 13, 2002). "JavaScriptCore, Apple's JavaScript framework based on KJS". kde-darwin (Mailing list). Archived from the original on March 10, 2007. Retrieved August 21, 2008.
  20. ^ "Safari and KHTML again". kdedevelopers.org. April 30, 2005. Archived from the original on March 3, 2006. Retrieved February 20, 2010.{{cite web}}: CS1 maint: unfit URL (link)
  21. ^ "So, when will KHTML merge all the WebCore changes?". kdedevelopers.org. Archived from the original on May 29, 2010. Retrieved February 20, 2010.{{cite web}}: CS1 maint: unfit URL (link)
  22. ^ "The bitter failure named 'safari and khtml'". Archived from the original on April 15, 2015.
  23. ^ "Open-source divorce for Apple's Safari?". Archived from the original on July 7, 2009.
  24. ^ "WebCore open source changes". Archived from the original on May 27, 2016. Retrieved May 14, 2016.
  25. ^ "WebCore – KHTML – Firefox: Know your facts!". Archived from the original on February 10, 2009.{{cite web}}: CS1 maint: unfit URL (link)
  26. ^ "Konqueror now passes Acid2". Archived from the original on June 21, 2017.
  27. ^ a b Molkentin, Daniel (June 7, 2005). "Apple Opens WebKit CVS and Bug Database". KDE News. Archived from the original on July 15, 2009. Retrieved January 16, 2007.
  28. ^ "Ars at WWDC: Interview with Lars Knoll, creator of KHTML". June 12, 2007. Archived from the original on May 31, 2008.
  29. ^ Unrau, Troy (July 23, 2007). "The unforking of KDE's KHTML and WebKit". Ars Technica. Archived from the original on September 30, 2007. Retrieved July 30, 2007.
  30. ^ "KDE Development Platform 4.5.0 gains performance, stability, new high-speed cache and support for WebKit". Archived from the original on March 14, 2011.
  31. ^ "Next Generation KDE Technologies Ported to WebCore". July 10, 2005. Archived from the original on October 13, 2007.
  32. ^ "CSS Transforms". Webkit. October 26, 2007. Archived from the original on January 13, 2017.
  33. ^ "CSS3 Animations". Archived from the original on February 21, 2009.
  34. ^ Koivisto, Antti (November 12, 2007). "HTML5 Media Support". Surfin' Safari blog. Archived from the original on January 13, 2017.
  35. ^ a b "Announcing SquirrelFish". June 2, 2008. Archived from the original on January 27, 2017.
  36. ^ a b "SquirrelFish project".
  37. ^ a b "Introducing SquirrelFish Extreme". September 18, 2008. Archived from the original on November 26, 2016.
  38. ^ "Changeset 40439 – WebKit". Trac.webkit.org. January 30, 2009. Retrieved December 27, 2010.
  39. ^ "WebKit2 wiki". Webkit.org. Retrieved August 3, 2012.
  40. ^ "Announcing WebKit2". Webkit.org. April 8, 2010. Archived from the original on April 23, 2011. Retrieved December 27, 2010.
  41. ^ "Introducing the Nokia N9: all it takes is a swipe! |Nokia Conversations – The official Nokia Blog". Nokia Corporation. Archived from the original on June 24, 2011. Retrieved June 21, 2011.
  42. ^ "Source code repository for public parts of Safari 5.1". The WebKit Open Source Project. Retrieved July 20, 2011.
  43. ^ "WWDC 2014 Session 206 - Introducing the Modern WebKit API - ASCIIwwdc". Archived from the original on December 13, 2014. Retrieved December 13, 2014.
  44. ^ "132399 – Move the legacy WebKit API into WebKitLegacy.framework and move it inside WebKit.framework". Webkit.org.
  45. ^ "Renaming Directories and Project Files to Match Framework Names". Webkit.org. July 10, 2017.
  46. ^ "App Store Review Guidelines".
  47. ^ "Nokia S60 Webkit Browser". Nokia. Archived from the original on December 6, 2005.
  48. ^ "Google Chrome, Google's Browser Project". Archived from the original on September 2, 2008.
  49. ^ "Comic describing the Google Chrome Project". Archived from the original on September 3, 2008.
  50. ^ "PS3、ファームウェアv4.10からWebKitへ。 - あまたの何かしら。". D.hatena.ne.jp. February 8, 2012. Archived from the original on October 14, 2012. Retrieved January 13, 2013.
  51. ^ "Epiphany Mailing list – Announcement: The Future of Epiphany". Archived from the original on February 14, 2012.
  52. ^ Chen, Brian X. "HP Launches WebOS-Powered Tablet, Phones | Gadget Lab". Wired. Archived from the original on April 10, 2014. Retrieved January 13, 2013.
  53. ^ "100 Million Club (H1 2010 update)". VisionMobile. Archived from the original on March 1, 2011. Retrieved March 1, 2011.
  54. ^ "StatCounter". StatCounter. Archived from the original on May 26, 2012. Retrieved April 14, 2015.
  55. ^ Stachowiak, Maciej (January 10, 2007). "The Obligatory iPhone Post". Surfin' Safari weblog. Archived from the original on February 19, 2008. Retrieved January 24, 2008.
  56. ^ "Android Uses WebKit". Archived from the original on January 13, 2017. Retrieved January 12, 2017.
  57. ^ "WebKit in the News". WebKit. November 13, 2007. Retrieved November 17, 2018.
  58. ^ "The Amazing Rise of WebKit Mobile". gigaom.com. November 13, 2007. Retrieved November 17, 2018.
  59. ^ "Palm Pre in-depth impressions, video, and huge hands-on gallery". January 9, 2009. Archived from the original on January 13, 2017.
  60. ^ Topolsky, Joshua (July 28, 2010). "New Amazon Kindle announced: $139 WiFi-only version and $189 3G model available August 27th in the US and UK". Archived from the original on January 13, 2017.
  61. ^ Lex Friedman (July 26, 2012). "Safari 6 available for Mountain Lion and Lion, but not Windows". macworld.com. International Data Group. Archived from the original on August 8, 2021. Retrieved August 8, 2021.
  62. ^ "Buildbot: builder Apple-Win-10-Debug-Build". build.webkit.org. Apple, Inc. Archived from the original on August 8, 2021. Retrieved August 8, 2021.
  63. ^ "Buildbot: builder WinCairo-64-bit-WKL-Release-Build". build.webkit.org. Apple, Inc. Archived from the original on August 8, 2021. Retrieved August 8, 2021.
  64. ^ "About the security content of iCloud for Windows 12.3 - Apple Support". support.apple.com. Apple, Inc. Archived from the original on August 8, 2021. Retrieved August 8, 2021.
  65. ^ "About the security content of iTunes 12.11.3 for Windows - Apple Support". support.apple.com. Apple, Inc. Archived from the original on August 8, 2021. Retrieved August 8, 2021.
  66. ^ "BuildingCairoOnWindows – WebKit". trac.webkit.org. Apple, Inc. June 8, 2021. Archived from the original on August 8, 2021. Retrieved August 8, 2021.
  67. ^ "GitHub - WebKitForWindows/WebKitRequirements: Build scripts for the requirements of the WinCairo port of WebKit". github.com. Apple, Inc. Archived from the original on August 8, 2021. Retrieved August 8, 2021.
  68. ^ "World / Eolie".
  69. ^ "WebKitGTK+ project website". Archived from the original on January 30, 2017.
  70. ^ "Alp Toker – WebKit/Gtk+ is coming". June 12, 2007. Archived from the original on March 25, 2008.
  71. ^ "WebKitClutter project website".
  72. ^ "QT WebKit". Archived from the original on August 3, 2009.
  73. ^ "ProFusion | Home". Profusion.mobi. Retrieved January 13, 2013.
  74. ^ "pleyo". Archived from the original on March 25, 2008.
  75. ^ "See OWB forge". Archived from the original on May 9, 2008.
  76. ^ "AmigaOS OWB official page".
  77. ^ "Amiga – Powering through, dead or alive!". amigaweb.net. Archived from the original on May 2, 2008. Retrieved June 2, 2010.
  78. ^ "AROS OWB developer page". Archived from the original on March 4, 2009.
  79. ^ "Origyn Web Browser for MorphOS". Fabian Coeurjoly. Archived from the original on March 17, 2010. Retrieved January 4, 2010.
  80. ^ Holwerda, Thom (March 8, 2010). "Origyn Web Browser 1.7 Supports HTML5 Media, More". OSNews. Archived from the original on March 12, 2010. Retrieved March 8, 2010.
  81. ^ "WebKit developers planning Chromium extraction". The H. Archived from the original on April 7, 2013. Retrieved April 9, 2013.
  82. ^ Stachowiak, Maciej (September 25, 2008). "Full Pass Of Acid3". Surfin' Safari – The WebKit Blog. Archived from the original on September 29, 2008. Retrieved September 29, 2008.
  83. ^ "The WebKit Open Source Project – JavaScript". Archived from the original on August 14, 2015.
  84. ^ "The Great Browser JavaScript Showdown". December 19, 2007. Archived from the original on September 6, 2008.
  85. ^ "Introducing the WebKit FTL JIT". Webkit. May 13, 2014. Archived from the original on January 19, 2017.
  86. ^ "Apple integrates LLVM compiler to boost WebKit JavaScript performance". May 16, 2014. Archived from the original on July 8, 2017.
  87. ^ "Introducing the B3 JIT Compiler". February 15, 2016. Archived from the original on May 3, 2017.

External links

This page is based on the copyrighted Wikipedia article: WebKit. Articles is available under the CC BY-SA 3.0 license; additional terms may apply.Privacy Policy