klauspost/compress появились два дополнения для работы с форматами сжатия:
— чтение и запись LZW;
— распаковка Microsoft XPRESS, описанного в MS-XCA.
Это пригодится, когда Go-сервис получает данные из внешней системы и формат уже задан источником.
🔴 В том же релизе добавили ассемблерные кодировщики S2 для arm64 и обновили низкоуровневые реализации zstd и huff0. Для xxhash ограничили объём обработки в непрерываемом ассемблерном участке.
Если библиотека стоит на горячем пути, сравнивайте версии на собственных данных: размер блоков, повторяемость содержимого и архитектура CPU влияют на результат.
➡️ Список изменений версии 1.20.0
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика24 100подписчиков сейчас
Публикации всего: 109
📦 klauspost/compress 1.20: LZW и Microsoft XPRESS
В библиотеке
❤ 1 🔥 1
Перейти к публикации →
👀 Как вы смотрите видео?
Разбираете урок, слушаете интервью фоном или начинаете на телефоне, а продолжаете на большом экране?
Хотим узнать, что делает просмотр удобным для вас. Вспомните последнее видео — ролик, урок, фильм или серию сериала — и расскажите о своём опыте. Если детали не запомнились, можно так и ответить.
🕰️ Опрос займёт около 3 минут.
В результатах сможете сравнить свои привычки с ответами других участников. А разработчики и инженеры видеоплатформы расскажут, что происходит по ту сторону экрана, пока вы смотрите видео.
🔗 Поделиться опытом
🐸 Библиотека программиста
💡 GC работает, а память всё равно растёт
Сборщик мусора не удалит объект, пока приложение хранит доступную ссылку на него. Поэтому кеш без вытеснения или растущая map могут удерживать память сколько угодно.
Начать диагностику можно с heap-профиля:
go tool pprof http://localhost:6060/debug/pprof/heapВнутри pprof:
top list имяФункции
top покажет основные места аллокаций, а list свяжет их со строками исходника. Сравните профили, снятые при сопоставимой нагрузке в разное время.
🔴 Heap-профиль показывает места выделения памяти. Причину, по которой объекты всё ещё удерживаются, нужно искать в коде: глобальных коллекциях, кеше, очередях и жизненном цикле данных.
GODEBUG=gctrace=1 дополнит картину сведениями о работе GC.
➡️ Разбор heap-профилей и роста памяти
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
❤ 4 👍 2
Перейти к публикации →
🧪 Terratest 2.0: тест Terraform без всех облачных SDK
Пишете тесты инфраструктуры на Go, а зависимостей у тестового проекта уже больше, чем у самого сервиса?
В Terratest 2.0 библиотеку разделили на 16 модулей. Теперь тест подключает SDK только тех компонентов, которые действительно импортирует.
Для Terraform:
go get github.com/gruntwork-io/terratest/modules/terraform/v2@v2.0.0У этого модуля
go.sum занимает 77 строк против 675 у прежнего общего модуля. AWS, Azure, GCP и Kubernetes SDK в такую сборку не попадают.
🔴 При миграции меняются пути импортов, а утилиты random, logger, retry и другие переезжают в core/v2.
Для Kubernetes-тестов есть изменения поведения, которые компилятор не поймает: например, помощники для адресов узлов теперь предпочитают ExternalIP.
➡️ Релиз и инструкция по переходу
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
👍 2 ❤ 1
Перейти к публикации →
🔎 Go 1.27 находит утечки горутин
Обработчик запустил воркеры, получил ошибку и вернулся. Остальные горутины продолжают отправлять результаты в небуферизованный канал — только читать его уже некому.
В Go 1.27 появился профиль
goroutineleak, который помогает находить такие зависания в работающем приложении.
Если у сервиса уже подключён net/http/pprof, профиль доступен по адресу:
/debug/pprof/goroutineleak🔴 Что он видит: — блокировки на каналах; — ожидание Mutex, RWMutex, WaitGroup и Cond; — некоторые взаимные блокировки, которые обычный профиль горутин не отличает от нормального ожидания. Ожидание сетевого или файлового I/O этим механизмом не проверяется. Пустой профиль ещё не доказывает, что утечек нет. ➡️ Примеры ошибок и устройство профилировщика 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика
👍 13 ❤ 1
Перейти к публикации →
Гоферы, дайте отдохнуть себе и коду — приходите на Go Weekend 17 октября
Конференция Lamoda Tech для тех, кто пишет на Go и может говорить о нем часами.
Вас ждут два трека, 6 часов и 80+ амбассадоров Go-комьюнити. Примите участие в дискуссии о будущем языка и применении AI, задайте неудобные вопросы и потравите кодерские байки за пиццей.
Трек Tech: доклады про архитектурные решения, спорные идеи и реальные кейсы.
🎙 Дмитрий Буров, Senior Golang-разработчик, Lamoda Tech
«Тернарный оператор в Go. Принять нельзя отклонить»
🎙 Станислав Королев, Senior Golang-разработчик, Авито
«Почему spec-driven development плохо работает на микросервисах»
🎙 Эдгар Сипки, Founder, EasyP && Sipki tech
«MCP on Go, или Как случайно сломать безопасность вашей системы?»
Трек Activities: круглый стол о будущем Go, «13 злых вопросов» экспертам и игры с призами.
🗓 17 октября
⏰ 12:00–18:00
📍 Москва, ул. Крылатская, 15
➡️ Все подробности и регистрация на сайте
Реклама. ООО "ЛАМОДА ТЕХ". ИНН 7734461512. erid: 2W5zFGPv2g1
🥱 4 ❤ 3
Перейти к публикации →
Перенос MiniJinja с Rust на Go силами Opus и Codex
Около десяти часов работы агента и примерно 45 минут активного участия автора. Так Армин Ронахер оценивает основной перенос MiniJinja с Rust на Go. MiniJinja собирает текст по шаблонам.
Он начал с Opus 4.5 внутри Pi, а оставшиеся исправления тестов передал GPT-5.2 Codex. Рабочая среда оставалась той же; Go-реализацию сверяли с сохранёнными результатами тестов Rust-версии.
По ходу работы агент отказался от проверок, в которых программа должна завершаться ошибкой: текст сообщений не совпадал дословно. Ронахер вмешался и сохранил эти тесты, изменив способ сравнения сообщений.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
🎓 Тестовый собес с Go Senior из Гамбурга, с опытом работы в Yandex и Uzum
[ + эталонные ответы на 50 сложных вопросов в подарок ]
В четверг, 8 октября, в 19:00 МСК приходи онлайн на тестовое собеседование. Можно посмотреть, как всё устроено изнутри, и понять, насколько ты готов к такому интервью.
Интервьюер: Маруф Караев — Senior Software Engineer из Гамбурга, ex-Yandex, ex-Uzum.
Как это будет:
📂 Маруф задаст разработчику-добровольцу те вопросы и задачи, которые даёт кандидатам на своих интервью. Заранее их никто не знает;
📂 После каждого ответа Маруф даст обратную связь: что прозвучало сильно, а что стоило раскрыть иначе. Так станет понятнее, на что обращают внимание на собесе;
📂 В конце сможешь задать Маруфу любой вопрос и получить развёрнутый ответ;
Эфир проходит в рамках менторской программы ШОРТКАТ для Go-разработчиков, которые хотят сменить работу и вырасти в грейде и зарплате.
🎁 Подарок для всех, кто зарегается на веб:
файл с эталонными ответами на 50 сложных вопросов с Go-интервью 🔥
Жми на кнопку, чтобы попасть на эфир и забрать подарок ↓
@shortcut_go_bot
Реклама.
О рекламодателе.
🥱 5 👍 2 😁 1
Перейти к публикации →
🧑💻 Эмулятор AWS-сервисов
Kumo — это небольшой инструмент на Go для локальной имитации AWS-сервисов. Он помогает разработчикам тестировать приложения без облака.
Проект подходит для unit-тестов, где нужен мок для облачных вызовов. Устанавливается через
go install github.com/sivchari/kumo@latest🟡 Запускается как прокси, а SDK настраивается на локальный эндпоинт. Поддерживает базовые операции над S3: создание бакетов, загрузку объектов, список файлов. Для DynamoDB эмулирует таблицы, put/get item. Конфиг через флаги или env. ➡️ Репозиторий 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoLive
🙏 10 🔥 7 🤩 3
Перейти к публикации →
👨💻 Библиотека для написания LSP-серверов
Написать свой Language Server с нуля на Go сложно. Нужно разобраться с JSON-RPC фреймингом, маршрутизацией сообщений, типами LSP, управлением жизненным циклом соединения. И всё это до того, как начнёшь писать саму языковую логику.
go-lsp берёт всё это на себя. Библиотека реализует LSP 3.17 и даёт чистый интерфейс, где вы просто описываете, что ваш сервер умеет делать.
go-lsp состоит из трёх пакетов. jsonrpc отвечает за JSON-RPC 2.0 поверх io.ReadWriteCloser. lsp содержит Go-типы для всех структур протокола, без логики. server связывает всё вместе: принимает хендлер, смотрит какие интерфейсы он реализует и автоматически регистрирует соответствующие LSP-методы.
Устанавливаем:
go get github.com/owenrumney/go-lspМинимальный сервер с поддержкой hover:
package main
import (
"context"
"os"
"github.com/owenrumney/go-lsp/lsp"
"github.com/owenrumney/go-lsp/server"
)
type Handler struct{}
func (h *Handler) Initialize(ctx context.Context, params *lsp.InitializeParams) (*lsp.InitializeResult, error) {
return &lsp.InitializeResult{
Capabilities: lsp.ServerCapabilities{
HoverProvider: &lsp.HoverOptions{},
},
}, nil
}
func (h *Handler) Shutdown(ctx context.Context) error {
return nil
}
func (h *Handler) Hover(ctx context.Context, params *lsp.HoverParams) (*lsp.Hover, error) {
return &lsp.Hover{
Contents: lsp.MarkupContent{
Kind: lsp.MarkupKindMarkdown,
Value: "Hello from the server",
},
}, nil
}
func main() {
srv := server.NewServer(&Handler{})
if err := srv.Run(context.Background(), server.RunStdio()); err != nil {
os.Exit(1)
}
}
Сервер сам понимает, что хендлер поддерживает hover, потому что он реализует интерфейс HoverHandler. Вручную регистрировать методы не нужно. Хотите добавить completion — реализуйте CompletionHandler.
Обязательный интерфейс только один — LifecycleHandler с методами Initialize и Shutdown. Всё остальное реализуете по мере необходимости.
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека Go-разработчика
❤ 4 👍 2 🤔 1
Перейти к публикации →
История названий канала
14.08.2026
название
Библиотека Go разработчика
→
Библиотека Go-разработчика | Golang
Дата — момент, когда изменение заметил наш обход.