#gccgo

2025-05-09

Часть 3. Векторизация на Go: CGo, транзакции, компиляторы, поддержка, байтовые инструкции

В первой части статьи мы рассмотрели , как можно вручную ускорить Go-код с помощью векторизации и SIMD-инструкций, реализованных через Go-ассемблер. Написали простую, но показательно быструю реализацию sliceContains и увидели, что даже базовая векторизация может дать ускорение в 10–14 раз по сравнению со стандартной реализацией. Во второй части статьи погрузились в практическое применение SIMD в Go-ассемблере, реализовали функцию SliceContainsV1 и изучили, как с помощью VADD, VDUP и других инструкций можно добиться 10–14-кратного ускорения простых задач. Но возможности оптимизации Go-программ на этом не заканчиваются. В этой части мы пойдём дальше: рассмотрим другие техники низкоуровневой оптимизации — от использования C-кода и альтернативных компиляторов с поддержкой векторизации до работы с аппаратными транзакциями памяти на Intel. Поговорим о том, как внедрять ассемблер в продакшен-код, не боясь за его поддержку, и как обойти ограничения стандартного Go-компилятора. Привет, Хабр! Меня зовут Игорь Панасюк, я работаю в Яндекс, преподаю в ИТМО, а также в свободное время выступаю на конференциях, делюсь опытом в соцсетях и помогаю развитию Go-сообщества, веду телеграм-канал и youtube-канал. Если вы уже знакомы с базовыми техниками векторизации, эта часть поможет глубже понять, как устроены продвинутые способы ускорения Go-кода и на что стоит обратить внимание при работе с архитектурно-зависимыми оптимизациями.

habr.com/ru/companies/oleg-bun

#golang #optimizations #компилятор #gccgo #gollvm #ассемблер #word #byte #производительность

🅴🆁🆄🅰 🇷🇺erua@hub.hubzilla.de
2024-08-22
Пора форкнуть #golang, поскольку начали тащить туда телеметрию:

После шести месяцев разработки увидел свет релиз языка программирования #Go 1.23, который развивается компанией #Google при участии сообщества ...
В инструментарий встроена возможность отправки телеметрии на сервер telemetry.go.dev. Телеметрия сохраняется в локальных файлах, доступных для аудита, и охватывает только данные об особенностях работы с инструментарием (телеметрия не добавляется в пользовательские приложения, собираемые при помощи инструментария). По умолчанию отправка телеметрии на внешний сервер отключена (opt-in) и требует активации при помощи новой команды "go telemetry on". Отправка телеметрии поможет выявить аномалии и нештатное поведение, оценить особенности взаимодействия разработчиков с инструментарием и понять, какие опции наиболее востребованы, а какие почти не используются.


Опыт использования go-шного компилятора в составе GNU'шного тулчейна #gccgo не понравился. Про этот проект #^https://gcc.gnu.org/onlinedocs/gccgo/ лучше забыть и реализовать что-то иное на базе #llvm

Для примера, можно взять #TinyGo где упрощение модели памяти привело к очень годной скорости вызовов из Си-шного кода в Го-шный и в обратную сторону.
Что совершенно не реально в случае официального тулчена или же gccgo (фронтенда #gcc) из-за подхода к реализации стека горутин. Т.е. код на Go никогда не сможет производительно вызывать Си-шный код или же предоставлять эффективно работающие callback'и Си-шному коду.

Да в стандартной библиотеке Go очень старательно, через всякие хаки, пытаются вылизать обращения Го-шного кода к системным вызовам ядра ОС. Но этот подход не масштабируем и не проецируем на взаимодействие с другим Си-шным кодом (библиотеками). В том виде, в каком оно есть сейчас, но можно взять за основу для форка гошного тулчена, сделав это основной идеей. Ставя целью реализовать высокую производительность таких вызовов в обе стороны без существенных изменения модели памяти.

#telemetry #телеметрия #programming #softwaredevelopment #opensource #go #lang_ru

@jperkin I think it has very little usage. I was looking into supporting #gccgo as an alternative toolchain for #pkgsrc but never got anywhere.

I did get the #NetBSD build of #gccgo fixed though.

2023-07-22

@natty @ezio Also #GCCGO is not compatible with Caddy so for now it isn't usable.

The Google-pwn'd toolchain is no good.

2023-02-11

@bronger That is true. For now there's #GCCGo which unfortunately lags behind, but I still think it's a sign of an ecosystem with ailing health.

For now I simply cannot replace those programs so I can only remain vigilant that nothing unwanted sneaks in despite demonstrated intent to have such.

2023-02-11

@krom For now. When fundamental parts of the stack start getting attacked in such a way, there's cause to be concerned that it will spread.

Like I highlighted in other posts, #GCCGo is subject to none of these issues, but it's also a second-class citizen in the #Golang ecosystem.

2023-02-11

@liw @joeyh @be In the meantime there's #GCCGO but essentially this has me considering #Golang software legacy to a greater extent than unmaintained #Pascal.

The major driving body for the language and its tooling's design is overtly malicious. Shifting away recommended if it wasn't already done.

#Golang #GCCGolang

2023-02-09

@jssfr Sure is a shame so few people paid attention to #GCC #Golang...

It was pretty much a foregone conclusion that a #Google-controlled technology (if more in mindshare than direct authority) would enshittify itself eventually.

#Go #GCCGo #GCCGolang

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst