Menu Docs
Página inicial do Docs
/ / /
Driver C++

Atualizar versões do driver

Nesta página

  • Visão geral
  • Definição de alterações significativas
  • Tipos de alterações significativas
  • Mudanças de última hora
  • Versão 4.0
  • Versão 3.11
  • Versão 3.10
  • Versão 3.9
  • Versão 3.8 e anterior

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.

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.

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 de v1::foo para v2::foo. Para continuar usando a interface antiga, qualifique bsoncxx::foo como bsoncxx::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 de OFF para ON.

    • Suporte de drops para a plataforma A, compilador B ou arquitetura C.

As seções a seguir descrevem as alterações significativas introduzidas por cada versão do driver.

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 como ON.

    • 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 para CMAKE_INSTALL_PREFIX agora é respeitado.

  • Define a opção de configuração do ENABLE_TESTS para OFF por padrão. Para reativar os alvos de teste de construção, você deve configurar ENABLE_TESTS para ON. Para incluir destinos de teste no destino "all", você também deve definir a opção BUILD_TESTING como ON.

O driver4.0 introduz as seguintes alterações significativas na API:

  • Descarta o suporte para configurar bsoncxx::stdx::string_view e bsoncxx::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êm string equivalentes:

    • k_utf8 da classe bsoncxx::v_noabi::type . Em vez disso, use k_string.

    • b_utf8 da classe bsoncxx::v_noabi::types . Em vez disso, use b_string.

    • get_utf8() das classes bsoncxx::v_noabi::document::element, bsoncxx::v_noabi::array::element e bsoncxx::v_noabi::types::bson_value::view. Em vez disso, use get_string().

    • k_cannot_append_utf8 da classe bsoncxx::v_noabi::exception::error_code . Em vez disso, use k_cannot_append_string.

    • k_need_element_type_k_utf8 da classe bsoncxx::v_noabi::exception::error_code . Em vez disso, use k_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, use bsoncxx::stdx::optional<T>.

    • mongocxx::stdx::string_view. Em vez disso, use bsoncxx::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, use bsoncxx::types de <bsoncxx/types.hpp>.

    • bsoncxx::builder::stream::concatenate do arquivo de cabeçalho <bsoncxx/builder/stream/helpers.hpp>. Em vez disso, use bsoncxx::builder::concatenate de <bsoncxx/builder/concatenate.hpp>.

    • mongocxx::events::read_preference do arquivo de cabeçalho <mongocxx/events/topology_description.hpp>. Em vez disso, use mongocxx::read_preference de <mongocxx/read_preference.hpp>.

O driver4.0 introduz as seguintes alterações significativas no ABI:

  • Descarta o suporte para configurar bsoncxx::stdx::string_view e bsoncxx::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êm string equivalentes. Para obter uma lista completa dessas alterações, consulte a seção Alterações significativas da API.

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 para ON, C++14 ou posterior será necessário. Você pode desativar o requisito C++14 desativando os testes com ENABLE_TESTS=OFF durante a configuração do CMake.

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.

O driver3.10 introduz as seguintes alterações significativas no sistema de compilação:

  • Suporte para chamadas find_package(libbsoncxx) e find_package(libmongocxx). Em vez disso , use find_package(bsoncxx) e find_package(mongocxx) .

  • Descarta o suporte para as variáveis LIBBSONCXX_* e LIBMONGOCXX_* CMake fornecidas pelos arquivos de configuração do pacote CMake legado . Use os destinos CMake mongo::bsoncxx_* e mongo::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.

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

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.

Voltar

NOVIDADES