Ви можете побачити більше в " Налаштування та використання gccgo ":
gccgo, компілятор для мови Go. Компілятор gccgo - це новий інтерфейс для GCC.
Зверніть увагу, що gccgo не є компілятором gc
Як пояснюється в " Gccgo in 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, швидше за все матиме версію gccgo Go 1.4.
twotwotwo згадує в коментарях до слайд презентації Бреда Фітцпатріку
gccgo генерує дуже хороший код
... але йому не вистачає аналізу втечі: вбиває продуктивність за допомогою багатьох дрібних алоків + сміття
... GC не є точним. Погано для 32-розрядної версії.
twotwotwo додає:
Інший слайд згадує, що генерація ARM-коду, що не є gccgo, є хиткою.
Припускаючи, що це цікавий варіант для вашого проекту, можливо порівняйте двійкові файли для вашого випадку використання для вашої цільової архітектури.
Як коментує peterSO , Go 1.5 зараз (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, виправити вихідний код та скомпілювати з джерела.) Однак компанія, здається, згорнулася, ще до того, як їм вдалося продати товар на ринок.
Гектор Чу випустив порт Windows для Go в листопаді 2009 року. На
цій go-lang.cat-v.org/os-ports
сторінці також згадується початкова робота Джо / Джозефа Пуар'є . На цій сторінці :
Будь-який шанс, що хтось із відомих може вимагати, щоб хтось із хлопців ( Алекс Брейнман - Гектор Чу - Джозеф Пуар’є), який бере участь у виробництві порту Windows, міг зробити запис у вікі з деталізацією середовища збірки?
Додайте до цього (у режимі Написання веб-додатків у режимі Go ) ! 光 京 (Вей Гуанцзін) .