Overview
このページでは、 C++ドライバーの新しいバージョンにアップグレードするときにアプリケーションに加える必要がある変更について説明します。
アップグレードする前に、次のアクションを実行してください。
新しいC++ドライバーのバージョンが、アプリケーションが接続するMongoDB Server のバージョンと、アプリケーションがコンパイルされるC++標準バージョンと互換性があることを確認します。バージョンの互換性情報については、「 互換性 」を参照してください。
アプリケーションが使用しているドライバー バージョンとアップグレード予定のバージョンとの間の重大な変更については、重大な変更セクションを参照してください。
Tip
ドライバーのバージョンをアップグレードするときにMongoDB Server のバージョン間で互換性を確保するには、 Stable APIを使用します。
重大な変更の定義
注意
C++ドライバーはセマンティック バージョン管理に従います。ドライバーは、どのリリースでもビルド システムまたはパッケージの互換性を中断する可能性があります。パッチ リリースにより、誤ってAPI重大な変更が元に戻る可能性があります。
重大な変更とは、ドライバーの特定のバージョン以降の規則または動作の変更です。 このタイプの変更では、ドライバーをアップグレードする前に対処しないと、アプリケーションが正常に動作しなくなる可能性があります。
このセクションの重大な変更は、それを導入したドライバーのバージョンによって分類されます。 ドライバーのバージョンをアップグレードするときは、現在のバージョンとアップグレードのバージョン間のすべての重大な変更に対処してください。
例
バージョン 4.0 へのアップグレード
C++ドライバーをバージョン 3.x からバージョン 4.0 にアップグレードする場合は、バージョン 3.x からバージョン 4.0 までのバージョンにリストされているすべての重大な変更に対処します。
重大な変更のタイプ
C++ドライバーの新しいバージョンでは、次のタイプの重大な変更が導入される可能性があります。
APIの変更は、 C++ドライバー ライブラリのAPIを考慮します。 これらの変更にはAPIメジャー バージョンのアップグレードが伴います。 これらの変更に対処するには、プロジェクト内のC++ソースコードを編集する必要がある場合があります。
例
関数
v1::func()の宣言を削除します。 (ABI 互換性のために定義は引き続き提供されます)。インライン関数
v_noabi::func()を削除します。v_noabi::func()を削除します。bsoncxx::fooの再利用をv1::fooからv2::fooに変更します。 古いインターフェースを引き続き使用するには、bsoncxx::fooをbsoncxx::v1::fooとして修飾します。
ABIの変更は、 C++ドライバー ライブラリの ABI に関する変更です。 これらの変更には ABI バージョンのアップグレードが伴いますが、 APIメジャー バージョンのアップグレードが伴う場合もあります。 これらの変更に対処するには、プロジェクトを再ビルドするか、 C++ソースコードを編集する必要がある場合があります。
ABI 安定性は、
v_noabi名前空間で宣言されたエンティティに対応するシンボルではサポートされていません。 このようなシンボルの重大な変更には、必ずしも ABI バージョンのアップグレードが必要ではありません。例
エクスポートされたシンボル
v_noabi::func()を削除します。エクスポートされたシンボル
v1::func()を削除します。v1::typeのエクスポートされたシンボルを削除します。
ビルド システムの変更は、ビルド システムまたはC++ドライバー ライブラリのパッケージ化に関するものです。 これらの変更は必ずしもAPIメジャー バージョン アップグレードや ABI バージョン アップグレードを伴うものではありません。 これらの変更に対処するには、ビルド システム構成を変更するか、プロジェクトのパッケージまたは依存関係管理設定を更新する必要がある場合があります。 また、 C++ソースコードを変更または再構築する必要がある場合もあります。
例
ENABLE_FOO構成変数を削除します。ENABLE_BAR構成変数のデフォルト値をOFFからONに変更します。プラットフォーム A、コンパイラー B、またはアーキテクチャCのサポートを削除します。
重大な変更
次のセクションでは、各ドライバー バージョン リリースによって導入される重大な変更について説明します。
バージョン 4.1
v4.1 でシステムの重大な変更をビルド
v 4.1ドライバーは、ビルド システムに次の重大な変更を導入します。
MongoDB Cドライバー v 2.0.0以降が必要
Cドライバーの自動ダウンロード バージョンの
ENABLE_TESTS構成オプションをデフォルトでOFFに設定します。これは、v4.0 で行われた変更の展開です。
v4.1 の ABI 重大な変更
v4.1 ドライバーは、ABI に次の重大な変更を導入します。
bsoncxx::v1::stdx名前空間のoptional<T>とstring_viewのC++ 17 ポリゴンの実装を宣言します。bsoncxx::v_noabi::stdx名前空間には、v1 と同等の型エイリアスが含まれるようになりました。注意
これは、 C++17 以降でコンパイルし、 が に設定されていないユーザーには影響しません。
BSONCXX_POLY_USE_IMPLS=ON
バージョン 4.0
v4.0 でシステムの重大な変更をビルド
v 4.0ドライバーは、ビルド システムに次の重大な変更を導入します。
Boost および MNMLSTC/core 外部 polyfill ライブラリのサポートを削除します。 次の構成オプションは設定できなくなりました。
ENABLE_BSONCXX_POLY_USE_IMPLS。このオプションは暗黙的にONに設定されています。BSONCXX_POLY_USE_MNMLSTC.BSONCXX_POLY_USE_SYSTEM_MNMLSTC.BSONCXX_POLY_USE_BOOST.
MONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX構成オプションのサポートを廃止します。CMAKE_INSTALL_PREFIXのデフォルトの CSpec 動作が尊重されるようになりました。
ENABLE_TESTS構成オプションをデフォルトでOFFに設定します。 テスト ターゲットの構築を再度有効にするには、ENABLE_TESTSをONに設定する必要があります。 「すべて」ターゲットにテストターゲットを含めるには、BUILD_TESTINGオプションもONに設定する必要があります。注意
この変更は、 Cドライバーの自動ダウンロード バージョンには適用されません。自動ダウンロード バージョンの変更は v4.1 に追加されました。
v4.0 のAPI重大な変更
v4.0 ドライバーは、 APIに次の重大な変更を導入します。
Boost または MNMLSTC/コア ライブラリと同等のエイリアスとして
bsoncxx::stdx::string_viewとbsoncxx::stdx::optional<T>を構成するサポートを廃止します。 コンテキストについては、「 ビルド システムの重大な変更 」セクションを参照してください。次のヘッダー ファイルを削除します。
<bsoncxx/stdx/make_unique.hpp><bsoncxx/types/value.hpp><bsoncxx/util/functor.hpp><mongocxx/options/create_collection.hpp>
stringに相当する次の非推奨のutf8型と関数を削除します。k_utf8bsoncxx::v_noabi::typeクラスからの 。 代わりに、k_stringを使用してください。b_utf8bsoncxx::v_noabi::typesクラスからの 。 代わりに、b_stringを使用してください。get_utf8()bsoncxx::v_noabi::document::element、bsoncxx::v_noabi::array::element、bsoncxx::v_noabi::types::bson_value::viewクラスからの。 代わりに、get_string()を使用してください。k_cannot_append_utf8bsoncxx::v_noabi::exception::error_codeクラスからの 。 代わりに、k_cannot_append_stringを使用してください。k_need_element_type_k_utf8bsoncxx::v_noabi::exception::error_codeクラスからの 。 代わりに、k_need_element_type_k_stringを使用してください。
mongocxx::stdx名前空間を削除します。 コード内の次の型を置き換えます。mongocxx::stdx::optional<T>。代わりに、bsoncxx::stdx::optional<T>を使用してください。mongocxx::stdx::string_view。代わりに、bsoncxx::stdx::string_viewを使用してください。
次のドキュメント化されていない
usingのディレクティブと宣言を削除します。bsoncxx::builder::types<bsoncxx/builder/list.hpp>ヘッダーファイルからの。 代わりに、<bsoncxx/types.hpp>からbsoncxx::typesを使用してください。bsoncxx::builder::stream::concatenate<bsoncxx/builder/stream/helpers.hpp>ヘッダーファイルからの。 代わりに、<bsoncxx/builder/concatenate.hpp>からbsoncxx::builder::concatenateを使用してください。mongocxx::events::read_preference<mongocxx/events/topology_description.hpp>ヘッダーファイルからの。 代わりに、<mongocxx/read_preference.hpp>からmongocxx::read_preferenceを使用してください。
v4.0 の ABI 重大な変更
v4.0 ドライバーは、ABI に次の重大な変更を導入します。
Boost または MNMLSTC/コア ライブラリと同等のエイリアスとして
bsoncxx::stdx::string_viewとbsoncxx::stdx::optional<T>を構成するサポートを廃止します。 コンテキストについては、「 ビルド システムの重大な変更 」セクションを参照してください。stringに相当する非推奨のutf8関数を排除します。 これらの変更の完全なリストについては、 「 API重大な変更 」セクションを参照してください。
バージョン3.11
v3.11 でシステムの重大な変更をビルド
v 3.11ドライバーは、ビルド システムに次の重大な変更を導入します。
MongoDB Server v 3.6のサポートを廃止します。
MongoDB Cドライバー v 1.28.0以降が必要です。
ENABLE_TESTS構成オプションがONに設定されている場合は、 C++14 以降が必要です。 CMax の構成中にENABLE_TESTS=OFFを使用したテストを無効にすることで、 C++14 要件をオプトアウトできます。
v3.11 の ABI 重大な変更
v3.11 ドライバーは、ABI に次の重大な変更を導入します。
bsoncx 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*) mongocx 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 の重大重大な変更です。
バージョン3.10
v3.10 でシステムの重大な変更をビルド
v 3.10ドライバーは、ビルド システムに次の重大な変更を導入します。
find_package(libbsoncxx)とfind_package(libmongocxx)の呼び出しのサポートを廃止します。 代わりにfind_package(bsoncxx)とfind_package(mongocxx)を使用してください。レガシーCSpecパッケージ構成ファイルによって提供される
LIBBSONCXX_*およびLIBMONGOCXX_*CSpec 変数のサポートを廃止します。 代わりに、mongo::bsoncxx_*とmongo::mongocxx_*CSpec ターゲットを使用してください。BSONCXX_POLY_USE_STD_EXPERIMENTALCake オプションを削除し、実験的なC++標準ライブラリを polyfill オプションとして選択するためのサポートを廃止します。
バージョン3.9
v3.9 でシステムの重大な変更をビルド
v 3.9ドライバーは、次の重大な変更を導入します。
CSpecプロジェクト構築ツリーからエクスポートされたターゲットのサポートを削除します
macOS 10.14 、 macOS 10.15 、 Ubuntu 14.04のサポートを廃止します。
MongoDB Cドライバー v 1.25.0以降が必要
FetchContentモジュールをサポートするには CMax v 3.15以降が必要
バージョン3.8以前
3.8ドライバー バージョン 以前の場合は、 Githubで各リリースのリリースノートと関連する JIRA チケットを参照してください。