我两个月之前的一篇博客《为什么我说Rust是靠谱的编程语言》(下面简称原文),在当中“6. 两个半大型成功案例”一节。我以前写道:

  • Servo: 下一代浏览器渲染引擎(类Webkit/Blink)。超过40万行Rust代码
  • rustc+std: Rust编译器和标准库。超过35万行Rust代码

提供了两大项目的源码行数,却没有明白提供数据来源。本文做补充说明。

Servo官方数据来源

这三个来源都具有非常高的权威性,来源1的主要作者包含了Rust项目负责人Brian Anderson和Servo项目负责人Lars Bergstrom,来源2出自Servo项目的合作方三星Samsung OSG官方博客,来源3是Servo项目的官方博客。

数据都非常新,均是2015年5月或之后数据。三种说法有冲突,可能是统计分类标准不同所导致的。

原文最初版本号採纳了来源1。如今我(Liigo)更倾向于採纳来源3。

综合三种来源,我推測觉得,Servo项目自身——不包含其依赖库——的源码行数大概是15万行,Rust编译器和标准库和Servo依赖的Rust库总共加起来有大约36万行(相应原文所述”超过35万行”)。这样算起来rustc+std也必定远少于36万行。但数据来源似乎没有专门统计这一块。此外也没有专门统计Servo的依赖库(不包含std)代码行数——来源1提到有大概20个Rust库——我觉得这类代码是能够算进Servo项目里面的,那么Servo的代码行数将远超15万。

总之,原文提供的有关两个大型项目源码行数的统计数字可能有反复和错误之处,但在有明白的准确数字出现之前暂不更正。特此说明。Liigo, 2015年7月28日。

Liigo自行统计的数据

考虑到前文所述来源统计中可能有冲突、反复、遗漏之处,我自己又敲代码(loc-rs)统计了一遍,结果是:Rust编译器和标准库代码共约30万行,Servo代码约25万行。详情參见下面表格。

+-------------------+---------------+
| rustc | 180K lines |
+-------------------+---------------|
| rustc | 59K |
| syntax | 38K |
| rustc_trans | 37K |
| rustc_typeck | 26K |
| rustc_resolve | 7K |
| rustc_borrowck | 5K |
| ... | ... |
+-------------------+---------------+
+-------------------+---------------+
| std | 120K lines |
+-------------------+---------------|
| std | 55K |
| core | 26K |
| collections | 19K |
| rustc_unicode | 7K |
| libc | 6K |
| alloc | 4K |
| rand | 3K |
| ... | ... |
+-------------------+---------------+
+-------------------+---------------+
| servro | 250K lines |
+-------------------+---------------|
| servo | 155K |
| serde | 15K |
| regex | 15K |
| rust-mozjs | 14K |
| ipc-channel | 14K |
| hyper | 12K |
| html5ever | 9K |
| ... | ... |
+-------------------+---------------+

作者已依据此处统计的结果对原文相关数据进行了修正。2015年7月30日。Liigo。

最新文章

  1. 《微软互联网信息服务(IIS) 最佳实践》已上市,欢迎选购!
  2. iOS: 如何正确的绘制1像素的线
  3. zepto源码--核心方法2(class相关)--学习笔记
  4. Django实现一个相片管理系统01
  5. lua ipairs
  6. php大力力 [027节] 被百度收录较好的几个视频网站示例
  7. Laravel 5 基础(一)- Laravel入门和新建项目
  8. 加速Android Studio/Gradle构建
  9. tomcat下配置https环境
  10. Mutex 实现进程独占资源
  11. http缓存协议详解
  12. SourceTree 将本地已有的git项目推送到远程git仓库
  13. 深入理解Java常用类-----时间日期
  14. jmeter分布式测试远程连接失败
  15. python 基础之注释变量常量
  16. ssh服务简介及应用与服务的进程的类型
  17. (3)java数据结构--有枚举 属性
  18. eXosip sip
  19. 向量体系结构(2)----SIMD指令集扩展和GPU
  20. IntelliJ IDEA导入Javax包(servlet-api.jar)

热门文章

  1. 基于Solr的HBase实时查询方案
  2. [GraphQL] Apollo React Query Component
  3. ubuntu14.04无法安装Curl
  4. 【POJ 2352】 Stars
  5. C#读出文本文件内容,遍历数组筛选出 含有汉字对应的拼音字符
  6. v-cli环境的安装
  7. 11.MATLAB基本编程
  8. 初探MVC路由
  9. css样式表格边框1px hover时为2px 实现方式
  10. Unity 动画系统(Mecanim) 术语及翻译 表格