🛠 Как Go понимает ваш код: разбор статьи «The Go Parser»

Внутри компилятора Go после лексера идёт следующий этап - парсер. Он принимает поток токенов и превращает его в абстрактное синтаксическое дерево (AST).

Что делает парсер
- проверяет соответствие кода грамматике Go
- строит AST: функции, выражения, блоки, импорты
- готовит структуру для семантического анализа и генерации кода

Как он работает
- читает токены и смотрит вперёд (lookahead), чтобы решить, что разбирать
- вызывает функции вроде parseFile / parseDecl / parseExpr
- следит за областями видимости и комментариями
- начинает с package → imports → объявления

Пример: даже простой hello-world превращается в дерево, где есть узлы для пакета, функции main, вызова fmt.Println и строкового литерала. Это и есть «скелет» программы, который потом пройдёт проверку типов и оптимизации.

Парсер - это фундамент. Он ловит синтаксические ошибки, создаёт структуру рассуждений для компилятора и позволяет инструментам понимать код как данные. Это точка входа в мир статического анализа и построения своих утилит.

👉 Подробнее

@Golang_google
🔥15👍109😁1
🎆 Вышли версии 1.25.4 и 1.24.10!

📰 Анонс: https://groups.google.com/g/golang-announce/c/tVVHm9gnwl8/m/-oTvYIjCAQAJ

⬇️ Скачать: https://go.dev/dl/#go1.25.4

@Golang_google


#golang #go
👍146🔥4😢1
🌀 Flint: Удобное управление KVM

Flint — это легкий инструмент для управления KVM с современным веб-интерфейсом, CLI и API. Он создан для разработчиков и системных администраторов, стремящихся к максимальной эффективности без лишнего бремени. Всего 11 МБ и никаких XML!

🚀 Основные моменты:
- Современный и отзывчивый интерфейс
- Один бинарный файл без контейнеров
- Мощный CLI и API для автоматизации
- Поддержка Cloud-Init и шаблонов
- Многоуровневая безопасность с защитой паролем

📌 GitHub: https://github.com/volantvm/flint

#go
👍141🥰1🤬1
📦 runtime-radar - инструмент для обеспечения безопасности контейнерных сред, написанный на Go

runtime-radar — это открытое решение для мониторинга безопасности и реагирования на инциденты в контейнеризированных средах. Решение основано на проекте tetragon, использующем eBPF для мониторинга системы.

💡 Особенности:
- Простая установка и запуск
- Удобный UI, позволяющий настраивать правила безопасности и реагирования, а также расследовать инциденты
- Возможность управлять несколькими кластерами через единый интерфейс
- Поддержка алертинга через различные каналы (SMTP, Syslog, Webhook)
- Широкий набор готовых политик мониторинга и правил безопасности
- Возможность написания кастомных правил безопасности на Go (планируется поддержка других языков, компилируемых в WebAssembly)

Идеален для DevOps, экспертов по безопасности и тех, кто хочет обеспечить безопасность своих Kubernetes-кластеров.

🔗 Репозиторий: https://github.com/runtime-radar/runtime-radar

@Golang_google
👍1210🥰4🤔2
Go для продолжающих и свитчеров

Курс от ex-Google SRE для максимально быстрого профессионального погружения в Go – для тех, кто уже программирует и не хочет тратить время на изучение основ.

🌐 В программе курса:

▪️Принципы Go-разработки: компиляция, обработка ошибок, механизм defer, многопоточность с общей памятью, асинхронная работа с сетью, структура проекта, сборка и деплой
▪️Go на практике: типы, интерфейсы, слайсы, каналы, работа с вводом/выводом, «сырыми» сокетами, логирование, HTTP, Redis, Postgres.
▪️Как писать сервисы с использованием каналов и gRPC, автоматические тесты, избегать анти-паттернов из других языков (PHP/Python/Java) и строить чистый код на Go
▪️Многопоточность и низкоуровневые возможности: mutex, WaitGroup, race detector, cgo, параметры runtime (GOMAXPROCS, GOGC, GOMEMLIMIT, GODEBUG), профилирование CPU и heap
▪️Высокопроизводительные сервисы: архитектура многопоточности, влияние архитектуры памяти и процессора на Go-код, оптимизация под нагрузку – всё в контексте профессиональной разработки

🥸 Кто мы: R&D-центр Devhands.io, наш канал. Автор курса – Юрий Насрединов, работал SRE/программистом в Google Cloud, Badoo/Bumble, VK. Сейчас работает Production Engineer в хэдж-фонде в Лондоне.

🗓 Старт курса: 18 ноября, 21:00, 5 недель обучения.

Изучить программу и записаться можно здесь.

Ждем вас!

Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqwniJsh
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥4👍3😁1
🚀 Быстрый линтер OpenAPI и Swagger

Vacuum — это легкий и супербыстрый линтер для OpenAPI, написанный на Go. Он совместим с правилами Spectral и предлагает автоисправление для пользовательских правил. Идеален для проверки качества спецификаций API.

🚀Основные моменты:
- Поддержка автоисправления ошибок в спецификациях
- Совместимость с существующими правилами Spectral
- Легкий и быстрый инструмент для CI/CD
- Многофункциональный интерфейс командной строки
- Поддержка Docker и различных платформ

📌 GitHub: https://github.com/daveshanley/vacuum

#go
9👍7🔥4
🧠 UnisonDB - экспериментальная база, которая убирает боль синхронизации в распределённых системах

Главная идея простая, но мощная:
все узлы хранят одно и то же состояние, и оно автоматически синхронизируется без конфликтов — даже оффлайн.

Как это работает
- Используются CRDT — структуры данных, которые сами разрешают конфликты
- Вся система построена как event log (каждое изменение — событие)
- Данные сначала пишутся локально, потом догоняют сеть
- Нет «главного сервера» — каждый узел может быть источником истины

Что это даёт
- Мгновенные локальные обновления (даже без интернета)
- Автоматическая консистентность без ручных merge
- Идеально для приложений, которые должны работать оффлайн и в real-time

Где это полезно
- мобильные и edge-приложения
- коллаборативные редакторы
- распределённые системы без единого центра
- автономные агенты и IoT

Почему это интересно
Это не просто база данных - это попытка пересобрать модель хранения данных под эпоху распределённого ПО, где сеть ненадёжна, а приложение должно всегда работать.

https://github.com/ankur-anand/unisondb

#databases #crdt #distributedSystems #eventSourcing #edgecomputing #backend #systemdesign
19👍13🔥4🤯2
Golang: открытый урок, веб-сокет сервер на 100K пользователей

Друзья, Devhands качает направление Golang - языка российских бигтехов! Кстати, это довольно уникальная ситуация на мировом рынке - Авито, Озон, Вайлдбериз, X5, Магнит и многие другие e-comm проекты активно используют именно golang. Ну тем лучше всем нам 🙂

В этот четверг, 13 ноября, в 20:30 МСК мы проведем стрим с Юрой Насретдиновым открытый урок по Golang в рамках запуска потока обучения “Go для продолжающих и свитчеров”.

Тема встречи — Вебсокет чат на Go на 100к пользователей.

Юра расскажет и покажет:

— Многопоточность в Go
— Обширные возможности стандартной библиотеки
— Пример (простого) чата, который может выдержать 100 000 одновременно активных пользователей

Вход свободный, нужно только быть авторизованным в Zoom.

Ссылка на Zoom: https://us06web.zoom.us/j/88271205778?pwd=R8Rasv6QZEaf1kMMltvLfyacuKjFng.1

Календарь (ics) в комментариях к посту.

Ждем вас!

🔥 за golang для websocket-сервера
👍 за java/dotnet/etc

Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzqxKzzwr
🔥348👍2🤬1
🔒 Защита контейнеров с Runtime Radar

Runtime Radar — это открытое решение для мониторинга событий безопасности в реальном времени в контейнеризованных средах. Оно предлагает доступные инструменты управления и защиту от угроз на уровне выполнения, упрощая интеграцию с другими системами безопасности.

🚀 Основные моменты:
- Гибкая настройка мониторинга событий с веб-интерфейсом.
- Централизованное управление для многокластерных установок.
- Интеграция с системами безопасности через syslog, SMTP и webhook.
- Написан на Go.
- Внутри удобные инструменты для анализа инцидентов в веб-интерфейсе.

📌 GitHub: https://github.com/runtime-radar/runtime-radar
👍54🥰3
⚡️ Docker2exe превращает Docker-контейнеры в самодостаточные исполняемые файлы для Windows. Полезно, когда нужно быстро упаковать сервис и запустить его на машине без Docker.

Преимущества: простая развёртка, переносимость, удобно для тестов и демо.

Минусы и предостережения: убедитесь, что внутри контейнера нет секретных корчей и что вы выполняете только знакомый код.

https://github.com/rzane/docker2exe
🔥28🤔11👍87
👣 В Go 1.26 добавят в net.Dialer новые сетевые методы с поддержкой контекста.

Они объединяют эффективность существующих высокоуровневых функций набора соединений с возможностью отмены через Dialer.DialContext — то есть будут быстрее и надёжнее при работе с сетевыми вызовами.

Для тех случаев, когда вы точно знаете сеть (TCP, UDP, IP или Unix-сокет) и хотите:

- минимальные расходы (без лишнего разрешения адресов)
- контроль таймаута/отмены через context
- современный тип адресов из netip


В целом это шаг к более гибкому, эффективному и контролируемому сетевому подключению в Go.

Пример использования:

var d net.Dialer
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

raddr := netip.MustParseAddrPort("127.0.0.1:12345")
conn, err := d.DialTCP(ctx, "tcp", netip.AddrPort{}, raddr)
if err != nil { log.Fatalf("Failed to dial: %v", err) }
defer conn.Close()


http://antonz.org/accepted/net-dialer-context/

@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍63🔥1412
🎉 Go исполнилось 16 лет

Go отметился важной датой шестнадцатой годовщиной с момента когда язык впервые стал открытым. За эти годы Go превратился в один из самых надёжных и понятных инструментов для разработки и продолжает расти без потери своей философии простоты.

Что произошло за последний год
- вышли Go 1.24 и Go 1.25
- появился пакет testing synctest который помогает тестировать конкурентный код без боли
- улучшены механизмы работы внутри контейнеров что - делает Go ещё стабильнее в продакшене
- представлен экспериментальный сборщик мусора Green Tea который снижает затраты на GC до сорока процентов
криптографические пакеты проходят сертификацию и усиливают безопасность экосистемы

Что ждёт Go дальше
- оптимизация под многопроцессорные системы
более глубокая интеграция в инфраструктурные и ИИ сервисы
- усиление вклада сообщества при сохранении стабильного релиз-цикла

Шестнадцать лет спустя Go остаётся языком который ценят за скорость простоту и предсказуемость. И похоже он только начинает новый виток роста.

https://go.dev/blog/16years

@Golang_google


#golang
👍5221🎉12🔥8🤯4
GO-разработчики, у вас спрашивали про DDD на собеседовании?

А вы не знали, что ответить — кроме «ну это про бизнес-логику»?

Пора закрыть пробелы.
На практическом курсе по DDD и архитектуре микросервисов для Go-разработчиков вы:

Соберёте сервис «Диспетчеризации заказов» с нуля
Реализуете Aggregate, Value Object, Domain Service
Освоите Clean Architecture, gRPC, Kafka, CQS
Получите проект в портфолио — и уверенность в собеседованиях

👨‍🏫 Курс ведёт Кирилл Ветчинкин — действующий архитектор в Авито, ex-Staff Engineer в Купер, работает с 2019 года.

Всё на Go — никакого отрыва от вашей среды.
12 модулей, 6 недель практики, ревью от эксперта и живые эфиры.

Уже более 350 разработчиков прошли — теперь очередь за вами.

🔗 Записаться на курс https://microarch.ru/courses/ddd/languages/go?utm_source=posev&utm_medium=erid:2Vtzqw7xBWg&utm_campaign=1

Реклама. ИП Ветчинкин К.Е. ИНН: 773376451099 Erid: 2Vtzqw7xBWg
2😁1
✔️ Go-библиотека для 2D-физики без зависимостей - неофициальный порт Chipmunk2D.


Подходит для игр, симуляций и любых проектов, где нужна быстрая и точная физика.
#golang

https://github.com/jakecoffman/cp
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥3👍2
Golang Meetup от Wildberries & Russ — 27 ноября, 19:00

Приглашаем на митап про Go в продакшене: как писать быструю бизнес-логику, управлять памятью без просадок и строить масштабируемую событийную архитектуру.

В программе 3 доклада:

— Иерархические стейт-машины: инструмент для организации бизнес-логики
Сергей Шлянин, Go-разработчик в WB Bank

— 1000 в 1: единая платформа для событий Databus
Виктор Такташов, Trust & Safety

— Указатели в Go: от аллокации до GC — разбираем ошибки производительности на реальных примерах
Александр Бруяко, Медиа-сервисы

После — афтепати и нетворкинг с инженерами WB
Офлайн в Москве |Зарегистрироваться
6🔥2👍1
👣 Что выведет код (Go 1.25)?


package main

import "fmt"

func main() {
s := []int{1, 2, 3, 4}
t := s[1:3] // t = [2, 3]
t = append(t, 99) // возможно, меняет s[3]
s[2] = 42 // изменяем s напрямую

fmt.Println("s:", s)
fmt.Println("t:", t)
}


Ответ :

s: [1 2 42 99]
t: [2 42 99]


⚡️ Запустить код: https://go.dev/play/p/96RGE1ea6Sq
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥32