Qiskit SDK 1.4 リリースノート
1.4.6
前奏曲
Qiskit v1.4.6 はセキュリティ修正のみを含むリリースであり、Qiskit v1.x シリーズの最終リリースとなります。
Qiskit v1.x は、いかなる形でもメンテナンスされなくなりました。
セキュリティー問題
-
qasm2.loads()OpenQASM の2つのパーサー(qasm2.load()および)は、深すぎる式を評価しようとした場合、現在、でRecursionError終了するようになりました。 パーサーへの入力時点において、 Python からsys.getrecursionlimit()許容される最大深さが取得されます。以前は、パーサーがRustのメモリ空間内で無制限に再帰処理を行い、最終的にスタック領域の上限を超えてプロセスがセグメンテーションフォルトを起こすことがありました。
1.4.5
前奏曲
Qiskit v1.4.5 は、 1.4 シリーズの最後のバグ修正リリースであり、シリーズの終了を意味します。 1.4 シリーズのセキュリティ修正プログラムのサポートは、2026年3月31日まで継続される。
バグ修正
-
回路可視化における匿名ビットの処理を修正。 以前は、レジスタに関連付けられていないビットは、デフォルトの Python 表現で表示されていたが、現在は読みやすい形でインデックスが表示される。 14031を修正。
-
の問題を修正した。
Optimize1qGatesDecompositionパスがTarget1q でパスが初期化された場合の問題を修正した。 以前は、ターゲット内のゲートが任意のパラメーター値をサポートしていることをチェックしていなかったため、パスがターゲット外のゲートを出力する可能性があった。 #14743 を修正。 -
パスにおける不正な動作を修正。
BasisTranslatorパスの不正な動作を修正しました。ControlFlowOpブロック内のマルチ量子ビット・ゲートが、外部回路の絶対インデックスを使用する代わりに、そのローカル量子ビット・インデックスを使用してサポートされている演算を追跡していたパスの誤った動作を修正しました。 #13728 を修正。 -
のバグを修正しました。
HighLevelSynthesisゲートが他の命令オブジェクトの中にネストされている場合、カスタムゲートのキャリブレーションが認識されないというバグを修正しました。 部分的に #13728 を修正。 -
回路テキストドロワーで、制御フロー操作の内側の回路ブロックが外側の回路と異なるレジスタに定義されている場合に発生することがある不具合を修正した。 このような状況は、例えば
ControlFlowOp演算を直接追加するときや、転置後の回路で発生する可能性がある。
1.4.4
前奏曲
Qiskit v1.4.4 は、 v1.4.x リリースシリーズのマイナーバグフィックスリリースです。
バグ修正
-
ApplyLayoutはゼロ量子ビットを適用するケースを正しく処理するようになった。Layout. の"layout"フィールドが等しくても、以前はレイアウトが設定されていないと主張していた。PropertySetフィールドがLayout()に等しくても、レイアウトが設定されていないと主張することがあった。 -
メソッドのバグを修正した。
QuantumCircuit.assign_parameters()の文字列入力と引数strict=Falseでエラーが発生するバグを修正した。 詳細は #13933を参照。 -
を修正した。
name属性を修正した。OrGateクラスの属性を修正し、このゲートを一意に識別するために"or"。 以前は"and"に誤って設定されていたため、シンセシスプラグインと区別することができませんでした。AndGateと区別したり、合成プラグインにOrGate. 14434を修正 -
のバグを修正。
ElidePermutationsトランスパイラ・パスのバグを修正しました。PermutationGateが存在する場合にqubitマッピングが正しく更新されず、パス・マネージャーのプロパティセットが不正な回路や更新につながるというバグを修正しました。 -
のバグを修正しました。
PauliEvolutionSynthesisDefaultとPauliEvolutionSynthesisRustiq.synthesispreserve_order=Falseプラグインのバグを修正した。 プラグインの動作が復元され、トランスパイルパイプライン全体を通して元の回路が保持されるようになった。 -
'ps'の単位を使用した遅延命令のある回路を QASM3 にエクスポートする際の正しさのバグを修正。 -
rustworkx の最小サポートバージョン 0.15 との互換性の問題を修正。 特定の入力で
VF2LayoutとVF2PostLayoutは、以前は rustworkx 0.16.0 で追加された rustworkx メソッドを使用していました。このため、サポート対象としてリストされている古いリリースの rustworkx を使用するとエラーが発生します。 -
SabreLayoutそしてSabreSwapを使用する回路にルーティング結果を適用するときにパニックになることはなくなった。expr.Varオブジェクトを使用する回路にルーティング結果を適用してもパニックが発生しなくなりました。 -
回路ライブラリ関数
quantum_volume()が更新されnumpy.random.Generatorseedを入力として扱うように更新された。 以前は、このようなジェネレーターの引数はTypeErrorになっていた。 -
回路ライブラリ関数のバグを修正
evolved_operator_ansatz(),qaoa_ansatz()およびhamiltonian_variational_ansatz()で、パラメータにゼロの複素数成分が含まれていたバグを修正。 メソッドを使って SymPy。ParameterExpression.sympify()メソッドに変換されない限りは問題なかった。
1.4.3
前奏曲
Qiskit v1.4.3 は、 v1.4.x リリースシリーズのマイナーバグフィックスリリースです。
バグ修正
-
のバグを修正した。
DAGCircuitのバグを修正した。Vardeepcopy、ピックリング中に出力ノードが入力ノードになってしまうバグを修正。 -
トランスパイラ・パスの
BasisTranslatorトランスパイラ・パスの問題を修正。 14074を修正。 -
QPY()のバグを修正した。
qiskit.qpy)のバグを修正した。MCMTGateを含む回路がシリアライズに失敗するバグを修正。 13965を参照。 -
SabreLayoutは、回路のnameおよびmetadataフィールドを正しく伝播するようになりました。 -
ユニタリー合成プラグイン
SolovayKitaevSynthesisユニタリー合成プラグインにおいて、異なる基底ゲートでプラグインを繰り返し実行すると、最初に実行した基底ゲートのみが不正に再利用されてしまう問題を修正した。 この問題は、基本的な近似値をキャッシュする際に基底ゲートを無視していたことに起因していたが、現在は修正されている。 -
トランスパイラー・パスの問題を修正。
SolovayKitaevトランスパイラ・パスの内部再帰で180度の回転に遭遇した場合にパスがクラッシュする問題を修正しました。 -
トランスパイラー・パスの問題を修正。
SolovayKitaevtranspilerパスの問題を修正しました。生成された近似の位相が正しい値から 。 これは内部 表現に起因するもので、量子ビットゲート行列の正しい符号を得るためには追加の処理が必要である。 9552を修正 -
のフォールバック・エラー・ヒューリスティック
VF2LayoutとVF2PostLayoutでのフォールバック・エラー・ヒューリスティックは、エラー率が報告されていないときに使用され、以前は1以上のエラーを割り当てることができた。
1.4.2
前奏曲
Qiskit 1.4.2 は、 1.4 リリースシリーズで見つかったバグを修正するパッチリリースです。
新機能
- 新しいフラグ
trust_payloadをqpy.load()関数に追加した。 これは、安全でない可能性のあるペイロードを強制的にロードさせるために使用される。 ペイロードにScheduleBlockオブジェクトが含まれ(スタンドアロンでもQuantumCircuit.calibrations)が含まれており、QPYファイルのシンボリック・エンコーディングがsympyに設定されている場合、そのペイロードは潜在的に安全ではなく、それをロードすることで任意のコードが実行される可能性があります。 このフラグはQiskit >= に存在しないインスタンスのデシリアライズを制御するためのものなので、 Qiskit >= には存在しない。ScheduleBlockQiskit >= 2.0.0 に存在しないインスタンスのデシリアライズを制御するためのものなので、 このフラグは Qiskit 1.4.x にのみ存在し、 Qiskit >= 2.0.0 には存在しません。
アップグレードの注意
- デフォルトでは、
qpy.load。QpyErrorオブジェクトを含むQPYペイロードで呼び出された場合に発生するようになりました。ScheduleBlockオブジェクト(単体またはQuantumCircuit.calibrationssympyの一部)を含むQPYペイロードで呼び出されたときに発生するようになった。 これは、ペイロードが潜在的に脆弱であるためで、内容を信頼できる場合にのみ読み込むべきである。 ペイロードが悪意のあるものでないことが確かならば、qpy.loadの新しい引数trust_payloadをTrueに設定すれば、ペイロードのロードが可能になる。
セキュリティー問題
- のセキュリティ脆弱性を修正した。
qpy.load()sympyのセキュリティ脆弱性を修正した。ParameterExpressionペイロードをロードする際のセキュリティ脆弱性を修正しました。 これは、シリアル化ステップ(qpy.dump()).
バグ修正
- の基底近似生成のバグを修正。
SolovayKitaev. 以前は、"sx"または"sxdg"ゲートを含む基底に対して、generate_basis_approximationsを使用した離散基底近似の生成は失敗していた。 これは現在修正されている。
1.4.1
前奏曲
Qiskit 1.4.1 は小さなパッチリリースで、 1.4 拡張サポートシリーズで見つかったいくつかのバグを修正しています。
バグ修正
-
によって構築されたプリセット・パスマネージャーを使用してコンパイルされた回路が、正しく保持されるようになりました。
generate_preset_pass_manager()を使ってコンパイルされた回路はname属性が正しく保持されるようになりました。transpile(). -
を呼び出して定義された
ParameterExpressionオブジェクトをシリアライズまたはデシリアライズする際の QPY 13 での問題を修正しました。ParameterExpression.subs()を呼び出してParameterをParameterExpression. 例:from qiskit.circuit import Parameter a = Parameter("A") b = Parameter("B") expr = a + b c = Parameter("C") new_expr = c ** 3.14 final_expr.subs({b: new_expr})以前のリリースでは
QuantumCircuitを使用してこのような式を含むqpy.dump()でシリアライズしようとすると、 ‘ParameterExpression’ object has no attribute 'name'というエラーメッセージとともにAttributeError。 この問題は修正され、例外は発生しなくなりました。ParameterExpressionオブジェクトを含むペイロードのシリアライズとデシリアライズができるようになりました。 13879を参照。
1.4.0
前奏曲
Qiskit v1.4 リリースは、 v1.x シリーズの最終マイナーバージョンリリースです。 このリリースには最小限の機能しか含まれておらず、主に将来のメジャーバージョンリリース v2.0 で予定されているAPIの変更に対応するための新しい非推奨警告が追加されています。 Qiskit v1.3.x リリースと完全に互換性があります。 Qiskit v2.0 で変更されるインターフェイスに関する警告を確認できるよう、 v1.3.x から v1.4 へアップグレードすることを強くお勧めします。 v1.4.x リリース・シリーズは、本リリース後も引き続きサポートされ、バグフィックスは6ヶ月間、セキュリティ・フィックスは1年間提供される。 修正はパッチリリースを通じて行われる。 リリーススケジュールとサポートサイクルの詳細については、 qiskit-sdk-version-strategyを参照してください。
回路の特徴
- 新しいメソッドを追加、
QuantumCircuit.estimate_duration()を追加した。transpiler. これは、非推奨のQuantumCircuit.duration属性の代わりに
回路の廃止予定
-
サブクラス化
RegisterまたはBitまたはそのサブクラス(たとえばQuantumRegisterまたはQubitなど) は Qiskit v1.4 で非推奨となっています。 これらの型をサブクラス化することはQiskitによって明示的にサポートされたことはなく、その意味も定義されなかった。 Qiskit v2.0 では、技術的な制約からサブクラス分けが不可能になる可能性があり、回路に保存されないことは確実である。 これは、パフォーマンス向上のためにデータモデルをラストスペースに移したためである。 -
DAGNodeのサブクラス(すなわちDAGOpNode)のコンストラクタのdagオプションパラメータは、 Qiskit v1.2 以降使用されず無視されてきましたが、 Qiskit v1.4 で非推奨となり、 Qiskit v2.0 で削除される予定です。 -
MCMTのMultiple-Control-Multiple-Target (MCMT)クラスは、現在では非推奨となっています。MCMTGateに置き換えられました。Gateに置き換えられました。 回路の代わりにゲートを使用することで、コンパイラーはより高い抽象度でオブジェクトを推論することができ、複数の合成プラグインの使用が可能になる。 -
この
qiskit.circuit.classicalfunctionモジュールとClassicalFunctionクラスとそれに関連するclassical_function()およびBooleanExpressionユーティリティは Qiskit v1.4 で非推奨となり、 Qiskit v2.0 で削除される予定です。この変更は、外部ライブラリ
tweedledumへの依存を回避するために行われました。このライブラリは、Qiskit がサポートするすべてのプラットフォームおよび Python バージョンと互換性がなくなっています。 同様の機能についてはPhaseOracleを使用してください。tweedledumを使用しない実装になる予定です。BitFlipOracleは Qiskit v2.0 で追加される予定です。BitFlipOracleが追加されるまでは、次の例のように、位相反転オラクルを結果量子ビットに条件付けし、オラクルの適用前後にハダマードゲートを適用することで、位相反転オラクルをビット反転オラクルに変換することができる(オラクルはqr_x上にあり、結果はqr_y上にある):from qiskit import QuantumRegister, QuantumCircuit from qiskit.circuit.library.phase_oracle import PhaseOracle bool_expr = "(x0 & x1 | ~x2) & x4" qr_x = QuantumRegister(4, "x") qr_y = QuantumRegister(1, "y") bit_flip_oracle = QuantumCircuit(qr_x, qr_y) phase_flip_oracle = PhaseOracle(bool_expr) controlled_phase_flip_oracle = phase_flip_oracle.control(1) bit_flip_oracle.h(qr_y) bit_flip_oracle.compose(controlled_phase_flip_oracle, qubits=[*qr_y, *qr_x], inplace=True) bit_flip_oracle.h(qr_y) print(bit_flip_oracle)その結果
┌───────────────┐ x_0: ─────┤0 ├───── │ │ x_1: ─────┤1 ├───── │ Phase Oracle │ x_2: ─────┤2 ├───── │ │ x_3: ─────┤3 ├───── ┌───┐└───────┬───────┘┌───┐ y: ┤ H ├────────■────────┤ H ├ └───┘ └───┘
プリミティブの非推奨化
- 型の入力を
BackendV1のbackend引数にBackendSamplerV2とBackendEstimatorV2はQiskit 1.4 で非推奨となり、Qiskit 2.0 で削除される予定です。 代わりにBackendV2のインスタンスを使う。
プロバイダーの廃止予定
-
クラスと
BackendV2Converterクラスとconvert_to_target()関数が非推奨となったのに伴い、Qiskit v1.4 ではBackendV1. このconvert_to_target()関数はTargetインスタンスを構築するために使われます。BackendV1ワークフローからBackendConfiguration,BackendPropertiesそしてPulseDefaults.BackendV2Converterへの変換に使用される。BackendV1への変換に使用されます。BackendV2に変換するために使用されBackendV1への変換に使用される。 -
この
BasicSimulator.run_experiment()メソッドは非推奨となり、 Qiskit v2.0 で削除される予定です。 このメソッドは、入力引数としてQasmQobjExperimentを入力引数として取りますが、これはQobjクラスやその他の関連機能とともに非推奨となりました。 電話BasicSimulator.run()代わりにQuantumCircuit入力で呼び出すことができる。 -
エラーの種類
BackendPropertyErrorとBackendConfigurationErrorは Qiskit 1.4 で非推奨となり、 Qiskit 2.0 で削除される予定です。 これらのエラーは、非推奨のBackendPropertiesおよびBackendConfigurationオブジェクトからアイテムを取得するときにのみ使用されます。 -
クラス
GateProperties,BackendStatusおよびqiskit.providers.models.JobStatusレガシーBackendV1クラスは非推奨となりました。 これらはQiskit 1.2 の関連要素とともに非推奨とされるべきでした。qiskit.providers.models.
合成の非推奨
-
クラスのコンストラクタの引数
atomic_evolutionのシグネチャ。LieTrotter,ProductFormulaおよびSuzukiTrotterのコンストラクタの引数のシグネチャは、出力回路の視覚化を改善するためにQiskit v1.2 で修正されました。 古いシグネチャーは廃止され、新しいシグネチャーが採用された。 Qiskit v2.0 からは、新しい代替案のみが有効となる。移行するには、callable を
Callable[[Pauli | SparsePauliOp, float], QuantumCircuit]からCallable[[QuantumCircuit, Pauli | SparsePauliOp, float], None]に変更してください。
トランスパイラーの非推奨機能
-
その
DAGOpNode.sort_key,DAGOutNode.sort_keyおよびDAGInNode.sort_key属性は非推奨となり、Qiskit v2.0 リリースで削除される予定です。 これらの属性は、元来、トポロジカルにノードをソートするための辞書的キーとしてDAGCircuit. しかし、ソートはRustのコード内部で行われるようになったため、このためにキーは使われなくなった。 この属性を使用する場合、ノードの他の属性からキーを再作成することができます。 例えば、次のような関数を使うことができる:def get_sort_key(node: DAGNode): if isinstance(node, (DAGInNode, DAGOutNode)): return str(node.wire) return ",".join( f"{dag.find_bit(q).index:04d}" for q in itertools.chain(node.qargs, node.cargs) )これは、ソートキーと同じように文字列を生成する。
-
トランスパイルパイプラインにおける
BackendPropertiesオブジェクトは Qiskit v1.4 で非推奨となり、Qiskit では削除される予定です。 v2.0:backend_propの入力引数。DenseLayoutpropertiesの入力引数。VF2Layoutpropertiesで、coupling_map入力引数をVF2PostLayout. なお、coupling_mapは、propertiesの存在下でのみ使用された。backend_propsの入力引数。UnitarySynthesisbackend_propertiesの入力引数。PassManagerConfigbackend_propertiesでTarget.from_configuration()backend_propertiesでgenerate_routing_passmanager()backend_propertiesでgenerate_translation_passmanager()
この
BackendPropertiesクラスは、Qiskit v1.2 以降、ワークフローの他の要素とともに非推奨となり、Qiskit で削除される予定です。BackendV1v2.0 で削除される予定です。 ハードウェア情報をトランスパレーション引数に伝えるための代替パスはTargetクラスで、これはtarget入力引数を使って設定できる。 ゲートエラーや持続時間などの特定の命令プロパティは、構築時にTargetに追加することができる。Target.add_instruction()メソッドで追加することができます。の場合
generate_routing_passmanager()とgenerate_translation_passmanager()の場合、backend_properties引数はオプションであり、必須引数であるtargetが入力された時点で優先される。 引数の使用は、 1.x、推奨される使用方法であるターゲットを渡す限り、安全に削除することができる。 -
Qiskit v1.3 におけるパルスの非推奨化には、次のようなキャリブレーションビルダーパスが含まれています。
RXCalibrationBuilder. パスNormalizeRXAngleパスはRXCalibrationBuilderしたがって、Qiskit v1.4 では非推奨となっています。 校正モジュールのrzx_templates()較正モジュールの関数も、私たちのコードベースでは使われていないため、非推奨となります。
可視化の非推奨機能
-
タイムライン引き出しのパラメータ
show_idleとshow_barrierは、Qiskit v1.4 で非推奨となりました。 選択肢はそれぞれ、Qiskit v1.1 で紹介されているidle_wiresとplot_barriersパラメータで、完全に等価である。 レガシーパラメータ名は Qiskit v2.0 で削除されます。 -
Qiskit v1.4 では、timeline drawer
timeline_drawer()関数は、targetが指示の継続時間を取得するために指定されていない場合、非推奨の警告を発行します。 Qiskit v2.0 以降、targetは必須で、指定されないと失敗します。timeline_drawer()が必要で、指定されないと失敗します。 -
型の入力を
BackendV1のbackend引数にplot_gate_map(),plot_circuit_layout()およびplot_error_map()はQiskit 1.4 で非推奨となり、Qiskit 2.0 で削除される予定です。 代わりにBackendV2のインスタンスを使う。
各種 非推奨
- のコンストラクタでの位置引数の使用は、 Qiskit の時点で非推奨です。
Resultのコンストラクタでの位置引数の使用は、 Qiskit 1.4 で非推奨となり、 Qiskit 2.0 で無効になります。 すべての引数をkwarg構文で設定してください。Result(backend_name="name", ....). これに加えて、qobj_id引数は非推奨となり、Qiskit 2.0 では使用されなくなります。 しかし、qobj_idを一般的なkwargとして設定することは可能で、他の一般的なkwargと一緒にメタデータ・フィールドに置かれる。
バグ修正
- の問題を修正しました。
Target.has_calibration()とTarget.get_calibration()で、パラメータ化されたGateを渡すと期待通りに動作しない問題を修正した。 参照 qiskit/#11657 および qiskit/#11658 を参照のこと。
その他の注意事項
-
への任意のキーワード引数として
property_setを渡す。run()のサブクラスのメソッドに任意のキーワード引数として渡すとBasePassManagerのサブクラスのメソッドに任意のキーワード引数を渡すと、Qiskit v2.0 の動作が変わります。 このキーワードは現在、パス・マネージャーの内部表現変換関数に転送される。 Qiskit v2.0 以降、このオプションはパイプライン実行のためのPropertySetを設定するために使用され、引数は変換関数に渡されません。のサブクラスの実装者にのみ関係する。
BasePassManagerproperty_setと呼ばれるキーワード引数を受け付けるように_passmanager_frontendと_passmanager_backendの実装を選択したサブクラスの実装者にのみ関係します。