Overview
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.
Definición de cambios importantes
Nota
El controlador de C++ sigue el control de versiones semántico. El controlador puede afectar la compatibilidad del sistema de compilación o de los paquetes en cualquier versión. Las versiones de parches pueden revertir cambios accidentales que afecten la API.
Para obtener más información,consulte Versiones de API y ABI.
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.
Tipos de cambios disruptivos
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::foodev1::fooav2::foo. Para seguir usando la interfaz anterior, califiquebsoncxx::foocomobsoncxx::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_noabiespacio 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_BARdeOFFaON.Elimina el soporte para la plataforma A, el compilador B o la arquitectura C.
Cambios radicales
Las siguientes secciones describen los cambios importantes introducidos por cada versión del controlador.
Versión 4.1
Cambios importantes en el sistema de compilación en v4.1
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
Establece la
ENABLE_TESTSopción de configuración enOFFde forma predeterminada para las versiones descargadas automáticamente del controlador C. Esta es una expansión del cambio realizado en4.0 v.
Cambios importantes en ABI en v4.1
El controlador v4.1 introduce los siguientes cambios importantes en la ABI:
Declara implementaciones polyfill de C++17 para
optional<T>ystring_viewen el espacio de nombresbsoncxx::v1::stdx. El espacio de nombresbsoncxx::v_noabi::stdxahora 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
Versión 4.0
Cambios importantes en el sistema de compilación en v4.0
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 enON.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 paraCMAKE_INSTALL_PREFIX.
Establece la opción de configuración
ENABLE_TESTSenOFFpor defecto. Para volver a habilitar la construcción de objetivos de prueba, debes establecerENABLE_TESTSenON. Para incluir destinos de prueba en el destino "all", también se debe establecer la opciónBUILD_TESTINGenON.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.
Cambios importantes en la API en la versión 76004.0
El controlador v4.0 introduce los siguientes cambios importantes en la API:
Se elimina la compatibilidad para configurar
bsoncxx::stdx::string_viewybsoncxx::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
utf8obsoletos que tienen equivalentesstring:k_utf8de la clasebsoncxx::v_noabi::type. En su lugar, usek_string.b_utf8de la clasebsoncxx::v_noabi::types. En su lugar, useb_string.get_utf8()de las clasesbsoncxx::v_noabi::document::element,bsoncxx::v_noabi::array::elementybsoncxx::v_noabi::types::bson_value::view. En su lugar, useget_string().k_cannot_append_utf8de la clasebsoncxx::v_noabi::exception::error_code. En su lugar, usek_cannot_append_string.k_need_element_type_k_utf8de la clasebsoncxx::v_noabi::exception::error_code. En su lugar, usek_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, utilicebsoncxx::stdx::optional<T>.mongocxx::stdx::string_view. En su lugar, utilicebsoncxx::stdx::string_view.
Elimina las siguientes directivas y declaraciones
usingno documentadas:bsoncxx::builder::typesdesde el archivo de encabezado<bsoncxx/builder/list.hpp>. En su lugar, utilizabsoncxx::typesde<bsoncxx/types.hpp>.bsoncxx::builder::stream::concatenatedesde el archivo de encabezado<bsoncxx/builder/stream/helpers.hpp>. En su lugar, utilizabsoncxx::builder::concatenatede<bsoncxx/builder/concatenate.hpp>.mongocxx::events::read_preferencedesde el archivo de encabezado<mongocxx/events/topology_description.hpp>. En su lugar, utilizamongocxx::read_preferencede<mongocxx/read_preference.hpp>.
Cambios importantes en ABI en v4.0
El controlador v4.0 introduce los siguientes cambios importantes en la ABI:
Se elimina la compatibilidad para configurar
bsoncxx::stdx::string_viewybsoncxx::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
utf8funciones obsoletas constringequivalentes. Para obtener una lista completa de estos cambios, consulte la sección "Cambios importantes en la API".
Versión 3.11
Cambios importantes en el sistema de compilación en v3.11
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_TESTSestá establecida enON, se requiere C++14 o posterior. Puede optar por no cumplir con el requisito de C++14 deshabilitando las pruebas conENABLE_TESTS=OFFdurante la configuración de CMake.
Cambios importantes en ABI en v3.11
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
__cdeclal compilar con MSVC. Este cambio es crucial para la ABI si utiliza una convención de llamada predeterminada alternativa al compilar proyectos.
Versión 3.10
Cambios importantes en el sistema de compilación en v3.10
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)yfind_package(libmongocxx). En su lugar, se utilizanfind_package(bsoncxx)yfind_package(mongocxx).Se elimina la compatibilidad con las variables
LIBBSONCXX_*yLIBMONGOCXX_*de CMake proporcionadas por los archivos de configuración del paquete CMake antiguo. En su lugar, se utilizan los destinosmongo::bsoncxx_*ymongo::mongocxx_*de CMake.Elimina la opción
BSONCXX_POLY_USE_STD_EXPERIMENTALde CMake y abandona la compatibilidad para seleccionar la biblioteca estándar experimental de C++ como una opción polyfill.
Versión 3.9
Cambios importantes en el sistema de compilación en v3.9
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
Versión 3.8 y anteriores
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.