curl 創(chuàng)始人兼核心開(kāi)發(fā)者 Daniel Stenberg發(fā)表博客稱,他正在考慮是否要將 curl 使用的 C 語(yǔ)言標(biāo)準(zhǔn)從 C89 升級(jí)到 C99。Daniel 表示,他觀察到許多廣受歡迎的 C 語(yǔ)言開(kāi)源項(xiàng)目正在向前發(fā)展,并將所使用的 C 語(yǔ)言標(biāo)準(zhǔn)升級(jí)到 C99 或更高版本,例如 Linux、Git 等項(xiàng)目。而且在 curl 的郵件列表中也經(jīng)常出現(xiàn)關(guān)于升級(jí) C 語(yǔ)言標(biāo)準(zhǔn)的討論,特別是現(xiàn)在已計(jì)劃在 2023 年春季發(fā)布 curl v8,所以從理論上來(lái)講,這可能是進(jìn)行一些更改的好時(shí)機(jī)。如果要升級(jí) C 語(yǔ)言標(biāo)準(zhǔn)到 C99,那就要考慮哪些 C99 特性可以改進(jìn)像 curl 這樣的項(xiàng)目。Daniel 表示自己能想到的可能給 curl 代碼帶來(lái)積極影響的部分特性是:-
//
注釋
-
__func__
預(yù)定義標(biāo)識(shí)符
-
在
中使用布爾類(lèi)型
-
指定的結(jié)構(gòu)體初始值設(shè)定項(xiàng)
空的宏參數(shù)
-
在
和
中使用擴(kuò)展的整數(shù)類(lèi)型
-
靈活的數(shù)組成員 (zero size arrays)
-
內(nèi)聯(lián)函數(shù)
-
整數(shù)常量類(lèi)型規(guī)則
-
將聲明和代碼混合
-
long long
類(lèi)型和庫(kù)函數(shù)
-
snprintf()
函數(shù)家族
-
枚舉聲明中支持尾隨逗號(hào)
-
可變參數(shù)宏
-
長(zhǎng)度可變的數(shù)組
當(dāng)然,開(kāi)發(fā)者還可以使用許多其他的特性,但問(wèn)題是他們是否真的需要這些特性。而且對(duì)于上面提到的部分特性,Daniel 表示他們已經(jīng)有了不錯(cuò)的替代方案,其他的特性要么就是無(wú)關(guān)緊要,要么就是可能會(huì)讓人分心。因此,Daniel 認(rèn)為,如果馬上為 curl 項(xiàng)目采用 C99 所有新特性,這會(huì)導(dǎo)致重寫(xiě)大部分代碼,從而引入錯(cuò)誤。此外還有一個(gè)問(wèn)題,如果真的要升級(jí) C 語(yǔ)言標(biāo)準(zhǔn),是否應(yīng)該直接升級(jí)到 C11,而不是停留在 C99。在 curl 社區(qū)對(duì)于升級(jí) C 語(yǔ)言標(biāo)準(zhǔn)的討論中,沒(méi)有人能清楚地闡明升級(jí)之后能給 curl 項(xiàng)目帶來(lái)的好處。Daniel 表示他們目前看到的風(fēng)險(xiǎn)是,大家都陷入了與項(xiàng)目非常不相關(guān)的討論和變化中,而這些討論和變化實(shí)際上可能不會(huì)使項(xiàng)目取得很大進(jìn)展。無(wú)論是功能還是質(zhì)量 / 安全性。Daniel 認(rèn)為還有很多更好的事情要做,還有更多值得付出的努力來(lái)投入精力,這實(shí)際上可以改進(jìn)項(xiàng)目并將其推進(jìn)。比如改進(jìn)測(cè)試套件、增加測(cè)試覆蓋率、確保更多代碼由模糊器執(zhí)行。Daniel決定從 curl 8 開(kāi)始,他們將要求編譯器支持 64 位數(shù)據(jù)類(lèi)型,主要是為了查看它的運(yùn)行情況。這不是原來(lái)的 C89 版本中存在的特性,而是在 C99 中引入的。目前沒(méi)有不支持此功能的現(xiàn)代編譯器。他認(rèn)為,這也許是可以繼續(xù)適應(yīng)和使用特定的 “后 C89 特性” 的方式。通過(guò)挑選特定的特性,然后隨著時(shí)間的推移慢慢適應(yīng)它們。最后,Daniel 表示不考慮使用任何其他語(yǔ)言重寫(xiě) curl。
此外,curl 作者表示不想推出 7.100,為此制定了 curl 8 發(fā)布計(jì)劃。curl 7 的版本號(hào)已迭代到7.86.0—— 離發(fā)布 7.100.0 只差十多個(gè)版本,但 curl 作者 Daniel Stenberg不希望在次版本號(hào)中使用三位數(shù),因?yàn)樗麚?dān)心這會(huì)引發(fā)不必要的問(wèn)題,甚至可能會(huì)導(dǎo)致他人用于比較版本的腳本出錯(cuò)。由于 curl 通常每隔 8 周發(fā)布一次新版本,如果按照計(jì)劃的發(fā)布節(jié)奏,curl 7 的次版本號(hào)差不多在兩年后就會(huì)到達(dá) 100。Daniel 發(fā)現(xiàn)明年是 curl 的一個(gè)重要周年紀(jì)念日,他想到了一個(gè)可以避免 "100" 版本號(hào)的方案 ——在 curl 誕生 25 周年當(dāng)天發(fā)布 curl 8。如此一來(lái),既凸顯了周年紀(jì)念日的地位,又體現(xiàn)了升級(jí)主版本號(hào)的意義,更是直接避開(kāi)了 "100" 版本號(hào)??芍^是一步到位地實(shí)現(xiàn)了 “既要又要還要” 的需求。
因此,在 2023 年 3 月 20 日,curl 25 歲生日當(dāng)天,Daniel 將會(huì)正式發(fā)布 curl 8.0.0。這將會(huì)是 curl 23 年來(lái)首次升級(jí)主版本號(hào)。不過(guò)正如上文所解釋?zhuān)舜紊?jí)主版本號(hào)與功能變化無(wú)關(guān),也不會(huì)進(jìn)行特別的慶祝??偠灾?,這個(gè)升級(jí)和常規(guī)的并無(wú)二致,只是重置了次版本號(hào),并升級(jí)主版本號(hào)。在常規(guī)的 curl 發(fā)布周期中,通常是是每隔 8 周在周三發(fā)布一次新版本。然而 2023 年 3 月 20 日是星期一。因此,curl 8.0.0 的發(fā)布時(shí)間會(huì)有所調(diào)整,curl 作者計(jì)劃在發(fā)布 curl 8 之后再調(diào)整回常規(guī)的發(fā)布時(shí)間。
審核編輯 :李倩
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
原文標(biāo)題:curl 作者:不考慮其他語(yǔ)言重構(gòu),計(jì)劃升級(jí) C 語(yǔ)言標(biāo)準(zhǔn)、明年發(fā)布 curl 8
文章出處:【微信號(hào):CPP開(kāi)發(fā)者,微信公眾號(hào):CPP開(kāi)發(fā)者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
相關(guān)推薦
電子發(fā)燒友網(wǎng)站提供《從ADS7813升級(jí)到ADS8513.pdf》資料免費(fèi)下載
發(fā)表于 10-21 09:59
?0次下載
電子發(fā)燒友網(wǎng)站提供《從JESD204B升級(jí)到JESD204C時(shí)的系統(tǒng)設(shè)計(jì)注意事項(xiàng).pdf》資料免費(fèi)下載
發(fā)表于 09-21 10:19
?0次下載
將Non-OS SDK從1.3.0升級(jí)到1.4.0(AT版本0.40升級(jí)到0.50)后,AT CWLAP命令將無(wú)法再找到我的AP。它仍然會(huì)找
發(fā)表于 07-17 06:00
使用NONOS SDK 2.0從從user1.bin ota升級(jí)到user2.bin成功,反過(guò)來(lái)就會(huì)失敗,下面是log:
system_upgrade_start
upgrade_connect
發(fā)表于 07-11 08:00
如何將stm32f207的以太網(wǎng)庫(kù)中l(wèi)wip1.3.2升級(jí)到1.4.1
發(fā)表于 05-17 08:04
內(nèi)容如標(biāo)題所示,麻煩有懂的朋友告訴下我,這個(gè)問(wèn)題花費(fèi)我很多時(shí)間了。 不知道STVD是不是不支持C99??
發(fā)表于 05-16 08:04
STM32CubeMX版本升級(jí)由6.2.1升級(jí)到6.3.0后原工程重新編譯code文件變大什么原因
發(fā)表于 04-02 07:31
C語(yǔ)言、C++、Java和Python是四種常見(jiàn)的編程語(yǔ)言,各有優(yōu)點(diǎn)和特點(diǎn)。 C語(yǔ)言:
發(fā)表于 02-05 14:11
?2115次閱讀
VB語(yǔ)言和C++語(yǔ)言是兩種不同的編程語(yǔ)言,雖然它們都屬于高級(jí)編程語(yǔ)言,但在設(shè)計(jì)和用途上有很多區(qū)別。下面將
發(fā)表于 02-01 10:20
?1948次閱讀
C語(yǔ)言雖說(shuō)經(jīng)常和C++在一起被大家提起,但可千萬(wàn)不要以為它們是一個(gè)東西?,F(xiàn)在我們常用的C語(yǔ)言是C89
發(fā)表于 12-07 14:29
?889次閱讀
C語(yǔ)言運(yùn)行環(huán)境(C language runtime environment)是指在執(zhí)行C語(yǔ)言程序時(shí)所需的軟件及硬件環(huán)境。
發(fā)表于 11-27 16:13
?3284次閱讀
選擇創(chuàng)建 C 語(yǔ)言和 C++ 都需要綜合考慮多個(gè)因素。在決定使用哪種語(yǔ)言之前,我們需要對(duì)這兩種語(yǔ)言的特點(diǎn)、優(yōu)缺點(diǎn)、適用場(chǎng)景、學(xué)習(xí)成本等進(jìn)行全
發(fā)表于 11-27 15:58
?558次閱讀
的整數(shù)值,范圍從0到127。 在C語(yǔ)言中,可以使用以下幾種方式將字符轉(zhuǎn)換為ASCII碼: 使用字符字面量表示法:在
發(fā)表于 11-26 10:34
?5869次閱讀
C語(yǔ)言源程序中的main函數(shù)是程序的入口點(diǎn),它被認(rèn)為是C語(yǔ)言程序的起點(diǎn)。在執(zhí)行程序時(shí),操作系統(tǒng)將首先定位
發(fā)表于 11-24 10:23
?2255次閱讀
scanf在C語(yǔ)言中的作用? scanf是C語(yǔ)言中的輸入函數(shù),用于從標(biāo)準(zhǔn)輸入設(shè)備(如鍵盤(pán))讀取數(shù)
發(fā)表于 11-23 14:13
?1244次閱讀
評(píng)論