Зеро аллокации

Все мы знаем, что пустая структура struct{} в Go действительно занимает ноль байт. Но как это реализовано?

Во время выполнения среда не выделяет под нее память, а вместо этого возвращает указатель на глобальную переменную zerobase, поэтому все экземпляры struct{} ссылаются на один и тот же адрес. Однако, сравнение указателей на пустые структуры ненадежно - два разных экземпляра могут как совпадать, так и различаться в зависимости от оптимизаций компилятора

Новости

Post Thumbnail

Мидделвари лимитеров

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

Post Thumbnail

Аллокации в Rust

Автор заметили, что Rust-сервис после обработки всплеска событий не возвращает память операционной системе - RSS остается высоким, хотя настоящих утечек в коде нет. Оказалось, что стандартный аллокатор glibc плохо подходит для его сценария: короткоживущие ...

Post Thumbnail

Перед main

До вызова main() в Rust существует полноценная фаза инициализации, в которой рантайм языка настраивает панику, аргументы командной строки и другие подсистемы, и разработчик тоже может использовать это однопоточное и детерминированное окружение. Все работае...

Post Thumbnail

Рефлексия

Статья о том, как устроен пакет reflect в Go. Он, кстати, не вычисляет как-то хитро информацию о типах в рантайме - он просто читает статические дескрипторы, которые компилятор встроил в исполняемый файл на этапе сборки. Каждый тип, подпадающий под интерфе...

Post Thumbnail

Каждый байт важен

Наконец-то статья не про этих ваших агентов, а про старые добрые байты. Автор на примере показывает, насколько сильно размер и компоновка полей структуры влияют на производительность кода — даже в простом цикле O(N) разница может достигать 30 раз. Процес...

Post Thumbnail

Еще раз про LLM

Еще раз про то, как все устроено Статья - это пошаговый разбор устройства современных LLM на основе трансформеров. Все без сложной математики. Автор проведет вас от токенизации и эмбеддингов до позиционного кодирования RoPE, механизма внимания Q/K/V, multi-...

Статьи

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

pgsty/minio

pgsty/minio (также известен как Silo) - это поддерживаемый сообществом форк популярного S3-совместимого объектного хранилища MinIO, сопровождаемый проектом Pigsty. Изменения относительно апстрима минимальны: восстановлена встроенная консоль управления, обн...

Post Thumbnail

cardinal

Cardinal - это самое шикарное приложение для поиска на Mac. Быстрое и точное приложение для поиска файлов, написанное на Rust с использованием Tauri для десктопного UI. Поддерживает Everything-совместимый синтаксис запросов: AND/OR, фильтры по расширению и ...

Post Thumbnail

HelixDB

HelixDB - это графо-векторная OLTP-база данных на Rust, созданная для построения knowledge-графов и AI-памяти. База поддерживает работу с графами, векторами, ключ-значениеями, документами и даже работу с реляционной моделью и все в одной платформе. Позволяе...

Post Thumbnail

driftwm

Driftwm - это экспериментальный Wayland-композитор на Rust, реализующий концепцию "бесконечного холста": окна живут в своем родном размере на безграничной 2D-плоскости, а дисплей это что-то типо камеры, которую можно перемещать, панорамировать и зумировать. ...