在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用Rust和C++代碼編譯時(shí)間同樣糟糕嗎?

jf_wN0SrCdH ? 來(lái)源:覺(jué)學(xué)社 ? 2023-01-16 11:58 ? 次閱讀

Rust 官方正在討論為 Rust 提供 interoperable_abi features gate

interoperable_abi[1] 意味著提供一個(gè)新的 Rust ABI extern "interop" 和 repr(interop) ,用于實(shí)現(xiàn)有安全數(shù)據(jù) 類(lèi)型的高級(jí)編程語(yǔ)言之間的互操作性。

13ed3214-9430-11ed-bfe3-dac502259ad0.png

動(dòng)機(jī)摘要:

目前 Rust ABI 并不穩(wěn)定,多語(yǔ)言交互只能通過(guò) C-ABI 來(lái)進(jìn)行。但是這限制了在 ABI 之間使用更高級(jí)的安全類(lèi)型。可互操作的 ABI 將定義一種標(biāo)準(zhǔn)方法來(lái)跨高級(jí)語(yǔ)言進(jìn)行調(diào)用,傳遞高級(jí)數(shù)據(jù)類(lèi)型,而不需要將其降級(jí)為 C-ABI。該 ABI 將與任何提供C 兼容 FFI 的語(yǔ)言(包括 C本身),并且語(yǔ)言還可以為可互操作的 ABI 添加特定的更高級(jí)別的支持。可互操作的 ABI 旨在成為靜態(tài)和動(dòng)態(tài)形式的編譯庫(kù)(包括系統(tǒng)庫(kù))的合理默認(rèn)值。

可互操作的 ABI 將是 C ABI 的嚴(yán)格超集。

可互操作 ABI 不支持的內(nèi)容摘要:

可互操作的 ABI 并不旨在支持整個(gè)Rust 標(biāo)準(zhǔn)庫(kù).

可互操作的 ABI 不會(huì)旨在支持復(fù)雜的生命周期處理

可互操作的 ABI(至少在第一個(gè)版本中)不會(huì)以源代碼或編譯形式提供接口描述語(yǔ)言(IDL)

可互操作的 ABI 的目的不是在不同語(yǔ)言的表示之間提供“翻譯”

可互操作的 ABI 不能支持任意的編譯時(shí)泛型函數(shù)

GCC-rs 項(xiàng)目在 2022 年取得了很大進(jìn)展

gccrs是一個(gè)旨在為 GNU Compiler Collection 帶來(lái)對(duì) Rust編程語(yǔ)言的支持的項(xiàng)目。其目標(biāo)是從頭開(kāi)始為 Rust 編程語(yǔ)言編寫(xiě)一個(gè)新的編譯器前端,將該前端集成到 GCC 中,使其作為一種語(yǔ)言與 C、C++Ada、D、Go 一起使用。

該項(xiàng)目最初于 2014 年啟動(dòng)。當(dāng)時(shí),Rust 尚未實(shí)現(xiàn)穩(wěn)定版本(Rust 1.0 于 2015 年 5 月發(fā)布),對(duì)于單個(gè)開(kāi)發(fā)人員來(lái)說(shuō)很難跟上高強(qiáng)度的變化。2019年又開(kāi)始努力,此后一直在穩(wěn)步進(jìn)行。

2020 年,菲利普·赫倫 ( Philip Herron )開(kāi)始獲得資金支持,隨后他得以開(kāi)始全職從事該項(xiàng)目。此贊助來(lái)自 Open Source Security公司

Philip 受雇于 Embecosm 并從他們的管理中受益,并得到 GCC 指導(dǎo)委員會(huì)的支持。2022 年,在將近一年半的單飛之后,Philip 加入了另一位由 Open Source Security 公司資助的全職工程師 Arthur Cohen ,也受雇于 Embecosm。現(xiàn)在有兩名工程師每周為該項(xiàng)目投入 40 小時(shí)。

2022 年發(fā)生的最引人注目的事件是將 gccrs 合并到 GCC,gccrs 將在 2023 年 4 月發(fā)布的 GCC 13.1 版本中可用。

更多內(nèi)容參考 gccrs 2022 年報(bào)[2]

P.S 與 gccrs 對(duì)應(yīng)的是另一個(gè)項(xiàng)目 rustc_codegen_gcc。它是作為 Rust 編譯器 GCC 后端,目前也正在積極開(kāi)發(fā)中,感興趣可以關(guān)注rustc_codegen_gcc:進(jìn)度報(bào)告#19[3]。

用 Rust 和 C++ 代碼編譯時(shí)間同樣糟糕嗎?

原文[4]作者寫(xiě)道:

C++ 因其緩慢的構(gòu)建時(shí)間而臭名昭著。“我的代碼正在編譯”是編程世界中的一個(gè)梗,而 C++ 讓這個(gè)笑話(huà)流傳開(kāi)來(lái)。

像 Google Chromium 這樣的項(xiàng)目 在全新硬件上構(gòu)建需要一個(gè)小時(shí),在舊硬件上構(gòu)建需要 6 小時(shí)。即使有數(shù)千美元的云計(jì)算能力,Chromium 構(gòu)建時(shí)間仍然在六分鐘左右。這是我完全不能接受的。人怎么可以每天這樣工作?

作者也聽(tīng)說(shuō),Rust 也面臨相同的問(wèn)題,但他有實(shí)證精神,親自動(dòng)手證明一下 Rust 是不是和 Cpp 一樣很慢。

這是他的計(jì)劃:

查找開(kāi)源 C++ 項(xiàng)目。

從項(xiàng)目中提取一部分為迷你項(xiàng)目中。

將 C++ 迷你項(xiàng)目的代碼逐行重寫(xiě)為 Rust。

優(yōu)化 C++ 項(xiàng)目和 Rust 項(xiàng)目的構(gòu)建工具鏈。

比較兩個(gè)項(xiàng)目之間的編譯+測(cè)試時(shí)間。

經(jīng)過(guò)這樣的測(cè)試,作者得出最終結(jié)論:

編譯時(shí)間是 Rust 的問(wèn)題嗎?是的。有一些提示和技巧可以加快構(gòu)建速度,但作者沒(méi)有找到神奇的數(shù)量級(jí)改進(jìn),否則作者將很高興使用 Rust 進(jìn)行開(kāi)發(fā)。

Rust 的構(gòu)建時(shí)間和 C++ 一樣糟糕嗎?是的。對(duì)于更大的項(xiàng)目,Rust 的開(kāi)發(fā)編譯時(shí)間比 C++ 更短,至少作者的代碼風(fēng)格是這樣。

對(duì)于完整構(gòu)建,C++ 構(gòu)建花費(fèi)的時(shí)間與 Rust 相比,大致相同(17k SLOC)或花費(fèi)更少的時(shí)間(100k+ SLOC),而不是更長(zhǎng)。

對(duì)于增量構(gòu)建,與 C++ 相比,Rust 構(gòu)建有時(shí)更短,有時(shí)更長(zhǎng)(17k SLOC)或更長(zhǎng)(100k+ SLOC),但并不總是更長(zhǎng)。

很欣賞 Rust 的工具鏈(尤其是 Cargo、rustup 和 miri)。

應(yīng)用實(shí)踐

Gama 發(fā)射的太陽(yáng)帆宇宙飛船中使用了 Rust

Gama[5] 將發(fā)射太陽(yáng)帆宇宙飛船,并且是公開(kāi)將 Rust 送入太空的公司之一。提供軟件服務(wù)的應(yīng)該是這家公司:Tweedegolf[6] ,該公司也是 Rust 基金會(huì)銀牌會(huì)員。他們的開(kāi)源倉(cāng)庫(kù)[7]里有一個(gè) Rust 實(shí)現(xiàn)的 PTP (精確時(shí)間協(xié)議) 庫(kù),這個(gè)PTP一般用在衛(wèi)星的時(shí)間源,比NTP更精確。但這個(gè)是 PoC 實(shí)現(xiàn),不知道這次發(fā)射的飛船上有沒(méi)有用。從另外的項(xiàng)目 嵌入式開(kāi)發(fā)板 pcf85063a (一般用于計(jì)時(shí)鬧鐘)rust 驅(qū)動(dòng)來(lái)看,這次上天的 Rust 程序很可能和精確計(jì)時(shí)相關(guān)。

Gama 太陽(yáng)帆的衛(wèi)星于 2023 年 1 月 3 日由 SpaceX 獵鷹 9 號(hào)成功送入軌道[8]。

生態(tài)看點(diǎn)

svix-webhooks:企業(yè)級(jí) Webhooks 服務(wù)

svix-webhooks[9] 是基于 Rust 實(shí)現(xiàn)的企業(yè)級(jí) Webhooks 服務(wù)器。Svix 使開(kāi)發(fā)人員可以輕松發(fā)送 webhook。開(kāi)發(fā)人員進(jìn)行一次 API 調(diào)用,Svix 負(fù)責(zé)可交付性、重試、安全性等。

turmoil:開(kāi)發(fā)和測(cè)試分布式系統(tǒng)的框架

Tokio 發(fā)布了[10]用于開(kāi)發(fā)和測(cè)試分布式系統(tǒng)的框架 turmoil[11] 的初始版本。

測(cè)試分布式系統(tǒng)很難。不確定性無(wú)處不在(網(wǎng)絡(luò)、時(shí)間、線程等),使得難以實(shí)現(xiàn)可重現(xiàn)的結(jié)果。由于部署,開(kāi)發(fā)周期很長(zhǎng)。所有這些因素都會(huì)減慢開(kāi)發(fā)速度,并且難以確保系統(tǒng)的正確性。turmoil力求通過(guò)模擬主機(jī)、時(shí)間和網(wǎng)絡(luò)來(lái)解決這些問(wèn)題。這允許整個(gè)分布式系統(tǒng)在單個(gè)線程的單個(gè)進(jìn)程中運(yùn)行,從而實(shí)現(xiàn)確定性執(zhí)行。

cargo-sandbox 發(fā)布

cargo-sandbox[12] 打算成為 cargo 的一個(gè)近乎直接的替代品。關(guān)鍵的區(qū)別在于,cargo-sandbox 在 docker 容器中運(yùn)行相關(guān)命令,目的是將潛在的惡意代碼與主機(jī)環(huán)境的隔離開(kāi)來(lái)(關(guān)于威脅模型的更多細(xì)節(jié),見(jiàn)README)。其目標(biāo)是盡可能地接近 "100%"的兼容原版 cargo,并獲得最順暢的體驗(yàn)。

Rust 中的深度學(xué)習(xí):Burn 0.4.0 發(fā)布以及 2023 年的規(guī)劃

Rust 深度學(xué)習(xí)框架Burn[13] 0.4 完成了后端重構(gòu),除此之外,還實(shí)現(xiàn)了很多新的功能,如ADAM優(yōu)化器、轉(zhuǎn)化器模塊等。下一個(gè)重點(diǎn)將是增加視覺(jué)相關(guān)的模塊,如卷積和池化層。

shura-一個(gè)安全的2D 游戲引擎,易于創(chuàng)建易于管理的游戲

shura[14] 是rust編寫(xiě)的一個(gè)安全,快速并且跨平臺(tái)的游戲框架。shura使用一個(gè)2D組件系統(tǒng)、場(chǎng)景管理和group系統(tǒng)幫你管理一個(gè)大型游戲。

shura主要的目標(biāo)是,你的游戲邏輯可以分別放在不同的組件、group和場(chǎng)景中。

rumqtt: 構(gòu)建 mqtt 的 Rust 生態(tài)

rumqtt[15] 是一組用 rust-lang 編寫(xiě)的開(kāi)源庫(kù),用于實(shí)現(xiàn) MQTT 標(biāo)準(zhǔn),同時(shí)力求簡(jiǎn)單、健壯和高性能。

rumqtt 是 Bytebeam 物聯(lián)網(wǎng)咨詢(xún)公司開(kāi)源的 MQTT 代理。rumqtt 目前版本已經(jīng)發(fā)布到了 R19 版,并未按語(yǔ)義化版本來(lái)發(fā)布。

目前發(fā)布了 R19 新版本:

新的版本提升了性能和可靠性(可以支持 多達(dá)10,000 多個(gè) MQTT 客戶(hù)端,使用 mqttwrk[16] 進(jìn)行基準(zhǔn)測(cè)試)

添加了一個(gè)用于測(cè)試 rumqttd 的公共服務(wù)器

添加了 Prometheus 集成和其他優(yōu)化更改

加了對(duì)存儲(chǔ)支持的持久性的實(shí)驗(yàn)性支持,以確保消息的零數(shù)據(jù)丟失

rumqtt 在 2023 年初推出對(duì) MQTT v5 的支持。






審核編輯:劉清

聲明:本文內(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)投訴
  • GNU
    GNU
    +關(guān)注

    關(guān)注

    0

    文章

    143

    瀏覽量

    17525
  • gcc編譯器
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    3419
  • rust語(yǔ)言
    +關(guān)注

    關(guān)注

    0

    文章

    57

    瀏覽量

    3026

原文標(biāo)題:【2023 Week-1】Rust視界周刊 | 用 Rust 和 C++ 代碼編譯時(shí)間同樣糟糕嗎?

文章出處:【微信號(hào):Rust語(yǔ)言中文社區(qū),微信公眾號(hào):Rust語(yǔ)言中文社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙OpenHarmony開(kāi)發(fā)板解析:【Rust模塊配置規(guī)則和指導(dǎo)】

    C/C++代碼和提升編譯速度,使用了GN + Ninja的編譯構(gòu)建系統(tǒng)。GN的構(gòu)建語(yǔ)言簡(jiǎn)潔易讀,Ninja的匯編級(jí)
    的頭像 發(fā)表于 05-10 11:32 ?1372次閱讀
    鴻蒙OpenHarmony開(kāi)發(fā)板解析:【<b class='flag-5'>Rust</b>模塊配置規(guī)則和指導(dǎo)】

    如何為Arm編譯Cc++代碼

    編寫(xiě)CC++應(yīng)用程序時(shí),需要使用編譯器工具鏈將其編譯為機(jī)器代碼。然后,您可以在基于Arm的處理器上運(yùn)行此
    發(fā)表于 08-02 17:28

    C++的G代碼解析算法研究

    進(jìn)行編寫(xiě)解析算法,把G 代碼作為一個(gè)對(duì)象,類(lèi)機(jī)制實(shí)現(xiàn)其解析功能,并使用GCC 作為其編譯器,提高編譯效率。可直接應(yīng)用嵌入式,脫離PC+運(yùn)動(dòng)控制卡的限制。通過(guò)實(shí)驗(yàn)的測(cè)試,以ARM 開(kāi)發(fā)
    發(fā)表于 07-21 16:36 ?0次下載

    高級(jí)C/C++編譯技術(shù)

    C/C++編譯技術(shù)
    發(fā)表于 12-04 17:19 ?18次下載

    微軟開(kāi)始嘗試使用Rust代替C/C++,介紹這些運(yùn)用Rust的產(chǎn)品

    微軟擁有世界上最大的C/C++代碼庫(kù)之一。從Windows、Office到Azure云,微軟的所有核心產(chǎn)品都在該代碼庫(kù)上運(yùn)行。但因?yàn)?b class='flag-5'>C++不
    的頭像 發(fā)表于 09-03 10:09 ?4180次閱讀

    VScode編譯器如何配置C/C++編譯環(huán)境

    昨天有伙伴私信我,為什么我C語(yǔ)言寫(xiě)的hello world幾行代碼,在編譯器里面報(bào)錯(cuò)了呢?
    的頭像 發(fā)表于 03-16 08:38 ?5682次閱讀

    qtC++寫(xiě)的2048小游戲源代碼

    qtC++寫(xiě)的2048小游戲源代碼
    發(fā)表于 09-27 11:48 ?1次下載

    Rust在虛幻引擎5中的使用

    前段時(shí)間,研究了一套 Rust 接入 Maya Plugin 的玩法,主要原理還是使用 C ABI 去交互。那我想著 UE 是使用 C++ 寫(xiě)的,肯定也可以使用
    的頭像 發(fā)表于 12-21 11:05 ?6282次閱讀

    Chromium正式開(kāi)始支持Rust

    ? Chromium 正式開(kāi)始支持 Rust 目前的支持只是第一階段,在C++代碼中使用Rust寫(xiě)的第三方庫(kù)(編譯成.so)。估計(jì)明年Chr
    的頭像 發(fā)表于 01-14 10:04 ?1015次閱讀

    RustC++哪個(gè)更好入門(mén)

    作為一門(mén)系統(tǒng)編程語(yǔ)言,Rust 一直致力于解決高并發(fā)和高安全性系統(tǒng)等問(wèn)題。和老牌的 C++ 相比,Rust 的性能也毫不遜色。但曾幾何時(shí),因?yàn)樯鲜蛛y、用戶(hù)量少、社區(qū)不活躍等諸如問(wèn)題讓想要入門(mén)的開(kāi)發(fā)者感到迷茫,如今新的一年已經(jīng)開(kāi)始
    的頭像 發(fā)表于 03-17 14:45 ?1995次閱讀

    Windows 11初嘗Rust,36000行內(nèi)核代碼已重寫(xiě)!

    。當(dāng)下,DWriteCore 包含了大約 152,000 行 Rust 代碼和 96,000 行 C++ 代碼
    的頭像 發(fā)表于 05-19 16:39 ?1042次閱讀
    Windows 11初嘗<b class='flag-5'>Rust</b>,36000行內(nèi)核<b class='flag-5'>代碼</b>已重寫(xiě)!

    取代C++!微軟Rust改寫(xiě)的Win11內(nèi)核來(lái)了

    按照微軟此前介紹,Rust 語(yǔ)言的優(yōu)勢(shì)在于極高的內(nèi)存安全性,原來(lái)內(nèi)核中大量的不安全的子例程在改寫(xiě)后消失不見(jiàn)。同時(shí),Rust 代碼簡(jiǎn)潔高效,移植后 Office 應(yīng)用沒(méi)有任何性能損失,甚至部分場(chǎng)景比
    的頭像 發(fā)表于 05-19 16:58 ?1463次閱讀
    取代<b class='flag-5'>C++</b>!微軟<b class='flag-5'>用</b><b class='flag-5'>Rust</b>改寫(xiě)的Win11內(nèi)核來(lái)了

    使用C++編寫(xiě)通用庫(kù)并在 Rust 中使用它 (WASI)

    的速度運(yùn)行代碼。它不特定于網(wǎng)絡(luò),也可以在其他平臺(tái)上運(yùn)行。WebAssembly 代碼可以從各種編程語(yǔ)言編譯而來(lái),例如 CC++
    的頭像 發(fā)表于 06-16 10:03 ?1146次閱讀
    使用<b class='flag-5'>C++</b>編寫(xiě)通用庫(kù)并在 <b class='flag-5'>Rust</b> 中使用它 (WASI)

    谷歌捐款100萬(wàn)美元給Rust基金會(huì),以增強(qiáng)C++Rust的交互性

    如今,谷歌多項(xiàng)核心業(yè)務(wù)仍以 C++為主要編程語(yǔ)言,雖然無(wú)法直接使用Rust替代現(xiàn)有的C++程序,但谷歌依然選擇支持Rust基金會(huì)的“Interop Initiative”計(jì)劃,幫助那些
    的頭像 發(fā)表于 02-19 15:41 ?696次閱讀

    [鴻蒙]OpenHarmony4.0的Rust開(kāi)發(fā)

    。 OpenHarmony 為了集成 C/C++ 代碼和提升編譯速度,使用了 GN + Ninja 的編譯構(gòu)建系統(tǒng)。GN 的構(gòu)建語(yǔ)言簡(jiǎn)潔易讀
    的頭像 發(fā)表于 02-26 17:28 ?949次閱讀
    [鴻蒙]OpenHarmony4.0的<b class='flag-5'>Rust</b>開(kāi)發(fā)
    主站蜘蛛池模板: 韩国三级日本三级在线观看 | 免费视频播放 | 免费两性的视频网站 | 种子天堂bt | xxx69日本hd| 欧美3d成人动画在线 | 夜夜操网| 男女视频在线 | 国产亚洲卡二卡3卡4卡乱码 | 九色综合九色综合色鬼 | 中文4480yy私人免费影院 | 亚洲综合在线一区 | 99色99| 毛片黄色| 国产成人一区二区在线不卡 | 久色tv| 欧美黄色片在线观看 | 色综合久久五月 | 国产精品午夜高清在线观看 | 日韩1级片 | 欧美白人极品性喷潮 | 97人人做人人添人人爱 | 一区视频 | 一区二区视屏 | 黄色靠逼网站 | aaaaa毛片 | 奇米影视四色首页手机在线 | 亚洲成综合人影院在院播放 | 欧美福利二区 | 色两性网欧美 | 久青草视频在线 | 国产20岁美女一级毛片 | 欧美综合精品一区二区三区 | 夜夜操天天射 | 免费一级视频在线播放 | 国产毛片久久国产 | 卡2卡三卡四卡精品公司 | 色盈盈| 人人干视频在线观看 | 久久riav二区三区 | 色多多在线播放 |