Кроссплатформенный UI-фреймворк на C++17 с GLFW/SDL2 для окон и OpenGL/Vulkan для рендеринга, построенный вокруг декларативного DSL.
pg83/solo
Загрузчик .so в стиле dlfcn, позволяющий полностью статическому бинарному файлу для Linux на musl загружать драйверы GPU хоста, собранные с glibc, например Vulkan ICD.
- Звёзды
- 643
- Форки
- 15
- Открытые issues
- 15
- Последний коммит
- 23 дня назад
Что это?
SoLo решает конкретную проблему развёртывания: исполняемый файл, полностью статически слинкованный с musl, обычно не может вызвать dlopen() для общих объектов драйверов GPU, установленных на хосте и, как правило, собранных с glibc. SoLo предоставляет API в стиле dlfcn на основе собственного ELF-загрузчика для x86-64 и aarch64, а также мост glibc ABI, реализованный поверх musl, уже работающей в процессе. В результате программа остаётся одним статическим исполняемым файлом и может использовать драйвер, уже установленный на машине.
В репозитории есть демонстрационный проект с полным циклом работы Vulkan: он загружает неизменённый Vulkan ICD хоста, запускает включённый в репозиторий вычислительный шейдер и записывает результат в PNG. glibc не загружается как вторая libc: её импорты перенаправляются на адаптеры для musl, а для нереализованных функций предусмотрены заглушки, которые аварийно завершают работу и выводят имя символа и версии. Поддерживаются исключения C++, все четыре модели TLS и версионирование символов при взаимодействии между средами.
Проект работает только в Linux и загружает библиотеки однократно: dlclose завершается успешно, но не выгружает образ. В CI проверяется совместимость: на обеих архитектурах загружаются общие библиотеки из 1000 Debian-пакетов, которые устанавливают чаще всего.
Ключевые возможности
- 01Предоставляет API dlopen/dlsym в стиле dlfcn для полностью статических бинарных файлов на musl.
- 02Включает собственный ELF-загрузчик для x86-64 и aarch64.
- 03Связывает импорты glibc ABI с уже работающей в процессе средой musl.
- 04Загружает драйверы Vulkan ICD хоста без контейнера или AppImage.
- 05Поставляется с готовым бинарным файлом демонстрации Vulkan, который записывает PNG с помощью вычислительного шейдера.
Сценарии использования
- Поставка одного статического бинарного файла Linux, которому нужен установленный на хосте драйвер Vulkan или OpenGL.
- Запуск задач GPU-вычислений или графики из статического приложения на musl.
- Загрузка общих библиотек, собранных с glibc, из статической программы на musl без включения дистрибутива в поставку.
- Изучение устройства пользовательского ELF-загрузчика и моста glibc-to-musl ABI.
Быстрый старт
- 1
Скачайте готовый бинарный файл демонстрации Vulkan со страницы релизов
curl -LO https://github.com/pg83/solo/releases/latest/download/vulkan-x86_64 - 2
Сделайте бинарный файл исполняемым
chmod +x vulkan-x86_64 - 3
Запустите демонстрацию, чтобы создать PNG размером 512x512 с помощью драйвера Vulkan на хосте
./vulkan-x86_64 hello.png
Что важно знать
- Поддерживается только Linux на архитектурах x86-64 и aarch64.
- Для работы демонстрации GPU на хосте должен быть установлен драйвер Vulkan.
- Это всё ещё нишевый экспериментальный подход к загрузке библиотек хоста, связанных с glibc.
Темы
Частые вопросы
- Что такое solo?
- Загрузчик .so в стиле dlfcn, позволяющий полностью статическому бинарному файлу для Linux на musl загружать драйверы GPU хоста, собранные с glibc, например Vulkan ICD. SoLo решает конкретную проблему развёртывания: исполняемый файл, полностью статически слинкованный с musl, обычно не может вызвать dlopen() для общих объектов драйверов GPU, установленных на хосте и, как правило, собранных с glibc. SoLo предоставляет API в стиле dlfcn на основе собственного ELF-загрузчика для x86-64 и aarch64, а также мост glibc ABI, реализованный поверх musl, уже работающей в процессе. В результате программа остаётся одним статическим исполняемым файлом и может использовать драйвер, уже установленный на машине.
- solo можно использовать бесплатно? Какая у него лицензия?
- solo распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- solo всё ещё поддерживается?
- Активно поддерживается. Последний коммит в solo — 29 сент. 2026 г..
- Для чего можно использовать solo?
- Поставка одного статического бинарного файла Linux, которому нужен установленный на хосте драйвер Vulkan или OpenGL. Запуск задач GPU-вычислений или графики из статического приложения на musl. Загрузка общих библиотек, собранных с glibc, из статической программы на musl без включения дистрибутива в поставку. Изучение устройства пользовательского ELF-загрузчика и моста glibc-to-musl ABI.
- Как установить solo?
- Скачайте готовый бинарный файл демонстрации Vulkan со страницы релизов: curl -LO https://github.com/pg83/solo/releases/latest/download/vulkan-x86_64 Сделайте бинарный файл исполняемым: chmod +x vulkan-x86_64 Запустите демонстрацию, чтобы создать PNG размером 512x512 с помощью драйвера Vulkan на хосте: ./vulkan-x86_64 hello.png
- Где скачать solo?
- Исходный код и инструкции по установке — на GitHub: https://github.com/pg83/solo
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Открытый игровой движок на C++20 с лицензией MIT, рендерером для Vulkan/Metal/WebGPU, ECS, кроссплатформенным редактором и сборкой на WebGPU для браузера.
Бесплатное приложение с открытым исходным кодом для Windows, macOS и Linux, которое увеличивает разрешение и улучшает изображения с помощью моделей AI-апскейлинга.
Механизм инференса на чистом C запускает очень большие MoE-модели на обычном оборудовании, подгружая выбранных экспертов с диска.
Высокопроизводительный фреймворк на C++ для инференса моделей глубокого обучения на мобильных, встраиваемых и настольных устройствах.
Движок физически корректного рендеринга в реальном времени для Android, iOS, Linux, macOS, Windows и WebGL2, рассчитанный на компактность и эффективность на Android.