surrealkv -- 基于 Rust 的 low level、版本化、嵌入式、符合 ACID 的鍵值數據庫
surrealkv 是基于 Rust 中的版本化、low level、嵌入式鍵值數據庫。它持久保存到磁盤,符合 ACID,并支持多個讀取器和寫入器。
特性
內存數據庫
可嵌入
ACID 語義,具有豐富的事務支持和回滾
內置項目版本控制
多版本并發控制
多個并發讀取器和寫入器
持久的僅附加文件格式以實現持久性(支持 WAL)
rspack -- 基于 Rust 的高性能模塊打包工具
Rspack(讀音為 /'ɑresp?k/,)是一個基于 Rust 的高性能構建引擎, 具備與 Webpack 生態系統的互操作性,可以被 Webpack 項目低成本集成,并提供更好的構建性能。
初衷
作者寫道:創建 Rspack 的原因是要解決在 ByteDance 維護構建工具時遇到的各種性能問題。由于 ByteDance 內部存在許多巨石應用,它們都具有復雜的構建配置,生產環境構建需要耗費十幾分鐘,甚至超過半小時;開發環境的耗時也超過十幾分鐘。我們在 Webpack 上嘗試了多種方法來優化這些巨石應用,但是效果甚微。我們意識到在 Webpack 上的優化已經難以為繼,必須要從底層改造,才能適應我們的需求。同時在聆聽解決業務各種復雜的構建需求中,我們意識到開發人員對構建工具有以下要求:
快速的 Dev 啟動性能。 npm run dev 是開發者每天需要運行很多次的命令,但大型項目每次都需要等待 10 分鐘,這對于工程師來說非常痛苦,因此優化開發模式下啟動的時間至關重要。
高效的 Build 性能。 npm run build 經常在 CI/CD 環境中運行,它決定了應用生產交付的效率。有些應用在生產環境中需要 20 到 30 分鐘的構建時間,如果能縮短這段時間,對開發流程也將非常有幫助。
靈活的配置。 用戶工程的配置非常靈活,不夠統一。在之前的嘗試中,將 Webpack 配置遷移到其他構建工具時,我們遇到了許多問題,因為其他構建工具的配置不如 Webpack 靈活。
生產環境的優化能力。 在啟用 Rspack 之前,我們嘗試了社區內的各種方案,但它們都面臨著一定程度的生產環境負優化,例如拆分包不夠精細等。因此,優化生產環境的產物是我們不可放棄的功能。
在確定了這四個需求后,我們調查了社區中的所有技術方案,它們通常都能很好的滿足其中個別需求,但沒有一個方案能同時滿足所有條件。因此,我們決定自研 Rspack。
Rspack 目前的狀態
到 2023 年 3 月為止 Rspack 已經開發了 11 個月,雖然 Rspack 仍處于比較早期的狀態,且缺失了一些 webpack 的功能,但根據二八原則,目前的功能已經能夠滿足大多數項目的需求。同時,我們已經在內部的多個業務上完成了落地,取得了 5~10 倍編譯性能的提升。目前的性能仍然存在較大提升空間,我們會持續對 Rspack 進行更深入的性能優化。Rspack 已經完成了對 webpack 主要配置的兼容,并且適配了 webpack 的 loader 架構。目前,你已經可以在 Rspack 中無縫使用你熟悉的各種 loader,如 babel-loader、less-loader、sass-loader、vue-loader 等等。
目前 Rspack 對緩存支持還比較簡單,僅支持了內存級別的緩存,未來我們會建設更強的緩存能力,包括可遷移的持久化緩存,這將帶來更大的想象空間,如在 monorepo 里不同的機器上都可以復用 Rspack 的云端緩存,提升大型項目的緩存命中率。
特性
啟動速度極快: 基于 Rust 實現,構建速度極快,帶給你極致的開發體驗。
閃電般的 HMR: 內置增量編譯機制,HMR 速度極快,完全勝任大型項目的開發。
兼容 webpack 生態: 針對 webpack 的架構和生態進行兼容,無需從頭搭建生態。
內置常見構建能力: 對 TypeScript、JSX、CSS、CSS Modules、Sass 等提供開箱即用的支持。
默認生產優化: 默認內置多種優化策略,如 Tree Shaking、代碼壓縮等等。
框架無關: 不和任何前端框架綁定,保證足夠的靈活性。
審核編輯:劉清
-
嵌入式
+關注
關注
5090文章
19176瀏覽量
306938 -
讀取器
+關注
關注
0文章
47瀏覽量
5291 -
Rust
+關注
關注
1文章
230瀏覽量
6641
原文標題:【Rust日報】2023-12-20 surrealkv -- 基于 Rust 的 嵌入式、符合 ACID 的鍵值數據庫
文章出處:【微信號:Rust語言中文社區,微信公眾號:Rust語言中文社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論