Overview
Descubra qué hay de nuevo en:
Tipos de cambios disruptivos
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::foodev1::fooav2::foo. Para continuar usando la antigua interfaz, califiquebsoncxx::foocomobsoncxx::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_BARdeOFFaON.Deja de admitir la compatibilidad con 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 para un driver de C de descarga automática a
0.0.0cuando el proyecto de CMake se configura más de una vez o al mismo valor que la versión de la API del driver de C++ cuandoBUILD_VERSIONse configura explícitamente durante la configuración inicial. CMake solo descargará automáticamente el driver C junto con el driver C++ si no puede encontrar una instalación existente de driver C utilizandofind_package(). Este error se corregirá en una próxima actualización de parche.
Para aprender más sobre esta versión, consulta las Notas de la versión v4.0 en GitHub.
Novedades en 3.11
Advertencia
cambio disruptivo
El driver v3.11 introduce los siguientes cambios disruptivos:
Elimina la compatibilidad con MongoDB Server v3.6.
Se requiere MongoDB C Driver v1.28.0 o posterior.
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
__cdeclal 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.
La versión v3.11 del controlador incluye las siguientes funcionalidades:
Agrega soporte para MongoDB Server v8.0.
Agrega soporte para consultas de rango de Queryable Encryption. Para utilizar esta funcionalidad, tu aplicación debe conectarse a MongoDB Server 8.0 o posterior. Para obtener más información sobre Queryable Encryption, consulta Queryable Encryption en el manual de MongoDB Server.
Agrega la función nodo
empty()paramongocxx::v_noabi::bulk_write.
La versión incluye el siguiente error:
CMake podría configurar incorrectamente la versión de la API para un driver de C de descarga automática a
0.0.0cuando el proyecto de CMake se configura más de una vez o al mismo valor que la versión de la API del driver de C++ cuandoBUILD_VERSIONse configura explícitamente durante la configuración inicial. CMake solo descargará automáticamente el driver C junto con el driver C++ si no puede encontrar una instalación existente de driver C utilizandofind_package(). Este error se corregirá en una próxima actualización de parche.
Para aprender más sobre esta versión, consulta las Notas de la versión v3.11 en GitHub.
Novedades en 3.10
Advertencia
Cambios disruptivos en el sistema de compilación
El controlador v3.10 introduce los siguientes cambios disruptivos en el sistema de compilación:
Elimina el soporte para invocaciones de
find_package(libbsoncxx)yfind_package(libmongocxx). Utilicefind_package(bsoncxx)yfind_package(mongocxx)en su lugar.Se elimina el soporte para las variables de CMake
LIBBSONCXX_*yLIBMONGOCXX_*proporcionadas por los archivos de configuración de paquetes de CMake heredados. En su lugar, utilice los objetivos CMake demongo::bsoncxx_*ymongo::mongocxx_*.Elimina la opción CMake
BSONCXX_POLY_USE_STD_EXPERIMENTALy elimina el soporte para seleccionar la biblioteca estándar experimental de C++ como una opción de polyfill.
El v3.10.0 la versión de driver incluye las siguientes nuevas funcionalidades:
Agrega encabezados reenvío que proporcionan declaraciones no definitorias de
bsoncxxymongocxxtipos de clase. El driver no admite declaraciones adelantadas definidas por el usuario de ninguna entidad de la librería. Para obtener la declaración o definición de una entidad de la librería, incluye siempre el encabezado correspondiente.La opción CMake
ENABLE_BSONCXX_USE_POLY_IMPLSpermite seleccionar implementacionesbsoncxxde polyfills de C++17 por defecto cuando no se solicita ninguna librería polyfill. Esta opción esOFFpor defecto.La opción CMake
BSONCXX_POLY_USE_IMPLSpermite seleccionarbsoncxximplementaciones de polirrellenos C++17 en lugar de librerías externas o la librería estándar de C++. Esta opción estáOFFpor defecto.Los espacios de nombres
bsoncxx::v_noabiymongocxx::v_noabiya no se declaran en línea. Las declaraciones del espacio de nombres raíz siguen siendo compatibles y se espera que sigan siendo equivalentes a sus definiciones anteriores. Por ejemplo,bsoncxx::documentsigue siendo equivalente absoncxx::v_noabi::document, ymongocxx::clientsigue siendo equivalente amongocxx::v_noabi::client.Por defecto, cuando los nombres de archivo de las librerías se compilan con MSVC (como lo detecta la variable
MSVCde CMake), se incrustan con una string de etiqueta ABI. Estas cadenas son similares a las siguientes:bsoncxx-v_noabi-rhs-x64-v142-md.lib Para deshabilitar este comportamiento, configurá
ENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=OFFcomo parte de tu 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 activar este comportamiento, establece
ENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=ONyENABLE_ABI_TAG_IN_PKGCONFIG_FILENAMES=ONcomo parte de tu configuración de CMake.
Para aprender más sobre esta versión, consulta las Notas de la versión v3.10 en GitHub.
Novedades en 3.9
Advertencia
Cambios disruptivos en el sistema de compilación
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
La versión v3.9 del controlador incluye las siguientes funcionalidades:
La imagen del contenedor del driver C++ ya está disponible en Docker hub.
El driver descarga automáticamente la dependencia del driver C de MongoDB si no la proporcionas.
El driver ya no compila pruebas como parte del objetivo
all. Para compilar pruebas, configureBUILD_TESTING=ONcomo parte de su configuración de 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.Agrega la opción CMake
MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX. Si esta opción está configurada enTRUE, la opciónCMAKE_INSTALL_PREFIXestá configurada por defecto en el directorio de compilación. El valor por defecto de esta opción esTRUE.Agrega una API para gestionar los índices de MongoDB Search.
Añade el recurso
VERSIONINFOabsoncxx.dllymongocxx.dll.Documenta explícitamente que lanzar una excepción desde una función de retorno de la APM es un comportamiento no definido.
No instala de forma prematura los headers de MNMLSTC Core durante el paso de compilación con CMake.
Requiere que se encuentre un paquete CMake del controlador C de MongoDB mediante
find_dependency()para todas las configuraciones de paquetes del controlador C++ instaladas.
Para aprender más sobre esta versión, consulta las Notas de la versión v3.9 en GitHub.