Siamo nel 2020 e C ++ 20 sta arrivando, insieme alla tanto attesa funzionalità dei moduli C ++. Ma dopo aver visto alcuni discorsi su CppCon trovo che i moduli C ++ si trovano in un posto strano, specialmente per i gestori di pacchetti Linux (pacman, apt, emerge, ecc ...)
Da quello che ho imparato, i moduli C ++ sono
- Compilatore dipendente
- Non è possibile utilizzare un modulo creato da GCC in Clang
- I moduli GCC 9.1 non funzioneranno su GCC 9.2
- Puoi avere molte versioni diverse dello stesso modulo
- Finché non vengono esportati nello stesso ambito
- È necessario ricostruire un modulo se le sue dipendenze si aggiornano
Il mio problema è che in tutte le distribuzioni a rilascio continuo i compilatori vengono sempre aggiornati e l'utente potrebbe avere la propria build di compilatore. Attualmente si può semplicemente aggiornare il compilatore o anche aggiornare libstdc++
. Ma con i moduli, sembra suggerire che libstdc++
debba essere aggiornato quando il compilatore si aggiorna.
In che modo il gestore pacchetti gestirà l'aggiornamento, ad esempio, l'STL quando il compilatore si aggiorna? Non penso che sia realizzabile ogni versione del modulo STL per ogni versione del compilatore. Né l'utente deve costruire il proprio modulo STL come una buona idea.