0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

将curl使用的C语言标准从C89升级到C99?

CPP开发者 来源:OSC开源社区 作者:OSC开源社区 2022-11-22 14:48 次阅读

curl 创始人兼核心开发者 Daniel Stenberg发表博客称,他正在考虑是否要将 curl 使用的 C 语言标准从 C89 升级到 C9977cd3b1c-6a19-11ed-8abf-dac502259ad0.pngDaniel 表示,他观察到许多广受欢迎的 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。

此外,curl 作者表示不想推出 7.100,为此制定了 curl 8 发布计划。curl 7 的版本号已迭代到7.86.0—— 离发布 7.100.0 只差十多个版本,但 curl 作者 Daniel Stenberg不希望在次版本号中使用三位数,因为他担心这会引发不必要的问题,甚至可能会导致他人用于比较版本的脚本出错。由于 curl 通常每隔 8 周发布一次新版本,如果按照计划的发布节奏,curl 7 的次版本号差不多在两年后就会到达 100。Daniel 发现明年是 curl 的一个重要周年纪念日,他想到了一个可以避免 "100" 版本号的方案 ——在 curl 诞生 25 周年当天发布 curl 8。如此一来,既凸显了周年纪念日的地位,又体现了升级主版本号的意义,更是直接避开了 "100" 版本号。可谓是一步到位地实现了 “既要又要还要” 的需求。 因此,在 2023 年 3 月 20 日,curl 25 岁生日当天,Daniel 将会正式发布 curl 8.0.0。这将会是 curl 23 年来首次升级主版本号。不过正如上文所解释,此次升级主版本号与功能变化无关,也不会进行特别的庆祝。总而言之,这个升级和常规的并无二致,只是重置了次版本号,并升级主版本号。在常规的 curl 发布周期中,通常是是每隔 8 周在周三发布一次新版本。然而 2023 年 3 月 20 日是星期一。因此,curl 8.0.0 的发布时间会有所调整,curl 作者计划在发布 curl 8 之后再调整回常规的发布时间。 审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7597

    浏览量

    136120
  • 代码
    +关注

    关注

    30

    文章

    4741

    浏览量

    68325

原文标题:curl 作者:不考虑其他语言重构,计划升级 C 语言标准、明年发布 curl 8

文章出处:【微信号:CPP开发者,微信公众号:CPP开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    技术干货驿站 ▏深入理解C语言:掌握C语言条件判断,ifswitch的应用

    在编程中,条件判断语句是控制程序流程的核心元素之一。它们使得程序能够根据不同的输入和状态,做出相应的决策。特别是在C语言中,条件判断语句的使用极为广泛,涵盖了从简单的if语句更复杂的switch
    的头像 发表于 11-09 01:10 155次阅读
    技术干货驿站 ▏深入理解<b class='flag-5'>C</b><b class='flag-5'>语言</b>:掌握<b class='flag-5'>C</b><b class='flag-5'>语言</b>条件判断,<b class='flag-5'>从</b>if<b class='flag-5'>到</b>switch的应用

    ADS7813升级到ADS8513

    电子发烧友网站提供《ADS7813升级到ADS8513.pdf》资料免费下载
    发表于 10-21 09:59 0次下载
    <b class='flag-5'>从</b>ADS7813<b class='flag-5'>升级到</b>ADS8513

    JESD204B升级到JESD204C时的系统设计注意事项

    电子发烧友网站提供《JESD204B升级到JESD204C时的系统设计注意事项.pdf》资料免费下载
    发表于 09-21 10:19 0次下载
    <b class='flag-5'>从</b>JESD204B<b class='flag-5'>升级到</b>JESD204<b class='flag-5'>C</b>时的系统设计注意事项

    Non-OS SDK1.3.0升级到1.4.0后,AT CWLAP命令无法再找到我的AP,为什么?

    Non-OS SDK1.3.0升级到1.4.0(AT版本0.40升级到0.50)后,AT CWLAP命令无法再找到我的AP。它仍然会找
    发表于 07-17 06:00

    如何stm32f207的以太网库中lwip1.3.2升级到1.4.1?

    如何stm32f207的以太网库中lwip1.3.2升级到1.4.1
    发表于 05-17 08:04

    STVD是不是不支持C99?

    内容如标题所示,麻烦有懂的朋友告诉下我,这个问题花费我很多时间了。 不知道STVD是不是不支持C99??
    发表于 05-16 08:04

    STM32CubeMX版本升级由6.2.1升级到6.3.0后原工程重新编译code文件变大什么原因?

    STM32CubeMX版本升级由6.2.1升级到6.3.0后原工程重新编译code文件变大什么原因
    发表于 04-02 07:31

    c语言,c++,java,python区别

    C语言C++、Java和Python是四种常见的编程语言,各有优点和特点。 C语言
    的头像 发表于 02-05 14:11 2218次阅读

    vb语言c++语言的区别

    VB语言C++语言是两种不同的编程语言,虽然它们都属于高级编程语言,但在设计和用途上有很多区别。下面
    的头像 发表于 02-01 10:20 2046次阅读

    C语言C++中那些不同的地方

    C语言虽说经常和C++在一起被大家提起,但可千万不要以为它们是一个东西。现在我们常用的C语言C89
    的头像 发表于 12-07 14:29 902次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b>和<b class='flag-5'>C</b>++中那些不同的地方

    C语言运行环境是什么

    C语言运行环境(C language runtime environment)是指在执行C语言程序时所需的软件及硬件环境。
    的头像 发表于 11-27 16:13 3333次阅读

    如何选择创建c语言c++

    选择创建 C 语言C++ 都需要综合考虑多个因素。在决定使用哪种语言之前,我们需要对这两种语言的特点、优缺点、适用场景、学习成本等进行全
    的头像 发表于 11-27 15:58 566次阅读

    c语言如何把字符变成ascii码

    的整数值,范围0127。 在C语言中,可以使用以下几种方式字符转换为ASCII码: 使用字符字面量表示法:在
    的头像 发表于 11-26 10:34 6068次阅读

    c语言源程序main函数的位置

    C语言源程序中的main函数是程序的入口点,它被认为是C语言程序的起点。在执行程序时,操作系统首先定位
    的头像 发表于 11-24 10:23 2306次阅读

    scanf在C语言中的作用

    scanf在C语言中的作用  scanf是C语言中的输入函数,用于标准输入设备(如键盘)读取数
    的头像 发表于 11-23 14:13 1295次阅读