关于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。
关于Servo项目中Rust代码行数的数据来源的更多相关文章
- 【未解决】对于使用Windows的IDEA进行编译的文件,但无法在Linux系统中统计代码行数的疑问
在我学习使用Windows的IDEA的过程中,将代码文件转移到Linux虚拟机当中,但无法在Linux系统中统计代码行数. 注意:拷贝进虚拟机的文件均能编译运行. 具体过程如下: root@yogil ...
- iOS - Xcode项目统计总代码行数
最新公司需要把项目代码量统计一下,第一时间找到Xcode插件管理工具Alcatraz,查找插件ZLXCodeLine,这是一个快速统计Xcode工程项目代码量的插件,好像已经不支持Alcatraz安装 ...
- 使用vs的查找功能,简单大概的统计vs中的代码行数
VS强大的查找功能,可以使用正则表达式来进行查找,这里统计代码行数的原理就是: 在所有指定文件中进行搜索,统计匹配的文本行数. 但是匹配的行需要满足:非注释.非空等特殊非代码行. 使用Ctrl+Shi ...
- 统计iOS项目的总代码行数的方法
打开终端, 用cd命令 定位到工程所在的目录,然后调用以下命名即可把每个源代码文件行数及总数统计出来: find . "(" -name "*.m" -or - ...
- OC Swift中检查代码行数
1 打开终端 cd 进去当前项目 2 总行数查看命令 find . -name "*.m" -or -name "*.h" | xargs wc -l ...
- vs 中统计代码行数
------解决方案--------------------b*[^:b#/]+.*$^b*[^:b#/]+.*$ ctrl + shift + F 查找选项勾选 正则表达式
- 在.NET中怎样取得代码行数
文章目的 介绍在.NET中取得代码行数的方法 代码 [STAThread] static void Main(string[] args) { ReportError("Yay!" ...
- 使用 cloc 统计代码行数
可能大家都知道用 `wc -l` 命令进行代码行数统计,但是它会将代码中的注释.空行所占用的文本行都统计在内.如果想查看一个 tar 包或一个项目目录中“实际”的代码行数并且不愿意自己去写一个脚本来做 ...
- Python计算一个项目中含有的代码行数
最近想要知道以前做过的project有多少行代码,因为文件太多,直接手工数效率太低,于是编写一个python程序用来计算一个project有多少代码行. 首先,在一个项目中,有很多子文件夹,子文件夹中 ...
随机推荐
- Scrapy系列教程(6)------怎样避免被禁
避免被禁止(ban) 有些网站实现了特定的机制,以一定规则来避免被爬虫爬取. 与这些规则打交道并不easy,须要技巧,有时候也须要些特别的基础. 假设有疑问请考虑联系 商业支持 . 以下是些处理这些网 ...
- 1003. 我要通过!(20) (ZJUPAT 模拟)
题目链接:http://pat.zju.edu.cn/contests/pat-b-practise/1003 "答案正确"是自己主动判题系统给出的最令人欢喜的回复.本题属于PAT ...
- hdu 3177 Crixalis's Equipment
Crixalis's Equipment Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- HDU TIANKENG’s rice shop(模拟)
HDU 4884 TIANKENG's rice shop 题目链接 题意:模拟题.转一篇题意 思路:就模拟就可以.注意每次炒完之后就能够接单 代码: #include <cstdio> ...
- Sqoop_具体总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
一.使用Sqoop将MySQL中的数据导入到HDFS/Hive/HBase watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYWFyb25oYWRvb3A=/ ...
- Mina airQQ聊天 client篇(三)
开发工具 (FlashBuilder4.7) 程序类型(Adobe Air) Flex Air做的桌面程序,效果还挺好看的.最主要是Socket这一块,它也是异步的,而且在Flex中的事件机制比較强大 ...
- 英语发音规则---Q字母
英语发音规则---Q字母 一.总结 一句话总结: 1.Q/que发[k]音? Iraq [ɪ'rɑ:k] n. 伊拉克 cheque [tʃek] n. 支票 2.Qu-发[kw]? quality ...
- python 从bulkblacklist信誉查询网站提交查询
import urllib import urllib2 #import webbrowser import re import socket def is_domain_in_black_list( ...
- 对python变量的理解
#!/usr/bin/python class Person: '''some words content or descriptions!''' name='luomingchuan' _age = ...
- Redis学习笔记(二) Redis 数据类型
Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...