小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

微軟開源了一個(gè)更加安全的C語言版本

 quasiceo 2016-06-23

Checked C提出通過在C語言中增加安全特性以減少編程錯(cuò)誤,但是這門語言能否走出實(shí)驗(yàn)室卻另當(dāng)別論。

微軟開源了一個(gè)名叫Checked C的研究項(xiàng)目,該項(xiàng)目為C語言加入了新的語法。項(xiàng)目的主要目標(biāo)是為了抵消使用C語言編程帶來的一些危險(xiǎn),比如造成Heartbleed和Shellshock安全事故的bug。

這在理論上一個(gè)大膽的想法。這個(gè)想法中最困難的地方是怎樣促使C語言開發(fā)者修改現(xiàn)有代碼,修改遺留C代碼通常會(huì)是非常困難的。

在受傷前先檢查一下自己

Checked C是C語言的修改版,重點(diǎn)針對(duì)指引引起的問題。C語言中可以直接訪問內(nèi)存。新版C語言提供了幾種新的指針和數(shù)組類型,自帶安全檢查。它們與C語言現(xiàn)有的非安全指針不同,程序員可以使用新的帶安全檢查的指針。當(dāng)然,如果有需要也可以切換回非安全類型的指針。

新版本還提供了帶檢查的程序作用域。這些程序代碼段默認(rèn)啟用邊界檢查。如果程序員試圖在這樣的代碼段中使用非受檢指針,編譯器會(huì)拒絕編譯。當(dāng)然,也可以使用#pragma指令指定編譯器對(duì)整個(gè)程序默認(rèn)啟用邊界檢查。

目前已經(jīng)有一些工具可以對(duì)C語言進(jìn)行安全分析和檢測(cè),比如Cppcheck。但是它們通常都是獨(dú)立的靜態(tài)代碼分析工具。Checked C在程序構(gòu)思和計(jì)劃時(shí)就直接將安全特性加入了C語言。

前方的障礙

盡管Checked C聽起來野心勃勃并且非常有價(jià)值,但是它也面臨著改變現(xiàn)有都會(huì)遇到的兩個(gè)巨大挑戰(zhàn)。首先,這種變化是否向后兼容。其次,這些變化通常會(huì)對(duì)現(xiàn)有的工具鏈產(chǎn)生顛覆性的影響。這兩個(gè)問題都會(huì)影響新語言能否被接受。

微軟至少部分實(shí)現(xiàn)了向后兼容。引入到Checked C中的變化并沒有讓現(xiàn)有的C代碼失效,它們?nèi)匀豢梢韵褚郧耙粯泳幾g。所有的新語法和對(duì)語言的變更都可以與遺留代碼共存。

已有的C程序甚至不需要立刻轉(zhuǎn)換為Checked C,可以逐文件或逐函數(shù)進(jìn)行轉(zhuǎn)換。微軟還聲稱,新風(fēng)格的受檢構(gòu)造器“與現(xiàn)有的指針和數(shù)據(jù)類型完全布局兼容”。這種向后與向前的高度兼容性為Checked C提供了優(yōu)勢(shì)。但即使如此Checked C也不會(huì)自動(dòng)勝出,它需要變得通用。

這就引發(fā)了另一個(gè)問題,變化對(duì)工具鏈產(chǎn)生的影響。考慮到這個(gè)問題,微軟從被廣泛使用的著名編譯器框架LLVM上建立了分支。因此,如果Checked C有足夠的吸引力,那么被LLVM項(xiàng)目采納會(huì)更加容易。

據(jù)說微軟之所以選擇LLVM,是由于它遵循寬松的許可并且設(shè)計(jì)目標(biāo)就是針對(duì)新的編程語言,而不是將LLVM作為Checked C推廣的工具。要獲得更廣泛的接受,Checked C必須讓更古老的GCC編譯器對(duì)其提供支持。(更不用說在微軟自己的Visual Studio中支持Checked C了)

Mozilla的Rust語言已經(jīng)被作為可以寫出比C語言更加安全的程序。Rust語言已經(jīng)取得了巨大的開發(fā)進(jìn)展并且獲得了廣大的使用者。但Rust還年輕,而C語言已經(jīng)被廣泛使用并且根深蒂固。假設(shè)Rust最終沒有提供Checked C期望實(shí)現(xiàn)的那些功能,那么修改已有的C程序代價(jià)可能會(huì)比用Rust重寫要小。

原文:Microsoft open-sources a safer version of C language
作者: Serdar Yegulalp
譯者:賴信濤
責(zé)編:錢曙光

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多