Docs Menu
Docs Home
/ /

Novedades

Conozca las novedades en:

  • Versión 3.11

  • Versión 3.10

  • Versión 3.9

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 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::foo de v1::foo a v2::foo. Para continuar usando la antigua interfaz, califique bsoncxx::foo como bsoncxx::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 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 predeterminado de la variable de configuración ENABLE_BAR de OFF a ON.

    • 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.0 cuando el proyecto de CMake se configura varias veces, o con el mismo valor que la versión de la API del controlador de C++ cuando BUILD_VERSION se 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 usando find_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.

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()

  • 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.

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 nodo empty() para mongocxx::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.0 cuando el proyecto de CMake se configura varias veces, o con el mismo valor que la versión de la API del controlador de C++ cuando BUILD_VERSION se 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 usando find_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.

Advertencia

Cambios importantes 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) y find_package(libmongocxx). Utilice find_package(bsoncxx) y find_package(mongocxx) en su lugar.

  • Se elimina la compatibilidad con las variables LIBBSONCXX_* y LIBMONGOCXX_* de CMake proporcionadas por los archivos de configuración del paquete CMake antiguo. En su lugar, se utilizan los destinos mongo::bsoncxx_* y mongo::mongocxx_* de CMake.

  • 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.

La versión del controlador v3.10.0 incluye las siguientes características nuevas:

  • Agrega encabezados reenvío que proporcionan declaraciones no definitorias de bsoncxx y mongocxx tipos 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 ENABLE_BSONCXX_USE_POLY_IMPLS de CMake permite seleccionar bsoncxx implementaciones de polyfills de C++17 de forma predeterminada cuando no se solicita ninguna biblioteca de polyfills. Esta opción es OFF por defecto.

  • La opción CMake BSONCXX_POLY_USE_IMPLS permite seleccionar bsoncxx implementaciones de polirrellenos C++17 en lugar de librerías externas o la librería estándar de C++. Esta opción está OFF por defecto.

  • Los espacios de nombres bsoncxx::v_noabi y mongocxx::v_noabi ya 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::document sigue siendo equivalente a bsoncxx::v_noabi::document, y mongocxx::client sigue siendo equivalente a mongocxx::v_noabi::client.

  • De forma predeterminada, cuando los nombres de archivo de biblioteca se compilan con MSVC (según lo detecta la variable MSVC de 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=OFF como 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 activar este comportamiento, establece ENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=ON y ENABLE_ABI_TAG_IN_PKGCONFIG_FILENAMES=ON como parte de tu 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.

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 driver descarga automáticamente la dependencia del driver C de MongoDB si no la proporcionas.

  • El controlador ya no crea pruebas como parte del objetivo all. Para crear pruebas, configure BUILD_TESTING=ON en CMake.

  • El driver utiliza el módulo FetchContent para descargar y compilar la librería polyfill MNMLSTC Core, si no la proporciona el sistema, en lugar del módulo ExternalProject. Tampoco parchea las directivas include en los encabezados de MNMLSTC Core.

  • Añade la opción MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX de CMake. Si esta opción se establece en TRUE, la opción CMAKE_INSTALL_PREFIX se establece de forma predeterminada en el directorio de compilación. El valor predeterminado de esta opción es TRUE.

  • Agrega una API para administrar los índices de búsqueda de MongoDB.

  • Agrega el recurso VERSIONINFO a bsoncxx.dll y mongocxx.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.

Volver

Control de versiones ABI

En esta página