Atualizar versões do driver
Nesta página
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 obter informações sobre compatibilidade de versões, consulte a página Compatibilidade do driver C++ .
Resolva quaisquer alterações significativas entre a versão do driver que seu aplicação 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 Stable API.
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::foo
dev1::foo
parav2::foo
. Para continuar usando a interface antiga, qualifiquebsoncxx::foo
comobsoncxx::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_BAR
deOFF
paraON
.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.0
Crie alterações significativas no sistema na 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_PREFIX
agora é respeitado.Define a opção de configuração do
ENABLE_TESTS
paraOFF
por padrão. Para reativar os alvos de teste de construção, você deve configurarENABLE_TESTS
paraON
. Para incluir destinos de teste no destino "all", você também deve definir a opçãoBUILD_TESTING
comoON
.
Alterações significativas na API na versão4.0
O driver4.0 introduz as seguintes alterações significativas na API:
Descarta o suporte para configurar
bsoncxx::stdx::string_view
ebsoncxx::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
utf8
obsoletos e funções que têmstring
equivalentes:k_utf8
da classebsoncxx::v_noabi::type
. Em vez disso, usek_string
.b_utf8
da classebsoncxx::v_noabi::types
. Em vez disso, useb_string
.get_utf8()
das classesbsoncxx::v_noabi::document::element
,bsoncxx::v_noabi::array::element
ebsoncxx::v_noabi::types::bson_value::view
. Em vez disso, useget_string()
.k_cannot_append_utf8
da classebsoncxx::v_noabi::exception::error_code
. Em vez disso, usek_cannot_append_string
.k_need_element_type_k_utf8
da 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
using
não documentadas:bsoncxx::builder::types
do arquivo de cabeçalho<bsoncxx/builder/list.hpp>
. Em vez disso, usebsoncxx::types
de<bsoncxx/types.hpp>
.bsoncxx::builder::stream::concatenate
do arquivo de cabeçalho<bsoncxx/builder/stream/helpers.hpp>
. Em vez disso, usebsoncxx::builder::concatenate
de<bsoncxx/builder/concatenate.hpp>
.mongocxx::events::read_preference
do arquivo de cabeçalho<mongocxx/events/topology_description.hpp>
. Em vez disso, usemongocxx::read_preference
de<mongocxx/read_preference.hpp>
.
Alterações significativas na ABI na v4.0
O driver4.0 introduz as seguintes alterações significativas no ABI:
Descarta o suporte para configurar
bsoncxx::stdx::string_view
ebsoncxx::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
utf8
funções obsoletas que têmstring
equivalentes. 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 na 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_TESTS
estiver definida paraON
, C++14 ou posterior será necessário. Você pode desativar o requisito C++14 desativando os testes comENABLE_TESTS=OFF
durante a configuração do CMake.
Alterações significativas na ABI na v3.11
O driver3.11 introduz as seguintes alterações significativas no 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
__cdecl
quando 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 na 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_EXPERIMENTAL
CMake 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 na 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 3.8 as versões e anteriores do driver, consulte as notas de versão e os tickets JIRA associados para cada versão no Github.