精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于 Rust 的 linter 工具速度很快,但有嚴重缺陷...

開發 前端
基于 Rust 的 linters 是無法完全取代 ESLint 的。雖然性能優勢明顯,但也存在一個明顯的缺陷:類型檢查的 linting 功能缺失。

2023 年 Web 工具的一大趨勢是使用 Rust 重寫現有工具。Rust 是一種出色的編程語言,能生成運行速度驚人的二進制文件,且與其它 Web 工具的互操作性極佳,這得益于 WebAssembly 的幫助。swc 和 Turbopack 等工具的速度提升為快速開發體驗帶來了巨大變革。

Biome、deno lint、Oxc 和 RSLint 等項目都有一個用 Rust 編寫的 JavaScript/TypeScript 代碼檢查器。對于那些對開發工具速度緩慢感到不滿的開發人員來說,以Rust(本機代碼)速度運行代碼檢查器,而非JavaScript(JIT腳本)速度,無疑是很有吸引力的。Prettier 甚至為 Biome 提供了 20,000 美元的獎金,以表彰其實現了與 Prettier 格式部分的 >95% 兼容性!

然而,基于 Rust 的 linters 是無法完全取代 ESLint 的。雖然性能優勢明顯,但也存在一個明顯的缺陷:類型檢查的 linting 功能缺失。

回顧:類型檢查的 Linting

傳統上,像 ESLint 這樣的 lint 工具一次只能檢查一個源代碼文件。這使得它們運行速度較快,理論上可以進行緩存和并行處理。

typescript-eslint 引入了使用類型信息的 linting 概念。通過調用 TypeScript 的類型檢查 API,lint 規則可以根據項目中的其他文件提供的類型信息,對代碼做出更加明智的決策。

類型檢查的 lint 規則可能比傳統的 lint 規則功能更強大。例如:

  • @typescript-eslint/await-thenable :禁止在非 Promise 值上使用不必要的 await 調用。
  • @typescript-eslint/no-floating-promises :可以提醒是否創建了一個 Promise 但忘記安全地處理它。
  • @typescript-eslint/no-for-in-array :用于標記對數組的不安全的 for...in 迭代(不是 for...of)。

這些規則只有在能夠使用類型信息來確定何時報告問題時才有實際用處。沒有類型信息,它們將無法理解從另一個模塊導入的值的類型。

類型檢查的 Linting 性能

類型檢查的 linting 相比傳統 linting 存在的主要劣勢在于性能。這是因為類型化的 lint 規則需要調用 TypeScript 等 API 來獲取類型信息,通常需要讀取所有文件以確定哪些文件會影響其他文件的類型。因此,類型檢查的 linting 性能通常會低于對整個項目運行 TypeScript 的性能。

TypeScript 本身也在不斷優化性能。例如,項目引用可以顯著幫助處理更大的項目。TypeScript 即將推出的獨立聲明模式看起來也可以顯著提高處理更大項目的性能。

但即使所有這些加速都完美地工作,類型檢查的 linting 設計上仍然比傳統的 linting 慢幾個數量級。因為從項目中推斷類型的過程本質上比傳統的 lint 規則一次只查看一個文件要慢得多。

大多數情況下,當看到類型檢查的速度慢的項目時,根本原因要么是 typescript-eslint 配置錯誤,要么是 TypeScript 類型慢。

基于 Rust 的代碼檢查工具和類型檢查

目前還沒有基于 Rust 的代碼檢查器與 TypeScript 的類型檢查 API 集成,這意味著基于 Rust 的代碼檢查器不能完全替代 ESLint + typescript-lint。

如果你不需要任何類型檢查的 lint 規則,那么可以切換到基于 Rust 的 linter。但強烈建議你至少查看 typescript-lint 中推薦的類型檢查規則,以了解缺少什么。

甚至可以同時運行這兩種工具:首先使用原生速度的 linter 快速反饋,然后僅使用 typescript-eslint 查看包含類型信息的規則。這個想法得到了多個原生速度 linter 維護者的支持:

  • Biome 的 Emanuele 認為雙重 linting 是一種合理的策略。
  • Oxc 的公告將 oxlint 描述為在 ESLint 過慢時的增強工具,而不是完全替代品。

這種互補而非取代的愿望部分源于這兩種 lint 工具在運作方式上的重大結構性差異。原生速度的 lint 工具尚未在其 lint 規則中實現類型檢查。下面來深入探討這一奇怪的功能差距。

集成類型檢查的 Linting 和基于 Rust 的 Linting

目前,TypeScript 的核心功能是為 TypeScript 編譯器和語言服務提供支持的代碼,它是唯一能夠為 TypeScript 代碼提供可靠類型檢查的組件。由于TypeScript是用TypeScript編寫的,因此其類型檢查以JavaScript的速度運行。

為了實現與 TypeScript 的類型檢查的集成,基于Rust的代碼檢查器面臨幾個選擇:

  • 承受性能損失,調用TypeScript的JavaScript速度類型檢查API。
  • 使用原生速度語言重新實現TypeScript的API。
  • 將 TypeScript 的 API 提升到原生速度。

此外,基于 Rust 的 linter 不允許在 JavaScript 中編寫自定義 lint 規則。雖然這對大多數 JavaScript 生態系統來說是一個貢獻障礙,但這與本文的重點是兩個獨立的問題。

因此,將基于 Rust 的代碼檢查器與 TypeScript 的類型檢查集成在一起有不同的選項。

降低 JavaScript 速度

選擇這種性能影響方案可能會使基于 Rust 的 linter 速度降低到幾乎與 ESLint 無明顯性能優勢的程度。

以原生速度重新實現 TypeScript

對于 TypeScript 用戶來說,以原生速度重新實現 TypeScript 是一個極具吸引力的前景,而不僅僅是對于 linter。目前已有三個重要的嘗試:

  • Ezno:一種類似于 TypeScript 的新語言,增加了依賴類型等特性。
  • stc:一個可以替代 TypeScript 類型檢查的 Rust 編寫項目。
  • TypeRunner:一個較早的嘗試,使用 C++ 編寫,但已不再積極開發。

需要注意的是,以新語言重新實現 TypeScript 是一項艱巨的任務。TypeScript 的類型推理需要處理泛型類型、協變、逆變等復雜邊緣情況,這是一項極具挑戰性的任務。這些項目目前都處于非常早期的階段,可能需要很長時間才能準備投產。

那是否可以通過縮小項目的范圍,只實現TypeScript的類型推理部分,從而降低這一選項的復雜性呢?對于 linters 來說,一個簡化版的TypeScript,跳過源代碼轉換、類型檢查可分配性錯誤等部分,只專注于編程類型檢查API,或許更為實用。例如,Oxc 項目已經成功地實現了一個 TypeScript 類型推理的簡化版,僅用幾千行Rust代碼就完成了這一任務。

然而,我們必須正視TypeScript背后有一個強大的開發團隊和社區支持的現實。TypeScript團隊由專業的編程語言專家組成,并且持續從社區中獲得貢獻。對于任何嘗試重新實現TypeScript的項目來說,跟上TypeScript的更新步伐是一項幾乎不可能完成的任務。盡管Ezno和stc等項目展現了令人印象深刻的成果,但它們作為獨立項目的長期可行性仍然充滿了不確定性。

將 TypeScript 的 API 提升到原生速度

為了提高TypeScript的性能,一個更具可行性的長期方案是優化其類型檢查器的運行速度。目前有幾種可能的解決方案:

  • 將TypeScript的類型檢查器轉換為更高效的編程語言,如Go或Rust。這可以通過編寫一個轉換工具來實現,將TypeScript源代碼轉換為這些更快的語言。
  • 對TypeScript進行預編譯和優化,類似于將其轉換為二進制格式。這種方法可以在編譯時對代碼進行優化,以提高運行時的性能。
  • 利用Node.js的用戶快照技術來優化啟動時間。通過在啟動時預先優化代碼,可以加快冷啟動編譯器的速度。
  • AssemblyScript和Static TypeScript是另外兩個有趣的探索方向,它們通過使用TypeScript的子集或修改版本來關注低級性能。

這些方案都面臨一定的挑戰,需要投入時間和資源進行開發。然而,通過持續優化和改進,可以逐步提高TypeScript的性能,使其更加適應快速發展的開發需求。

雖然可以通過各種方法來加速TypeScript的運行,但其實TypeScript本身的架構是阻礙性能提升的主要因素。它的代碼基于一種假設,即運行時環境將提供內置的垃圾回收、可變對象等功能,而這些功能往往會帶來性能上的損耗。

為了真正提高TypeScript的性能,我們可能需要重新設計其架構,使其更加適應高性能場景:

  • 隔離聲明模式:這可能是最直接的方法,通過將類型聲明與實際代碼隔離,可以減少編譯時的計算量,從而提高運行速度。
  • 優化全局類型擴展:為了更好地支持并行化,我們需要限制全局類型擴展的使用,以減少潛在的性能瓶頸。
  • 改進檢查器運行方式:通過改變TypeScript檢查器的運行方式,可以避免一些不必要的性能損耗,進一步提高運行速度。

然而,任何對TypeScript結構的重大更改都可能導致其API的重大變化,并可能引入新的問題。目前看來,除了可能在2024年推出的隔離聲明模式外,其他的大規模改動短期內不太可能實現。

TypeScript 集成 Linting

另一個策略是將 linting 集成到現有的 TypeScript 語言服務器基礎架構中。TypeScript 語言服務插件允許添加工具作為 TypeScript 編輯體驗的一部分運行。

可以看到過兩次嘗試:

  • Quramy/typescript-??-language-service:ESLint 的通用 TypeScript 語言服務插件
  • johnsoncodehk/typescript-linter:基于 TypeScript 語言服務器構建的代碼檢查器的重新實現

兩者似乎都有希望。為了與現有規則兼容,在短期內將 ESLint 作為 TypeScript 語言服務插件運行是更可行的。無論哪種方式,在不落后于其他語言的情況下,如何使 TypeScript 體驗變得更好,尤其是考慮到 ESLint 打算擁抱其他 Web 語言,這將是一個關鍵挑戰。

小結

基于 Rust 的 JavaScript/TypeScript 代碼檢查器,如 Biome、deno lint、Oxc 和 RSLint,都是非常快速的項目。但與 ESLint + typescript-ndrings 的類型檢查代碼規則相比,這種速度存在嚴重的功能差距。在決定使用哪個工具時,你應該了解這些權衡。Biome 和 oxlint 都表示在一定程度上建議先運行一個更快的原生速度代碼檢查器,而不是運行基于類型的 typescript-lint。

基于 Rust 的 linter 最終可能會以原生速度代碼獲得類型檢查 linting 的好處。但要實現這一點還有很長的路要走。

責任編輯:姜華 來源: 前端充電寶
相關推薦

2020-11-09 14:17:13

Rust編碼語言

2015-12-25 16:49:52

2012-01-13 16:11:44

2023-09-06 00:09:42

2016-03-02 17:55:03

app用戶加載

2024-12-17 14:29:57

2009-02-02 10:39:16

2024-03-11 15:47:11

RustPython代碼

2021-08-07 09:35:18

Starlink網速寬帶

2025-06-10 02:33:00

RustPython庫代碼

2022-05-30 08:14:48

編譯器Go語言

2023-06-12 08:00:48

Napi-rsRust 前端工具

2023-12-18 08:52:15

RustOxlint工具

2013-11-14 09:39:32

2020-06-17 16:38:22

Rust業務架構

2024-11-04 14:13:19

2024-09-09 16:25:09

2024-03-11 00:07:00

VueRustGo

2013-12-17 16:50:46

Windows更新XP

2021-03-14 22:34:05

工具RMS應用層
點贊
收藏

51CTO技術棧公眾號

成人av免费在线播放| 狠狠综合久久| 欧美探花视频资源| 中文字幕一区二区三区乱码 | 婷婷成人基地| 精品日韩一区二区三区免费视频| 精品少妇人妻av免费久久洗澡| 能在线看的av| 国产精品白丝av| 欧美一区亚洲一区| 亚洲欧美精品aaaaaa片| 亚洲精品蜜桃乱晃| 欧美日韩国产a| 亚洲熟妇无码另类久久久| 北条麻妃在线| av电影在线观看不卡| 国产欧美日韩视频| www.国产高清| 在线电影一区二区| 亚洲欧美精品一区二区| 无码人妻一区二区三区免费n鬼沢| 校园春色亚洲色图| 一区二区三区免费| 无码免费一区二区三区免费播放| 乱色精品无码一区二区国产盗| 日本欧美在线观看| 97视频在线观看免费| 蜜乳av中文字幕| 国产精品对白久久久久粗| 欧美日韩免费在线视频| 久久久久久久激情| 激情网站在线| 亚洲日韩欧美一区二区在线| 日本在线视频不卡| 日本精品999| 国产在线精品一区二区不卡了 | 中文字幕精品三级久久久| 在线看片不卡| 日韩在线视频网| 黑人巨大精品欧美| 国产伦精品一区二区三区免费优势| 欧美精品 日韩| 在线观看的毛片| 欧美黄色网页| 色婷婷综合激情| a在线视频观看| 51漫画成人app入口| 亚洲综合在线第一页| 四虎4hu永久免费入口| 欧美日韩欧美| 中文字幕一区在线观看| 天天综合色天天综合色hd| 国产玉足榨精视频在线观看| 99riav久久精品riav| 国模一区二区三区私拍视频| 免费a视频在线观看| 高清视频一区二区| 97久久夜色精品国产九色| 国产乱码精品一区二区| 久久精品国产99久久6| 国产精品视频久久久| 性色av一区二区三区四区| 视频一区二区三区在线| 国产精品18久久久久久麻辣| 中文字幕第一页在线播放| 美女诱惑一区二区| 国产综合香蕉五月婷在线| 97精品人妻一区二区三区在线 | 久久久久亚洲无码| 岛国成人av| 日韩成人在线播放| 国产交换配乱淫视频免费| 最新精品国偷自产在线| 亚洲最新av在线| 97在线观看视频免费| 亚洲国产一成人久久精品| 欧美成年人视频网站欧美| 精品无码人妻一区二区三区| av不卡在线| 国产成人综合一区二区三区| 亚洲一级在线播放| 国产成人综合精品三级| 精品国产一区二区三| 邻居大乳一区二区三区| 国产精品美女www爽爽爽| 99热这里只有精品7| 国产丝袜在线播放| 都市激情亚洲色图| 五月激情五月婷婷| 激情小说亚洲色图| 亚洲视频网站在线观看| 欧美手机在线观看| 亚洲伦理一区| 国产精品无av码在线观看| 亚洲AV无码乱码国产精品牛牛| 97se亚洲国产综合自在线观| 亚洲一区二区在线观| 黄网站免费在线观看| 午夜精品久久一牛影视| 日本人视频jizz页码69| 2020最新国产精品| 亚洲最新av在线网站| 免看一级a毛片一片成人不卡| 午夜在线视频观看日韩17c| 国产精品视频免费在线观看| 黄色片一区二区三区| 欧美激情一区二区三区全黄 | 在线免费观看的av| 疯狂做受xxxx欧美肥白少妇| 夜夜夜夜夜夜操| 日本欧美韩国国产| 久久艹在线视频| 国产精品21p| 国产成人在线观看免费网站| 日本黑人久久| a国产在线视频| 欧美精品日韩一区| 熟女高潮一区二区三区| 欧美日一区二区在线观看| 国产精品扒开腿做爽爽爽视频 | 成人精品国产免费网站| 亚洲精品免费在线看| а√在线中文网新版地址在线| 欧美日韩一区小说| 草草影院第一页| 欧美精品综合| 91在线网站视频| 69xxxx欧美| 色丁香久综合在线久综合在线观看| 91亚洲一线产区二线产区| 91精品亚洲| 国产欧美日韩精品专区| 国产在线播放av| 色系网站成人免费| 一起草在线视频| 亚洲久色影视| 国产精品一区二区三区精品| а√天堂官网中文在线| 欧美日韩免费观看一区二区三区 | 亚洲三级在线免费观看| 国产aaaaa毛片| 自拍欧美一区| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲欧美另类视频| 一个色妞综合视频在线观看| 一本之道在线视频| 91精品精品| 91传媒视频在线观看| 中文字幕在线播放网址| 5566中文字幕一区二区电影| 一级黄色片日本| 狠狠色综合日日| 国产成人精品免费看在线播放| 久久久久久久性潮| 俺去啦;欧美日韩| 亚洲怡红院av| 亚洲桃色在线一区| 曰本三级日本三级日本三级| 欧美日韩亚洲国产精品| 成人欧美一区二区| ****av在线网毛片| 日韩精品视频在线免费观看| 国产成人精品一区二三区| 91毛片在线观看| 国产真实乱子伦| 成人嘿咻视频免费看| 国产欧美精品一区二区三区介绍| 国产精品扒开做爽爽爽的视频| 69成人精品免费视频| 青娱乐国产在线| www.66久久| 四季av一区二区| 91精品国产自产拍在线观看蜜| 不卡一区二区三区视频| www在线看| 亚洲欧美日韩国产中文| 中文字幕精品无码亚| 亚洲视频免费在线| 中文字幕精品视频在线| 丝袜亚洲另类丝袜在线| 亚洲乱码一区二区三区| 精品国产一区二| 5278欧美一区二区三区| av中文字幕一区二区三区| 91精品国产91久久久久久最新毛片| 免费观看一级视频| 久久久久久久久蜜桃| 日本在线一二三区| 在线成人黄色| 日本一区不卡| 中文字幕久久精品一区二区| 日韩美女在线播放| 国产三级在线播放| 精品视频久久久久久久| 一本色道久久综合精品婷婷| 亚洲成人一区二区| 91动漫免费网站| 成人国产精品免费| 午夜欧美福利视频| 精品91在线| 一级做a爰片久久| 国产精品一线| 91久久国产婷婷一区二区| 麻豆视频在线观看免费网站黄| 色妞久久福利网| 香蕉视频国产在线| 91精品国产综合久久国产大片| 免费观看成人毛片| 亚洲精品免费在线观看| av直播在线观看| 国产精品一区二区91| 别急慢慢来1978如如2| 尹人成人综合网| 在线国产99| 久久爱www成人| 国产一区在线观| 欧一区二区三区| 国产剧情日韩欧美| av电影一区| 97国产一区二区精品久久呦 | 欧美性受xxxx黑人猛交| а√天堂资源地址在线下载| 国产一区二区三区视频| 欧美一级淫片aaaaaa| 7777精品伊人久久久大香线蕉| 无码人妻久久一区二区三区 | 日韩在线欧美在线| 无码国产精品96久久久久| 日韩一区二区免费电影| 一级黄色片免费| 色噜噜狠狠一区二区三区果冻| 国产手机在线视频| 亚洲国产成人91porn| 91在线播放观看| 亚洲欧美视频在线观看视频| 亚洲一区 欧美| 国产喂奶挤奶一区二区三区| 黄瓜视频污在线观看| 99热这里都是精品| 最新版天堂资源在线| 国产成人高清视频| 免费黄视频在线观看| 国产精品影视网| 色婷婷一区二区三区在线观看| 看电视剧不卡顿的网站| 天天干天天玩天天操| 奇米精品一区二区三区在线观看| 欧美日韩在线成人| 天堂久久一区二区三区| 一道本视频在线观看| 美国三级日本三级久久99| 亚洲国产高清av| 精品一区二区在线看| 在线观看国产一级片| 国内不卡的二区三区中文字幕| 久久久久久久久久一区二区| 国产一区二区三区综合| 久久精品一二三四| 国产精品亚洲第一区在线暖暖韩国| 亚洲五月激情网| 国产成人在线色| 人妻无码中文久久久久专区| 久久久另类综合| 亚洲高潮女人毛茸茸| 中文字幕一区二区三| 丰满少妇被猛烈进入一区二区| 亚洲综合在线免费观看| 一级免费在线观看| 色婷婷综合久久久久中文| 在线观看国产黄| 欧美一区午夜视频在线观看| 亚洲精品国产suv一区| 日韩高清免费观看| 成人在线视频成人| 久久亚洲欧美日韩精品专区| 大黄网站在线观看| 日韩美女在线看| 日韩久久一区| 国产精品一区二区免费| 精品精品99| 国产又粗又长又爽视频| 亚洲视频一区| 欧美视频免费播放| 国产一区二区视频在线播放| 好吊一区二区三区视频| 中文字幕第一区| 国产污视频在线看| 欧美视频在线一区二区三区| 国产福利小视频| 亚洲人成在线电影| 污的网站在线观看| 国产va免费精品高清在线| 免费一区二区三区四区| 国产精品视频免费一区二区三区| 国产精品一区高清| 国产成人免费高清视频| 首页欧美精品中文字幕| 精品国产鲁一鲁一区二区三区| av高清久久久| 91精品一区二区三区蜜桃| 欧美性xxxxx极品娇小| 国产精品一区二区免费视频| 日韩福利视频在线观看| 怡红院av在线| 国产精品丝袜高跟| 五月综合久久| 国产情侣第一页| 日韩 欧美一区二区三区| 三级视频网站在线观看| 亚洲人成网站精品片在线观看| 亚洲精品男人的天堂| 精品久久一二三区| 美女羞羞视频在线观看| 日本久久久a级免费| 亚洲午夜免费| 亚洲在线色站| 日韩精品91亚洲二区在线观看| 在线观看成人动漫| 亚洲欧美一区二区不卡| 中文字幕永久在线视频| 亚洲情综合五月天| 老司机深夜福利在线观看| 999在线观看免费大全电视剧| 欧美电影一二区| 爱情岛论坛成人| 久久综合久久久久88| 国语对白一区二区| 精品精品国产高清a毛片牛牛 | 亚欧洲精品视频在线观看| 国产精品免费看久久久无码| 卡一卡二国产精品| www.4hu95.com四虎| 色视频欧美一区二区三区| 亚洲日本香蕉视频| 国内外成人免费激情在线视频| 欧美影院精品| 国产亚洲精品久久久久久久| 国内成人自拍视频| 在线看的片片片免费| 欧美精品 国产精品| 国产激情小视频在线| 91在线免费网站| 欧美黄在线观看| 国产精品二区视频| 亚洲精品中文字幕在线观看| 国产乱色精品成人免费视频| 久久精品国产亚洲精品2020| 日韩成人免费av| 强伦女教师2:伦理在线观看| 国产最新精品免费| 亚洲天堂网av在线| 欧美一区二区黄色| 中文在线手机av| 官网99热精品| 亚洲精品影视| 公侵犯人妻一区二区三区| 色成人在线视频| jizzjizz在线观看| 国产在线精品播放| 中文一区一区三区免费在线观看| 日本一本在线视频| 午夜视黄欧洲亚洲| 欧洲一级在线观看| 国产精品欧美亚洲777777| 国产精品久久久久久| av地址在线观看| 婷婷久久综合九色国产成人| 欧美伦理影视网| 国产一区二区丝袜| 午夜精彩国产免费不卡不顿大片| 人妻 丝袜美腿 中文字幕| 婷婷六月综合亚洲| 国产小视频在线| 成人www视频在线观看| 国产精品v亚洲精品v日韩精品| 特大黑人巨人吊xxxx| 欧美亚洲尤物久久| а√中文在线8| 含羞草久久爱69一区| 日本成人在线不卡视频| 欧美日韩色视频| 亚洲精品乱码久久久久久金桔影视 | 国产精品国产馆在线真实露脸| 精品国精品国产自在久不卡| 97在线精品视频| 色婷婷色综合| 逼特逼视频在线观看| 欧美在线视频全部完| 天堂8中文在线| 日韩不卡av| 成人午夜电影久久影院| 久久久久久久久久一级| 欧美成人午夜激情在线| 免费视频国产一区| 激情成人在线观看| 在线中文字幕一区二区| 毛片网站在线看| 亚洲精品国产精品国自产| 99久久99精品久久久久久| 一级特黄录像免费看|