Пора форкнуть #
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