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