日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Go 未來方向:標準庫 v2 改進的指導原則

來源: 責編: 時間:2024-05-11 09:20:01 188觀看
導讀大家好,我是煎魚。在五一假期的第一天,Go 核心團隊也沒有閑著,@Russ Cox 直接在官方博客發布了《Evolving the Go Standard Library with math/rand/v2》這篇文章。圖片其部分內容是對本次做 math/rand/v2 標準庫升級的

大家好,我是煎魚。DF428資訊網——每日最新資訊28at.com

在五一假期的第一天,Go 核心團隊也沒有閑著,@Russ Cox 直接在官方博客發布了《Evolving the Go Standard Library with math/rand/v2》這篇文章。DF428資訊網——每日最新資訊28at.com

圖片圖片DF428資訊網——每日最新資訊28at.com

其部分內容是對本次做 math/rand/v2 標準庫升級的內容進行再度陳述,有興趣的小伙伴可以閱讀我之前寫的《Go1.22 新特性:新的 math/rand/v2 庫,更快更標準!》,能夠知悉全貌。DF428資訊網——每日最新資訊28at.com

本文的重點是對另外的 Go 標準庫 v2 的指導思想和規劃進行分享。DF428資訊網——每日最新資訊28at.com

之前:標準庫 v1 問題

自 Go1 在 2012 年 3 月發布以來,對標準庫的修改一直受到 Go1 的兼容性承諾的約束。DF428資訊網——每日最新資訊28at.com

圖片圖片DF428資訊網——每日最新資訊28at.com

總體而言,Go1 兼容性保障對 Go 用戶來說是一個福音,它為生產系統、文檔、教程、書籍等提供了一個穩定的基石。DF428資訊網——每日最新資訊28at.com

然而隨著時間的推移,Go 核心團隊意識和發現原始 API 中,存在著許多錯誤無法以兼容的方式修復。DF428資訊網——每日最新資訊28at.com

包括在其他場景下,Go 的最佳實踐和約定已經發生了變化。我們需要一個可推進的計劃來做出重要的、破壞性的變更。DF428資訊網——每日最新資訊28at.com

為此,Go 1.22 新增的 math/rand/v2 包,這是標準庫中的第一個 “v2” 包。它為 math/rand API 帶來了必要的改進。DF428資訊網——每日最新資訊28at.com

更重要的是:它為我們如何根據需要修訂其他標準庫包樹立了榜樣。DF428資訊網——每日最新資訊28at.com

未來:標準庫 v2 演進原則

基本準則

這項工作的目標之一是:為標準庫中所有 v2 包的處理方式建立原則和模式。DF428資訊網——每日最新資訊28at.com

在接下來的幾個 Go 版本中,Go 核心團隊承諾不會有大量的 v2 包涌現。相反,他們將每一次只處理一個包,提高設計質量。DF428資訊網——每日最新資訊28at.com

確保新的標準庫 v2 設定的質量標準能夠持續十年。(可能有許多包根本不需要 v2)DF428資訊網——每日最新資訊28at.com

三個設計原則

對于那些確實需要 v2 版本的包,我們將會歸結為三個設計原則去實施。DF428資訊網——每日最新資訊28at.com

具體如下:DF428資訊網——每日最新資訊28at.com

1、不兼容的新版本軟件包將使用 /package/v2 作為導入路徑:就像標準庫之外的 v2 模塊一樣遵循語義導入版本化。這樣原始軟件包 v1 和 v2 軟件包就可以在一個程序中共存,這對于逐步轉換到新的應用程序接口至關重要。DF428資訊網——每日最新資訊28at.com

2、所有更改都必須以尊重現有用法和用戶為基礎:我們絕不能引入不必要的變化,無論是對現有軟件包的不必要更改,還是必須學習的全新軟件包。在實踐中,這意味著我們要以現有軟件包為起點,只對動機明確、價值合理的軟件包進行修改。DF428資訊網——每日最新資訊28at.com

3、v2 標準庫不能把 v1 用戶拋在后面,完全不管了。在理想情況下,v2 軟件包應能做 v1 軟件包能做的一切事情,而當 v2 發布時,v1 軟件包應被重寫為 v2 的薄封裝。這將確保現有的 v1 軟件包繼續受益于 v2 中的錯誤修復和性能優化,也保證了 v1 的兼容性。DF428資訊網——每日最新資訊28at.com

意外考量

相較于 v1, v2 的包將會引入破壞性的變化,想讓 v1 被重寫為 v2 的薄封裝,并不總是可行的,在設計上這始終是需要慎重考慮的。DF428資訊網——每日最新資訊28at.com

像是本次新增的 math/rand/v2,我們將 rand 中 auto-seeded v1 函數調用 v2 生成器,但由于重復性違規,我們無法共享其他代碼。最終,math/rand 改動的代碼量并不大,也不需要定期維護,因此重復是可控的。DF428資訊網——每日最新資訊28at.com

在其他情況下,為避免重復做更多的工作可能是值得的。例如:在 encoding/json/v2 的設計(仍在進行)中,雖然默認語義和 API 都發生了變化,但軟件包提供的配置項可以實現 v1 API。DF428資訊網——每日最新資訊28at.com

當我們最終發布 encoding/json/v2 時,encoding/json (v1) 將成為它的一個薄包裝,確保不從 v1 遷移的用戶仍能受益于 v2 中的優化和安全修復。DF428資訊網——每日最新資訊28at.com

總結

通過閱讀本文的標準庫 v2 的設計講解,能夠感受到其實 @Russ Cox 已經對 Go 兼容性這塊做好了規劃。基本是先動 Go1 兼容性前后保障的準則,再動標準庫。同時標準庫 v2 要兼容 v1 的使用,不能直接就是完全不維護了。DF428資訊網——每日最新資訊28at.com

這樣對于用戶的得益雖然是較大的,但對于 Go 核心團隊來講,維護的工作量和可能出現的程序意外(BUG)的概率也會變大,因為要兼容的新老場景都變多了。DF428資訊網——每日最新資訊28at.com

不論怎么說,未來這將會出現。大家可以一起見證 Go 標準庫 v2 接下來的發展!我猜 json v2 包要快轉正了。DF428資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-87979-0.htmlGo 未來方向:標準庫 v2 改進的指導原則

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python Argcomplete 自動補全指南

下一篇: 微服務架構技術,你了解幾分?

標簽:
  • 熱門焦點
  • 鴻蒙OS 4.0公測機型公布:甚至連nova6都支持

    華為全新的HarmonyOS 4.0操作系統將于今天下午正式登場,官方在發布會之前也已經正式給出了可升級的機型產品,這意味著這些機型會率先支持升級享用。這次的HarmonyOS 4.0支持
  • 印度登月最關鍵一步!月船三號今晚進入環月軌道

    8月5日消息,據印度官方消息,月船三號將于北京時間今晚21時30分左右開始近月制動進入環月軌道。這是該探測器能夠成功的最關鍵步驟之一,如果成功將開始圍
  • 三言兩語說透設計模式的藝術-單例模式

    寫在前面單例模式是一種常用的軟件設計模式,它所創建的對象只有一個實例,且該實例易于被外界訪問。單例對象由于只有一個實例,所以它可以方便地被系統中的其他對象共享,從而減少
  • 谷歌KDD'23工作:如何提升推薦系統Ranking模型訓練穩定性

    谷歌在KDD 2023發表了一篇工作,探索了推薦系統ranking模型的訓練穩定性問題,分析了造成訓練穩定性存在問題的潛在原因,以及現有的一些提升模型穩定性方法的不足,并提出了一種新
  • 19個 JavaScript 單行代碼技巧,讓你看起來像個專業人士

    今天這篇文章跟大家分享18個JS單行代碼,你只需花幾分鐘時間,即可幫助您了解一些您可能不知道的 JS 知識,如果您已經知道了,就當作復習一下,古人云,溫故而知新嘛。現在,我們就開始今
  • Temu起訴SHEIN,跨境電商戰事升級

    來源 | 伯虎財經(bohuFN)作者 | 陳平安日前據外媒報道,拼多多旗下跨境電商平臺Temu正對競爭對手SHEIN提起新訴訟,訴狀稱Shein“利用市場支配力量強迫服裝廠商與之簽訂獨家
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準追劇女孩們的古偶劇集,2021年有優酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 華為開發者大會2023日程公開:開設鴻蒙HarmonyOS 4體驗區

    IT之家 7 月 31 日消息,華為今日公布了 HDC.Together 開發者大會 2023 的詳細日程。整場大會將于 8 月 4 日-6 日之間舉行,屆時將發布最新一代鴻蒙 H
  • iQOO 11S評測:行業唯一的200W標準版旗艦

    【Techweb評測】去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,該機不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競
Top 主站蜘蛛池模板: 荆州市| 台前县| 会昌县| 攀枝花市| 曲阜市| 玛曲县| 湟中县| 洱源县| 郎溪县| 磐石市| 榆林市| 富民县| 含山县| 容城县| 湖北省| 吴旗县| 浦城县| 马龙县| 永登县| 察哈| 方山县| 东明县| 简阳市| 斗六市| 定州市| 太仓市| 阳原县| 大城县| 高平市| 富蕴县| 皮山县| 平凉市| 宜兰县| 陆川县| 海阳市| 晋州市| 定州市| 伊金霍洛旗| 高碑店市| 罗田县| 丰原市|