【技術圈】Flutter 1.12、Firefox 71、V8 8.0 一大把新特性來襲
- 2020 年 2 月 1 日
- 筆記
速覽
- Flutter 1.12發佈
- V8 發佈 8.0 版本,內存佔用量大幅下降
- WICG引入了展現鎖定,實現更快的Web渲染
- Firefox 71 發佈
- 360 加入 Ecma 參與 JavaScript 語言標準制定
Flutter 1.12 發佈

Flutter 1.12
是 1.9.x
的版本在經歷 6 次 hotfix
之後,才帶來的 stable
大版本更新。該版本解決了 4571
個報錯,合併了 1905
份 pr,同時本次發佈也是 Flutter
一年內的第五個穩定版本。
框架

- 完全支持
iOS 13
暗色模式- 完全支持 iOS 13 主題模式是 Flutter 1.12 的一大亮點,包括支持 Cupertino 小部件的暗色模式。
- 為了讓
Flutter App
看起來更像原生App
,我們還改進了滾動條保真度,提供了自適應的CupertinoAlertDialog
填充,並允許為CupertinoDatePicker
設定最小和最大日期限制。
- 支持將全屏
Flutter
實例添加到App
中- 提供了穩定的平台集成
API(Java、Kotlin、Objective-C 和 Swift)
,包括一組新的Android
平台API
- 可以在內嵌的
Flutter
模塊里使用插件。
- 提供了穩定的平台集成

Flutter 1.12
的master、dev
和beta
都提供了改進的Web
支持。- 對
macOS
的支持很快也會實現,目前正在從技術預覽階段進入到alpha
階段,master
和dev
已經可用。
SDK
- 建議開發者將
Android
項目遷移到AndroidX
,SDK
的瘦身,增加了google_fonts
字體的支持等。 Android
插件的改進Android plugins APIs
,比以前更加簡單明了,分割了FlutterPlugin and MethodCallHandler
,同時提供ActivityAware
、ServiceAware
作為獨立支持。- 新增加了不兼容的
breaking change
,比如:PageView
啟用RenderSliverFillViewport
、WidgetsBinding
中的attachRootWidget
被替換為scheduleAttachRootWidget
- 增加
MediaQuery.systemGestureInsets
支持Android Q
的手勢導航;
開發工具

DartPad
- 你可以在不安裝任何東西的情況下嘗試
Dart
的新特性。新版的DartPad
現在支持Flutter
- 你可以在不安裝任何東西的情況下嘗試
Hot UI
- 如果你在本地安裝了
Flutter
工具,就會在IntelliJ/Android Studio
的Flutter
插件中看到一個新的預覽功能。你可以在IDE
中直接看到你正在開發的小部件。
- 如果你在本地安裝了
Spuernova
- 在
Spuernova
中可以通過Sketch
文件就可以生成Flutter
代碼
- 在
V8 發佈 8.0 版本,內存佔用量大幅下降

JavaScript
引擎 V8
團隊在官宣推出 8.0
版本。這次更新的重點主要集中在錯誤修復及性能改善上,正式的版本將在數周后隨着谷歌 Chrome 80
穩定版一起發佈。
V8
是一個由 Google
開發的開源 JavaScript
引擎,用於 Google Chrome
及 Chromium
中。Lars Bak
是這個項目的組長,以 V8
發動機為其命名。V8
在運行之前將JavaScript
編譯成了機器代碼,而非位元組碼或是解釋執行它,以此提升性能。更進一步,使用了如內聯緩存(inline caching``)等方法來提高性能。有了這些功能,JavaScript
程序與 V8
引擎的速度媲美二進制編譯。

V8
引擎的這次更新,對內存佔用量與速度都進行了優化。V8
堆包含了很多東西,例如浮點值、字符串字符、編譯代碼以及標定值,開發團隊發現這些標記值佔據了堆的很大一部分空間。標定值與系統指針一樣大,32
位寬度對應 32
位架構,64
位寬度對應 64
位架構。當開發團隊對比 32
位版本與 64
位版本時發現,每個標記值使用了兩倍的堆內存。因為高位可以由低位合成,所以只需要將唯一的低位存儲到堆中就能實現降低內存的佔用量,平均可節省 40%
堆內存,這一方法被稱為「指針壓縮」。
新版本在 JavaScript
方面出現了兩個新特性 ── Optional Chaining
和 Nullish Coalescing
。
Optional Chaining
:在編寫屬性訪問鏈時,我們經常需要檢查中間值是否為空。沒有經過錯誤檢查的鏈可能會扔出,而經過了明確的錯誤檢查的鏈是冗長的,並且會產生不必要的結果,即檢查所有的真實值,而不是只檢查非空值。可選鏈(Optional Chaining
)允許我們編寫更精鍊、魯棒性更強的屬性訪問鏈,檢查中間值是否為空。如果中間值為空,則整個表達式的計算結果為未定義的。Nullish Coalescing
:一個新的用於處理默認值的短路二進制操作符。
具體使用可查看:https://v8.dev/blog/v8-release-80 」
WICG引入了展現鎖定,實現更快的Web渲染

該提案適應多種使用場景,包括快速展現非常大的HTML文檔,滾動顯示大量內容,異步預渲染不可見的內容供後續展現,以及更快速地度量布局。該提案試圖在不破壞Web特性和布局計算的情況下避免加載和渲染不可見的內容,並且為開發人員提供一種靈活性,使其能夠在不向終端用戶屏幕展現的情況下將內容預先渲染出來。
目前,DOM
是原子渲染的,隨着站點和應用規模的增長,渲染也會耗費越來越長的時間。現在,我們所採用的技術包括隱藏不可見的內容或虛擬化,但是這些方式有一些限制,並且有可靠性方面的潛在問題。
展現鎖定提案引入了三個新特性:
rendersubtree
屬性,控制一個DOM
子樹是否要渲染。該屬性可以被瀏覽器或其他的用戶終端所修改,並且會觸發一個MutationObserver
事件,開發人員可以對事件進行響應。content-size
屬性,為rendersubtree
屬性標記為不可見的內容分配一個佔位符的大小。Element
對象的updateRendering
方法,預渲染rendersubtree
屬性標記為不可見的子樹中的內容。
在現今的Web瀏覽器中,目前還沒有該提案的實現。該提案還處於早期階段。 」
Firefox 71 發佈

Firefox 71
現已正式發佈。該版本添加了許多新的開發人員工具功能,其中包括 Web
套接字消息檢查器,控制台多行編輯器模式,登錄事件以及網絡面板全文搜索。
新功能
- 對集成的密碼管理器
Lockwise
的改進Firefox
現在可以識別子域,並將通過Lockwise
自動填充域登錄信息- 使用屏幕閱讀器的用戶現在可以使用
Firefox Monitor
的集成違規警
- 有關實際使用的增強跟蹤保護的更多信息
Firefox
阻止加密礦工時的通知- 通過單擊地址欄防護欄,可以訪問保護面板中被阻止的跟蹤器的運行記錄
- 畫中畫(
PIP
)功能:允許將視頻包含在一個單獨的小窗口中,無論您用戶從標籤到標籤還是在Firefox
瀏覽器之外切換,仍可以觀看。
修復
- 各種安全修復程序。
- 以
HTML
重新實現了配置頁面
開發者
DevTools
的網絡面板現在可以 檢查WebSocket
消息,並自動格式化各種框架格式Console
的新多行編輯器模式提供了類似於IDE
的體驗,可方便地在較長的代碼段上進行迭代- 網絡面板的新資源阻止功能可以模擬跟蹤保護,安全性,服務中斷和不良連接的影響,以進行更可靠的測試
- 在美國,
DevTools
的新增功能面板中的每個版本都可以找到更多功能和改進
360 加入 Ecma 參與 JavaScript 語言標準制定

360
成為 Ecma
會員,奇舞團將代表公司參與 TC39
的工作,制定 JavaScript
語言標準。在 12
月舉辦的 Ecma
第 118
次會員大會上,360
代表也見證了阿里巴巴、華為和 Sujitech
等另外 3
家中國公司被批准為 Ecma
會員。