Docs Menu
Docs Home
/ /

Actualizar versiones de los controladores

Esta página describe los cambios que debe realizar en su aplicación cuando actualiza a una nueva versión del controlador C++.

Antes de actualizar, realice las siguientes acciones:

  • Asegúrese de que la nueva versión del controlador de C++ sea compatible con las versiones de MongoDB Server a las que se conecta su aplicación y con la versión estándar de C++ con la que compila su aplicación. Para obtener información sobre la compatibilidad de versiones, consulte Compatibilidad.

  • Aborde cualquier cambio importante entre la versión del controlador que utiliza su aplicación y la versión de actualización planificada en la sección Cambios importantes.

Tip

Para garantizar la compatibilidad entre las versiones de MongoDB Server al actualizar las versiones del controlador, utilice el API estable.

Nota

Un cambio importante es un cambio en una convención o comportamiento que se inicia en una versión específica del controlador. Este tipo de cambio puede impedir el correcto funcionamiento de la aplicación si no se soluciona antes de actualizar el controlador.

Los cambios importantes de esta sección se clasifican según la versión del controlador que los introdujo. Al actualizar las versiones del controlador, tenga en cuenta todos los cambios importantes entre la versión actual y la versión de actualización.

Ejemplo

Actualización a la versión 4.0

Si está actualizando el controlador de C++ de la versión 3.x a la versión 4.0, aborde todos los cambios importantes que se enumeran para las versiones 3.x hasta la versión 4.0inclusive.

Las nuevas versiones del controlador C++ pueden introducir los siguientes tipos de cambios importantes:

  • Los cambios en la API afectan a la API de las bibliotecas de controladores de C++. Estos cambios vienen acompañados de una actualización de la versión principal de la API. Es posible que deba editar el código fuente de C++ en su proyecto para abordar estos cambios.

    Ejemplo

    • Elimina la declaración de función. v1::func()(La definición aún se proporciona para compatibilidad con ABI).

    • Elimina la función en línea v_noabi::func().

    • Elimina v_noabi::func().

    • Cambia la redeclaración de bsoncxx::foo de v1::foo a v2::foo. Para seguir usando la interfaz anterior, califique bsoncxx::foo como bsoncxx::v1::foo.

  • Los cambios en la ABI afectan a la ABI de las bibliotecas de controladores de C++. Estos cambios vienen acompañados de una actualización de la versión de la ABI y, posiblemente, de una actualización de la versión principal de la API. Es posible que deba recompilar su proyecto o editar el código fuente de C++ para abordar estos cambios.

    La estabilidad de ABI no es compatible con los símbolos correspondientes a entidades declaradas en el v_noabi espacio de nombres. Los cambios importantes en dichos símbolos no necesariamente conllevan una actualización de la versión de ABI.

    Ejemplo

    • Elimina el símbolo exportado v_noabi::func().

    • Elimina el símbolo exportado v1::func().

    • Elimina los símbolos exportados para v1::type.

  • Los cambios en elsistema de compilación afectan al sistema de compilación o al empaquetado de las bibliotecas de controladores de C++. Estos cambios no necesariamente van acompañados de una actualización de la versión principal de la API ni de la versión de la ABI. Para solucionarlos, es posible que deba modificar la configuración de su sistema de compilación o actualizar la configuración de gestión de paquetes o dependencias de su proyecto. También podría ser necesario modificar o reconstruir su código fuente de C++.

    Ejemplo

    • Elimina la variable de configuración ENABLE_FOO.

    • Cambia el valor predeterminado de la variable de configuración ENABLE_BAR de OFF a ON.

    • Elimina el soporte para la plataforma A, el compilador B o la arquitectura C.

Las siguientes secciones describen los cambios importantes introducidos por cada versión del controlador.

El controlador v4.1 introduce los siguientes cambios importantes en el sistema de compilación:

  • Requiere el controlador MongoDB C v2.0.0 o posterior

El controlador v4.1 introduce los siguientes cambios importantes en la ABI:

  • Declara implementaciones polyfill de C++17 para optional<T> y string_view en el espacio de nombres bsoncxx::v1::stdx. El espacio de nombres bsoncxx::v_noabi::stdx ahora contiene alias de tipo para sus equivalentes v1.

    Nota

    Esto no afecta a los usuarios que compilan con C++17 o versiones más recientes y que no hayan configurado BSONCXX_POLY_USE_IMPLS=ON

El controlador v4.0 introduce los siguientes cambios importantes en el sistema de compilación:

  • Se elimina la compatibilidad con las bibliotecas externas de polyfill Boost y MNMLSTC/core. Ya no se pueden configurar las siguientes opciones:

    • ENABLE_BSONCXX_POLY_USE_IMPLSEsta opción está establecida implícitamente en ON.

    • BSONCXX_POLY_USE_MNMLSTC.

    • BSONCXX_POLY_USE_SYSTEM_MNMLSTC.

    • BSONCXX_POLY_USE_BOOST.

  • Se elimina la compatibilidad con la opción de configuración MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX. Ahora se respeta el comportamiento predeterminado de CMake para CMAKE_INSTALL_PREFIX.

  • Establece la opción de configuración ENABLE_TESTS en OFF por defecto. Para volver a habilitar la construcción de objetivos de prueba, debes establecer ENABLE_TESTS en ON. Para incluir destinos de prueba en el destino "all", también se debe establecer la opción BUILD_TESTING en ON.

    Nota

    Este cambio no se aplica a las versiones descargadas automáticamente del controlador C. El cambio para las versiones descargadas automáticamente se agregó en4.1 v.

El controlador v4.0 introduce los siguientes cambios importantes en la API:

  • Se elimina la compatibilidad para configurar bsoncxx::stdx::string_view y bsoncxx::stdx::optional<T> como alias para Boost o equivalentes de bibliotecas MNMLSTC/core. Para más información, consulte la sección "Cambios importantes en el sistema de compilación".

  • Elimina los siguientes archivos de encabezado:

    • <bsoncxx/stdx/make_unique.hpp>

    • <bsoncxx/types/value.hpp>

    • <bsoncxx/util/functor.hpp>

    • <mongocxx/options/create_collection.hpp>

  • Elimina los siguientes tipos y funciones utf8 obsoletos que tienen equivalentes string:

    • k_utf8 de la clase bsoncxx::v_noabi::type. En su lugar, use k_string.

    • b_utf8 de la clase bsoncxx::v_noabi::types. En su lugar, use b_string.

    • get_utf8() de las clases bsoncxx::v_noabi::document::element, bsoncxx::v_noabi::array::element y bsoncxx::v_noabi::types::bson_value::view. En su lugar, use get_string().

    • k_cannot_append_utf8 de la clase bsoncxx::v_noabi::exception::error_code. En su lugar, use k_cannot_append_string.

    • k_need_element_type_k_utf8 de la clase bsoncxx::v_noabi::exception::error_code. En su lugar, use k_need_element_type_k_string.

  • Elimina el espacio de nombres mongocxx::stdx. Reemplaza los siguientes tipos en tu código:

    • mongocxx::stdx::optional<T>. En su lugar, utilice bsoncxx::stdx::optional<T>.

    • mongocxx::stdx::string_view. En su lugar, utilice bsoncxx::stdx::string_view.

  • Elimina las siguientes directivas y declaraciones using no documentadas:

    • bsoncxx::builder::types desde el archivo de encabezado <bsoncxx/builder/list.hpp>. En su lugar, utiliza bsoncxx::types de <bsoncxx/types.hpp>.

    • bsoncxx::builder::stream::concatenate desde el archivo de encabezado <bsoncxx/builder/stream/helpers.hpp>. En su lugar, utiliza bsoncxx::builder::concatenate de <bsoncxx/builder/concatenate.hpp>.

    • mongocxx::events::read_preference desde el archivo de encabezado <mongocxx/events/topology_description.hpp>. En su lugar, utiliza mongocxx::read_preference de <mongocxx/read_preference.hpp>.

El controlador v4.0 introduce los siguientes cambios importantes en la ABI:

  • Se elimina la compatibilidad para configurar bsoncxx::stdx::string_view y bsoncxx::stdx::optional<T> como alias para Boost o equivalentes de bibliotecas MNMLSTC/core. Para más información, consulte la sección "Cambios importantes en el sistema de compilación".

  • Se eliminan las utf8 funciones obsoletas con string equivalentes. Para obtener una lista completa de estos cambios, consulte la sección "Cambios importantes en la API".

El controlador v3.11 introduce los siguientes cambios importantes en el sistema de compilación:

  • Se elimina el soporte para MongoDB Server v3.6.

  • Se requiere MongoDB C Driver v1.28.0 o posterior.

  • Si la opción de configuración ENABLE_TESTS está establecida en ON, se requiere C++14 o posterior. Puede optar por no cumplir con el requisito de C++14 deshabilitando las pruebas con ENABLE_TESTS=OFF durante la configuración de CMake.

El controlador v3.11 introduce los siguientes cambios importantes en la ABI:

  • Elimina la exportación de las siguientes funciones miembro privadas en la 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*)
  • Elimina la exportación de las siguientes funciones miembro privadas en la 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 los símbolos de funciones exportadas con __cdecl al compilar con MSVC. Este cambio es crucial para la ABI si utiliza una convención de llamada predeterminada alternativa al compilar proyectos.

El controlador v3.10 introduce los siguientes cambios importantes en el sistema de compilación:

  • Se elimina la compatibilidad con las llamadas a find_package(libbsoncxx) y find_package(libmongocxx). En su lugar, se utilizan find_package(bsoncxx) y find_package(mongocxx).

  • Se elimina la compatibilidad con las variables LIBBSONCXX_* y LIBMONGOCXX_* de CMake proporcionadas por los archivos de configuración del paquete CMake antiguo. En su lugar, se utilizan los destinos mongo::bsoncxx_* y mongo::mongocxx_* de CMake.

  • Elimina la opción BSONCXX_POLY_USE_STD_EXPERIMENTAL de CMake y abandona la compatibilidad para seleccionar la biblioteca estándar experimental de C++ como una opción polyfill.

El controlador v3.9 introduce los siguientes cambios importantes:

  • Elimina la compatibilidad con los objetivos exportados del árbol de compilación del proyecto CMake

  • Se elimina la compatibilidad con macOS 10.14, macOS 10.15 y Ubuntu 14.04

  • Requiere el controlador MongoDB C v1.25.0 o posterior

  • Requiere CMake v3.15 o posterior para soportar el módulo FetchContent

Para versiones de drivers 3.8 y anteriores, consulta las notas de la versión y los tickets de JIRA asociados para cada versión en GitHub.

Volver

Notas de versión

En esta página