Nous sommes en 2020 maintenant et C ++ 20 arrive, avec la fonctionnalité tant attendue des modules C ++. Mais après avoir regardé quelques discussions sur CppCon, je trouve que les modules C ++ sont dans un endroit étrange, en particulier pour les gestionnaires de paquets Linux (pacman, apt, emerge, etc ...)
D'après ce que j'ai appris, les modules C ++ sont
- Dépendant du compilateur
- Vous ne pouvez pas utiliser un module construit par GCC dans Clang
- Les modules GCC 9.1 ne fonctionneront pas sur GCC 9.2
- Vous pouvez avoir plusieurs versions différentes du même module
- Tant qu'ils ne sont pas exportés dans le même périmètre
- Vous devez reconstruire un module si ses dépendances sont mises à jour
Mon problème est que, dans tous les compilateurs de distributions à diffusion continue, les mises à jour sont constamment mises à jour et l'utilisateur peut avoir sa propre version du compilateur. Actuellement, on peut simplement mettre à jour le compilateur ou aussi mettre à jour libstdc++
. Mais avec les modules, il semble suggérer qu'il libstdc++
doit être mis à jour lors de la mise à jour du compilateur.
Comment le gestionnaire de packages gérerait-il la mise à jour, par exemple, la STL lors de la mise à jour du compilateur? Je ne pense pas que la construction de chaque version du module STL pour chaque version du compilateur soit possible. L'utilisateur ne doit pas non plus construire son propre module STL.