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úrate de que la nueva versión del controlador de C++ sea compatible con las versiones de MongoDB Server a las que tu aplicación se conecta y con la versión estándar de C++ con la que tu aplicación se compila. 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 más información, consulta Versionado 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 van acompañados de un aumento en la versión principal de la API. Es posible que debas editar el código fuente C++ de tu 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 el sistema de compilación se refieren al sistema de compilación o al empaquetado de las librerías del driver en C++. Estos cambios no necesariamente están acompañados de un aumento importante en la versión de la API ni en la versión ABI. Para abordar estos cambios, es posible que tengas que modificar las configuraciones de tu sistema de construcción o actualizar los ajustes de gestión de paquetes o dependencias de tu proyecto. Es posible que también debas modificar o reconstruir tu código fuente en 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:

  • El soporte para macOS 11 y macOS 12se descarta

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

  • La ABI estable del controlador de C++ está disponible para uso experimental. Como parte de este cambio, se hicieron cambios disruptivos importantes a la ABI inestable. Cuando actualices a la versión4.2 del controlador, te recomendamos migrar a usar la ABI Estable (v1.0) en tu aplicación.

    La ABI estable no debe introducir ningún cambio disruptivo en la API. Si encuentras algún problema, por favor repórtalo siguiendo las instrucciones en la página Problemas y Ayuda.

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

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

  • Requiere MongoDB C Driver v2.0.0 o una versión 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 del controlador C que se descargan automáticamente. El cambio para las versiones descargadas automáticamente se añadió en la v4.1.

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

  • Se elimina el soporte para configurar bsoncxx::stdx::string_view y bsoncxx::stdx::optional<T> como alias de Boost o de los equivalentes en la librería MNMLSTC/core. Para más contexto, consulta la sección Cambios disruptivos en el sistema de construcció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 el soporte para configurar bsoncxx::stdx::string_view y bsoncxx::stdx::optional<T> como alias de Boost o de los equivalentes en la librería MNMLSTC/core. Para más contexto, consulta la sección Cambios disruptivos en el sistema de construcció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. Puedes optar por no cumplir el requisito de C++14 desactivando 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*)
  • Remueve la exportación de las siguientes funciones miembro privadas en ABI de 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 CMake BSONCXX_POLY_USE_STD_EXPERIMENTAL y elimina el soporte para seleccionar la biblioteca estándar experimental de C++ como una opción de 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 MongoDB C Driver v1.25.0 o una versión 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