精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

91精品影视| 亚洲精品国产av| 欧美先锋资源| 在线观看亚洲一区| 伊人情人网综合| 国产精品一级视频| 欧美精品成人| 日韩毛片在线观看| 免费在线激情视频| 国产乱理伦片a级在线观看| 日本成人中文字幕| 色吧影院999| 亚洲成人福利视频| 手机在线理论片| 久久精品一区蜜桃臀影院| 国产精品久久二区| 国产精品视频一区二区三| 亚洲伦理网站| 福利微拍一区二区| 午夜欧美性电影| 国产精品-色哟哟| 99热免费精品| 中国china体内裑精亚洲片| 日本在线播放一区二区| 国产不卡人人| 专区另类欧美日韩| 久久精品女人的天堂av| 一区二区三区亚洲视频| 在线日韩电影| 最新国产成人av网站网址麻豆| 在线观看你懂的视频| 向日葵视频成人app网址| 亚洲乱码国产乱码精品精98午夜| 99视频免费观看| www.亚洲激情| 影院欧美亚洲| 日韩亚洲欧美中文在线| 午夜av免费看| gogo大尺度成人免费视频| 精品久久久久久国产91| 欧美一区二区高清在线观看| 国产丝袜视频在线观看| 丝袜美腿亚洲综合| 欧美精品videos另类日本| 纪美影视在线观看电视版使用方法| 爱情电影网av一区二区| 在线观看国产91| av在线观看地址| 欧美成年黄网站色视频| 国产91在线|亚洲| 国产色综合天天综合网| 在线视频一区二区三区四区| 午夜精品久久| 精品国产拍在线观看| aaaaaav| 成人在线中文| 色婷婷久久久亚洲一区二区三区| 国产又爽又黄ai换脸| 欧美日韩视频精品二区| caoporn国产精品| 国产精品视频免费一区| 农村少妇久久久久久久| av在线播放成人| 久久久久久亚洲精品不卡4k岛国| 欧美中文在线| 欧美激情一区二区三区蜜桃视频| 视频一区二区三区免费观看| aaa日本高清在线播放免费观看| 中文字幕av一区二区三区免费看 | 超碰精品一区二区三区乱码| 女同久久另类69精品国产| 91偷拍一区二区三区精品| 久久精品国产精品亚洲| 色婷婷在线视频观看| 欧美日韩岛国| 午夜精品久久久久久99热| 国产又大又黑又粗免费视频| 米奇777在线欧美播放| 国产成人自拍视频在线观看| 亚洲高清视频免费观看| 国产综合成人久久大片91| 成人在线看片| 色视频在线观看福利| 国产三级三级三级精品8ⅰ区| 色女孩综合网| av观看在线| 精品久久久久久亚洲国产300| 日日摸日日碰夜夜爽av| 日本欧美在线| 亚洲第一综合天堂另类专| 国产精品扒开腿做爽爽| 亚洲不卡av不卡一区二区| 欧美国产欧美亚洲国产日韩mv天天看完整 | 91美女精品网站| 国产91丝袜在线18| 欧美一级二级三级九九九| 高h视频在线观看| 欧美色视频日本高清在线观看| 宅男噜噜噜66国产免费观看| 国产一区二区三区精品在线观看| 日韩黄色av网站| 国产精品99久久久久久成人| 在线看片日韩| 国产在线播放91| 午夜影院免费视频| 亚洲视频免费在线观看| 日本成年人网址| 成人午夜888| 亚洲日本成人女熟在线观看 | 欧美日韩国产色| www.精品在线| 欧美国产不卡| 欧美另类极品videosbest最新版本| 在线视频一区二区三区四区| 国产乱对白刺激视频不卡| 欧美精品人人做人人爱视频| 影音先锋在线播放| 在线亚洲高清视频| 国产伦精品一区二区免费| 日韩av专区| 人体精品一二三区| 国产 日韩 欧美 精品| 国产精品福利在线播放| 国产熟女高潮视频| 精品国产一区二区三区成人影院 | 久久久久久久久久97| 久久激情综合| 精品人伦一区二区三区 | 欧美一区二区三区四区在线| av天堂一区二区三区| 国产欧美日韩卡一| 丝袜老师办公室里做好紧好爽| 影音先锋欧美激情| 欧美成人免费全部| 国产精品福利电影| 日本一区二区成人| 欧美日韩在线免费播放| 亚洲精品白浆高清| 97在线视频精品| 神马午夜电影一区二区三区在线观看 | 精品国产乱码久久久久久免费| 波兰性xxxxx极品hd| 日韩av一区二区三区| 欧美日韩精品不卡| 一区二区乱码| 亚洲精品视频在线观看视频| 日韩av黄色片| zzijzzij亚洲日本少妇熟睡| www.在线观看av| 91久久精品无嫩草影院| 欧美第一淫aaasss性| 精品女同一区二区三区| 亚洲免费观看视频| 国产xxxxhd| 欧美日韩免费观看一区=区三区| 成人h猎奇视频网站| 3p在线观看| 欧美一区午夜视频在线观看| 国产免费美女视频| 国产一区二区三区在线观看免费视频| 亚洲视频欧美在线| 欧美少妇激情| 久久福利网址导航| 亚洲成人av综合| 午夜欧美2019年伦理| 三级男人添奶爽爽爽视频 | 日韩一级片播放| 免费看日本一区二区| 日韩av大片免费看| 成人动漫在线免费观看| 欧美日韩国产另类不卡| 中文字幕五月天| 懂色中文一区二区在线播放| 欧美深夜福利视频| 国产成人短视频在线观看| 国产精品91在线观看| 免费的黄网站在线观看| 精品久久人人做人人爰| 国产成人精品网| 国产精品久久久久久久岛一牛影视| 免费成年人高清视频| 韩日欧美一区| 欧美一进一出视频| 91丨精品丨国产| 国内精品久久影院| www.亚洲免费| 欧美mv和日韩mv的网站| 91video| 国产精品美女久久久久久久网站| 成人性生交视频免费观看| 狠狠爱成人网| 日韩影视精品| 99国产精品免费网站| 国产精品久久久久久久久免费 | 国产精品无码天天爽视频| 亚洲国产日产av| 亚洲最大成人综合网| 国产精品一区二区三区乱码| 亚洲熟女乱色一区二区三区| 久久亚洲成人| 韩日午夜在线资源一区二区 | 在线heyzo| 亚洲欧美制服另类日韩| 精品国自产在线观看| 色综合久久久久久久久| 日韩精品123区| 久久久精品人体av艺术| 国产男女无遮挡猛进猛出| 性欧美暴力猛交另类hd| 国产激情片在线观看| 欧美伦理影院| 精品国产一区二区三区日日嗨| 日韩福利在线观看| 庆余年2免费日韩剧观看大牛| av免费在线观看网站| 亚洲一区二区久久久| 深爱五月激情五月| 日韩欧美亚洲另类制服综合在线| 亚洲精品国产精品乱码视色| 五月婷婷综合网| 一区视频免费观看 | 99热这里只有精品4| 91免费观看国产| av电影中文字幕| 极品少妇一区二区三区精品视频| 欧美在线观看www| 国产精品mm| 国产精品12p| 91视频久久| 亚洲一区二区三区欧美| 亚洲精品播放| 久久一区免费| 国产香蕉精品| 国产精品久久久久av福利动漫| 91精品视频一区二区| 国产精品亚洲网站| 日本精品在线一区| 国产成人精彩在线视频九色| 亚洲最大网站| 欧美综合第一页| 九九色在线视频| 欧美福利在线观看| 日本欧美电影在线观看| 久久久精品国产亚洲| 毛片在线视频| 精品国产自在精品国产浪潮| 免费黄色在线看| 日韩在线视频免费观看| 欧美黄色激情| 久久国产天堂福利天堂| 69xxx在线| 欧美激情国产日韩精品一区18| 色婷婷av在线| 久久久久久久久久久免费精品| 青草视频在线免费直播 | 国产成人精品免费视频网站| 中文字幕一二三| 成人综合婷婷国产精品久久 | 加勒比色综合久久久久久久久| 国产精品久久精品视| 欧美男人操女人视频| 久久综合九色欧美狠狠| 国产精品亚洲二区| 亚洲国产高清国产精品| 97国产成人高清在线观看| 欧美一级免费在线观看| 国产一区二区三区四区老人| 国产一级爱c视频| 国产欧美在线| 亚洲国产日韩欧美在线观看| 黄色精品一二区| 精品国产乱码久久久久夜深人妻| 不卡一区二区三区四区| 免费黄色在线视频| 中文字幕一区二区三区视频| 麻豆成人在线视频| 欧美三级欧美成人高清www| 亚洲黄网在线观看| 欧美高清dvd| 欧美一级淫片aaaaaa| 亚洲欧美日韩精品| 精品美女在线观看视频在线观看| 欧美放荡办公室videos4k| 天堂中文最新版在线中文| 国产精品三级网站| 亚洲综合网狠久久| 欧美日韩在线播放一区二区| 国产精品伦理久久久久久| 欧美视频在线第一页| 国产农村妇女毛片精品久久莱园子| 中文字幕第80页| 国产91精品露脸国语对白| 中文字幕在线看高清电影| 最新国产の精品合集bt伙计| 精品成人久久久| 欧美绝品在线观看成人午夜影视| 丰满熟妇乱又伦| 中文字幕国产精品| а_天堂中文在线| 国产精品欧美亚洲777777| 中文字幕av一区二区三区四区| 日韩av一区二区三区在线观看| 国户精品久久久久久久久久久不卡| 粉嫩虎白女毛片人体| 国产乱码精品一区二区三区av | 亚洲成av人片观看| 在线观看你懂的网站| 亚洲电影在线观看| 美女写真理伦片在线看| 日韩免费不卡av| 岛国精品一区| 99re99热| 日韩电影在线观看网站| 日本50路肥熟bbw| 亚洲国产精品av| 亚洲永久精品在线观看| 日韩欧美123| 精品国产丝袜高跟鞋| 日韩暖暖在线视频| 奇米777国产一区国产二区| 色哟哟免费网站| 蜜臀久久99精品久久久画质超高清| 久久一区二区电影| 亚洲一区在线看| 国产精品区在线观看| 国产亚洲美女精品久久久| www.超碰在线| 国产精品对白一区二区三区| 亚洲成人av| 污污的网站免费| 国产精品少妇自拍| 无码人妻丰满熟妇区五十路| 九九综合九九| 精品亚洲欧美日韩| 激情婷婷欧美| 久久久久亚洲av成人网人人软件| 综合久久久久久| 国产精品天天操| 久久精品国产综合| 日韩毛片免费视频一级特黄| 亚洲成人蜜桃| 日韩高清在线一区| 无码人妻丰满熟妇啪啪欧美| 色婷婷精品久久二区二区蜜臀av | 日韩精品免费看| 91福利在线尤物| 精品一区国产| 媚黑女一区二区| 国产中年熟女高潮大集合| 欧美性高跟鞋xxxxhd| 男女网站在线观看| 国产精品成人在线| 日韩精品一区二区三区免费观影| 一区二区三区视频在线观看免费| 国产亲近乱来精品视频| 波多野结衣二区三区| 在线观看亚洲区| 久久精品国产福利| 黄色a级在线观看| 国产精品99久久久久久久女警| 四虎免费在线视频| 日韩女优av电影| 亚洲涩涩在线| 日韩中文字幕一区二区| 久久66热偷产精品| 欧美三级小视频| 亚洲激情视频网站| 国产精品亚洲一区二区三区在线观看| 日韩欧美一区二区三区四区五区| 日韩二区三区四区| 日本一级二级视频| 精品国产91乱码一区二区三区| jizz一区二区三区| 日本一区二区三区视频在线播放| 美国av一区二区| 欧美精品99久久久| 亚洲精品国产免费| 久久福利在线| 国产日本在线播放| 国产午夜精品一区二区三区嫩草| 91中文字幕在线播放| 久久久久久成人| 国产精品一区二区av日韩在线| 日韩av卡一卡二| 亚洲第一主播视频| 一级日本在线| αv一区二区三区| 日韩精品一级中文字幕精品视频免费观看 | 在线观看国产小视频| 久久久久久久久久久人体| 自拍偷拍精品| 成人免费黄色av| 91久久线看在观草草青青| www.久久ai| 麻豆av一区二区三区| 国产一区二区影院| 久久久久99精品成人片我成大片| 日韩在线激情视频| 亚洲小说图片视频| 女王人厕视频2ⅴk|