Overview
Conozca las novedades en:
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.
La versión incluye el siguiente error:
CMake podría configurar incorrectamente la versión de la API de un controlador de C descargado automáticamente en
0.0.0cuando el proyecto de CMake se configura varias veces, o con el mismo valor que la versión de la API del controlador de C++ cuandoBUILD_VERSIONse configura explícitamente durante la configuración inicial. CMake solo descargará automáticamente el controlador de C junto con el controlador de C++ si no puede encontrar una instalación de controlador de C existente usandofind_package(). Este error se solucionará en una próxima versión de parche.
Para obtener más información sobre esta versión, consulte las 4.0 Notas de la versión v en GitHub.
Novedades en 3.11
Advertencia
Cambios radicales
El controlador v3.11 introduce los siguientes cambios importantes:
Se elimina el soporte para MongoDB Server v3.6.
Se requiere MongoDB C Driver v1.28.0 o posterior.
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.
La versión v3.11 del controlador incluye las siguientes funcionalidades:
Agrega soporte para MongoDB Server v8.0.
Añade compatibilidad con consultas de rango de cifrado consultable. Para usar esta función, la aplicación debe conectarse a MongoDB Server 8.0 o posterior. Para obtener más información sobre el cifrado consultable,consulte Cifrado consultable en el manual de MongoDB Server.
Agrega la función miembro
empty()paramongocxx::v_noabi::bulk_write.
La versión incluye el siguiente error:
CMake podría configurar incorrectamente la versión de la API de un controlador de C descargado automáticamente en
0.0.0cuando el proyecto de CMake se configura varias veces, o con el mismo valor que la versión de la API del controlador de C++ cuandoBUILD_VERSIONse configura explícitamente durante la configuración inicial. CMake solo descargará automáticamente el controlador de C junto con el controlador de C++ si no puede encontrar una instalación de controlador de C existente usandofind_package(). Este error se solucionará en una próxima versión de parche.
Para obtener más información sobre esta versión, consulte las 3.11 Notas de la versión v en GitHub.
Novedades en 3.10
Advertencia
Cambios importantes en el sistema de compilación
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.
La versión del controlador v3.10.0 incluye las siguientes características nuevas:
Añade encabezados de avance que proporcionan declaraciones no definitorias de los tipos de clase
bsoncxxymongocxx. El controlador no admite declaraciones de avance definidas por el usuario de ninguna entidad de biblioteca. Para obtener la declaración o definición de una entidad de biblioteca, incluya siempre el encabezado correspondiente.La opción
ENABLE_BSONCXX_USE_POLY_IMPLSde CMake permite seleccionarbsoncxximplementaciones de polyfills de C++17 de forma predeterminada cuando no se solicita ninguna biblioteca de polyfills. Esta opción esOFFpor defecto.La opción
BSONCXX_POLY_USE_IMPLSde CMake permite seleccionarbsoncxximplementaciones de polyfills de C++17 en lugar de bibliotecas externas o la biblioteca estándar de C++. Esta opción esOFFpor defecto.Los espacios de nombres
bsoncxx::v_noabiymongocxx::v_noabiya no se declaran en línea. Las declaraciones de espacios de nombres raíz aún se admiten y se espera que sigan siendo equivalentes a sus definiciones anteriores. Por ejemplo,bsoncxx::documentsigue siendo equivalente absoncxx::v_noabi::documentymongocxx::clientamongocxx::v_noabi::client.De forma predeterminada, cuando los nombres de archivo de biblioteca se compilan con MSVC (según lo detecta la variable
MSVCde CMake), se incrustan con una cadena de etiqueta ABI. Estas cadenas son similares a las siguientes:bsoncxx-v_noabi-rhs-x64-v142-md.lib Para deshabilitar este comportamiento, configure
ENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=OFFcomo parte de su configuración de CMake.La string de la etiqueta ABI también se puede embutir en los nombres de archivos de metadatos de pkg-config, de manera similar a lo siguiente:
libbsoncxx-v_noabi-rhs-x64-v142-md.pc Para habilitar este comportamiento, configure
ENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=ONyENABLE_ABI_TAG_IN_PKGCONFIG_FILENAMES=ONcomo parte de su configuración de CMake.
Para obtener más información sobre esta versión, consulte las 3.10 Notas de la versión v en GitHub.
Novedades en 3.9
Advertencia
Cambios importantes en el sistema de compilación
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
La versión v3.9 del controlador incluye las siguientes funcionalidades:
La imagen del contenedor del controlador C++ ahora está disponible en Docker Hub.
El controlador descarga automáticamente la dependencia del controlador MongoDB C si no la proporciona.
El controlador ya no crea pruebas como parte del objetivo
all. Para crear pruebas, configureBUILD_TESTING=ONen CMake.El driver utiliza el módulo
FetchContentpara descargar y compilar la librería polyfill MNMLSTC Core, si no la proporciona el sistema, en lugar del móduloExternalProject. Tampoco parchea las directivasincludeen los encabezados de MNMLSTC Core.Añade la opción
MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIXde CMake. Si esta opción se establece enTRUE, la opciónCMAKE_INSTALL_PREFIXse establece de forma predeterminada en el directorio de compilación. El valor predeterminado de esta opción esTRUE.Agrega una API para administrar los índices de búsqueda de MongoDB.
Agrega el recurso
VERSIONINFOabsoncxx.dllymongocxx.dll.Documenta explícitamente que lanzar una excepción desde una devolución de llamada APM es un comportamiento indefinido.
No instala prematuramente los encabezados principales de MNMLSTC durante el paso de compilación de CMake.
Requiere que se encuentre un paquete CMake del controlador C de MongoDB a través de
find_dependency()para todas las configuraciones de paquetes de controladores C++ instalados.
Para obtener más información sobre esta versión, consulte las 3.9 Notas de la versión v en GitHub.