Visão geral
Descubra as novidades de cada versão:
Tipos de alterações significativas
Novas versões do driver C++ podem introduzir os seguintes tipos de alterações significativas:
As alterações da API referem-se à API das bibliotecas de drivers C++ . Essas alterações são acompanhados por um aumento na versão principal da API. Talvez seja necessário editar o código-fonte C++ em seu projeto para resolver essas alterações.
Exemplo
Remove a declaração da função
v1::func(). (A definição ainda é fornecida para compatibilidade com ABI.)Remove a função embutida
v_noabi::func().Remove
v_noabi::func().Altera a redeclaração de
bsoncxx::foodev1::fooparav2::foo. Para continuar usando a interface antiga, qualifiquebsoncxx::foocomobsoncxx::v1::foo.
As alterações da ABI referem-se à ABI das bibliotecas de drivers C++ . Essas alterações são acompanhados por um aumento na versão da ABI e também podem ser acompanhados por um aumento na versão principal da API. Talvez seja necessário reconstruir seu projeto ou editar seu código-fonte C++ para resolver essas alterações.
A estabilidade da ABI não é suportada para símbolos correspondentes a entidades declaradas no namespace
v_noabi. As alterações significativas para esses símbolos não são necessariamente acompanhados por um aumento na versão da ABI.Exemplo
Remove o símbolo exportado
v_noabi::func().Remove o símbolo exportado
v1::func().Remove os símbolos exportados para
v1::type.
As alterações do sistema de compilação estão relacionadas ao sistema de compilação ou à embalagem das bibliotecas de drivers C++ . Essas alterações não são necessariamente acompanhas por um aumento na versão principal da API ou um aumento na versão da ABI. Para resolver essas alterações, talvez seja necessário modificar as configurações do sistema de compilação ou atualizar as configurações de gerenciamento de pacote ou dependências do projeto. Talvez você também precise modificar ou reconstruir seu código-fonte C++ .
Exemplo
Remove a variável de configuração do
ENABLE_FOO.Altera o valor padrão da variável de configuração
ENABLE_BARdeOFFparaON.Suporte de drops para a plataforma A, compilador B ou arquitetura C.
A versão inclui o seguinte bug:
O CMake pode definir incorretamente a versão da API de um driver C baixado automaticamente como
0.0.0quando o projeto CMake é configurado mais de uma vez ou com o mesmo valor da versão da API do driver C++ quandoBUILD_VERSIONé explicitamente definido durante a configuração inicial. O CMake só fará o download automático do driver C com o driver C++ se não conseguir encontrar uma instalação de driver C existente usandofind_package(). Esse bug será corrigido em uma futura versão de patch.
Para saber mais sobre esta versão, consulte as notas de versão v4.0 no Github.
Novidades no 3.11
Aviso
Mudanças de última hora
O driver3.11 introduz as seguintes alterações significativas:
Elimina o suporte para o MongoDB Server v3.6.
Requer o Driver MongoDB C v1.28.0 ou posterior.
Remove a exportação das seguintes funções de membro privado na ABI bsoncxx:
bsoncxx::v_noabi::types::bson_value::value::value(const uint8_t*, uint32_t, uint32_t, uint32_t)bsoncxx::v_noabi::types::bson_value::view::_init(void*)bsoncxx::v_noabi::types::bson_value::view::view(const uint8_t*, uint32_t, uint32_t, uint32_t)bsoncxx::v_noabi::types::bson_value::view::view(void*)
Remove a exportação das seguintes funções de membro privado na ABI mongocxx:
mongocxx::v_noabi::options::change_stream::as_bson()mongocxx::v_noabi::options::aggregate::append(bsoncxx::v_noabi::builder::basic::document&)mongocxx::v_noabi::options::index::storage_options()
Declare todos os símbolos de funções exportadas com
__cdeclquando compilados com MSVC. Esta é uma alteração interruptiva de ABI se você usar uma convenção de chamada padrão alternativa ao construir projetos.
A versão do driver v3.11 inclui os seguintes novos recursos:
Adiciona suporte para MongoDB Server v8.0.
Adiciona suporte para queries de intervalo de Queryable Encryption . Para usar esse recurso, seu aplicativo deve se conectar ao MongoDB Server 8.0 ou posterior. Para obter mais informações sobre Queryable Encryption, consulte Queryable Encryption no manual do MongoDB Server .
Adiciona a função de membro
empty()paramongocxx::v_noabi::bulk_write.
A versão inclui o seguinte bug:
O CMake pode definir incorretamente a versão da API de um driver C baixado automaticamente como
0.0.0quando o projeto CMake é configurado mais de uma vez ou com o mesmo valor da versão da API do driver C++ quandoBUILD_VERSIONé explicitamente definido durante a configuração inicial. O CMake só fará o download automático do driver C com o driver C++ se não conseguir encontrar uma instalação de driver C existente usandofind_package(). Esse bug será corrigido em uma futura versão de patch.
Para saber mais sobre esta versão, consulte as notas de versão v3.11 no Github.
Novidades no 3.10
Aviso
Construa alterações significativas no sistema
O driver3.10 introduz as seguintes alterações significativas no sistema de compilação:
Suporte para chamadas
find_package(libbsoncxx)efind_package(libmongocxx). Em vez disso , usefind_package(bsoncxx)efind_package(mongocxx).Descarta o suporte para as variáveis
LIBBSONCXX_*eLIBMONGOCXX_*CMake fornecidas pelos arquivos de configuração do pacote CMake legado . Use os destinos CMakemongo::bsoncxx_*emongo::mongocxx_*.Remove a opção
BSONCXX_POLY_USE_STD_EXPERIMENTALCMake e elimina o suporte para selecionar a biblioteca padrão experimental do C++ como uma opção de polyfill.
O v3.10.0 a versão do driver inclui as seguintes novas funcionalidades:
Adiciona cabeçalhos de encaminhamento que fornecem declarações não definidoras de tipos de classe
bsoncxxemongocxx. O driver não é compatível com declarações de encaminhamento definidas pelo usuário de qualquer entidade de biblioteca. Para obter a declaração ou definição de uma entidade da biblioteca, inclua sempre o cabeçalho correspondente.A opção
ENABLE_BSONCXX_USE_POLY_IMPLSdo CMake permite selecionarbsoncxximplementações de polyfills17 C++ por padrão quando nenhuma biblioteca de polyfill é solicitada. Esta opção éOFFpor padrão.A opção
BSONCXX_POLY_USE_IMPLSdo CMake permite selecionar implementaçõesbsoncxx1} de polyfills17 do C++ em vez de bibliotecas externas ou da biblioteca padrão do C++ . Esta opção éOFFpor padrão.Os namespaces
bsoncxx::v_noabiemongocxx::v_noabinão são mais declarados embutidos. As declarações de namespace raiz ainda são suportadas e espera-se que permaneçam equivalentes às definições anteriores. Por exemplo,bsoncxx::documentainda é equivalente absoncxx::v_noabi::documentemongocxx::clientainda é equivalente amongocxx::v_noabi::client.Por padrão, quando os nomes de arquivos da biblioteca são compilados com MSVC (conforme detectado pela variável
MSVCdo CMake), eles são incorporados a uma string de caracteres de tag ABI. Essas strings são semelhantes às seguintes:bsoncxx-v_noabi-rhs-x64-v142-md.lib Para desabilitar este comportamento, defina o
ENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=OFFcomo parte de sua configuração do CMake.A string da tag ABI também pode ser incorporada em nomes de arquivos de metadados pkg-config, semelhantes aos seguintes:
libbsoncxx-v_noabi-rhs-x64-v142-md.pc Para habilitar este comportamento, defina
ENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=ONeENABLE_ABI_TAG_IN_PKGCONFIG_FILENAMES=ONcomo parte de sua configuração do CMake.
Para saber mais sobre esta versão, consulte as notas de versão v3.10 no Github.
Novidades no 3.9
Aviso
Construa alterações significativas no sistema
O driver3.9 introduz as seguintes alterações significativas:
Remove o suporte para destinos exportados da árvore de compilação do projeto CMake
Elimina o suporte para macOS 10.14, macOS 10.15 e Ubuntu 14.04
Exige MongoDB C Driver v1.25.0 ou posterior
Requer CMake v3.15 ou posterior para suportar o módulo
FetchContent
A versão do driver v3.9 inclui os seguintes novos recursos:
A imagem do container do driver C++ agora está disponível no Docker Hub.
O driver baixa automaticamente a dependência do driver MongoDB C se você não fornecer.
O driver já não constrói testes como parte do alvo
all. Para construir testes, defina oBUILD_TESTING=ONcomo parte da configuração do CMake.O driver usa o módulo
FetchContentpara baixar e construir a biblioteca de polyfill SNMLSTC Core, se não for fornecida pelo sistema, em vez do móduloExternalProject. Ele também não corrige diretivasincludeem cabeçalhos MONMLSTC Core.Adiciona a opção CMake
MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX. Se essa opção estiver definida comoTRUE, a opçãoCMAKE_INSTALL_PREFIXassumirá como padrão o diretório de construção. O valor padrão desta opção éTRUE.Adiciona uma API para gerenciar índices de pesquisa MongoDB.
Adiciona o recurso
VERSIONINFOabsoncxx.dllemongocxx.dll.Documenta explicitamente que lançar uma exceção de uma chamada de resposta de resposta APM é um comportamento indefinido.
Não instala prematuramente cabeçalhos MONMLSTC Core durante a etapa de compilação do CMake.
Requer que um pacote MongoDB C Driver CMake seja encontrado via
find_dependency()para todas as configurações de pacote de driver C++ instaladas.
Para saber mais sobre esta versão, consulte as notas de versão v3.9 no Github.