Estamos em 2020 agora e o C ++ 20 está chegando, juntamente com o tão esperado recurso de módulos C ++. Mas depois de assistir a algumas palestras sobre CppCon, acho que os módulos C ++ estão em um lugar estranho, especialmente para gerenciadores de pacotes Linux (pacman, apt, emerge, etc ...)
Pelo que aprendi, os módulos C ++ são
- Dependente do compilador
- Você não pode usar um módulo criado pelo GCC em Clang
- Os módulos do GCC 9.1 não funcionam no GCC 9.2
- Você pode ter muitas versões diferentes do mesmo módulo
- Desde que não sejam exportados para o mesmo escopo
- Você precisa reconstruir um módulo se suas dependências forem atualizadas
Meu problema é que, em todas as distros de lançamento contínuo, os compiladores são atualizados o tempo todo e o usuário pode ter sua própria compilação. Atualmente, pode-se apenas atualizar o compilador ou também atualizar libstdc++
. Mas com os módulos, parece sugerir que libstdc++
precisa ser atualizado quando o compilador for atualizado.
Como o gerenciador de pacotes lidaria com a atualização, por exemplo, do STL quando o compilador é atualizado? Não acho que seja viável criar todas as versões do módulo STL para todas as versões do compilador. O usuário também não precisa criar seu próprio módulo STL.