《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 業(yè)界動(dòng)態(tài) > Go 1.5編譯器與運(yùn)行時(shí)環(huán)境由Go語(yǔ)言自身編寫

Go 1.5編譯器與運(yùn)行時(shí)環(huán)境由Go語(yǔ)言自身編寫

2015-09-18
關(guān)鍵詞: 編譯器 語(yǔ)言

  Go語(yǔ)言1.5版本擁有一個(gè)用Go語(yǔ)言自身編寫的完整工具鏈,,一個(gè)更快的垃圾回收器和在每一個(gè)可用的CPU上運(yùn)行的goroutine。
  Go語(yǔ)言以前的版本通過(guò)改善編譯器,、垃圾回收器,、開發(fā)工具和對(duì)更多平臺(tái)(比如:Android/ARM, BSD, Solaris, NaCl)的支持來(lái)獲得更優(yōu)秀的性能,。Google曾經(jīng)提到,它對(duì)每個(gè)Go語(yǔ)言版本都許下了 兼容性的承諾 ,,基本上說(shuō)“除了安全問(wèn)題,,不會(huì)做出不兼容的更改”
  Go語(yǔ)言1.5版本和原來(lái)的版本相比沒有什么不同,,盡管一些用戶抱怨在編譯和運(yùn)行他們的程序時(shí)會(huì)遇到一些問(wèn)題, 并在Go 問(wèn)題列表 中羅列了出來(lái),。然而Google認(rèn)為1.5版本是一個(gè)“有意義的版本”,,大部分變化是底層的變化,以及性能的提升,。下面是一些改進(jìn):
  編譯器,、鏈接器、匯編器和運(yùn)行時(shí)環(huán)境已經(jīng)從C語(yǔ)言編寫轉(zhuǎn)換成了Go語(yǔ)言編寫,,還有一小部分是匯編語(yǔ)言編寫的,已經(jīng)徹底摒棄了最初的C語(yǔ)言代碼,。 根據(jù)Go語(yǔ)言的設(shè)計(jì)者Robert Pike的說(shuō)法 ,,Go語(yǔ)言編譯器通過(guò)工具自動(dòng)轉(zhuǎn)換和一些最終的手動(dòng)清理操作來(lái)避免引入新的bug。在一些工具的幫助下,,開發(fā)者手動(dòng)重寫了Go語(yǔ)言運(yùn)行時(shí)環(huán)境。剛開始時(shí),,新的編譯器由于一些C語(yǔ)言結(jié)構(gòu)體沒有轉(zhuǎn)換成有效的Go語(yǔ)言代碼,,導(dǎo)致編譯速度慢了10倍,但是在后來(lái)的開發(fā)完善過(guò)程中,,性能得到了徹底的提高。摒棄C語(yǔ)言的一些好處如下:一個(gè)代碼庫(kù)適用于所有平臺(tái),,可以更容易的加入新平臺(tái),,擁有一個(gè)統(tǒng)一的采用較少代碼量和簡(jiǎn)易維護(hù)量的工具鏈。缺點(diǎn)是:構(gòu)建需要花費(fèi)兩倍時(shí)間,,這是因?yàn)镚o語(yǔ)言代碼也是由工具編譯生成的,。Google計(jì)劃在1.6版本中降低構(gòu)建所花費(fèi)的時(shí)間,。
  一個(gè)編譯器,、一個(gè)鏈接器、一個(gè)匯編器的目標(biāo)是要實(shí)現(xiàn)通過(guò)$GOARCH 和 $GOOS這兩個(gè)環(huán)境變量來(lái)配置CPU架構(gòu)和操作系統(tǒng),。
  Go 1.5很有必要從源代碼來(lái)創(chuàng)建分布式,。
  在標(biāo)準(zhǔn)的stop-the-world垃圾回收器中加入了新的并發(fā)垃圾回收器,將垃圾回收活動(dòng)從原來(lái)的50毫秒降低到10毫秒以下,。大家可以在 設(shè)計(jì)文檔 和這些 幻燈片 中找到新的并發(fā)垃圾回收器的更多細(xì)節(jié),。由于有了并發(fā)垃圾回收器,程序運(yùn)行速度與Go1.4相比,,提高了幾個(gè)百分點(diǎn),。
  在64位架構(gòu)的大趨勢(shì)下,,一些32位的分支將無(wú)法再使用。
  新的Go指令追蹤工具可以對(duì)程序執(zhí)行細(xì)粒度的追蹤,。
  在Go 1.5中引入的一個(gè)重大改變是并發(fā)的最大線程數(shù)量從1上升到了可用的CPU的數(shù)量,。如果一個(gè)程序依賴于協(xié)同程序的執(zhí)行順序,它很有可能遇到意想不到的結(jié)果,,并且需要修復(fù),。更多的細(xì)節(jié)參考 設(shè)計(jì)文檔 。
  其他改進(jìn)如下:所有資源庫(kù)支持內(nèi)部包,, 外部依賴 ,,go文檔命令以及其他一些改進(jìn)。我們?cè)?發(fā)行通知 中介紹了關(guān)于Go 1.5新特性的更多細(xì)節(jié),。

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn),。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話:010-82306118;郵箱:[email protected],。