《電子技術(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)的版本相比沒(mé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)體沒(méi)有轉(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;郵箱:aet@chinaaet.com。