這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
6月18日,在Go 1.2發布六個月之後,Go官方宣布正式發布Go 1.3。Go 1.3並沒有引入新的語言功能,只是進行了功能改進,並修複了一些bug以及使用者的反饋。新的版本開始支援DragonFly BSD、Solaris、Plan 9和Google的NaCl( Native Client),且顯著改進了連結器和編譯器。低版本的Go語言使用者無需更改任何代碼即可升級到Go 1.3。
Go語言是由Google開發的一個開源項目,目的之一是為了提高開發人員的編程效率。Go語言的並行機制使其很容易編寫多核和網路應用,而重新設計的的類型系統允許構建有彈性的模組化程式。Go語言可以快讀編譯為機器碼,同時具有高效的記憶體回收和強大的運行時反射。它是一門快速的、靜態類型的編譯語言,但是感覺上卻是動態類型的解釋型語言。
Go 1.3仍在向承諾的目標(更快、更簡單)前進,主要改進包括:
改進了記憶體模型。在緩衝的channel發送和接收資料時增加了一條規則,使緩衝的channel可以被用作一個簡單的號誌(Semaphore)。
不再支援Windows 2000。微軟在2010年時就不再支援Windows 2000,現在Go 1.3也放棄對它的支援。
支援BSD和Solaris系統。Go 1.3開始支援DragonFly BSD、FreeBSD、NetBSD、OpenBSD、Plan 9、Solaris,但對這些系統的支援都有一些其他特殊要求,比如對FreeBSD的支援必須要求核心編譯時間配置COMPAT_FREEBSD32參數。
支援 Native Client 虛擬機器架構。Go 1.3既可以在32位Inter架構處理器上( GOARCH=386 )運行,也能在64位Intel架構上運行,但是在64位架構上使用的是32位pointer,對於ARM架構暫不支援。關於Native Client的介紹可以閱讀其官方介紹。
改進了棧的實現方式。將棧實現方式從分段(segmented)模型改為連續(contiguous)模型。當一個goroutine( Go 語言提供的一種使用者態線程)需要更多的棧空間且超過了可用大小時,棧會被轉移到一個單獨的更大的記憶體塊。
改進了記憶體回收機制。Go已經在堆上實現了精準的記憶體回收,Go 1.3增加了棧上的記憶體回收。另外,GC的速度也得到了提升,現在採用的是並發清除演算法,可以縮短50-70%的GC停機時間。
重構了連結器。對連結器和編譯器進行了重構,連結器仍然是使用C語言編寫,但是指令選擇階段被移入到編譯器中並建立了一個新的包liblink。指令選擇只會在程式包被編譯時間執行一次,所以這這樣可以加快大幅度提升大工程的編譯速度。
其它的一些改進。比如實現了新的Regex引擎、更快的race detector、預設棧的大小從8K變為4K 位元組、資源競爭的檢測快了40%、增加了很多新參數等。
讀者可以在這裡下載Go 1.3。詳細的改進說明可以閱讀官方文檔。不能翻牆的使用者可以使用社區提供的鏡像來下載。