0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Dart 3將成為100%健全的空安全語言

OSC開源社區(qū) ? 來源:OSC開源社區(qū) ? 作者:OSC開源社區(qū) ? 2022-12-12 14:48 ? 次閱讀

根據 Dart 的開發(fā)進度,Dart 編程語言的第三個主要版本(Dart 3)將于 2023 年中期亮相,屆時 Dart 將成為 100% 健全的空安全語言,變量默認是「非空」的。

空值引用可以追溯到 1964 年左右,當時英國計算機科學家 Tony Hoare 在 ALGOL 語言中引入了這個概念。但他自己卻把空值引用稱為自己的十億美元錯誤,因為它導致了數(shù)不清的錯誤、漏洞和系統(tǒng)崩潰,可能在之后 40 年中造成了十億美元的損失。

Dart 從 2.12 版本開始支持健全的空安全,但它保留了運行非空安全代碼或部分空安全代碼的模式(混合模式)。

Dart 通過一系列的靜態(tài)和運行時檢查來提供健全的空安全。每一個使用了空安全的 Dart 庫都會擁有所有的靜態(tài)檢查和更嚴格的編譯期的錯誤提醒。對于包含了空安全庫的混合模式程序也是如此。

以混合模式的空安全為例,它讓軟件包的維護者可以遷移至空安全的同時,未遷移至空安全的使用者也可以享受 Dart 更新時的問題修復和改進。只不過混合模式的程序無法獲得與空安全程序的運行時健全性一致的保證。null 很可能從非空安全的庫污染到空安全的代碼。

Dart 和 Flutter 的產品經理 Michael Thomsen 在博客文章中解釋道:

我們的下一個版本,也就是 Dart 3,將完成一個完全健全的空安全語言的開發(fā)。作為這項開發(fā)工作的最后一步,我們將消除 Dart 語言和核心庫 API 中的歷史遺留問題,包括移除已停用的核心庫 API 以及對非健全的空安全運行的支持。

Dart 的轉變將有助于在編譯時捕獲與類型有關的錯誤,并應改善代碼的可讀性、可維護性和提前編譯(AOT)。

由于轉變巨大,對開發(fā)者而言肯定是會產生持續(xù)一段時間的影響 / 陣痛期,開發(fā)者最好是可以在 Dart 3 發(fā)布之前調整他們的代碼。Google 也已經發(fā)布了遷移工具,開發(fā)者也能夠相對輕松地完成遷移工作。

在 Dart 3 發(fā)布后,該語言的下一個重要里程碑可能是支持將 Dart 代碼編譯成 WebAssembly(Wasm),這將使 Flutter Web 應用程序在瀏覽器中作為原生代碼運行成為可能。這項工作需要 W3C 和瀏覽器廠商的合作,通過 WasmGC 擴展將對垃圾回收語言的支持加入 Wasm。

1ec61aee-7986-11ed-8abf-dac502259ad0.png

根據 Stack Overflow 2022 年的開發(fā)者調查,Dart 目前在編程語言受歡迎程度上排名第 16 位。在近 7.2 萬名受訪者中,約有 6.54% 的受訪者在使用 Dart;相比之下,Kotlin(第 15 位)為 9.16%,Rust(第 14 位)為 9.32%,Go(第 13 位)為 11.15%,Ruby(第 17 位)為 6.05%,Assembly(第 18 位)為 5.47%,Swift 編程語言排在第 19 位,占 4.91%。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編程語言
    +關注

    關注

    10

    文章

    1916

    瀏覽量

    34381
  • 應用程序
    +關注

    關注

    37

    文章

    3198

    瀏覽量

    57364
  • Dart
    +關注

    關注

    0

    文章

    9

    瀏覽量

    1731

原文標題:Dart 3將成為100%健全的空安全語言

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    按照這樣學習C語言,成為卷王不是夢!

    在計算機編程領域,C語言被譽為一種強大而靈活的編程語言,掌握好C語言不僅可以讓你輕松駕馭各種編程任務,還能夠為你的職業(yè)生涯打下堅實的基礎。但要成為C
    的頭像 發(fā)表于 07-06 08:04 ?198次閱讀
    按照這樣學習C<b class='flag-5'>語言</b>,<b class='flag-5'>成為</b>卷王不是夢!

    STM32F429 DISCOVERY USB通信,使用端點3發(fā)送數(shù)據,接收到IN指令包的時候為什么說FIFO為呢?

    的狀態(tài)是端點3在收到IN指令包的時候FIFO為,下面是我對FIFO進行分配的代碼: HAL_PCD_SetRxFiFo( hpcd_USB_OTG_HS, 0x100);//out端點好像是共用一個接收
    發(fā)表于 05-14 07:21

    什么是接口?接口代碼示例

    這是因為每個接口的內存布局都占用兩個機器字長的內容。對于長度為N的接口slice來說,它的每個元素都是以2機器字長為單元的連續(xù)空間,共占用N*2個機器字長的空間。
    的頭像 發(fā)表于 04-30 12:59 ?366次閱讀

    如何成為一名嵌入式C語言高手?

    如何成為一名嵌入式C語言高手? 嵌入式系統(tǒng)是當今科技領域的核心,而C語言則是嵌入式系統(tǒng)開發(fā)中最常用的編程語言之一。成為一名嵌入式C
    發(fā)表于 04-07 16:03

    為什么需要芯光纖?芯光纖是如何工作的

    為了克服傳統(tǒng)光纖在傳輸過程中的問題,提高光通信的效率和性能,芯光纖應用而生。
    發(fā)表于 03-29 14:23 ?670次閱讀
    為什么需要<b class='flag-5'>空</b>芯光纖?<b class='flag-5'>空</b>芯光纖是如何工作的

    Stability AI發(fā)布Stable Code Instruct 3B大語言模型,可編譯多種編程語言

    據報道,Stability AI公司近期推出了適配程序員使用的Stable Code Instruct 3B大語言模型,此款模型的顯著特點是能夠實現(xiàn)編程語言間的自如切換。
    的頭像 發(fā)表于 03-27 10:04 ?333次閱讀

    如何成為一名嵌入式C語言高手?

    如何成為一名嵌入式C語言高手? 嵌入式系統(tǒng)是當今科技領域的核心,而C語言則是嵌入式系統(tǒng)開發(fā)中最常用的編程語言之一。成為一名嵌入式C
    發(fā)表于 03-25 14:12

    AI手機比例有較大提升 2024年將成為AI手機的元年

    2024年AI手機的比例將有較大提升,將成為AI手機的元年。
    的頭像 發(fā)表于 01-22 11:19 ?946次閱讀
    AI手機比例有較大提升 2024年<b class='flag-5'>將成為</b>AI手機的元年

    商用車將成為下一階段頭部電池企業(yè)電動化滲透的重要方向

    商用車將成為下一階段電動化滲透的重要方向。
    的頭像 發(fā)表于 01-16 09:39 ?715次閱讀

    什么是芯光纖?為什么需要芯光纖?

    芯光纖(Hollow-core fiber)—— 一種新型傳輸媒介 。
    的頭像 發(fā)表于 12-27 09:22 ?736次閱讀

    不要讓成為影響船舶性能的罪魁禍首

    本文翻譯轉載于:Cadence blog 作者:Veena Parthan 化對現(xiàn)代船只設計提出了嚴峻挑戰(zhàn),尤其是對參加美洲杯帆船賽、旺代單人環(huán)球帆船賽和朗姆之路跨大西洋帆船賽等賽事的高速帆船而言
    的頭像 發(fā)表于 12-20 12:25 ?495次閱讀
    不要讓<b class='flag-5'>空</b>化<b class='flag-5'>成為</b>影響船舶性能的罪魁禍首

    Dart 3.2 更新盤點

    升級 自我們在 Dart 2.12 中引入 健全安全 (sound null safety) 以來已過去幾年時間。您可以借助
    的頭像 發(fā)表于 12-15 15:55 ?334次閱讀

    “行板+大模型”——基于ChatGLM的多角色交互式聊天機器人

    隨著人工智能技術的迅猛發(fā)展,大型語言模型成為了熱門話題。國際上的GPT-3、BERT等模型備受關注,而國內的本土語言模型ChatGLM也引起了廣泛關注。ChatGLM是由清華大學開發(fā)的
    的頭像 發(fā)表于 12-08 14:11 ?499次閱讀

    python如何定義二維數(shù)組

    和列的數(shù)量,并將它們初始化為0。然后,可以使用一個for循環(huán)來逐行創(chuàng)建一個的一維列表,并使用另一個for循環(huán)來向的二維列表中添加這些一維列表。 下面是一個示例代碼,創(chuàng)建一個3行4列的
    的頭像 發(fā)表于 11-21 15:12 ?1352次閱讀