Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Actualizar versiones de los controladores

Esta página describe los cambios que debes hacer en tu aplicación cuando actualices a una nueva versión del driver de C++.

Antes de actualizar, realiza 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.

  • Resuelva cualquier cambio disruptivo entre la versión del driver que utiliza su aplicación y la versión de actualización planificada en la sección Cambios disruptivos.

Tip

Para garantizar la compatibilidad entre las versiones del MongoDB Server al actualizar las versiones del driver, use el Stable API.

Nota

El driver de C++ sigue el versionado semántico. El driver podría romper la compatibilidad del sistema de compilación o del paquete en cualquier versión. Los lanzamientos de parches podrían revertir cambios disruptivos accidentales de la API.

Para obtener más información,consulte Versiones de API y ABI.

Un cambio disruptivo es un cambio en una convención o comportamiento que empieza a partir de una versión específica del driver. Este tipo de cambios puede evitar que tu aplicación funcione correctamente si no se abordan antes de actualizar el controlador.

Los cambios disruptivos en esta sección se categorizan según la versión del driver que los ha introducido. Al actualizar las versiones del driver, debes abordar todos los cambios disruptivos entre la versión actual y la versión de actualización.

Ejemplo

Actualización a la versión 4.0

Si estás actualizando el driver de C++ de la versión 3.x a la versión 4.0, atiende todos los cambios disruptivos que se enumeran para las versiones 3.x hasta e incluyendo la versión 4.0

Nuevas versiones del controlador C++ pueden introducir los siguientes tipos de cambios disruptivos:

  • 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

    • Remueve la declaración de la función v1::func(). (La definición sigue proporcionándose para compatibilidad con ABI).

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

    • Remueve v_noabi::func().

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

  • Los cambios en ABI afectan al ABI de las librerías controladoras de C++. Estos cambios se acompañan de un aumento de la versión ABI y también pueden ir acompañados de un aumento de la versión principal de la API. Es posible que necesite reconstruir su proyecto o editar su código fuente de C++ para abordar estos cambios.

    La estabilidad de la ABI no está soportada para los símbolos que corresponden a entidades declaradas en el espacio de nombres v_noabi. Los cambios disruptivos para tales símbolos no están necesariamente acompañados de una actualización de versión de ABI.

    Ejemplo

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

    • Remueve 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 por defecto de la variable de configuración ENABLE_BAR de OFF a ON.

    • Deja de admitir la compatibilidad con la plataforma A, el compilador B o la arquitectura C.

Las siguientes secciones describen los cambios disruptivos introducidos por cada versión del driver.

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

  • Deja de ser compatible con macOS 11 y macOS 12.

El driver v4.2 introduce los siguientes cambios disruptivos en la ABI:

  • La ABI estable del controlador C++ está disponible para uso experimental. Como parte de este cambio, se introdujeron cambios importantes que afectan a la ABI inestable. Al4.2 actualizar a la versión 7600 del controlador, recomendamos migrar a la ABI estable (versión1.0 7800) en su aplicación.

    La ABI estable no debería introducir cambios incompatibles con la API. Si encuentra algún problema, infórmelo siguiendo las instrucciones de la página de Problemas y Ayuda.

    Para obtener más información sobre el control de versiones de ABI, consulte la guía de control de versiones de ABI.

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

  • Requiere el controlador MongoDB C v2.0.0 o posterior

El driver v4.1 introduce los siguientes cambios disruptivos en la ABI:

  • Declara implementaciones de 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 incluye alias de tipos a sus equivalentes de la 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 disruptivos en el sistema de compilación:

  • Descarta el soporte para las librerías externas de polyfill Boost y MNMLSTC/core. Ya no puedes establecer las siguientes opciones de configuración:

    • ENABLE_BSONCXX_POLY_USE_IMPLS. Esta opción se establece implícitamente en ON.

    • BSONCXX_POLY_USE_MNMLSTC.

    • BSONCXX_POLY_USE_SYSTEM_MNMLSTC.

    • BSONCXX_POLY_USE_BOOST.

  • Descarta la compatibilidad con la opción de configuración MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX. Ahora se respeta el comportamiento por defecto 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 disruptivos 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".

  • Remueve los siguientes archivos de cabecera:

    • <bsoncxx/stdx/make_unique.hpp>

    • <bsoncxx/types/value.hpp>

    • <bsoncxx/util/functor.hpp>

    • <mongocxx/options/create_collection.hpp>

  • Remueve los siguientes tipos y funciones obsoletos de utf8 que tienen equivalentes en 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. Reemplace los siguientes tipos en su código:

    • mongocxx::stdx::optional<T>. En vez de eso, utilice bsoncxx::stdx::optional<T>.

    • mongocxx::stdx::string_view. En vez de eso, 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 driver v4.0 introduce los siguientes cambios disruptivos 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".

  • Remueve las funciones utf8 en desuso que tienen equivalentes string. Para obtener una lista completa de estos cambios, consulte la sección API Cambios disruptivos.

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

  • Elimina la compatibilidad con 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 driver v3.11 introduce los siguientes cambios disruptivos en la ABI:

  • Se remueve la exportación de las siguientes funciones nodos privadas en el 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()
  • Declarar todos los símbolos de funciones exportadas con __cdecl al compilar con MSVC. Este es un cambio disruptivo en el ABI si se utiliza una convención de llamada por defecto alternativa al compilar proyectos.

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

  • Elimina el soporte para invocaciones de find_package(libbsoncxx) y find_package(libmongocxx). Utilice find_package(bsoncxx) y find_package(mongocxx) en su lugar.

  • Se elimina el soporte para las variables de CMake LIBBSONCXX_* y LIBMONGOCXX_* proporcionadas por los archivos de configuración de paquetes de CMake heredados. En su lugar, utilice los objetivos CMake de mongo::bsoncxx_* y mongo::mongocxx_*.

  • 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 driver v3.9 introduce los siguientes cambios disruptivos:

  • Elimina el soporte para los objetivos exportados del árbol de compilación del proyecto CMake

  • Descarta el soporte para 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 admitir 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