Визуализируем 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

mmap

Автор, три года строивший append-only базы данных на терабайтных масштабах, подробно разбирает, как и почему mmap оказывается отличным решением именно для неизменяемых сегментов, несмотря на известную критику, включая знаменитую статью Andy Pavlo. Поскольку...

Post Thumbnail

Swiss Tables

Статья подробно разбирает переход Go 1.24 от классической bucket-архитектуры мап к Swiss Tables - дизайну, позаимствованному из Abseil, который заменяет цепочки оверфлоу-указателей на плоское открытое адресование с компактными контрольными байтами и групповым ...

Post Thumbnail

Макбук тачскрин

Статья аж 18-го года, и судя по комитам, проект никак не развивается. Но он все еще прикольный. В статье про проект Sistine, который превращает экран MacBook в тачскрин с помощью зеркальца, бумажной тарелки, дверной петли и клея стоимостью около доллара. Пр...

Post Thumbnail

Самодельные арены в Rust

В статье автор рассказывает про реализацию арен в Rust с нуля. Получилось такое себе пошаговое руководство от простейшей обертки над Vec до продвинутой версии с сырыми буферами, UnsafeCell и поддержкой динамических типов через nightly-фичу allocator_api. Ав...

Post Thumbnail

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

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

Post Thumbnail

Я сделал!

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

Статьи

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

PGSimCity

Это образовательный 3D-город, визуализирующий внутреннее устройство PostgreSQL 18 Каждое здание и район соответствуют реальному компоненту СУБД - от postmaster'а, строки backend-процессов и пула shared_buffers до WAL-района, autovacuum, репликации и дисково...

Post Thumbnail

pgext

Каталог расширений PostgreSQL — сайт позволяет искать расширения, семейства пакетов, зависимости и проверять совместимость с конкретными версиями Postgres и операционных систем. По сути, единый индекс вселенной Postgres-расширений.

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...