Jesteśmy w 2020 roku i nadchodzi C ++ 20 wraz z długo oczekiwaną funkcją modułów C ++. Ale po obejrzeniu kilku rozmów na temat CppCon stwierdzam, że moduły C ++ znajdują się w dziwnym miejscu, szczególnie dla menedżerów pakietów Linuksa (pacman, apt, emerge itp.)
Z tego, czego się nauczyłem, są moduły C ++
- Zależny od kompilatora
- Nie możesz użyć modułu zbudowanego przez GCC w Clang
- Moduły GCC 9.1 nie będą działać w GCC 9.2
- Możesz mieć wiele różnych wersji tego samego modułu
- Dopóki nie zostaną wyeksportowane do tego samego zakresu
- Musisz odbudować moduł, jeśli zostaną zaktualizowane jego zależności
Mój problem polega na tym, że we wszystkich dystrybucjach z wydaniem kroczącym kompilatory są aktualizowane przez cały czas, a użytkownik może mieć własną kompilację. Obecnie można po prostu zaktualizować kompilator lub też zaktualizować libstdc++
. Ale w przypadku modułów wydaje się, że sugeruje libstdc++
konieczność aktualizacji podczas aktualizacji kompilatora.
Jak menedżer pakietów poradziłby sobie z aktualizacją, na przykład STL podczas aktualizacji kompilatora? Nie sądzę, aby zbudowanie każdej wersji modułu STL dla każdej wersji kompilatora było wykonalne. Również użytkownik nie musi budować własnego modułu STL.