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.
fonte
Respostas:
Por enquanto (10 / jan / 2020), o sistema de módulos é considerado mais um recurso interno do projeto do que uma substituição da distribuição de cabeçalho / lib. Como sugerem os caras da comunidade Clang, embora exista uma proposta para criar um formulário AST independente do compilador, nem Clang, nem Gcc nem a Microsoft planejam fazer isso. Então você adivinha
está certo e vai ficar parado por algum tempo.
Como o aspecto da plataforma de gerenciamento de pacotes, a resolução ainda é desconhecida, mas como o sistema de módulos é mais um recurso interno do projeto, o pior caso é que a maneira "header / lib" ainda ocorrerá.
PS Eu acho que o stackoverflow não é um bom lugar para perguntas como estas, se você realmente quer uma resposta, pergunte a esta lista de e-mails.
fonte