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

21 篇文章 2 订阅

我两个月之前的一篇博客《为什么我说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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对不起,我之前给出的代码并没有包含将数据保存到数据库的逻辑。以下是更新后的代码,可以将数据保存到数据: ```javascript const express = require('express'); const bodyParser = require('body-parser'); const mssql = require('mssql'); const app = express(); app.use(bodyParser.urlencoded({ extended: false })); // 创建与数据库的连接 const config = { user: 'sa', password: 'Servo01', server: 'CRMTEST', database: 'demo', }; // 连接数据库 mssql.connect(config, function (err) { if (err) { console.error('Error connecting to database:', err); return; } console.log('Connected to database!'); }); // 处理注册页面的 POST 请求 app.post('/', function (req, res) { const name = req.body.name; const password = req.body.password; const email = req.body.email; console.log('注册信息:'); console.log('用户名:', name); console.log('密码:', password); console.log('邮箱:', email); // 将数据保存到数据库 const query = `INSERT INTO username (name, password, email) VALUES ('${name}','${password}','${email}')`; const request = new mssql.Request(); request.query(query, function (err, result) { if (err) { console.error('Error saving data to database:', err); return; } console.log('数据已保存到数据库!'); res.send('注册成功!'); }); }); app.listen(3000, function () { console.log('Server is running on port 3000'); }); ``` 请确保您已正确配置了数据库连接信息,并且数据已经创建了名为 "demo" 的数据库和 "username" 表。如果仍然无法将数据保存到数据库,请检查连接配置和数据库表结构是否正确。如果仍然有问题,请提供更多详细信息,以便我能够帮助您解决问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值