Вы можете узнать больше в разделе « Настройка и использование gccgo »:
gccgo, компилятор для языка Go. Компилятор gccgo - это новый интерфейс для GCC.
Обратите внимание, что gccgo не является компилятором gc
Как объясняется в « Gccgo в GCC 4.7.1 » (июль 2012 г.)
Язык Go всегда определялся спецификацией, а не реализацией. Команда Go написала два разных компилятора, реализующих эту спецификацию: gc и gccgo.
- Gc - исходный компилятор, и инструмент go использует его по умолчанию.
- Gccgo - это другая реализация с другим фокусом
По сравнению с gc, gccgo медленнее компилирует код, но поддерживает более мощные оптимизации, поэтому программа с привязкой к ЦП, созданная gccgo, обычно будет работать быстрее.
Также:
- Компилятор gc поддерживает только самые популярные процессоры: x86 (32-битные и 64-битные) и ARM.
- Однако Gccgo поддерживает все процессоры, которые поддерживает GCC.
Не все эти процессоры были тщательно протестированы на gccgo, но многие прошли, включая x86 (32-битные и 64-битные), SPARC, MIPS, PowerPC и даже Alpha.
Gccgo также был протестирован в операционных системах, которые компилятор gc не поддерживает, особенно в Solaris.
если вы установите команду перейти от стандартного выпуска Go, он уже поддерживает gccgo через -compiler
опцию: go build -compiler gccgo myprog
.
Короче: gccgo: больше оптимизации, больше процессоров .
Однако, как отметил на OneOfOne ( источник ), часто возникает десинхронизация между ходом поддерживается gccgo и последней версией идет:
gccgo поддерживает только до версии go v1.2 , поэтому, если вам нужно что-то новое в 1.3 / 1.4 (совет), gccgo нельзя использовать. -
Выпуск 4.9 GCC будет содержать версию gccgo Go 1.2 (а не 1.3) .
Графики выпуска проектов GCC и Go не совпадают, что означает, что 1.3 будет доступна в ветке разработки, но что следующий выпуск GCC, 4.10, скорее всего, будет иметь версию Go 1.4 gccgo.
twotwotwo упоминает в комментариях к слайд презентации Брэда Фитцпатрику
gccgo генерирует очень хороший код
... но ему не хватает анализа выхода: убивает производительность множеством мелких аллоков + мусор
... GC неточен . Плохо для 32-битных.
twotwotwo добавляет:
На другом слайде упоминается, что генерация кода ARM без использования gccgo - нестабильная задача.
Предполагая, что это интересный вариант для вашего проекта, возможно, сравните двоичные файлы для вашего варианта использования в целевой архитектуре.
Как комментирует peterSO , Go 1.5 now (Q3 / Q4 2015) означает:
Компилятор и среда выполнения теперь полностью написаны на Go (с небольшим ассемблером).
C больше не участвует в реализации, поэтому компилятор C, который когда-то был необходим для построения дистрибутива, исчез .
На слайде «Go in Go» упоминается:
C ушел.
Примечание: gccgo все еще набирает обороты.
Беркант спрашивает в комментариях, было ли gccgo
это то, что gc
было начато.
Йорг В. Миттаг отвечает:
Нет, gccgo
появилось позже gc
.
gc
изначально был написан на C. Он основан на компиляторе C Кена Томпсона из операционной системы Plan9 , преемницы Unix, разработанной теми же людьми. gc
был итеративно переработан, чтобы все больше и больше самого себя было написано на Go.
gccgo
был основан Иэном Лэнсом Тейлором , хакером GCC, не связанным с проектом Go.
Обратите внимание, что первый полностью автономный компилятор Go на самом деле был проприетарной коммерческой реализацией с закрытым исходным кодом для Windows, имя которой, похоже, исчезло из моего мозга так же, как и из Интернета. Они утверждали, что у них есть собственный компилятор, написанный на Go, нацеленный на Windows в то время, когда gccgo
еще не существовало и gc
было чрезвычайно болезненно настраивать на Windows. (По сути, вам нужно было настроить полную среду Cygwin, исправить исходный код и скомпилировать из исходных кодов.) Однако компания, похоже, свернулась, прежде чем им удалось продать продукт.
Гектор Чу действительно выпустил порт Go для Windows в ноябре 2009 года.
На go-lang.cat-v.org/os-ports
странице также упоминается начальная работа Джо / Джозефа Пуарье . На этой странице :
Есть ли шанс, что кто-то осведомленный может попросить кого-нибудь из парней ( Алекс Брейнман - Гектор Чу - Джозеф Пуарье), участвующих в создании порта Windows, сделать вики-запись с подробным описанием среды сборки?
Добавьте к этому (в написании веб-приложений на Go ) ! 光 京 (Вэй Гуанцзин) .