Docs Menu
Docs Home
/ /

Novedades

Conozca las novedades en:

  • Versión 3.11

  • Versión 3.10

  • Versión 3.9

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::foo de v1::foo a v2::foo. Para seguir usando la interfaz anterior, 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 ABI no es compatible con los símbolos correspondientes a entidades declaradas en el v_noabi espacio 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_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()

  • Declare todos los símbolos de funciones exportadas con __cdecl al 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() 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 importantes en el sistema de compilación:

  • Se elimina la compatibilidad con las llamadas a find_package(libbsoncxx) y find_package(libmongocxx). En su lugar, se utilizan find_package(bsoncxx) y find_package(mongocxx).

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

  • Añade encabezados de avance que proporcionan declaraciones no definitorias de los tipos de clase bsoncxx y mongocxx. 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_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 BSONCXX_POLY_USE_IMPLS de CMake permite seleccionar bsoncxx implementaciones de polyfills de C++17 en lugar de bibliotecas externas o la biblioteca estándar de C++. Esta opción es OFF por defecto.

  • Los espacios de nombres bsoncxx::v_noabi y mongocxx::v_noabi ya 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::document sigue siendo equivalente a bsoncxx::v_noabi::document y mongocxx::client 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 habilitar este comportamiento, configure ENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=ON y ENABLE_ABI_TAG_IN_PKGCONFIG_FILENAMES=ON como 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.

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, 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