Визуализируем GC

Статья наглядно исследует новый сборщик мусора Green Tea в Go 1.25/1.26.

Автор пишет визуализатор кучи, показывающий, как Go размещает объекты одного размерного класса рядом друг с другом и сравнивает его с C#. Он отмечает, что в отличие от C#, Go никогда не перемещает их при сборке.

Ключевое улучшение Green Tea в том, что вместо обхода указателей по мере их обнаружения со случайным доступом к памяти, GC теперь сканирует span целиком и сохраняет знания о найденных указателях в очередь на будущее и это подтверждается через perf.

В конуе автор демонстрирует главную слабость неперемещающего GC. После освобождения 90% объектов разряженные страницы не возвращаются системе, потому что выжившие объекты "закрепляют" span'ы. Для сравнения, компактирующий GC в C# справляется с этим автоматически, а в Go приходится вручную копировать выжившие объекты в новые слайсы

Новости

Post Thumbnail

Выживание с постгрей

Руководство по выживанию с Postgres для стартапов, основанное на двухлетнем опыте автора. Ну и не только для стартапов, в статье довольно много дельных советов От базовых принципов проектирования схем и написания эффективных запросов до продвинутых тем врод...

Post Thumbnail

Я сделал!

Beej (автор знаменитых Beej's Guides) пишет философское эссе о разнице между "сделать самому" и "попросить сделать". Он может попросить Claude написать код, сгенерировать sci-fi отрывок, нарисовать картину или даже, но не чувствует, что это сделал он, и потому...

Post Thumbnail

Пишем от руки

Нил Стивенсон, уже 25 лет пишущий все свои романы перьевой ручкой на бумаге. И в этой статье он объясняет, почему письмо от руки полезно для мозга - исследования подтверждают, что задействуется больше нейронных связей. Автор дает практические советы: не ис...

Post Thumbnail

GDPatch

GDPatch - это новый универсальный загрузчик модов для Godot 4.x, написанный на Rust, который вместо патчинга движка или игровых файлов перехватывает системные вызовы файловой системы, подменяя .pck-файлы и перенаправляя чтения на модифицированный контент. Тако...

Post Thumbnail

Не то время

Вторая статья автора в серии "Beyond Happy Path Engineering". Автор разбирает, как наивное обращение со временем в продакшене приводит к багам. Разработчики часто используют now() и wall-clock там, где нужны монотонные часы для измерения длительности, guar...

Post Thumbnail

Кодим чат

Автор просто час пишет чат. Никаких слов, никакого хайпа. Просто час кодинга под музычку

Статьи

Post Thumbnail

DNS на Zig

Это должен был быть перевод статьи "From Log Reader to Packet Crafter — Building DNS from Scratch in C". Но автор довольно фигово написал исходную статью и не удосужился показать весь написанный код, Поэтому я решил пойти дальше, реализовать очень маленький ин...

Post Thumbnail

Playdate

Наше поколение выросло вместе с первыми консолями. Мы все с теплотой вспоминаем время, когда у нас появилась первая денди. Теперь у нас есть самые разные движки и большие мощности для игр. Но чем больше возможностей, тем сложнее начать что-то делать, сложне...

Post Thumbnail

Привет Ethernet

Если вы читаете эту статью, то есть очень большая вероятность, что прямо сейчас вы пользуетесь Ethernet соединением где-то между вашими устройствами и хостингом, на котором размещён этот блог. Семейство технологий Ethernet - это строительные блоки для современ...

Post Thumbnail

RAG в Go проекте

Одна из ключевых задач для компаний, работающих с искусственным интеллектом, - обеспечить эффективный доступ к внутренним знаниям. На первый взгляд всё просто: загрузи корпоративные документы в большую языковую модель (LLM) и дай ей генерировать ответы. Но на ...

Инструменты

Post Thumbnail

metago

Инструмент метапрограммирования для Go на основе шаблонов: вы определяете переиспользуемый Go-шаблон в файле *.metago (синтаксис Go-темплейтов), а в исходном коде вешаете директиву `//mgo:gen stringer` на тип или объявление, и metago рекурсивно сканирует проек...

Post Thumbnail

glyphcss

Библиотека для рендеринга 3D-моделей форматов OBJ, glTF, GLB, STL, MagicaVoxel и VOX)в ASCII-арт внутри одного HTML-элемента <pre>, без WebGL и <canvas>. Растеризатор проецирует полигоны, заполняет символьную сетку cols × rows и пишет одну строку в textCon...

Post Thumbnail

moonBASIC

Это современный BASIC с компилятором в байткод и встроенным рантаймом для 2D/3D-графики, физики и сети. Не интерпретатор, а прям настоящий компилятор. Исходники .mb компилируются в .mbc и исполняются на VM, интегрированной с Raylib, Jolt, Box2D и ENet через CG...

Post Thumbnail

freeink

Free Ink - это сборизе энтузиастов, коотрые создаюют программное обеспечение, прошивки и аппаратную платформу для устройств на электронных чернилах. Ребята публикует в открытом доступе как софт, так и хардварных спецификации, чтобы любой желающий мог взять, до...