Об этом проекте

Microfat — это инструментарий на Go для сборки и запуска «толстых» исполняемых файлов Linux, которые объединяют несколько сборок одной программы, специфичных для микропроцессорной архитектуры. Во время выполнения лаунчер проверяет CPU хоста на наличие расширений набора инструкций (AVX2, FMA, BMI2, AVX-512, SVE, SVE2) и выбирает совместимый вариант в соответствии с настраиваемой политикой. Как это работает: варианты компилируются с целями микропроцессорной архитектуры Go (GOAMD64=v1/v3/v4, GOARM64=v8.0–v9.5) и объединяются командой `microfat pack` вместе с заглушкой лаунчера. Диспетчеризация использует Linux memfd_create плюс syscall.Exec, поэтому полезная нагрузка выполняется из анонимной RAM без постоянного процесса-обёртки; проверенный дисковый кэш доступен как резервный вариант. 56-байтовый трейлер хранит хеш индекса SHA-256 и контрольные суммы для каждого варианта для проверки целостности полезной нагрузки. Многовариантное сжатие использует обученные словари Zstandard с профилями latency/balanced/size. Настройка контейнеров: лаунчер разбирает лимиты cgroup v1 и v2 и устанавливает мягкий бюджет памяти Go (GOMEMLIMIT) и параллелизм CPU (GOMAXPROCS), если пользователь их ещё не задал. Отдельный пакет `runtimeinit` предлагает ту же настройку для сервисов Go без обёртки толстого бинарника, включая автозагрузку через пустой импорт без кода и режим dry-run. Режимы жизненного цикла: универсальный толстый бинарник, урезанный толстый бинарник, отбрасывающий ненужные варианты с сохранением автонастройки, и режим сырого нативного ELF, который навсегда специализируется на несжатом машинном коде. Мета-команды времени выполнения включают --microfat:info, prewarm, trim, trim-to, optimize и optimize-to. Переменные окружения управляют автонастройкой, соотношением памяти, профилем GC, принудительными/ограниченными уровнями вариантов, защитой от понижения частоты AVX-512, режимом выполнения и каталогом кэша. Диагностика: `microfat detect` сообщает уровень микропроцессорной архитектуры хоста, а `microfat doctor` (с --json) проверяет возможности CPU, поддержку memfd, права доступа к кэшу и лимиты cgroup. Упаковка также может управляться декларативным манифестом PGO (`microfat pgo-pack`) или матричными сборками GoReleaser. Проект лицензирован под Apache 2.0 и документирует свою архитектуру, CLI, бенчмарки и устранение неполадок в docs/.