Новости

Post Thumbnail

Prolog с покемонами

Автор объясняет основы Prolog на примере данных о покемонах — их типах, характеристиках, атаках и эффективности. Prolog позволяет формулировать запросы вроде "какие особые атаки, суперэффективные против любого покемона команды соперника, знает мой Tornadus...

Post Thumbnail

TigerFS

Файловая система — это просто API. А TigerFS — это файловая система, работающая поверх PostgreSQL. Файлы становятся строками в БД, директории — таблицами, а YAML-фронтматер — колонками. Поддерживается два режима. В "file-first" монтируешь БД и работаешь с о...

Post Thumbnail

Иггдрасиль

В статье про использование Yggdrasil в качестве встраиваемой Go-библиотеки. Yggdrasil это такая экспериментальная оверлей IPv6 mesh-сеть Автор рассказывает о своём форке yggdrasil-go с более модульной архитектурой. И показывает, как запустить два узла в...

Post Thumbnail

Мультиплеер

В статье автор рассказывает про архитектуру управления состоянием своей многопользовательской игры HiddenWars на Go. PostgreSQL выступает единственным источником правды и хранит игроков, узлы, очереди построек, достижения. А Redis используется только для го...

Post Thumbnail

httptrace

Пакет net/http/httptrace из стандартной библиотеки Go позволяет отслеживать внутренние фазы HTTP-запроса: DNS-резолвинг, TCP-подключение, TLS-хендшейк, время до первого байта. Все это через ClientTrace, прикрепляемый к context.Context. Автор показывает, ка...

Post Thumbnail

Руководство по миграции с Go на Rust

Подробное руководство по миграции с Go на Rust для бэкенд-сервисов. Автор объясняет, что Go и так достаточно быстр, поэтому главная мотивация для перехода - гарантии корректности. Rust через систему типов устраняет nil-паники, состояния гонки и забытые обр...

Post Thumbnail

Par

Пятница, а это значит - новый язык программирования Par - экспериментальный язык программирования, воплощающий выразительную силу линейной логики на практике, где все является каналом, а любая операция - коммуникацией. Он гарантирует отсутствие паник, дедло...

Post Thumbnail

Что нового в Go

Go - "скучный" в самом хорошем смысле этого слова: стабильный, надежный и созданный для масштабирования. Из видоса мы узнаем, что нового появилось в Go 1.25 и 1.26. Нам расскажут про сборщик мусора "Green Tea", нативные векторные инструкции и инструменты м...

Post Thumbnail

Дженерик методы

Ура! В Go теперь можно будет объявлять параметризованные методы для типов, которые сами не являются дженериками, а также добавлять к существующим дженерик типам новые дженерик методы

Post Thumbnail

Рейт лимитинг

Автор разбирает три основных алгоритма рейт лимитинга в Go: Token Bucket в библиотеке golang.org/x/time/rate, Leaky Bucket из go.uber.org/ratelimit и Sliding Window его собственной реализаций со слайсом временных меток. Token Bucket подходит для большинств...

Post Thumbnail

Регрессия на 3%

Порция байтоебства на сегодня Автор расследовал регрессию производительности в своём Go-коде. Изменение в файле hash2.go вызвало падение скорости на 3% в совершенно другом, hash2u16.go, хотя его код не менялся. Оказалось, что дело в сдвиге выравнивания инст...

Post Thumbnail

Сборщик мусора

Автор прослеживает эволюцию сборки мусора от оригинального mark-and-sweep из статьи Маккарти 1960 года до современных коллекторов в Java, Go и Python. Он разбирает два фундаментальных подхода: mark-and-sweep и подсчет ссылок. Еще рассказывает про концепцию...

Post Thumbnail

Select

Автор разбирает устройство select в Go как совместную работу компилятора и рантайма. Компилятор переписывает пустые, одиночные и одноканальные с default в простые операции, минуя selectgo. Для общего случая компилятор подготавливает массив кейсов и передае...

Post Thumbnail

pslang

Автор в перерыве в работе над игрой решил написать свой язык программирования. Ну а почему нет? Pslang - низкоуровневый язык программирования, со статической типизацией, C-ABI-совместимый, предназначенный в первую очередь для моддинга в игре автора. Язы...

Post Thumbnail

HTTP/2 h2c

Обычно HTTP/2 работает только поверх TLS через HTTPS. Но h2c позволяет использовать все фишки HTTP/2 (мультиплексирование, Server Push, потоковые SSE) по незащищённому соединению, что удобно за балансировщиками или reverse proxy, где TLS уже не нужен В стат...

Post Thumbnail

let-go

Ну вы поняли, сегодня пятница и для вас аж второй язык программирования за день let-go - это Clojure-подобный лисп, работающий на небольшой VM, написанной на Go, что обеспечивает быстрый холодный старт, маленький размер бинарника и низкое потребление памяти...

Post Thumbnail

Язык rye

Rye - это такой небольшой встраиваемый язык, который удобно использовать для конфигов В статье на примере встраивания Rye в Go-приложение показан подход whitelist-based конфигурации. Настройка Rye начинается с минимальной базы - в конфиге доступны тольк...

Post Thumbnail

Врап

Автор предлагает паттерн для Go-сервисов: вынести обвязку и все связанное с декодированием, валидацией, приведеним типов, кодированием из каждого хендлера в один обобщённый адаптер Wrap[In, Out] на транспорт. Сервисная функция остается чистой - func(ctx, I...

Post Thumbnail

scripty

Scripty - это минимальный язык выражений без переменных, циклов и условий. Только expression. Задумывался для встраивания в HTML-шаблоны и другие документы. Написанный на Zig и со встроенной стековой VM. Есть две вариаци: SuperHTML для работы со структурой...

Post Thumbnail

Движок поиска

Ребята рассказывают в статье про свое поделие - базу данных Antfly Antfly - это распределенная документная БД и поисковый движок на чистом Go, которая в одном бинарнике совмещает полнотекстовый поиск (BM25), векторный поиск, разреженные векторы и графовые о...

Post Thumbnail

LibAFL фаззинг

Trail of Bits выпустила gosentry - форк тулчейна Go, который заменяет штатный фаззинг-движок на LibAFL, добавляя возможность фаззить структуры и композитные типы напрямую, использовать грамматики для генерации корректных входных данных, а также детектировать ц...