谷歌最近宣布推出 新版本的編程語言 Dart 2.15,繼續在 Dart 2 的徹底重新設計的分支上進行開發 它與 Dart 語言原始版本的不同之處在於它使用強靜態類型(類型可以自動推斷,因此不需要指定類型,但不再使用動態類型,並且最初會計算,將類型分配給變量,然後應用嚴格的類型檢查)。
在此新版本中實施了各種改進,最重要的是引入了一些新功能,例如隔離組以及針對某些檢測到的漏洞的解決方案。
Dart 2.15 的主要新特性
在這個新版本的 Dart 2.15 中 提供了工具來快速並行執行具有控制器隔離的任務。
除此之外 在多核系統上,運行時 飛鏢,默認情況下, 在一個CPU核心上運行應用程序代碼並使用其他核心來執行系統任務 例如異步 I/O、寫入文件或進行網絡調用。
Dart 2.15 引入的另一個新穎之處是一個新概念, 孤立的群體, (隔離組) 它允許共享訪問不同的內部數據結構 在屬於同一組的分離株中, 這可以顯著減少與組中代理通信時的開銷。 例如,通過消除初始化程序數據結構的需要,在現有池上啟動額外的沙箱比啟動獨立沙箱快 100 倍,所需內存減少 10 到 100 倍。
儘管事實上在一個組中的孤立塊中, 對可變對象的共享訪問仍然被禁止,池使用共享動態內存,這顯著加快了對像從一個塊到另一個塊的傳輸速度,而無需資源密集型複制操作。
在新版本中, 當調用 Isolate.exit() 時,也允許傳遞控制器作業的結果 將數據傳遞到主隔離塊而不執行複制操作。 此外,還對消息傳輸機制進行了優化:中小型消息的處理速度提高了約8倍。 可以使用 SendPort.send() 調用在隔離之間傳遞的對象包括各種類型的函數、閉包和堆棧跟踪。
在創建指針的工具中 到其他對像中的各個函數, 創建此類指針的限制已被刪除 在構造函數代碼中, 基於庫創建界面時非常有用 撲。
圖書館 dart:core 改進了枚舉支持, 例如,您現在可以使用 .name 方法從每個枚舉值生成字符串值、按名稱獲取值或執行值對匹配。
還強調了 已經實現了指針壓縮技術該 允許在 64 位環境中使用更緊湊的指針表示 32位地址空間是否足夠尋址(不超過4GB內存)。 測試表明,這種優化可以將堆大小減少約 10%。 在Flutter SDK中,新模式已經默認為Android啟用,併計劃在未來版本中為iOS啟用。
阿德瑪斯 值得強調的是,pub.dev 存儲庫現在能夠撤銷已發布的版本 例如,在出現危險的錯誤或漏洞的情況下。
, 其他變化 脫穎而出:
- 添加了針對因使用 Unicode 字符更改代碼中的顯示順序而導致的漏洞 (CVE-2021-22567) 的保護。
- 修復了一個漏洞 (CVE-2021-22568),在將包發佈到接受來自 pub.dev 的 oauth2 訪問令牌的第三方服務器時,該漏洞可能會冒充另一個 pub.dev 用戶。
- Dart SDK 包含用於調試和性能分析的工具 (DevTools),這些工具之前是在單獨的包中提供的。
- 向 dart pub 命令和 pub.dev 包存儲庫添加了工具,以跟踪敏感信息的意外發布,例如,在包內留下持續集成系統和雲環境的憑據。
- 如果發現此類洩漏,dart pub 發布命令將中止並顯示錯誤消息。 萬一出現誤報,可以通過白名單繞過檢查。