chrome使用的开源工程介绍

在chrome地址栏输入about:credits就可以看到chrome使用的开源工程了,之前也有一篇介绍chrome开源工程的文章:Code Reuse in Google Chrome Browser,大家可以参考一下。   David M. Gays floating point routines homepage fp是netlib的一部分,主要用于浮点数运算,数的二进制与十进制的
摘要由CSDN通过智能技术生成

在chrome地址栏输入about:credits就可以看到chrome使用的开源工程了,之前也有一篇介绍chrome开源工程的文章:Code Reuse in Google Chrome Browser,大家可以参考一下。

 

David M. Gay's floating point routines homepage

fp是netlib的一部分,主要用于浮点数运算,数的二进制与十进制的转换以及字符串和浮点数之间的转换等。这种库在程序移植到嵌入式设备时非常重要,如果移植的不好,可能出现浮点运算错误,或者在进行浮点运算时非常慢的问题。这个库里面实现的比较重要的函数有:strtod,dtoa,pow5mult,diff,cmp,lshift等。David M. Gay的这个库被广泛使用,例如Apple Libc也是使用的这个。如果在移植浏览器时出现调用dtoa进入死循环的问题,就需要特别注意编译fp库时的宏定义了。chrome用这个库的一个原因是js里面的Number都是double类型的,所以js引擎必须能够正确和快速的处理浮点数。chromde的V8还实现了FastDtoa用来更快速地处理字符串和浮点数之间的转换。

 

 

dynamic annotations homepage

这个库主要用来检测死锁的。这个库的另外一个作用是来让代码检测工具(例如valgrind)智能点,并少报一些警告。例如下面是chrome里面实现多线程安全singleton模式的一段代码:

 // 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
  
  
   
   (newval));

      
   
   if (Traits::kRegisterAtExit)
        base::AtExitManager::RegisterCallback(OnExit, NULL);
  
  

 


Netscape Portable Runtime (NSPR) homepage

NSPR是Mozilla开发的一个跨平台库,它主要提供了类型定义,线程,线程同步,文件,网络,时间处理,内存管理等的API,NSPR API比较明显的一个特征是以PR开头,例如PRInt32,PRThread,PR_CreateThread。它在程序和系统之间的关系如下图:

NSPR被很多跨平台应用使用着,例如SpiderMonkey的线程安全就是依赖NSPR实现的,《C++跨平台开发技术指南》这本书里面也提到了NSPR。chrome只是用到了NSPR的类型定义(prtypes.h)和时间处理(prtime.cc),chrome里面用NSPR主要是因为NSS和NPAPI依赖其的缘故。

 

 

Network Security Services (NSS) homepage

NSS主要用来支持网络安全,例如SSL协议,S/MIME,一些加密算法(SSL,TLS,PKCS等)。NSS是和OpenSSL差不多的东西,它比OpenSSL大,依赖的也比OpenSSL多,但是它支持PKCS #11,可以用于智能卡的加密。既然用了NSS,Chrome也就没必要用OpenSSL了。

 

 

purify headers homepage

Rational Purify是一个IBM出的自动化测试工具,主要用来检测内存相关的错误。

 

 

google-glog's symbolization library homepage

google-glog主要用于日志记录,类似的工程有log4cpp,java中对应的叫做log4j。google-glog在google的工程中被广泛使用,例如google-breakpad(一个用于崩溃报告的项目,对应的服务端有http://code.google.com/p/socorro/),当chrome出现下面的对话框时,就是google-breakpad检测出来的。

 

 

valgrind homepage

Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。google的测试工作做的挺好的,不但测试工具多,而且大部分cc文件都有对应的测试代码,一般和cc文件处于同级目录,名字叫做xxxxx_unittest.cc。

 

 

xdg-mime homepage

xdg-mime是一个根据文件名和文件内来判断文件类型(mime信息)的工具。

 

xdg-user-dirs homepage

xdg-user-dirs是一个用于linux平台上管理桌面文件夹,我的音乐,我的图片等文件夹的工具。chrome在linux上设置chrome下载文件夹时用到了此功能。

 

BSDiff homepage

BSDiff是一个二进制比较工具,对应的还有bspatch。像svn diff这种工具只能比较文本等文件,而不能比较二进制文件。

chrome用BSDiff干什么呢?用来chrome的自动升级,具体请参考:Software Updates: Courgette,摘取其中一段来看看效果

Here are the sizes in bytes

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值