Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Свежая подборка новостей и материалов.
Новости, события
Выпущен Go 1.20
Оптимизация на основе профиля (PGO) — это новая (в предварительной версии ) функция, использующая запуск профиля вашего приложения для оптимизации его будущей компиляции.
Правила преобразования типов Go были расширены, чтобы разрешить прямое преобразование из среза в массив
Команды
go build
,go install
, и другие команды, связанные со сборкой, теперь принимают-pgo
флаг, позволяющий выполнять оптимизацию на основе профиля, а также-cover
флаг для анализа покрытия всей программыНовый crypto/ecdh пакет обеспечивает явную поддержку обмена ключами Диффи-Хеллмана на эллиптических кривых по кривым NIST и Curve25519
Новая функция errors.Join возвращает ошибку, упаковывающую список ошибок, который может быть получен снова, если тип ошибки реализует Unwrap() []error метод
Новый тип http.ResponseController обеспечивает доступ к расширенным функциям для каждого запроса, которые не обрабатываются интерфейсом http.ResponseWriter
Прокси-сервер httputil.ReverseProxy включает новую Rewrite функцию ловушки, заменяющую предыдущую Director
Новая функция context.WithCancelCause предоставляет способ отменить контекст с заданной ошибкой. Эту ошибку можно получить, вызвав новую context.Cause функцию
В os/exec.Cmd добавлены поля Cancel и WaitDelay - определяют поведение контекста
Улучшения Perf в сборщике мусора.
1.20 — это последний выпуск, который будет работать на macOS 10.13/10.14 или Windows 7/8.
Добавлен пакет Arena - экспериментальное решение для управления памятью (пример использования)
Awesome
https://awesome-go.com/
https://github.com/guardrailsio/awesome-golang-security
https://github.com/Binject/awesome-go-security
https://gist.github.com/hbt/d6ab942b882d5b94f331c5257076d05e
https://github.com/avelino/awesome-go
Материалы для обучения
Уроки для изучения Golang
Gopherlings - изучайте Go, исправляя неправильные программы
Алгоритмы, реализованные в Go (для обучения)
LearnGo: большая коллекция примеров, упражнений
Статьи
Криптография в Go 1.20
Библиотеки, которые никогда нас не подводили
Что нового в Go 1.20, часть 1
Что нового в Go 1.20, часть 2
Что нового в Go 1.20, часть 3
Проектирование библиотек Go
Как создать многоразовый код Go с помощью Uber Fx
Игрушечный сервер Redis в Go
Создание диаграмм с помощью D2
Примеры проблем с целыми числами
Руководство разгневанных инженеров по IP-адресам в Go
Mocktail: генератор строго типизированных mocks
Полное руководство по дженерикам в Go
Как использовать AVX512 в Golang через компилятор C
Bittorrent с нуля на Go
Kotlin/Golang работа в двух языках
Бесит, что err != nil: главные инсайты из опроса Go-разработчиков
Автоматизация go get — больше не нужно запоминать названия библиотек
TLS 1.3, только игрушечный
Бардак в main, стандартизация и uber.fx. Как сделать структуру кода понятнее для всех
Как построить WaitGroup на основе 32-разрядного целого числа
Умный дом на минималках
Generico! Дженерики в go или стоит ли оно того
Amazon IVS: как быстро добавить видеотрансляции в приложение или на сайт
Что такое фаззинг и зачем он нужен?
Fuzzing-тесты в Go после v1.18: знакомство и практика
Админка для Private Docker Registry (Registry Admin)
Моя попытка сделать утилиту для очистки Linux
Трейсинг в Go — это просто
Go 1.20 и арена памяти
Go: обобщенные алгоритмы и типы
Инструменты
gopher-lua 1.1.0 — виртуальная машина и компилятор для Lua в Go
dicom 1.0.5 — анализ медицинских изображений DICOM с Go
ov 0.14.2 — многофункциональный терминальный пейджер
conc 0.2.0 — Более структурированный параллелизм.
bob 0.15.6 — SQL Query Builder и ORM/Factory Generator с поддержкой Postgres, MySQL и SQLite
vald 1.7.1 - Распределенная векторная поисковая система
d2 0.1.6 — система декларативного построения диаграмм.
permify 0.3.0 — служба авторизации для создания и поддержки детальной авторизации в ваших приложениях.
gobgp 3.11.0 — реализация протокола Border Gateway Protocol (BGP).
notify 0.38.0 — библиотека Go для отправки уведомлений в различные службы обмена сообщениями.
fiber 2.42.0 — веб-фреймворк вдохновлён Express.js.
imagor 1.4.0 — сервер обработки изображений с поддержкой Docker.
ebitengine 2.4.16 — игровой движок с открытым исходным кодом 2D-игр.
mirrord 3.24.0 — инструмент для запуска локальной службы в облачном (Kubernetes) контексте.
go-wiki 1.0.1 — клиент API Википедии Golang.
script 0.21.4 — библиотека для выполнения задач, чтение файлов, выполнение подпроцессов, подсчет строк, строгие строки и т.д.
yaegi 0.15.0 — интерпретатор, позволяющий использовать Go для написания сценариев в других приложениях.
yao 0.10.2 — движок с открытым исходным кодом, написанный на Golang в виде инструмента командной строки. Он подходит для разработки бизнес-систем, API веб-сайтов/приложений, панели администратора, самодельных платформ
cloudquery 1.0.3 — высокопроизводительная платформа интеграции данных с открытым исходным кодом , созданная для разработчиков.
chatgpt 0.2.1 — консольный клиент chatGPT
zitadel 2.19.2 — система управления пользователями, которая быстро настраивается, мультитенантность с настройкой фирменного стиля, безопасный вход в систему, самообслуживание, OpenID Connect, OAuth2.x, SAML2, беспарольный доступ с FIDO2 (включая пароли), OTP, U2F и неограниченный контрольный журнал
phoneinfoga 2.10.2 — инструмент для сканирования международных телефонных номеров. Это позволяет вам сначала собрать базовую информацию, такую как страна, регион, оператор связи и тип линии, а затем использовать различные методы, чтобы попытаться найти провайдера VoIP или идентифицировать владельца