Introduction to open-source projects used by Chrome

Source: Internet
Author: User
Tags http authentication image processing library valgrind rsync skia

Enter "about: credits" in the chrome address bar to view the open source project used by Chrome. There is also an article about the open source project of chrome: code reuse in Google Chrome browser. You can refer to it.


David M. Gay's floating point routines Homepage

FP is part of netlib. It is mainly used for floating-point calculation, binary and decimal conversion of numbers, and conversion between strings and floating-point numbers. This kind of library is very important when the program is transplanted to an embedded device. If the library is not transplanted well, it may cause a floating point operation error or the floating point operation may be very slow. The most important functions implemented in this library include strtodd, dtoa, pow5mult, diff, CMP, and lshift. This library of David M. Gay is widely used, such as Apple libc. If the problem of calling dtoa to enter the endless loop occurs when porting the browser, pay special attention to the macro definition when compiling the FP library. One reason chrome uses this library is that the number in JS is double type, so the JS engine must be able to process floating point numbers correctly and quickly. Chromde V8 also implements fastdtoa for faster conversion between strings and floating-point numbers.



Dynamic annotations Homepage

This library is mainly used to detect deadlocks. Another function of this library is to make code detection tools (such as valgrind) smarter and give fewer warnings. For example, the following code implements the multi-threaded secure Singleton mode in chrome:

 // This annotation helps race detectors recognize correct lock-less      // synchronization between different threads calling get().      // See the corresponding HAPPENS_AFTER below and above.      ANNOTATE_HAPPENS_BEFORE(&instance_);      base::subtle::Release_Store(          &instance_, reinterpret_cast<:subtle::atomicword>(newval));      if (Traits::kRegisterAtExit)        base::AtExitManager::RegisterCallback(OnExit, NULL);


Netscape Portable Runtime (NSPR) Homepage

NSPR is a cross-platform library developed by Mozilla. It provides APIs for data type definition, thread, thread synchronization, file, network, time processing, and memory management, an obvious feature of the nspr api is that it starts with PR, such as print32, prthread, and pr_createthread. The relationship between the program and the system is as follows:

NSPR is used by many cross-platform applications. For example, the thread security of spidermonkey depends on NSPR implementation. NSPR is also mentioned in the C ++ cross-platform development technical guide. Chrome only uses the NSPR type definition (prtypes. h) and time processing (prtime. CC). In Chrome, NSPR is mainly used because NSS and npapi depend on it.



Network Security Services (NSS) Homepage

NSS is mainly used to support network security, such as SSL protocol, S/MIME, and some encryption algorithms (such as SSL, TLS, and PKCS ). NSS is similar to OpenSSL. It is larger than OpenSSL and relies more on OpenSSL. However, NSS supports PKCS #11 and can be used for Smart Card encryption. Since NSS is used, Chrome does not need to use OpenSSL.



Purify headers Homepage

Rational purify is an IBM automated testing tool mainly used to detect memory-related errors.



Google-glog's symbolization Library homepage

Google-glog is mainly used for logging. Similar projects include log4cpp, which corresponds to log4j in Java. Google-glog is widely used in Google projects, such as Google-breakpad (a project for crash reporting, with a on the server side), when chrome displays the following dialog box, it was detected by Google-breakpad.



Valgrind Homepage

Valgrind is a software development tool for memory debugging, memory leak detection, and performance analysis. Google is doing a good job in testing. Not only are there many testing tools, but most CC files have corresponding test code. Generally, it is in the same directory as the CC file and its name is



Xdg-mime Homepage

Xdg-Mime is a tool used to determine the file type (MIME information) based on the file name and file.


Xdg-user-dirs Homepage

Xdg-user-dirs is a tool used on Linux to manage desktop folders, my music, my images, and other folders. Chrome uses this function when setting the chrome download folder on Linux.


Bsdiff Homepage

Bsdiff is a binary comparison tool with bspatch. Tools such as SVN diff can only compare files such as text, rather than binary files.

What does chrome do with bsdiff? For chrome automatic upgrade, see: Software Updates: courgette. extract one of them to see the effect.

Here are the sizes in bytes for the recent 190.1-> 190.4 update on the developer channel:

Full update 10,385,920

Bsdiff update 704,512

Courgette update 78,848

There are also some other binary algorithms, such as rsync, which is very useful when Synchronizing files. The Dropbox synchronization algorithm is also rsync. Automatic Upgrade is actually a synchronization operation.



Xz utils Homepage

Xz utils is a compression tool that relies on lzma SDK (7z also uses this. Chrome uses xz utils to compress the chrome installer.



Google-jstemplate Homepage

Google-jstemplate is a JS template processing library and is suitable for Ajax programs, a bit like struts. There is an introduction PPT at



Launchpad translations Homepage

Launchpad translations are files supported by chrome in multiple languages. Chrome mainly uses grit (Google resource and internationalization tool) to compile xtb and GRB files into H files and then put them in the resource file (. Rc. For more details about language support, refer to NLP.



Mozilla personal security manager Homepage

Mozilla personal security manager is mainly used for Certificate Management in Linux. For more information, see Windows is similar to the following:


Gssapi Homepage

Gssapi is short for generic security services application program interface. It provides application interfaces that allow applications to access security services. Its related technologies include radius, SASL, TLS, and sspi. For Security Authentication Authorization negotiation, chrome on Windows uses the sspi (Security Support Provider Interface) provided by secur32.dll, while gssapi on Linux. For more information about HTTP authentication, see:



Google toolbox for Mac Homepage

It is mainly used for chrome implementation on Mac. Of course, Google toolbox for Mac is not just for chrome, but also for Google's other products on iPhone and Mac.


WebKit Homepage

WebKit is the core of chrome.


ActiveX Scripting SDK Homepage

It is not clear what Chrome does with ActiveX Scripting SDK, nor does it find the relevant code in chrome. It may be related to plug-ins and is used to support object tags.



Almost native graphics layer engine Homepage

Angle. Chrome uses angle to implement webgl with DirectX 9. Why does chrome not use OpenGL? The reason is that Windows OpenGL versions are not Binary compatible. Microsoft's explanation is at, and the handler is incompatible with the OpenGL program binary level, but is compatible with the source code level. That is to say, an OpenGL program must be able to run on a specific version of Windows, it must be re-compiled on that platform. In addition, the degree to which OpenGL is supported by different graphics card drivers is not nearly the same. The real standard for 3D programming on Windows is DirectX, which means Chrome must use webgl to implement weebgl (as does Safari ). The war between DirectX and OpenGL is a battle between IE and Netscape. For details, refer to OpenGL is the main 3D API on Linux and Mac OS, so there is no problem.


Apple sample code Homepage

There are many documents and examples in Apple's Developer Center, which is equivalent to Microsoft's msdn website. For programming on Mac and iPhone, refer to. HTML5 developers can also take a look at there are many HTML5 demos for Apple. Apple's open source project is also in it (, ). In addition, many people complain that WebKit has no documentation. In fact, Apple has written many documents about WebKit, such as WebKit objective-C Programming Guide.


Darwin Homepage

Darwin is an open-source operating system of Apple Computer. The relationship between Apple and open-source is interesting. You can refer to "Apple's other side: Open-Source Software Town" written by Liu Jiang.


Bsdiff Homepage

The previously mentioned bsdiff algorithm implemented by Mozilla.


Bspatch Homepage

The bspatch algorithm previously mentioned by Mozilla.


Bzip2 Homepage

Another compression algorithm has a higher compression ratio than gzip. Bzip2 is mainly used to support content codings in HTTP. Content codings supported by chrome are often changing. For details, refer to Google Chrome's support for Bzip2 compression and Chrome's support for SDCh compression, bzip2 compression is no longer supported. In chrome 13, chrome supports gzip, deflate, and SDCh, but does not support Bzip2 compression.


Google cache invalidation API Homepage

Used for chrome Cache Management. Chrome uses disk cache to implement cache. You must use tools such as chrome cache viewer to view files generated by disk cache.



Compact language detection Homepage

It is mainly used to detect the language used for chrome spelling checks. For more details, see


Codesighs Homepage

Another code detection tool, Mozilla's. The document is at The main component is the size of the detection code.


Expat Homepage

An XML parsing library is similar to libxml, but it is lightweight than libxml.



FFmpeg Homepage

It is mainly used for audio and video processing, such as recording and conversion. Some software has the ability to convert videos from PCs to videos on mobile phones. Many of them use FFMPEG. For example, this is what the pods do. Chome uses this library to support HTML video and audio.



OpenGL ES 2.0 programming guide Homepage

OpenGL teaching material.


OpenGL ES 2.0 conformance tests Homepage

OpenGL compatibility test.



GPSD Homepage

A gps service is mainly used to obtain geographical locations. HTML5 has an API for obtaining the address location (geolocation). For details, refer to http://dive? GPSD is used to implement HTML5 geolocation on Linux.



Harfbuzz Homepage

Used for text rendering, not familiar. I found several good articles when searching for harfbuzz related technologies: chatting about the recent development of text rendering technology, how browsers render texts, and the geometric center of Chinese characters.


Hunspell Homepage

A spelling check library. Many software use this library for spelling checks, such as libreoffice, OpenOffice, and Firefox.


Hunspell dictionaries Homepage

Hunspell dictionary.


Hyphen-2.6 Homepage

It is mainly used to process the concatenation in hunspell spelling detection.


Iaccessible2 com interfaces for accessibility Homepage

Some features for disabled users on Windows.


Iccjpeg Homepage

It is used to process JPEG images.


ICU Homepage

I18n processing. ICU is the largest one with a size of about 12 Mb. If you only need to support several specific languages, you can use generate a small icu.


Chinese and Japanese word list Homepage

Text and text, part of ICU.


Isimpledom com interfaces for accessibility Homepage

It is used for persons with disabilities and detailed descriptions are provided in the link.


Jemalloc Homepage

A malloc implementation is mainly used on Firefox, which is faster than the malloc in libc.


Lcov Homepage

The following figure shows the code coverage test tool:



Libevent Homepage

Libevent is an asynchronous event processing software library. You should be familiar with Server programming. Many servers use libevent to solve the c10k problem. Chrome uses the flip server, which can be used to implement the spdy protocol. Spdy is a new protocol developed by Google. It is more efficient than HTTP and can be used for Google.


Libjingle Homepage

Library for implementing video chat and P2P functions in Gtalk. Gtalk uses the XMPP protocol, but XMPP does not support file transfer and video chat. Google developed one by itself and has now become a recommended extension of the XMPP Standard. What Should chrome do with this? Used to synchronize bookmarks. The P2P API that Chrome is currently working on is also based on this library.


Libjpeg Homepage

JPEG processing Library


Libjpeg-Turbo Homepage

Use MMX, SSE, and sse2 SIMD commands to accelerate JPEG processing.


Libpng Homepage

PNG Image Processing Library


Libsrtp Homepage

Libsrtp is a library that implements the SRTP protocol (secure real-time transport protocol, secure real-time transmission protocol. Chrome's WebRTC is implemented based on the SRTP protocol, and libjingle also uses libsrtp.


Libvpx Homepage

Libvpx is an open-source webm (Vp8) decoder. webm is a project funded by Google to build an open, copyright-free video file format. This video file format can provide high-quality video compression for HTML 5.



Libwebpdecode Homepage

In contrast to webm, webp is a new image format developed by Google. It is lossy compression, and the image file size is reduced by 39% on average compared with the JPEG format.


Libxml Homepage

XML parsing library, which must be used by WebKit.


Libxslt Homepage

Used for XSLT processing and WebKit.


Lzma SDK Homepage

7z SDK, used to compress the installation package.


Mesalib Homepage

3D graphics library, an implementation of OpenGL.


Modp base64 decoder Homepage

Used for base64 decoding. It is useful when processing data protocols.


Nsbezierpath additions from Sean Patrick O 'Brien Homepage

It is used for processing rounded rectangle and shadow on Mac OS.


Mongoose Homepage

A Web server.


Cocoa extension code from Camino Homepage

Camino is an open-source browser on Mac OS X. For more information about chrome extension on Mac, see Camino.


Npapi Homepage

WebKit and Firefox plug-in APIs.


Ocmock Homepage

Mock object library is used for testing on Mac.


Openmax il Homepage

Framework Standards for multimedia applications.


OpenSSL Homepage

Software packages that implement SSL and related encryption technologies.


OTs (OpenType sanitizer) Homepage

OpenType is a scalable font that replaces TrueType. OTS is used to process OpenType fonts.


Pdfsqueeze Homepage

PDF File Processing on MAC system.


Ppapi Homepage

The new plug-in API has been improved much better than the npapi.


Protobuf Homepage

A serialization protocol, which is described on the Internet.


Pyftpdlib Homepage

Python FTP server library.


Pywebsocket Homepage

Python-based websocket server is used to test websocket.


Qcms Library homepage

For more information about color management, see http://muizel)


Google safe browsing Homepage

For Google safe browsing, you can see the following figure for what security browsing is:


Simplejson Homepage

JSON processing.


Skia Homepage

Skia is used for Android and chrome.


Speex Homepage

It is used to compress the voice and has a high compression rate for the human voice.


SQLite Homepage

A local database is used to implement the database API in HTML5.


Swig Homepage

It is mainly used to call C/C ++ in Perl, PHP, Python, Java, and other languages. swig can generate Perl, PHP, and python for C/C ++ code, java and other language wrapper code. This is more advanced than how Java generates JNI code.


Talloc Homepage

Memory Pool.


Tcmalloc Homepage

The implementation of malloc is extremely fast.


Tlslite Homepage

Python library for implementing SSL 3.0, TLS 1.0, and TLS 1.1


Undoview Homepage

GTK + extension, used to support undo and highlight of invalid number of text edit boxes.


WebDriver Homepage

Web application testing tool.


Wtl 8.0 Homepage

Windows template library and chrome UI controls on windows are developed on this basis, that is, chrome UI = skia + wtl on Windows.


Xdg-utils Homepage

Xdgutils is a series of tools on Linux, including the xdg-mime mentioned above.


XUL runner SDK Homepage

It is mainly used for development of XPCOM.


Yasm Homepage

NASM assembler.


Zlib Homepage

Compress and decompress the database.


Strongtalk Homepage

Strongtalk is a variant of smalltalk and uses an optimized type system. Strongtalk uses the type feedback technology to speed up running. For more information, see V8 in chrome uses strongtalk javaser. You can refer to the reason why V8 JavaScript Engine is fast.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.