五個很棒的(但鮮為人知的)Rust項目
雖然你可能已經聽說過像Tauri, Deno或Helix這樣的優(yōu)秀項目,但它們都是可以直接使用的“成品”,所以它們很容易獲得認可。
隨著Rust成為構建底層基礎設施事實上的語言,把不太知名的項目放在聚光燈下是很重要的,這些項目將為我們的數(shù)字世界提供快速、安全和可靠的構建塊。
Neon
Neon通過讓PostgreSQL數(shù)據(jù)平臺(是的,PostgreSQL不僅僅是一個數(shù)據(jù)庫)使用兼容s3的存儲作為后端,重新定義了數(shù)據(jù)庫世界。
雖然它使Postgres的單片架構變得復雜,但它也解決了許多問題:read-replicas現(xiàn)在使用單一的數(shù)據(jù)源而不是容易出錯的復制,我們不再需要使用緩慢而昂貴的網(wǎng)絡存儲(如AWS的EBS)來獲得高可用性的數(shù)據(jù)庫,數(shù)據(jù)庫的升級/降級現(xiàn)在只是生成一個新的容器/microVM的問題,不需要做任何復制。
Datafusion
在過去的數(shù)據(jù)系統(tǒng)中,我們看到了不同層的分離:查詢引擎、內存表示和存儲。Datafusion是一個新的高性能和可擴展的查詢引擎,它允許數(shù)據(jù)工程師使用Rust/Python的高級接口直接查詢數(shù)據(jù)源,或者使用它作為查詢層來構建數(shù)據(jù)系統(tǒng),以構建和優(yōu)化查詢任務。它已經支持了許多令人印象深刻的項目,如InfluxDB、GreptimeDB和paradeDB。
圖片
例如,你可以從任何對象存儲/ HTTP服務器中查詢CSV或parquet文件,只需幾行代碼:
use datafusion::prelude::*;
use object_store::http::HttpBuilder;
use std::sync::Arc;
use url::Url;
#[tokio::main]
async fn main() -> Result<()> {
let ctx = SessionContext::new();
let base_url = Url::parse("https://github.com").unwrap();
let http_store = HttpBuilder::new()
.with_url(base_url.clone())
.build()
.unwrap();
ctx.register_object_store(&base_url, Arc::new(http_store));
ctx.register_csv(
"aggregate_test_100",
"https://github.com/apache/arrow-testing/raw/master/data/csv/aggregate_test_100.csv",
CsvReadOptions::new(),
)
.await?;
let df = ctx
.sql("SELECT c1,c2,c3 FROM aggregate_test_100 LIMIT 5")
.await?;
df.show().await?;
Ok(())
}
PGRX
正如我們在Neon中看到的,PostgresSQL不再是一個簡單的數(shù)據(jù)庫了。它已經成為一個“數(shù)據(jù)內核”,管理如何存儲和查詢數(shù)據(jù),就像Linux是一個“計算內核”,管理進程和資源一樣。因此,開發(fā)人員不滿足于用c語言構建擴展是很自然的。有了pgrx,問題就解決了,我們現(xiàn)在可以用Rust構建快速、安全、可靠的Postgres擴展。
AWS-LC-RS
根據(jù)一項加密庫漏洞的實證研究,加密庫中37.2%的漏洞是內存安全問題,而只有27.2%是加密問題?,F(xiàn)在是時候不再把C作為實現(xiàn)加密庫的實際語言了。
由于Rust的高級特性與底層控制,沒有垃圾收集器,可移植性和易于嵌入,Rust是我們取代當今最常用的加密庫的最佳選擇:OpenSSL, BoringSSL和libsodium,它們都是用C編寫的。
AWS-LC-RS是AWS的libcrypto的包裝器,libcrypto是由AWS密碼學團隊為AWS及其客戶維護的通用加密庫。它支持大多數(shù)平臺(Linux、Windows、macOS、Android)和最常見的體系結構(x86-64、aarch64)。
AWS-LC-RS非??欤瑩碛心阈枰乃性Z,有一個很好的API,并為最苛刻的行業(yè)提供fips驗證模式。
Rustls
TLS協(xié)議無處不在!無論你是在網(wǎng)頁瀏覽器、電子郵件客戶端還是移動應用程序中閱讀,至少有六個TLS連接為你提供這些內容。最常用的庫(OpenSSL和BoringSSL)是用C編寫的,這導致了許多與內存相關的問題。不幸的是,它也是一個相當復雜的協(xié)議,因此構建一個新的庫需要大量的努力。
Rustls是可用于生產的TLS在Rust中的實現(xiàn),比它的C對應物更快更安全。它的強大之處在于它不局限于Rust,它也可以在任何帶有rustls-ffi的語言中使用,所以可以期待其他語言(如C、C++、Python和Ruby)的項目都能采用它。