❶ Rust VS Python:為什麼越來越流行,取代榜一 Python
2021 年,Python 又獲得了 TIOBE 年度編程語言,排名已經是第一。而 Rust 依然在 20 名以外。但依然有人認為,Rust 甚至可能取代 Python。不過這不重要,認清兩者的優缺點,進而合適的地方使用合適的語言,這才最重要。
在這個指南中,我們將比較 Rust 和 Python 這兩門語言,同時將討論它們各自的應用場景,回顧使用 Rust vs. Python 的優缺點,並解釋 Rust 為什麼越來越受歡迎(甚至可能取代 Python)。
Rust [1] 是一門系統編程語言,專注於安全,尤其是並發安全,支持函數式和命令式以及泛型等編程範式的多範式語言。Rust 在語法上和 C++ 類似,但是設計者想要在保證性能的同時提供更好的內存安全。Rust 最初是由 Mozilla 研究院的 Graydon Hoare 設計創造,然後在 Dave Herman, Brendan Eich 以及很多其他人的貢獻下逐步完善的。Rust 的設計者們通過在研發 Servo 網站瀏覽器布局引擎過程中積累的經驗優化了 Rust 語言和 Rust 編譯器。
Rust 擁有 優秀的文檔 [2] 、友好的編譯器和有用的錯誤消息,以及頂級工具,包括集成包管理器、構建工具、支持自動完成和類型檢查的智能多編輯器、自動格式化程序等等。
Rust 發布於 2010 年。雖然和 Python 相比,Rust 是一門年輕的語言,但是它的社區正在穩步增長。事實上,Rust 已經連續五年(2016,2017,2018,2019,2020)在 Stack Overflow 開發者調查的「最受喜愛編程語言」評選項目中摘取桂冠。
乍一看,Rust 的靜態化和強類型化可能看起來有點極端。但從長遠來看,這有助於防止意外的代碼行為。
Python [3] 是一門旨在幫助開發人員更有效地工作和更有效地集成系統的編程語言。Python 提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python 語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用於獨立的、大型項目的開發。如果速度是最重要的,可以使用較低級別的 API 調用,如 CPython [4] 。
1991 年 Guido van Rossum 推出了 Python,以其代碼的可讀性、無分號和花括弧而著稱。
除了可擴展性之外,Python 還是一門解釋型語言,這使得它比大多數編譯型語言要慢。正如您可能期望的那樣,Python 擁有一個龐大的庫生態系統和一個龐大的專業社區。
Rust 被應用於系統開發、操作系統、企業系統、微控制器應用、嵌入式系統、文件系統、瀏覽器組件、虛擬現實的模擬引擎等。
當性能很重要的時候,Rust 是一種常用的語言,因為它能很好地處理大量數據。它可以處理 CPU 密集型的操作,如執行演算法,這就是為什麼 Rust 比 Python 更適合系統開發的原因。
Rust 保證了內存的安全性,讓你可以控制線程行為和線程之間的資源分配方式。這使你能夠構建復雜的系統,也使得 Rust 比 Python 更有優勢。
總而言之,你應在以下情況下使用 Rust:
Python 可以用於許多應用領域,從 Web 開發,到數據科學和分析,到 AI 和機器學習,再到軟體開發。
Python 被廣泛用於機器學習,數據科學和 AI,因為它:
在以下情況下,你應該使用 Python:
考慮到 Rust 的迅速普及、受歡迎程度和廣泛的使用案例,它幾乎不可避免地會在不久的將來超越 Python,以下是一些原因。
Rust 超越 Python 的一個主要原因是性能。因為 Rust 是直接編譯成機器代碼的,所以在你的代碼和計算機之間沒有虛擬機或解釋器。
與 Python 相比,另一個關鍵優勢是 Rust 的線程和內存管理。雖然 Rust 不像 Python 那樣有垃圾回收機制,但 Rust 中的編譯器會強制檢查無效的內存引用泄漏和其他危險或不規則行為。
編譯語言通常比解釋語言要快。但是,使 Rust 處於不同水平的是,它幾乎與 C 和 C ++一樣快,而且沒有額外開銷。
讓我們看一個用 Python 編寫的 O(log n) 程序的示例,並使用迭代方法計算完成任務所需的時間:
輸出:
現在,讓我們來看一下使用迭代方法用 Rust 編寫的定時 O(log n) 程序:
輸出
在沒有使用任何優化技術的情況下,Rust 和 Python 在同一台機器上執行類似的操作分別需要 4.6 微秒和 8.6 微秒。這意味著 Python 花費的時間幾乎是 Rust 的兩倍。
Python 和大多數現代編程語言一樣,被設計成內存安全的。然而,即使沒有垃圾回收。Rust 在內存安全方面卻讓 Python 望塵莫及。
Rust 採用了一種獨特的方式來確保內存安全,其中涉及所有權系統和借用檢查器(borrow checker)。Rust 的借用檢查器確保引用和指針不會超過它們所指向的數據。
Python 和其他語言一樣,提供了錯誤檢查和日誌機制。但是在讓開發者知道哪裡出了什麼問題的時候,Rust 和 Python 之間有一些差異。
舉一個 Python 變數錯誤的典型例子:
Python 輸出
Rust 中的類似示例:
Rust 輸出
在這里,Rust 推薦了可能的變數,這些變數可能是你想輸入的。Python 只會拋出錯誤,而不會給出如何修復的建議。
再舉個例子:
此代碼引發錯誤,因為默認情況下 Rust 中的變數是不可變的。除非它具有關鍵字 mut ,否則無法更改。
錯誤:
修正錯誤:
如你所見,現在它不會引發任何錯誤。除此之外,Rust 不允許不同的數據類型相互操作,除非將它們轉換為相同的類型。
因此,維護 Rust 代碼庫通常很容易。除非指定,否則 Rust 不允許更改。Python 是允許這種性質的更改的。
與大多數編譯語言相比,Rust 因其速度快、內存安全有保證、超強的可靠性、一致性和用戶友好性而備受青睞。在編程中,我們已經到了速度開始變得毫不費力的地步。
隨著技術的發展,它變得越來越快,試圖在更短的時間內做更多的事情,而不需要那麼多的權衡。Rust 幫助實現了這一點,同時又不妨礙開發者的工作。當技術試圖推動可以實現的邊界時,它也會考慮系統的安全性和可靠性,這是 Rust 背後的主要思想。
除了速度外,Python 在並行計算方面也有局限性。
Python 使用全局解釋器鎖(GIL),它鼓勵只有一個線程同時執行,以提高單線程的性能。這是一大局限,因為它意味著你不能使用多個 CPU 核進行密集計算。
如前所述,Stack Overflow 的「 2020 開發人員調查」中有 86%的受訪者將 Rust 稱為 2020 年最喜歡的編程語言。
同樣,「 2020 HackerRank 開發人員技能報告」的受訪者將 Rust 列為他們計劃下一步學習的十大編程語言:
相比之下,2019 年的調查將 Rust 排在列表的底部,這表明 Rust 開發人員社區正在迅速增長。
這些數據表明,Rust 正在成為主流開發者社區的一部分。許多大公司都在使用 Rust,一些開發者甚至用它來構建其他編程語言使用的庫。著名的 Rust 用戶包括 Mozilla、Dropbox、Atlassian、npm 和 Cloudflare 等等。
Amazon Web Service 還對 Lambda,EC2 和 S3 中的性能敏感組件採用了 Rust。在 2019 年,AWS 宣布贊助 Rust 項目,此後為 Rust 提供了 AWS 開發工具包。
公司正越來越多地用更高效的編程語言(如 Rust)取代速度較慢的編程語言。沒有其他語言能像 Rust 一樣在簡單和速度之間做出平衡。
Rust 已經發展成為一門易於使用的編程語言,因此它的使用率有所提高。盡管 Python 在機器學習/數據科學社區中佔有堅實的地位,但 Rust 在未來很可能被用作 Python 庫更有效的後端。
Rust 具有取代 Python 的巨大潛力。目前的趨勢是,在應用程序、性能和速度方面,Rust 不僅僅是一種編程語言,它還是一種思維方式。
各位看官你們覺得呢?評論區留下你的看法!
❷ rust是前端還是後端
後端。
Rust是一款高級通用語言,而且屬於少有的一款兼顧開發和執行效率的編程語言。Rust結合了腳本語言的語法結構和C語言編譯執行效率,並且具有類似垃圾回收和數據類型及所有權系統等功能,所以可靠性和高性能運行都屬於Rust的特色。
雖然是一個非常年輕的編程語言,但是Rust可以算是最近幾年最流行的編程語言。5月發布的Stack Overflow 2020開發者調查中,Rust被86.1%開發者選擇為「最喜歡」的編程語言,比第二名TypeScript高出近20%。
雖然Rust並不是一個專屬的網路應用開發語言,但是作為一個以安全著稱的編輯語言,實際上是非常適合網路開發的。而且因為是編譯型語言,編譯器也能在過程中就安全穩定的問題作出提醒,作為後端網路開發還是不錯的一個優勢。
Rust的通用庫中已經包含了類似TcpListener這樣的網路通訊庫,可以直接通過調用std : : net 下面的TcpListener來直接監聽Tcp埠,然後再處理Request。這點上與一些腳本型的編程語言比要自由得很多。
Rust作為比較流行的編程語言,也有不少第三方HTTP庫來支持Web開發,可以不用再花時間從底層開發,比較熱門的庫像Hyper或者Tide都是被不少Web開發框架用到的。Rust下Web開發框架也不少,比較熱門的有Rocket、Actix-Web、Tower-web、Warp等等框架。
❸ Rust 宏簡記 - 以 vec! 為例
Rust 的宏,這里主要指的是 macro_rules! ,可以實現很多強有力的工具,但是畢竟跟函數實現還是不同,需要有一些額外注意的點。
這里簡要解析一下 std::vec! 的實現。此段需要讀者大致明白 vec! 的用法。
首先, #[cfg(not(test))] 表示這是一個僅在非 test 模式下才有用的宏,換言之,test 模式可能使用一個其他的宏。這里不展開此問題。
#[macro_export] 表示這個宏可以在其他的 crate 中使用。
頭部標記的剩餘兩行也不解釋。
vec! 這個宏有三種形式,第一種類似數組的定義方式。 [0; 10] 定義一個長度是 10,每個數字都是 0 的數組,相應地, vec![0; 10] 構造類似的 Vec 。
有趣的是,宏的定義中「參數」外部的括弧是小括弧,但是大多標准庫的文檔給出的實例都是中括弧。這是因為 Rust 的宏不限制「調用」的括弧是什麼,我們甚至可以選擇大括弧。而 vec! 調用時選擇中括弧的原因,只是為了讓這種語法跟構造數組的語法更相似而已。
參數列表裡的 expr 放在 $elem 的類型的位置,這從語法上,跟 Rust 函數的參數類型也是相似的。 expr 表示 $elem 需得是一個表達式(Expression),此外還有一些其他的,宏參數可以用的類型。由此看出,Rust 的宏是有基本的類型分類的,而不是像 C 那樣,所有參數都是沒有類型的 token。
還有一點, $crate 這個宏參數,並不在參數列表裡,所以可以推測它是用來表示某個特殊意思的參數。而從這個參數的命名上來說,它應該表示當前 crate 的名字。 vec! 當然是在 std 這個 crate 實現的。但是 std 不能假定使用這個宏的人,也把此 crate 起名叫做 std。Rust 允許用 as 關鍵字重命名一個 crate,而 $crate 理應為我們的宏適配這種命名修改。所以我們在編寫導出到 crate 外部的宏的時候,想要訪問 crate 內部的類型或者方法時,都應該使用這個參數。
第二種形式就顯得不太好閱讀,但是結合第三種形式,我們還是能猜出它的意思。第二個形式匹配 vec![a, b, c] 這樣的調用,第三個形式匹配 vec![a, b, c,] 這樣的調用。根據這種模式,我們猜測 ($($x:expr);*) 可能匹配 (a; b; c) 這種調用。
第二個形式中,參數的使用和參數定義基本上是一樣的格式(只是沒了類型定義)。所以我們猜測這個效果也就是把參數按照 a, b, c 這樣展開而已。但 box [a, b, c] 是個什麼還看不懂。根據頭上的 box_syntax ,我覺得這是一種還沒有 stable 的新的語法。
可以看出第三個形式的調用調用了第二個形式,我認為個實現沒什麼營養,可能 Rust 編譯器需要考慮一下怎麼移除這種沒必要的特性。
❹ 我們為什麼用Rust
Rust 是一門系統級編程語言,被設計為保證內存和線程安全,防止段錯誤產生。作為系統級編程語言,它的基本理念是 「零開銷抽象」。理論上來說,它的速度與 C/C++ 同級。Rust 可以被歸為通用的、多範式、編譯型的編程語言,類似 C/C++。與這兩門編程語言不同的是,Rust 是線程安全的!Rust 編程語言的目標是,創建一個安全和並發的軟體系統。它強調安全性、並發和內存控制。盡管 Rust 借用了 C/C++ 的語法,卻杜絕了空指針和懸掛指針,而這二者是 C/C++ 中系統崩潰、內存泄露和不安全代碼的根源。
雖然 Rust 是一門系統級編程語言,但並不意味著它只能寫底層程序(操作系統、驅動、工具、資料庫、搜索引擎等),它的抽象層次之高完全給人驚艷的感覺,實踐證明它對問題建模的能力和方便性不比 C++/Java/Python/Ruby 差。但 Haskell 這類超高抽象語言,也不是 Rust 的發展方向。Rust 力求在抽象與現實世界中找到一個平衡。
在向SCRY 項目研發負責人Peace交流時,他說到,當時選擇Rust,主要有兩個原因:一是有高性能要求時,原來好多人會選擇C/C++,現在多了一個Rust選擇,還解決了C/C++許多不足;二是Rust應用在區塊鏈有成熟的參考。最後Peace給了未來使用SCRY項目開源部分的學習者一些建議,「快速的學習能力,快樂地把小事做好,正確合理定義一個函數。」
Rust到底有多受歡迎呢?目前,Rust 已經在 StackOverflow 的年度語言評選中,連續 4 年榮獲「程序員最喜愛語言」第一名(2016, 2017, 2018, 2019)。以下是 2019 年調查的截圖:
但比起Python、C、C++ 等,Rust還只是個小年輕。調查顯示,更多的人不去學習 Rust 還是因為 Rust 沒有足夠的活躍商業項目讓它成為企業的一部分。
不過,Rust 在工作中的佔比也越來越高。過去一年間,Rust 在商業應用上有著令人驚訝的成長。下面是部分人們熟知的公司:
國內的網路,阿里,也已經在內部小范圍的使用上了Rust。
就在本月初,微軟還推出了基於 Rust 的 Windows 運行時項目 Rust/WinRT。該項目和 C++/WinRT 一脈相承,用標准語言和編譯器為 Windows 運行時構建語言投影,從而方便 Rust 開發人員調用 Windows API,更輕松地使用 Rust 構建各類 Windows 應用和組件。
(https://blogs.windows.com/windowsdeveloper/2020/04/30/rust-winrt-public-preview/)
2015年下半年,Gavin Wood 博士創立了 Parity Technologies,推出以太坊(Ethereum)客戶端 parity,而這個 parity 客戶端就是使用Rust寫的。實際在 parity 出現之前,MaidSafe項目就已經出現了。MaidSafe用 Rust 語言嘗試了很多東西。Rust語言本身強調的安全性以及MaidSafe這些前沿項目,可能給了 Gavin 充分的理由選擇 Rust 作為 parity 開發語言。
寫一個有效率的、符合習慣的Rust程序比寫一個有潛在危險的程序容易得多。下面是Linux內核在2018年一月到四月期間發現的bug:
而對於Rust而言,上圖右側佔比 51% 的部分,從語言層面就可以避免。也就是說,對Rust來說,根本不存在上圖右邊這些問題。
Rust在實現內存安全和並發安全的同時,並沒有以損失性能為代價。更牛逼的是,它甚至是用同一套抽象解決了內存安全和數據競爭這兩個不同領域的問題。
Rust的零開銷抽象讓你在享受安全性的同時,又不損失性能。這正是傳統的程序員夢寐以求的。
Solana的首席執行官Anatoly Yakovenko在一段采訪中提到剛開始項目的時候,他用了兩周時間使用C語言,但是當用到一些外部庫的時候,還得寫makefile,手動下載這些庫,比較麻煩。所以,他決定嘗試一下Rust。就在那一刻,「Holy shit, this is amazing.」「我才覺醒到,這是一個和C語言一樣快的語言,並且還給了我Haskell般的類型安全。Rust擊中了我,這真的很酷。」
今天Rust滿5歲了(2020年5月15日,是Rust語言正式發布5年生日)。Rust語言正在IT工業各個領域快速發展,而由於區塊鏈本身的特質,區塊鏈領域是較早接納Rust的領域之一。在區塊鏈領域,Rust正以勢如破竹之勢佔領區塊鏈新興項目市場,很多著名的老項目也在考慮轉向使用Rust重寫。
祝Rust 5周年生日快樂!
參考:
1. Why Rust?
https://www.parity.io/why-rust/
2. Meetup with Solana, Zcash, & Parity — Why Rust Is Ideal For Blockchain Development?
https://medium.com/solana-labs/solana-at-portland-dev-meetup-72e4dc7ad32c
3. Rust 2017 Survey Results
https://blog.rust-lang.org/2017/09/05/Rust-2017-Survey-Results.html
4. 微軟開源 Rust/WinRT,方便使用 Rust 構建 Windows 應用
https://www.oschina.net/news/115354/microsoft-winrt
5. Stack Overflow』s Developer Survey Results 2019
https://insights.stackoverflow.com/survey/2019#developer-profile-_-what-inpial-person-will-have-the-most-influence-in-tech-this-year
6. 當區塊鏈遇上Rust
https://rustcc.cn/article?id=289da7be-19ce-49fe-af6d-3a7946404ca6
❺ 【Rust交叉編譯】cross使用較低版本的glibc
眾所周知,glibc已經成為了Linux二進製程序在各種發行版之間不兼容的重要因素了,究其原因,是glibc的版本兼容性機制。比如在高版本glibc的Linux機器上編譯和鏈接的二進制,在低版本glibc的Linux運行會報如下錯誤:
並且,glibc做靜態鏈接時會出現比較奇怪的問題(nss等),所以各發行版一致不推薦glibc靜態鏈接。那麼目前比較好的方案是,需要發行的應用,在比較低版本的glibc做編譯和鏈接。
而Rust官方提供了 cross 這個工具做交叉編譯的工作,而常用的taget x86_64-unknown-linux-gnu 的glibc版本為2.15,對於某些老到掉牙的發行版來說,可能還是會有兼容性問題,所以我基於Centos6打包了一個鏡像: https://hub.docker.com/repository/docker/jmjoy/cross ,內置的glibc版本為2.12。
使用方法:
在Cross.toml中:
❻ Rust語言有那些好的GUI庫
如下:
1、GTK,官方支持rust綁定,寫各種復雜應用程序沒有問題,支持各種平台自有主題風格設置,就是非linux平台配置部署麻煩一些。
2、fltk-rs,非常成熟的c++gui庫rust綁定,寫工具軟體完全夠用,上手簡單、易用,有gui界面生成程序,生成的gui程序不到1M,運行佔用資源少,效率也高。
介紹
Rust是一門系統編程語言,專注於安全,尤其是並發安全,支持函數式和命令式以及泛型等編程範式的多範式語言。
Rust在語法上和C++類似,但是設計者想要在保證性能的同時提供更好的內存安全。 Rust最初是由Mozilla研究院的Graydon Hoare設計創造,然後在Dave Herman, Brendan Eich以及很多其他人的貢獻下逐步完善的。
❼ Rust語言的最新版本說明
Mozilla在2014年10月宣布發布Rust編譯器和工具的0.12版。
0.12版有1900多項變化和bug修正,其中主要包括:重寫了入門文檔(現在叫Rust Guide);繼續提高了包管理器Cargo等。
在2015年1月,發布了Rust-1.0.0-alpha版本。
2015年5月15日,Rust編程語言核心團隊正式宣布發布Rust 1.0版本。
2015年6月25日,Rust發布了1.1版本。同時發布1.2測試版本 編譯速度在1.1版本的基礎上再提升30% 並行編譯又能用了,默認未開啟,如果開啟,還能提升33%的編譯速度(數據來自4核編譯rustc) Cargo性能提升(編譯Servo時啟動速度提升10倍),可在多個package之間共享依賴包緩存 初步支持MSVC(Microsoft Visual C),以後Windows環境中不需要MinGW/MySYS/GCC了 Rust 1.2 穩定版 將在六周之後發布,屆時還將一並發布 1.3 測試版
❽ 我為什麼要選擇Rust
你好,很高興為你解答。
專訪資深程序員庄曉立:我為什麼要選擇Rust?
Rust是由Mozilla開發的注重安全、性能和並發性的編程語言。這門語言自推出以來就得到了國內外程序員的大力推崇。Rust聲稱解決了傳統C語言和C++語言幾十年來飽受責難的內存安全問題,同時還保持了極高的運行效率、極深的底層控制、極廣的應用范圍。但在國內有關Rust的學習文檔並不多見,不久前,筆者聯繫上了Rust1.0版本代碼貢獻者庄曉立(精彩博文:為什麼我說Rust是靠譜的編程語言),請他分享Rust語言特性以及學習經驗。
CSDN:你是從什麼時候開始接觸Rust語言的?是什麼地方吸引了你?
庄曉立:我大概從2013年後半年開始深入接觸Rust語言。它居然聲稱解決了傳統C語言和C++語言幾十年來飽受責難的內存安全問題,同時還保持了極高的運行效率、極深的底層控制、極廣的應用范圍。
其ownership機制令人眼前一亮,無虛擬機(VM)、無垃圾收集器(GC)、無運行時(Runtime)、無空指針/野指針/內存越界/緩沖區溢出/段錯誤、無數據競爭(Data Race)……所有這些,都深深地吸引了我——這個十多年以來深受C語言折磨的痛並快樂著的程序員。
CSDN:在你看來,Rust是怎樣的一門語言?它適合開發什麼類型的項目?為何你會說Rust不懼怕任何競爭對手,它既能取代C語言地位;又可挑戰C++市場,還可向Java、Python分一杯羹?與這些語言相比,Rust有哪些優越的特性?
庄曉立:Rust是一門系統編程語言,特別適合開發對CPU和內存佔用十分敏感的系統軟體,例如虛擬機(VM)、容器(Container)、資料庫/游戲/網路伺服器、瀏覽器引擎、模擬器等,而這些向來主要都是C/C++的傳統領地。
此外,Rust在系統底層開發領域,如裸金屬(bare metal)、操作系統(OS)、內核(kernel)、內核模塊(mod)等,也有強勁的實力,足以挑戰此領域的傳統老大C語言。Rust豐富的語言特性、先進的設計理念、便捷的項目管理,令它在上層應用開發中也能大展拳腳,至少在運行性能上比帶VM和GC的語言要更勝一籌。無GC實現內存安全機制、無數據競爭的並發機制、無運行時開銷的抽象機制,是Rust獨特的優越特性。
其他語言很難同時實現這些目標,例如傳統C/C++無法保證內存安全,Java/Python等無法消除運行時開銷。但Rust畢竟還是很年輕的項目,它釋放影響力需要時間,被世人廣泛接受需要時間;它的潛力能否爆發出來,需要時間去檢驗。我們只需耐心等待。
CSDN:Rust在國內有沒有具體的實際使用案例?
庄曉立:因為Rust1.0正式版剛剛發布不足一月,在國內影響力還不大,我們不能苛求它在國內有實際應用案例。但是在國外,一兩年前就已經有OpenDNS和Skylight把Rust應用在生產環境。還有瀏覽器引擎Servo、Rust編譯器和標准庫、項目管理器Cargo等「兩個半大型應用案例」。這些足夠說明Rust語言的成熟和實用。
CSDN:你參與了Rust1.0版本代碼貢獻,目前該版本正式版已經發布,對此你感覺如何?這門語言是否已經達到比較成熟的階段?
庄曉立:我積極參與了Rust語言開源項目,多次貢獻源代碼,曾連續三次出現在Rust官方博客公布的Rust 1.0 alpha、Rust 1.0 beta和Rust 1.0正式版的貢獻者名單中。在Rust 1.0正式版出台的過程中及此前的很長一段時間,開發者付出了極大的努力,確保Rust 1.0正式版在Semver 2.0規范下,務必保持向後兼容性,除非遇到重大Bug不得不修復。
我認為,在1.0正式發布之後,Rust就已經進入了比較成熟的階段。而且,Rust還在快速迭代發展過程中,1.0發布6周後將發布1.1,再6周後將發布1.2,必然會一步一個台階,越來越成熟穩定。
CSDN:除了功能優先順序以外,在你看來,Rust正在朝什麼方向發展?未來的Rust可以期待什麼樣的特性?
庄曉立:Rust一定會沿著「確保內存安全、無運行開銷、高效實用」的既定方向持續發展。在短期內值得期待的語言特性有:動態Drop、偏特化、繼承、改進borrow checker、改進宏和語法擴展。短期內值得期待的其他特性有:增強文件系統API、提供內存申請釋放API、更好地支持Windows和ARM、更快的編譯速度、更方便的二進制分發機制(MUSL)、更實用的工具等等。
CSDN:據我了解,你之前也比較推崇Go語言,為何想到放棄Go轉向Rust?
庄曉立:推崇Go語言還談不上,不過我曾經嘗試努力接受Go語言,2011底年開始我曾經花費將近半年時間深度關注Go開發進程,提了很多具體的改進意見和建議,也曾經多次嘗試貢獻源代碼。後來考慮到Go語言的設計理念跟我偏差太大,其社區也不太友好,慢慢地疏遠了它。我曾經寫過一篇博客《我為什麼放棄Go語言》,談到了很多具體的原因。
CSDN:國內,參與Rust代碼貢獻的開發者多嗎?有核心的人員嗎?有哪些社區在維護Rust?
庄曉立:國內參與Rust代碼貢獻的開發者並不多,但也不少,官方的貢獻者名單中也偶見幾個貌似國人的名字。Rust的核心開發人員基本上都是Mozilla公司的員工,他們專職負責開發維護Rust語言和相關的項目,Rust社區也主要是他們參與組織和管理的。社區人員討論主要集中在GitHub項目主頁RFC/PR/Issue官方、Discuss論壇/IRC、Reddit、HN、StackOverflow等。
❾ Electron替代方案,rust跨平台GUI框架TAURI之hello world
tauri 是一個新興的跨平台GUI框架。與electron的基本思想相似,tauri的前端實現也是基於html系列語言。tauri的後端使用rust。官方形容,tauri可以創建體積更小、運行更快、更加安全的跨平台桌面應用。
詳細的介紹可以自行去官網查看:
官網
Github
本人使用windows10系統。本hello world,實現了以tauri搭建桌面程序,在html頁面點擊按鍵後,由後台rust反饋信息。
效果如下:
tauri 需要用到rust、nodejs,編譯器可使用vscode
官方文檔有比較詳細的環境搭建步驟,可參閱:
https://tauri.studio/docs/getting-started/intro
其中,當搭建完環境,使用命令
yarn add tauri
安裝tauri包時,可能會出現報錯:
pngquant failed to build, make sure that libpng-dev is installed
此錯誤並不影響使用,可忽略。
初始化完成的tauri程序結構如上圖所示。默認情況下dist菜單用於存放實際的頁面文件。具體可在tauri.conf.json文件中進行設置。
具體實現步驟如下:
❿ web3需要什麼編程語言
web3需要RUST編程語言:
Rust — 用於區塊鏈開發的最佳編程語言