Visão geral
Esta página descreve as alterações que você deve fazer no seu aplicação ao atualizar para uma nova versão do driver C++ .
Antes de atualizar, execute as seguintes ações:
Certifique-se de que a nova versão do driver C++ seja compatível com as versões do MongoDB Server às quais seu aplicação se conecta e com a versão padrão C++ com a qual seu aplicação é compilado. Para informações de compatibilidade de versão, consulte Compatibilidade do.
Resolva quaisquer alterações significativas entre a versão do driver que seu aplicativo está usando e a versão de atualização planejada na seção Alterações significativas.
Dica
Para garantir a compatibilidade entre as versões do MongoDB Server ao atualizar as versões do driver, use a API estável.
Definição de alterações significativas
Observação
O driver C++ segue o controle de versão semântica. O driver pode quebrar a compatibilidade do sistema de compilação ou do pacote em qualquer versão. As versões de patch podem reverter alterações acidentais de quebra da API.
Para obter mais informações, consulte Controle de versão de API e ABI.
Uma alteração significativa é uma alteração de uma convenção ou comportamento a partir de uma versão específica do driver. Esse tipo de alteração pode impedir que seu aplicativo funcione corretamente se não for resolvido antes de atualizar o driver.
As alterações interruptivas nesta seção são categorizadas pela versão do driver que as introduziram. Ao atualizar as versões do driver, resolva todas as alterações interruptivas entre a versão atual e a atualizada.
Exemplo
Atualizando para a versão 4.0
Se você estiver atualizando o driver C++ da versão 3.x para a versão 4.0, resolva todas as alterações significativas listadas para as versões 3.x até a versão 4.0, inclusive.
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.
Mudanças de última hora
As seções a seguir descrevem as alterações significativas introduzidas por cada versão do driver.
Versão 4.1
Crie alterações significativas no sistema no v4.1
O driver4.1 introduz as seguintes alterações significativas no sistema de compilação:
Exige MongoDB C Driver v2.0.0 ou posterior
Define a opção de configuração do
ENABLE_TESTSparaOFFpor padrão para versões baixadas automaticamente do driver C. Esta é uma expansão da alteração feita na v4.0.
Alterações significativas na ABI no v4.1
O driver v4.1 introduz as seguintes alterações significativas na ABI:
Declara implementações de polyfill C++17 para
optional<T>estring_viewno namespacebsoncxx::v1::stdx. O namespacebsoncxx::v_noabi::stdxagora contém aliases de tipo para seus equivalentes v1.Observação
Isso não afeta os usuários que compilam com C++17 ou mais recente e não definiram
BSONCXX_POLY_USE_IMPLS=ON
Versão 4.0
Crie alterações significativas no sistema no v4.0
O driver4.0 introduz as seguintes alterações significativas no sistema de compilação:
Elimina o suporte para as bibliotecas externas de polyfillsBoost e MLMLSTC/core. Você não pode mais definir as seguintes opções de configuração:
ENABLE_BSONCXX_POLY_USE_IMPLS. Esta opção está implicitamente definida comoON.BSONCXX_POLY_USE_MNMLSTC.BSONCXX_POLY_USE_SYSTEM_MNMLSTC.BSONCXX_POLY_USE_BOOST.
Elimina o suporte para a opção de configuração
MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX. O comportamento padrão do CMake paraCMAKE_INSTALL_PREFIXagora é respeitado.
Define a opção de configuração do
ENABLE_TESTSparaOFFpor padrão. Para reativar os alvos de teste de construção, você deve configurarENABLE_TESTSparaON. Para incluir destinos de teste no destino "all", você também deve definir a opçãoBUILD_TESTINGcomoON.Observação
Esta alteração não se aplica às versões baixadas automaticamente do driver C. A alteração para versões baixadas automaticamente foi adicionada em4.1 v.
Alterações significativas na API v4.0
O driver v4.0 introduz as seguintes alterações significativas na API:
Descarta o suporte para configurar
bsoncxx::stdx::string_viewebsoncxx::stdx::optional<T>como aliases para equivalentes das bibliotecasBoost ou NVMLSTC/core. Para obter contexto, consulte a seção Construir alterações significativas no sistema.Remove os seguintes arquivos de cabeçalho:
<bsoncxx/stdx/make_unique.hpp><bsoncxx/types/value.hpp><bsoncxx/util/functor.hpp><mongocxx/options/create_collection.hpp>
Remove os seguintes tipos de
utf8obsoletos e funções que têmstringequivalentes:k_utf8da classebsoncxx::v_noabi::type. Em vez disso, usek_string.b_utf8da classebsoncxx::v_noabi::types. Em vez disso, useb_string.get_utf8()das classesbsoncxx::v_noabi::document::element,bsoncxx::v_noabi::array::elementebsoncxx::v_noabi::types::bson_value::view. Em vez disso, useget_string().k_cannot_append_utf8da classebsoncxx::v_noabi::exception::error_code. Em vez disso, usek_cannot_append_string.k_need_element_type_k_utf8da classebsoncxx::v_noabi::exception::error_code. Em vez disso, usek_need_element_type_k_string.
Remove o namespace
mongocxx::stdx. Substitua os seguintes tipos no seu código:mongocxx::stdx::optional<T>. Em vez disso, usebsoncxx::stdx::optional<T>.mongocxx::stdx::string_view. Em vez disso, usebsoncxx::stdx::string_view.
Remove as seguintes diretivas e declarações
usingnão documentadas:bsoncxx::builder::typesdo arquivo de cabeçalho<bsoncxx/builder/list.hpp>. Em vez disso, usebsoncxx::typesde<bsoncxx/types.hpp>.bsoncxx::builder::stream::concatenatedo arquivo de cabeçalho<bsoncxx/builder/stream/helpers.hpp>. Em vez disso, usebsoncxx::builder::concatenatede<bsoncxx/builder/concatenate.hpp>.mongocxx::events::read_preferencedo arquivo de cabeçalho<mongocxx/events/topology_description.hpp>. Em vez disso, usemongocxx::read_preferencede<mongocxx/read_preference.hpp>.
Alterações significativas na ABI no v4.0
O driver v4.0 introduz as seguintes alterações significativas na ABI:
Descarta o suporte para configurar
bsoncxx::stdx::string_viewebsoncxx::stdx::optional<T>como aliases para equivalentes das bibliotecasBoost ou NVMLSTC/core. Para obter contexto, consulte a seção Construir alterações significativas no sistema.Remove funções
utf8obsoletas que têmstringequivalentes. Para obter uma lista completa dessas alterações, consulte a seção Alterações significativas da API.
Versão 3.11
Crie alterações significativas no sistema no v3.11
O driver3.11 introduz as seguintes alterações significativas no sistema de compilação:
Elimina o suporte para o MongoDB Server v3.6.
Requer o Driver MongoDB C v1.28.0 ou posterior.
Se a opção de configuração do
ENABLE_TESTSestiver definida paraON, C++14 ou posterior será necessário. Você pode desativar o requisito C++14 desativando os testes comENABLE_TESTS=OFFdurante a configuração do CMake.
Alterações significativas na ABI no v3.11
O driver v3.11 introduz as seguintes alterações significativas na ABI:
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.
Versão 3.10
Crie alterações significativas no sistema no v3.10
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.
Versão 3.9
Crie alterações significativas no sistema no v3.9
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
Versão 3.8 e anterior
Para as versões 3.8 e anteriores do driver, consulte as notas de versão e os tickets JIRA associados para cada versão no Github.