成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Rust 會成為 JavaScript 基礎設施的未來嗎?

開發 前端
Rust 最初由 Mozilla 創建,是一種快速、可靠、內存效率高且非常流行的編程語言,專為提高性能和安全性而設計。

 

Rust 最初由 Mozilla 創建,是一種快速、可靠、內存效率高且非常流行的編程語言,專為提高性能和安全性而設計。它連續 6 年被 Stack Overflow 調查評為最喜愛的編程語言,并在超大規模的公司使用,如 Facebook,蘋果,亞馬遜,微軟和谷歌等用于系統基礎設施、加密和虛擬化。Rust 現在正在取代 JavaScript Web 生態系統的部分內容,例如壓縮 (Terser)、轉譯 (Babel)、格式化 (Prettier)、打包 (webpack)、linting (ESLint) 等等。讓我們深入探討一下為什么這種趨勢越來越受歡迎和被廣泛采用。

1、Rust 是什么?

Rust 幫助開發人員編寫內存高效的快速軟件。它是 C++ 或 C 等語言的現代替代品,專注于代碼安全和簡潔的語法。Rust 與 JavaScript 完全不同。JavaScript 嘗試查找未使用的變量或對象并自動從內存中清除它們。這稱為垃圾收集。該語言將開發人員從手動內存管理的思考中抽象出來。使用 Rust,開發人員可以更好地控制內存分配,而不會像 C++ 那樣痛苦。

“Rust 使用了一種相對獨特的內存管理方法,它結合了內存‘所有權’的概念。Rust 會跟蹤誰可以讀寫內存。它知道程序何時使用內存,并在不再需要時立即釋放內存。它在編譯時強制執行內存規則,幾乎不可能出現運行時內存錯誤。你不需要手動跟蹤內存。編譯器會處理它。” — Discord [1]

2、Rust 使用情況

除了上述公司之外,Rust 還被用于流行的開源庫,例如:

  • Firecracker [2] (AWS)

  • Bottlerocket [3] (AWS)

  • Quiche [4] (Cloudflare)

  • Neqo [5] (Mozilla)

“Rust 一直是我們團隊的力量倍增器,押注 Rust 是我們做出的最佳決定之一。不僅僅是性能,它的人體工程學和對正確性的關注幫助我們馴服了同步的復雜性。我們可以在類型系統中編碼關于我們系統的復雜不變量,并讓編譯器為我們檢查它們。” — Dropbox [6]

3、從 JavaScript 到 Rust

JavaScript 是使用最廣泛的編程語言,可在每個帶有網絡瀏覽器的設備上運行。在過去的 10 年里,圍繞 JavaScript 構建了一個龐大的生態系統:

  • Webpack:開發人員希望將多個 JavaScript 文件捆綁為一個。

  • Babel:開發人員希望在支持舊瀏覽器的同時編寫現代 JavaScript。

  • Terser:開發人員希望生成盡可能小的文件。

  • Prettier:開發人員想要一個可以正常工作的固執己見的代碼格式化程序。

  • ESLint:開發人員希望在部署之前發現他們的代碼存在的問題。

已經編寫了數百萬行代碼,并且修復了更多 bug,為當今的 Web 應用程序提供了基礎。所有這些工具都是用 JavaScript 或 TypeScript 編寫的。它們工作得很好,但我們已經達到了 JS 的最佳優化。這激發了一類新的工具,這些工具旨在大幅提高 Web 構建的性能。

SWC

SWC [7] 創建于 2017 年,是一個基于 Rust 的可擴展平臺,適用于下一代快速開發工具。它被 Next.js、Parcel 和 Deno 等工具以及 Vercel、字節跳動、騰訊、Shopify 等公司使用。SWC 可用于編譯、縮小、打包等 - 并且旨在進行擴展。你可以調用它來執行代碼轉換(內置或自定義)。通過 Next.js 等更高級別的工具運行這些轉換。

Deno

Deno [8] 創建于 2018 年,是一個簡單、現代且安全的 JavaScript 和 TypeScript 運行時,它基于 V8 [9] 并使用 Rust 構建。它試圖取代由 Node.js 的原始創建者編寫的 Node.js。雖然它是在 2018 年創建的,但直到 2020 年 5 月才發布 v1.0 [10] 。Deno 的 linter、代碼格式化程序和文檔生成器是 使用 SWC 構建的 [11] 。

esbuild

esbuild [12] 創建于 2020 年 1 月,是一個 JavaScript 打包器和壓縮器,比用 Go 編寫的其他工具快 10-100 倍。

“我正在嘗試創建一個構建工具,它 a) 適用于給定的最佳用例(打包 JavaScript、TypeScript,也許還有 CSS),b) 重塑社區對 JavaScript 構建意味著工具要快。在我看來,我們目前的工具太慢了。” — Evan [13] ,esbuild 的創建者

在 esbuild 發布之前,使用 Go 和 Rust 等系統編程語言構建 JavaScript 工具是相當小眾的。在我看來,esbuild 激發了人們更廣泛的興趣,試圖讓開發者工具變得更快。Evan 選擇使用 Go:

“只要付出足夠的努力,Rust 版本能以相同的速度運行。但在高層次上,Go 的工作要愉快得多。這是一個附帶項目,對我來說工作起來一定很有趣。” — Evan,esbuild 的創建者

有人認為 Rust 可以表現得更好,但兩者都可以實現 Evan 影響社區的最初目標:

“即使只有基本的優化,Rust 也能勝過超級手動調整的 Go 版本。與我們必須使用 Go 進行的深入研究相比,這極大地證明了使用 Rust 編寫高效的程序是多么容易。” —Discord

Rome

Rome [14] 于 2020 年 8 月創建,是一個用于 JavaScript、TypeScript、HTML、JSON、Markdown 和 CSS 的 linter、編譯器、捆綁器、測試運行器等。他們的目標是替換和統一整個前端開發工具鏈。它是由 Sebastian McKenzie [15] 創建的,他之前還創建了 Babel。

那為什么要重寫一個呢?

“對 Babel 進行必要的修改以使其成為其他工具的可靠基礎將需要對所有內容進行更改。該架構與我在 2014 年學習解析器、AST 和編譯器時所做的初始設計選擇有關。” — Sebastian McKenzie [16]

Rome 目前使用 TypeScript 編寫并在 Node.js 上運行。但是他們現在正在使用 RSLint 解析器和他們自己的訪問者系統來 用 Rust 重寫 [17] 以進行 AST 遍歷。

NAPI

Rust 與 Node.js 的集成優于其他低級語言。 napi-rs [18] 允許你使用 Rust 構建預編譯的 Node.js 插件。它提供了交叉編譯和發布本地的二進制文件 NPM:一個徹頭徹尾的現成的解決方案,而無需 node-gyp 或 postinstall 腳本。你可以構建一個可以直接從 Node.js 調用的 Rust 模塊,而無需創建像 esbuild 這樣的子進程。

Rust + WebAssembly

WebAssembly [19] (WASM) 是 Rust 可以編譯成的一種可移植的低級語言。它在瀏覽器中運行,可與 JavaScript 互操作,并在所有主要的現代瀏覽器中均受支持。

“WASM 肯定比 JS 快很多,但不如原生速度。在我們的測試中,Parcel 編譯為 WASM 時的運行速度比使用原生二進制文件慢 10-20 倍。” — Devon Govett

雖然 WASM 還不是完美的解決方案,但它可以幫助開發人員創建極快的 Web 體驗。Rust 團隊 致力于 [20] 高質量和尖端的 WASM 實現。對于開發人員來說,這意味著你可以擁有 Rust(相對于 Go)的性能優勢,同時仍然為 Web 編譯(使用 WASM)。

該領域的一些早期庫和框架:

  • Yew [21]

  • Percy [22]

  • Seed [23]

  • Sycamore [24]

  • Stork [25]

這些編譯為 WASM 的基于 Rust 的 Web 框架并沒有試圖取代 JavaScript,而是與它一起工作。雖然我們還沒有到那一步,但有趣的是看到 Rust 在兩個方面都在 Web 之后出現:使現有的 JavaScript 工具更快,并為 編譯為 WASM 提供 [26] 未來的想法。從頭到尾都是 Rust。

4、Rust 有什么問題?

Rust 學習曲線陡峭,網友戲稱:Rust 入門很容易,我已經入門 4、5 次了。它的抽象級別比大多數 Web 開發人員習慣的要低。一旦你使用本機代碼(通過 Rust、Go、Zig 或其他低級語言),算法和數據結構比語言選擇 更重要 [27] 。這不是銀彈。

“Rust 讓你思考對系統編程非常重要的代碼維度。它讓你思考如何共享或復制內存。它使你考慮真實但不太可能的極端情況,并確保它們得到處理。它可以幫助你以各種可能的方式編寫極其高效的代碼。” — Tom MacWright [28]

此外,Rust 在網絡社區中的使用仍然是小眾的。它還沒有達到關鍵的使用量。盡管為 JavaScript 工具學習 Rust 將成為入門障礙,但有趣的是,開發人員更愿意擁有一個更快的工具,即使為其貢獻代碼挺難。

目前,很難為NIIT喜歡的服務(例如使用身份驗證、數據庫、支付等)找到一個 Rust 庫或框架。我認為一旦 Rust 和 WASM 獲得關鍵采用,這將自行解決。但目前還不成熟。我們需要現有的 JavaScript 工具來幫助我們彌合差距并逐步采用以改進性能。

5、JavaScript 工具的未來

我相信 Rust 是 JavaScript 工具的未來。 Next.js 12 [29] 開始了我們的過渡,用 SWC 和 Rust 完全替換 Babel(轉譯)和 Terser(壓縮)。為什么?

  • 可擴展性:SWC 可以用作 Next.js 中的 Crate,而無需 fork 庫或解決設計約束。

  • 性能:通過切換到 SWC,我們能夠在 Next.js 中實現約 3 倍的快速刷新和約 5 倍的構建速度,還有更多的優化空間仍在進行中。

  • WebAssembly:Rust 對 WASM 的支持對于支持所有可能的平臺和在任何地方進行 Next.js 開發至關重要。

  • 社區:Rust 社區和生態系統令人驚嘆,而且還在不斷增長。

不僅僅是 Next.js 采用了 SWC:

  • Deno [30] 的 linter、代碼格式化程序和文檔生成器是 使用 SWC 構建的 [31] 。

  • dprint [32] 建立在 SWC 之上,是 Prettier [33] 的 30 倍 [34] 代碼格式化替代品。

  • Parcel [35] 使用 SWC 將整體構建性能提高了 10 倍 [36] 。

“在我們使用 Babel 的解析器和用 JS 編寫的自定義轉換之前,Parcel 像庫一樣使用 SWC。現在,我們在 Rust 中使用 SWC 的解析器和 自定義轉換 [37] 。這包括完整范圍的提升實現、依賴項收集等。它的作用范圍類似于 Deno 在 SWC 之上構建的方式。” —Devon Govett

這是 Rust 的早期階段——一些重要的部分仍在研究中:

  • 插件:對于許多 JavaScript 開發人員來說,用 Rust 編寫插件并不容易。同時,在 JavaScript 中公開插件系統可能會抵消性能提升。最終的解決方案還沒有出現。理想情況下,未來會結合 JavaScript 和 Rust。如果你想使用 JavaScript 編寫插件,則可以權衡速度。需要更多性能?使用 Rust 插件 API。

  • 捆綁 :一個有趣的開發領域 swcpack 是 SWC 替代 webpack。它仍在開發中,但可能非常有前途。
  • WebAssembly:如上所述,編寫 Rust 并編譯為 WASM 的前景很誘人,但仍有工作要做。

6、結論

在可預見的未來,Rust 的受歡迎程度將繼續增長,并對 JavaScript 生態系統產生重大影響。想象一下,Next.js 中使用的所有構建工具都是用 Rust 編寫的,從而為你提供最佳性能。然后可以將 Next.js 作為從 NPM 下載的 靜態二進制文件 [38] 分發。對我來說,那將是一個生活(和發展)的理想世界。

責任編輯:張燕妮 來源: Rust編程指北
相關推薦

2019-04-01 17:39:05

混合云基礎設施

2013-04-23 11:15:02

基礎設施數據中心網絡融合

2013-09-04 10:30:42

輕應用light app

2014-03-07 14:35:49

網絡基礎設施Open Fabric

2023-03-09 14:20:04

2023-11-04 19:55:10

2018-01-31 12:18:04

2021-05-08 13:13:55

智能設施漏洞攻擊

2017-03-08 07:50:28

IT基礎設施

2022-01-17 13:34:30

Commvault

2022-02-10 11:54:34

即時基礎設施基礎設施數字化轉型

2011-10-20 11:18:59

OpenFlowSDN

2017-12-27 14:41:57

融合云計算服務器

2022-03-02 16:10:55

邊緣計算智慧城市物聯網

2021-08-10 11:26:02

網絡物聯網人工智能

2023-05-16 13:46:00

數據中心

2013-06-24 10:26:44

惠普世界之旅大數據存儲

2023-12-20 11:45:08

物聯網Wi-Fi智能家居

2023-05-31 11:39:07

智慧城市物聯網

2023-04-11 15:26:44

數據中心服務器
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国内自拍偷拍 | 欧美电影免费观看高清 | 久久久久国产一区二区三区四区 | 久久国产精品视频 | 亚洲精品美女在线观看 | 国产精品久久久久久模特 | 一级a爱片久久毛片 | 九久久 | 欧美日韩精品影院 | 国产精品亚洲视频 | 九九爱这里只有精品 | 神马久久av | 欧美性tv | 在线国产视频 | 亚洲图片一区二区三区 | 请别相信他免费喜剧电影在线观看 | 久久乐国产精品 | 福利视频网站 | 情侣av | 在线观看国产视频 | 本道综合精品 | 久久久精品 | 三级视频国产 | 久久99国产精品 | 妞干网福利视频 | 国产乱码一二三区精品 | 国产在线观看福利 | 亚洲视频在线看 | 三级黄色大片网站 | 亚洲综合视频 | 国产又爽又黄的视频 | 一区二区在线不卡 | 国产欧美日韩二区 | 午夜影院在线观看 | 国产电影一区二区在线观看 | 欧美精品乱码99久久影院 | 不卡视频一区二区三区 | 日韩视频一区二区三区 | 红桃视频一区二区三区免费 | 亚洲男女视频在线观看 | 亚洲成人免费 |