Google釋出Dart 2.1穩定版,這是從8月釋出Dart 2以來,第一次次要版本更新,主要改進包括增加新的語言功能、更快的類型檢查、更好的類型錯誤可用性,也縮小程式碼大小。而且為了讓Google雲端平臺更好的支援Dart,開始讓Knative支援Dart程式

Dart從第一版進入Dart 2有著巨大的改變,重新定位成主流程式開發,適用於快速開發功能豐富的跨行動和網頁應用程式。Dart一開始透過提供虛擬機器,以及將程式碼編譯為原生機器碼和Javascript來支援各種平臺和開發需求。而從8月以來,Google把整個生態系統都移上了Dart 2,並在官方網站上各功能使用Dart 2作為範例,並且向開發者提供從Dart 1.x搬遷至Dart 2的工具和檔案。

在Dart 2.1的更新中,語言功能支援了整數到雙精度浮點數的轉換,這並非一個很大的改變,卻是方便開發者的更新。由於新的Flutter開發者在指定Padding或是設定字型大小的時候,很常會遭遇分析錯誤,API可能需要雙精度浮點數的類型參數,開發人員卻指定了整數類型的值。針對這個常見但瑣碎的轉換,現在Dart 2.1會自動推斷,並且幫開發者默默轉換類型。

Dart 2.1改進對mixin的支援,Dart 2.1為mixins加入了一種新語法,其中包含新的mixin關鍵字,開發者可以用來定義只在mixins中使用的類別。由於在Dart 2之前mixin都只能擴充物件,現在還讓mixin可以擴充類別。

健全類型系統(Sound Type System)會在開發者違反類型指定合約的時候發出警告,雖然在Dart 2.0中就加入了在編輯時的類型檢查,但在Dart 2.1中,程式碼編譯時也會進行類型檢查。Google表示,由於這些檢查在Dart 2.0時並沒有提供完整的功能,編譯有問題的原始碼,可能不會出現任何錯誤警告,因此會導致可用性的問題,目前在Dart 2.1中,這些檢查都已經完備,Dart Analyzer和編譯器都會進行相同的檢查。

由於AOT編譯碼在虛擬機器上執行,因此Dart 2的應用程式執行速度在多數情況比Dart 1還要更快,但在部分極端案例,由於更完善的檢查會造成額外20到40%的間接成本。在Dart 2.1中,Google大大降低類型檢查的成本,包括在AOT編譯程式碼以及使用JIT編譯在虛擬機器中執行的程式碼都是。另外,Dart 2.1網頁應用程式的效能也會得改善,Google改進了網頁上執行Dart程式碼的大小以及編譯時間,使得程式碼執行的速度獲得提升。

Google除了更新Dart SDK之外,也對核心SDK做出了改變,Knative現在也支援Dart程式。Knative是一個基於Kubernetes的平臺,支援建置、部署和管理無伺服器工作負載,雖然目前的進展只有一小部分,對於Dart開發者來說還太低階,但對於平臺的角度來說是一個很大的前進,因為這會讓Google雲端平臺更好的支援Dart,開發者能用來創建像是Flutter應用程式的後端。

官方預計在Dart 2.2改進const表達式並且支援新的Set literal,並更在未來的版本支援Unicode字串,以及提供更高的空值安全性。Google也提到,未來還會繼續減少編譯後Dart程式碼的大小以及效能,並良好的支援多核心處理器,進一步減少程式碼大小以改善下載和啟動時間。

熱門新聞

Advertisement