go channel 缓冲区最大限制_Go语言11周年,泛型问题有望明年得到解决
Go 團隊在博文寫道,“回想 Go 語言十周年慶典恍如隔世。雖然 2020 年有諸多艱難,但我們一直在推動 Go 語言的發(fā)展,其中有不少值得回憶的美好瞬間。”
1 Go 語言 2020 年的重大進展2 月——Go 1.14 版本帶來 Go 模塊的首個“生產(chǎn)就緒”實現(xiàn),同時迎來一系列性能改進,包括用于減少調(diào)度并降低垃圾收集延遲的更快推遲速度及非合作 goroutine 搶占。
3 月——推出了新的協(xié)議緩沖區(qū) API,它大大提高了對協(xié)議緩沖區(qū)反射及自定義消息的支持能力。
5 月——開發(fā)團隊啟動了用 Go 編寫的參考后端服務器。
博文寫道,“我們繼續(xù)改進 gopls,借此在多種編輯器中實現(xiàn)了對高級 Go 感知功能的支持。”
6 月——VSCode Go 擴展正式加入 Go 項目,目前由負責 gopls 的同一位開發(fā)者進行維護。同樣在這個月,Go 團隊對 pkg.go.dev 代碼進行開源,并將其作為 Go 項目的組成部分。6 月下旬,團隊發(fā)布了關(guān)于泛型的最新設計草案。
7 月——Go 團隊發(fā)布并討論了三套新的設計草案以供后續(xù)修改:new //go:build lines for file selection、 file system interfaces 和 build-time file embedding。
8 月——Go 1.15 版本主要提供優(yōu)化與 bug 修復。最重要的是,Go 團隊開始重寫鏈接器,使其運行速度提高了 20%,并且在大型構(gòu)建作業(yè)中的平均內(nèi)存占用量降低了 30%。
2 2021 年 Go 語言發(fā)布計劃2021.2——Go 1.16 將包含新的文件系統(tǒng)接口與 build-time 文件嵌入。新版本還將完成對鏈接器的重寫,借此帶來更可觀的性能改進。1.16 版本也將提供對采用新一代蘋果芯片(GOARCH = arm64)的 Mac 設備的支持。
2021.8——Go 1.17 將帶來更多功能與改進,但目前還無法確定太多細節(jié)。根據(jù)計劃,1.17 版本將提供一項針對 x86-64、基于寄存器的新型調(diào)用約定(不影響現(xiàn)有指令集!),使得程序的整個運行流程變得更快。(其他架構(gòu)將在未來的版本中發(fā)布。)
此外該版本還將包含新的 //go:build 行,出錯幾率比現(xiàn)有 //+build 行更低。最后,Go 團隊還希望能在明年對另一項備受期待的功能完成 Beta 測試,即支持 gotest 命令中的模糊測試。
3 Go 模塊明年,Go 團隊將繼續(xù)致力于開發(fā)對 Go 模塊的支持,并更好地將其集成到整個 Go 生態(tài)系統(tǒng)中。Go 1.16 將包含迄今為止最為流暢的 Go 模塊體驗。據(jù)悉,當前有 96% 的用戶已經(jīng)使用 Go 模塊。
Go 團隊還將終止對基于 GOPATH 開發(fā)工作的支持。未來,使用標準庫以外任何其他依賴項的程序,都需要配合 go.mod。
最初,Go 模塊的目標就是“將軟件包版本的概念融入 Go 開發(fā)者與我們工具的日常場景當中”,借此為整個 Go 生態(tài)系統(tǒng)中的模塊及版本提供深度支持。事實上,Go 模塊的鏡像、校驗數(shù)據(jù)庫以及索引在實現(xiàn)過程中也充分考慮到整個生態(tài)系統(tǒng)范圍內(nèi)的軟件包版本。明年,Go 團隊將在工具與系統(tǒng)中推出更多豐富的模塊支持選項。
并且,Go 團隊還創(chuàng)建了 gopls 以減少以往編輯器在支持 Go 時需要使用的多種工具。這類工具絕大多數(shù)不支持模塊,因此必須加以替換。明年,Go 團隊將著手在 VSCode Go 擴展中默認使用 gopls,同時發(fā)布 gopls1.0,希望為大家?guī)沓錾哪K體驗。Gopls 的一大優(yōu)勢在于,其具備編輯器中立性:任何能夠理解該語言服務器協(xié)議的編輯器都可以正常使用。
版本信息的另一個重要用途,在于跟蹤 build 中的各軟件包是否存在已知漏洞。明年,Go 團隊計劃開發(fā)一套已知漏洞數(shù)據(jù)庫,外加與之配套的漏洞檢查工具。
Go 軟件包發(fā)現(xiàn)站點 pkg.go.dev 也將在 Go 模塊的支持下獲得版本感知功能。
此外,Go 團隊明年還會將 godoc.org 統(tǒng)一進 pkg.go.dev 當中。并且,還將擴展各軟件包的版本時間表,列出各個版本的重要變更及已知漏洞等,希望能夠以總體目標為基礎幫助大家更明智地選擇適合添加的依賴項。
“我們高興地看到從 GOPATH 到 GO 模塊的遷移之旅即將完成,而 Go 模塊也開始推出一系列強大的依賴項感知工具。”博文寫道。
4 泛型根據(jù) Go 語言社區(qū)發(fā)布的 2019 年度調(diào)查報告表明,79% 的受訪者認為泛型是 Go 缺失的關(guān)鍵特性。缺少泛型和模塊 / 包管理器使用是受訪者面臨的最大挑戰(zhàn)。而這一問題有望在 2021 年得到緩解。
在今年 6 月,Go 團隊發(fā)布了關(guān)于泛型的最新設計草案,此后一直在完善相關(guān)工作,并將注意力轉(zhuǎn)移到生產(chǎn)就緒版本的實現(xiàn)身上。
Go 團隊稱,“我們將在 2021 年年內(nèi)繼續(xù)努力,力爭在年底前為大家?guī)硪恍┛晒┰囉玫某晒?#xff0c;也許會以 Go 1.18 beta 的形式發(fā)布。”
5 ”加速奔跑“的 Go 語言Go 語言的創(chuàng)始人之一 Rob Pike 在 2017 年的一篇文章《Go: Ten years and climbing》中,他回顧了 Go 語言的發(fā)展歷程。文章提到,Go 語言這十年的迅猛發(fā)展竟如此之快,讓他們自己都沒想到。
更重要的是,Go 語言成為了云計算領域新一代的開發(fā)語言。并且,隨著云原生的興起和發(fā)展,Go 語言幾乎占據(jù)了絕對的主流地位。無論是 Docker、Kubernetes,還是 Istio 和 Prometheus 等,都是用 Go 語言開發(fā)的。
Go 語言也受到海內(nèi)外互聯(lián)網(wǎng)大公司的熱捧,像 Youtube、Uber 等使用 Go 作為自己的主力開發(fā)語言進行業(yè)務的迭代。在國內(nèi),今日頭條、阿里巴巴、美團、B 站等知名公司,都在大量使用 Go 語言來重構(gòu)部分甚至全部業(yè)務。而在游戲后端領域也有大量的公司在使用 Go 語言進行研發(fā)。
左耳朵耗子在《左耳聽風》中談了談對 Go 語言的體會:
第一,語言簡單,上手快。Go 語言的語法特性簡直是太簡單了,簡單到你幾乎玩不出什么花招,直來直去的,學習難度很低,容易上手。
第二,并行和異步編程幾乎無痛點。Go 語言的 Goroutine 和 Channel 這兩個神器簡直就是并發(fā)和異步編程的巨大福音。像 C、C++、Java、Python 和 JavaScript 這些語言的并發(fā)和異步的編程方式控制起來就比較復雜了,并且容易出錯,但 Go 語言卻用非常優(yōu)雅和流暢的方式解決了這個問題。這對于編程多年受盡并發(fā)和異步折磨的我來說,完全就是眼前一亮的感覺。
第三,Go 語言的 lib 庫“麻雀雖小,五臟俱全”。Go 語言的 lib 庫中基本上有絕大多數(shù)常用的庫,雖然有些庫還不是很好,但我覺得這都不是主要問題,因為隨著技術(shù)的發(fā)展和成熟,這些問題肯定也都會隨之解決。
第四,C 語言的理念和 Python 的姿態(tài)。C 語言的理念是信任程序員,保持語言的小巧,不屏蔽底層且對底層友好,關(guān)注語言的執(zhí)行效率和性能。而 Python 的姿態(tài)是用盡量少的代碼完成盡量多的事。于是我能夠感覺到,Go 語言是想要把 C 和 Python 統(tǒng)一起來,這是多棒的一件事。
當然,Go 語言也存在諸多的問題,比如垃圾回收、異常處理、泛型編程等。
不過,我們相信 Go 團隊和社區(qū)未來也會逐步解決這些問題。
今日文章推薦:值得推薦的13個 Jenkins 替代方案
點個在看少個 bug ?
總結(jié)
以上是生活随笔為你收集整理的go channel 缓冲区最大限制_Go语言11周年,泛型问题有望明年得到解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ctypes python3.7_装新的
- 下一篇: 游戏自审自查报告_开发的射箭小游戏上线了