Opublikowano projekt SoLo, który pozwala w pełni statycznym programom Linux, zbudowanym z musl, ładować zainstalowane w systemie biblioteki glibc za pomocą dlopen(), przede wszystkim sterowniki GPU. Zwykle statyczne kompilacje są niekompatybilne ze sterownikami Vulkan i OpenGL, które dystrybucje dostarczają jako biblioteki współdzielone, zbudowane z glibc. SoLo znosi to ograniczenie dzięki wbudowanemu w plik wykonywalny ładowaczowi ELF oraz warstwie, która tłumaczy wywołania glibc w runtime musl procesu — sam glibc nie jest ładowany do procesu, nie pojawia się drugi libc w procesie. Kod napisano w C++ i jest rozpowszechniany na licencji MIT.
Repozytorium zawiera czytelny przykład: statyczny plik wykonywalny, który nie zawiera ani interpretera, ani sekcji dynamicznej, w standardowy sposób dla Vulkan znajduje zainstalowany w systemie sterownik, ładuje go wraz z zależnościami, wykonuje obliczeniowy shader i zapisuje wynik w formacie PNG. W ramach ciągłej integracji przykład jest testowany na Alpine, Fedora i Ubuntu z pakietami Lavapipe z oficjalnych repozytoriów tych dystrybucji. Podejście to jest już stosowane w praktyce — za jego pomocą tworzone są wydania emulatora terminala Shitty.
Źródło: opennet.ru
