首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

curl 作者考虑升级 curl 使用的 C 语言标准

出品|开源中国

curl 创始人兼核心开发者 Daniel Stenberg发表博客称,他正在考虑是否要将 curl 使用的 C 语言标准从 C89 升级到 C99

Daniel 表示,他观察到许多广受欢迎的 C 语言开源项目正在向前发展,并将所使用的 C 语言标准升级到 C99 或更高版本,例如 Linux、Git 等项目。而且在 curl 的邮件列表中也经常出现关于升级 C 语言标准的讨论,特别是现在已计划在 2023 年春季发布 curl v8,所以从理论上来讲,这可能是进行一些更改的好时机。

如果要升级 C 语言标准到 C99,那就要考虑哪些 C99 特性可以改进像 curl 这样的项目。Daniel 表示自己能想到的可能给 curl 代码带来积极影响的部分特性是:

//注释

__func__预定义标识符

在中使用布尔类型

指定的结构体初始值设定项

空的宏参数

在和中使用扩展的整数类型

灵活的数组成员 (zero size arrays)

内联函数

整数常量类型规则

将声明和代码混合

long long类型和库函数

snprintf()函数家族

枚举声明中支持尾随逗号

可变参数宏

长度可变的数组

当然,开发者还可以使用许多其他的特性,但问题是他们是否真的需要这些特性。而且对于上面提到的部分特性,Daniel 表示他们已经有了不错的替代方案,其他的特性要么就是无关紧要,要么就是可能会让人分心。

因此,Daniel 认为,如果马上为 curl 项目采用 C99 所有新特性,这会导致重写大部分代码,从而引入错误。此外还有一个问题,如果真的要升级 C 语言标准,是否应该直接升级到 C11,而不是停留在 C99

在 curl 社区对于升级 C 语言标准的讨论中,没有人能清楚地阐明升级之后能给 curl 项目带来的好处。Daniel 表示他们目前看到的风险是,大家都陷入了与项目非常不相关的讨论和变化中,而这些讨论和变化实际上可能不会使项目取得很大进展。无论是功能还是质量 / 安全性。

Daniel 认为还有很多更好的事情要做,还有更多值得付出的努力来投入精力,这实际上可以改进项目并将其推进。比如改进测试套件、增加测试覆盖率、确保更多代码由模糊器执行。

Daniel 决定从 curl 8 开始,他们将要求编译器支持 64 位数据类型,主要是为了查看它的运行情况。这不是原来的 C89 版本中存在的特性,而是在 C99 中引入的。目前没有不支持此功能的现代编译器。他认为,这也许是可以继续适应和使用特定的 “后 C89 特性” 的方式。通过挑选特定的特性,然后随着时间的推移慢慢适应它们。

最后,Daniel 表示不考虑使用任何其他语言重写 curl。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20221118A028DX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券