关于Servo项目中Rust代码行数的数据来源

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

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

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

Servo官方数据来源

  • 来源1“Experience Report: Developing the Servo Web Browser Engine using Rust”说有41万行(410K) [2015年5月26日]
  • 来源2“Servo Continues Pushing Forward”说有12万行(126K) [2015年5月1日]
  • 来源3“Servo developer tools overview”说有15万行(150k) [2015年7月22日]

这三个来源都具有很高的权威性,来源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。

你可能感兴趣的:(Rust,servo,loc)