Docs Menu
Docs Home
/ / /
C++ 드라이버

새로운 기능

이 페이지의 내용

  • 개요
  • 단절적 변경 유형
  • 3.11의 새로운 기능
  • 3.10의 새로운 기능
  • 3.9의 새로운 기능

다음 버전의 새로운 기능에 대해 알아보세요:

  • 3.11버전

  • 3.10버전

  • 3.9버전

새 버전의 C++ 운전자 에는 다음과 같은 유형의 호환성이 손상되는 변경이 도입될 수 있습니다.

  • API 변경 사항은 C++ 운전자 라이브러리의 API 와 관련이 있습니다. 이러한 변경 사항에는 API 주요 버전 충돌이 수반됩니다. 이러한 변경 사항을 주소 하기 위해 프로젝트 에서 C++ 소스 코드 를 편집해야 할 수도 있습니다.

    예시

    • v1::func() 함수의 선언을 제거합니다. (ABI 호환성을 위해 정의가 계속 제공됩니다.)

    • 인라인 함수 v_noabi::func() 을 제거합니다.

    • v_noabi::func() 을(를) 제거합니다.

    • bsoncxx::foo 의 재선언을 v1::foo 에서 v2::foo 로 변경합니다. 이전 인터페이스를 계속 사용하려면 bsoncxx::foobsoncxx::v1::foo 로 한정합니다.

  • ABI 변경 사항은 C++ 운전자 라이브러리의 ABI와 관련이 있습니다. 이러한 변경 사항에는 ABI 버전 충돌이 수반되며, API 주요 버전 충돌도 수반될 수 있습니다. 이러한 변경 사항을 주소 하려면 프로젝트 를 다시 빌드하거나 C++ 소스 코드 를 편집해야 할 수 있습니다.

    v_noabi 네임스페이스 에 선언된 엔터티에 해당하는 기호에는 ABI 안정성이 지원 되지 않습니다 . 이러한 기호에 대한 단절적 변경이 반드시 ABI 버전 충돌을 수반하는 것은 아닙니다.

    예시

    • 내보낸 기호 v_noabi::func() 을 제거합니다.

    • 내보낸 기호 v1::func() 을 제거합니다.

    • v1::type 에 대해 내보낸 기호를 제거합니다.

  • 빌드 시스템 변경 사항은 빌드 시스템 또는 C++ 운전자 라이브러리의 패키징과 관련이 있습니다. 이러한 변경 사항이 반드시 API 주요 버전 충돌 또는 ABI 버전 충돌을 수반하는 것은 아닙니다. 이러한 변경 사항을 주소 하려면 빌드 시스템 구성을 수정하거나 프로젝트의 패키지 또는 종속성 관리 설정을 업데이트 해야 할 수 있습니다. C++ 소스 코드 를 수정하거나 다시 빌드해야 할 수도 있습니다.

    예시

    • ENABLE_FOO 구성 변수를 제거합니다.

    • ENABLE_BAR 구성 변수의 기본값 을 OFF 에서 ON 로 변경합니다.

    • 플랫폼 A, 컴파일러 B 또는 아키텍처 C 에 대한 지원 을 중단합니다.

경고

호환성이 손상되는 변경

v3.11 운전자 에는 다음과 같은 호환성이 손상되는 변경이 도입되었습니다.

  • MongoDB Server v3.6 에 대한 지원 을 중단합니다.

  • MongoDB C 드라이버 v1.28.0 이상이 필요합니다.

  • bsoncxx ABI에서 다음 비공개 멤버 함수의 내보내기를 제거합니다.

    • 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*)

  • mongocxx ABI에서 다음 비공개 멤버 함수의 내보내기를 제거합니다.

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

  • MSVC로 컴파일할 때 내보낸 모든 함수 기호를 __cdecl 으)로 선언합니다. 프로젝트를 빌드할 때 대체 기본값 호출 규칙을 사용하는 경우 이는 ABI 호환성이 손상되는 호환성이 손상되는 변경 입니다.

v3.11 운전자 출시하다 에는 다음과 같은 새로운 기능이 포함되어 있습니다.

  • MongoDB Server v8.0 에 대한 지원 을 추가합니다.

  • Queryable Encryption 범위 쿼리에 대한 지원 을 추가합니다. 이 기능 을 사용하려면 앱 이 MongoDB Server 8.0 이상에 연결되어야 합니다. Queryable Encryption 에 대한 자세한 내용은 MongoDB Server 매뉴얼의 Queryable Encryption 을 참조하세요.

  • mongocxx::v_noabi::bulk_write 에 대한 empty() 멤버 함수를 추가합니다.

이 출시하다 에 학습 보려면 Github 에서 v 릴리스 노트3.11 를 Github 참조하세요.

경고

빌드 시스템 주요 변경 사항

v3.10 운전자 는 빌드 시스템에 다음과 같은 호환성이 손상되는 변경을 도입했습니다.

  • find_package(libbsoncxx)find_package(libmongocxx) 호출에 대한 지원 을 중단합니다. 대신 find_package(bsoncxx)find_package(mongocxx) 를 사용합니다.

  • 레거시 CMake 패키지 구성 파일에서 제공하는 LIBBSONCXX_*LIBMONGOCXX_* CMake 변수에 대한 지원 을 중단합니다. 대신 mongo::bsoncxx_*mongo::mongocxx_* CMake 타겟을 사용합니다.

  • BSONCXX_POLY_USE_STD_EXPERIMENTAL CMake 옵션을 제거하고 폴리필 옵션으로 실험적 C++ 표준 라이브러리를 선택하기 위한 지원 을 중단합니다.

v3.10.0 운전자 출시하다 에는 다음과 같은 새로운 기능이 포함되어 있습니다.

  • bsoncxxmongocxx 클래스 유형의 비정의 선언을 제공하는 정방향 헤더를 추가합니다. 운전자 는 라이브러리 엔터티의 사용자 정의 정방향 선언을 지원 하지 않습니다. 라이브러리 엔터티의 선언 또는 정의를 얻으려면 항상 해당 헤더를 포함하세요.

  • CMake 옵션 ENABLE_BSONCXX_USE_POLY_IMPLS 을 사용하면 폴리필 라이브러리가 요청되지 않은 경우 기본값 으로 C++17 폴리필의 bsoncxx 구현을 선택할 수 있습니다. 이 옵션은 기본값 OFF 입니다.

  • CMake 옵션 BSONCXX_POLY_USE_IMPLS 을 사용하면 외부 라이브러리 또는 C++ 표준 라이브러리 대신 C++17 폴리필의 bsoncxx 구현을 선택할 수 있습니다. 이 옵션은 기본값 OFF 입니다.

  • bsoncxx::v_noabimongocxx::v_noabi 네임스페이스는 더 이상 인라인으로 선언되지 않습니다. 루트 네임스페이스 선언은 계속 지원되며 이전 정의와 동일하게 유지될 것으로 예상됩니다. 예를 예시bsoncxx::document 는 여전히 bsoncxx::v_noabi::document 과 동일하고 mongocxx::client 는 여전히 mongocxx::v_noabi::client 와 동일합니다.

  • 기본값 라이브러리 파일 이름이 MSVC(CMake의 MSVC 변수에 의해 감지됨)로 컴파일되면 ABI 태그를 지정하다 string 과 함께 포함됩니다. 이러한 문자열은 다음과 유사합니다.

    bsoncxx-v_noabi-rhs-x64-v142-md.lib

    이 동작을 비활성화하려면 CMake 구성의 일부로 ENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=OFF 을(를) 설정하다 합니다.

    다음과 같이 ABI 태그를 지정하다 string 을 pkg-config 메타데이터 파일 이름에 포함할 수도 있습니다.

    libbsoncxx-v_noabi-rhs-x64-v142-md.pc

    이 동작을 활성화 하려면 ENABLE_ABI_TAG_IN_LIBRARY_FILENAMES=ONENABLE_ABI_TAG_IN_PKGCONFIG_FILENAMES=ON 를 CMake 구성의 일부로 설정하다 합니다.

이 출시하다 에 학습 보려면 v 릴리스 노트3.10 를 Github 참조하세요. 에서 .

경고

빌드 시스템 주요 변경 사항

v3.9 운전자 에는 다음과 같은 호환성이 손상되는 변경이 도입되었습니다.

  • CMake 프로젝트 빌드 트리에서 내보낸 대상에 대한 지원 을 제거합니다.

  • macOS 10.14, macOS 10.15 및 Ubuntu 14.04에 대한 지원

  • MongoDB C 드라이버 v1.25.0 이상이 필요합니다.

  • FetchContent 모듈을 지원 하려면 CMake v3.15 이상이 필요합니다.

v3.9 운전자 출시하다 에는 다음과 같은 새로운 기능이 포함되어 있습니다.

  • 이제 Docker 허브에서 C++ 운전자 컨테이너 이미지를 사용할 수 있습니다.

  • 사용자가 제공하지 않는 경우 운전자 는 MongoDB C 드라이버 종속성을 자동으로 다운로드합니다.

  • 운전자 는 더 이상 all 대상의 일부로 테스트를 빌드하지 않습니다. 테스트를 빌드 하려면 CMake 구성의 일부로 BUILD_TESTING=ON 을(를) 설정하다 합니다.

  • 운전자 는 FetchContent 모듈을 사용하여 MNMLSTC 코어 를 다운로드 하고 빌드 ExternalProject 합니다. 시스템에서 제공하지 않는 경우 모듈 대신 폴리필 라이브러리를 사용합니다. 또한 MNMLSTC 코어 헤더의 include 지시문을 패치하지 않습니다.

  • CMake 옵션 MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX 을 추가합니다. 이 옵션을 TRUE 로 설정하다 하면 CMAKE_INSTALL_PREFIX 옵션의 기본값은 빌드 디렉토리 입니다. 이 옵션의 기본값 은 TRUE 입니다.

  • Atlas Search 인덱스관리를 위한 API 를 추가합니다.

  • VERSIONINFO 리소스 를 bsoncxx.dllmongocxx.dll 에 추가합니다.

  • APM 콜백 에서 예외를 발생시키는 것이 정의되지 않은 동작임을 명시적으로 문서화합니다.

  • CMake 빌드 단계에서 MNMLSTC 코어 헤더를 조기에 설치하지 않습니다.

  • 설치된 모든 C++ 운전자 패키지 구성에 대해 find_dependency() 를 통해 MongoDB C 드라이버 CMake 패키지 를 찾아야 합니다.

이 출시하다 에 학습 보려면 v 릴리스 노트3.9 를 Github 참조하세요. 에서 .

돌아가기

ABI 버전 관리