Skip to main content
IBM Quantum Platform

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マッピングが正しく更新されず、パス・マネージャーのプロパティセットが不正な回路や更新につながるというバグを修正しました。

  • のバグを修正しました。 PauliEvolutionSynthesisDefaultPauliEvolutionSynthesisRustiq.synthesis preserve_order=Falseプラグインのバグを修正した。 プラグインの動作が復元され、トランスパイルパイプライン全体を通して元の回路が保持されるようになった。

  • 'ps' の単位を使用した遅延命令のある回路を QASM3 にエクスポートする際の正しさのバグを修正。

  • rustworkx の最小サポートバージョン 0.15 との互換性の問題を修正。 特定の入力で VF2LayoutVF2PostLayout は、以前は 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度の回転に遭遇した場合にパスがクラッシュする問題を修正しました。

  • トランスパイラー・パスの問題を修正。 SolovayKitaev transpilerパスの問題を修正しました。生成された近似の位相が正しい値から π\pi。 これは内部 SO(3)SO(3) 表現に起因するもので、量子ビットゲート行列の正しい符号を得るためには追加の処理が必要である。 9552を修正

  • のフォールバック・エラー・ヒューリスティック VF2LayoutVF2PostLayoutでのフォールバック・エラー・ヒューリスティックは、エラー率が報告されていないときに使用され、以前は1以上のエラーを割り当てることができた。


1.4.2

前奏曲

Qiskit 1.4.2 は、 1.4 リリースシリーズで見つかったバグを修正するパッチリリースです。

新機能

  • 新しいフラグ trust_payloadqpy.load() 関数に追加した。 これは、安全でない可能性のあるペイロードを強制的にロードさせるために使用される。 ペイロードに ScheduleBlock オブジェクトが含まれ(スタンドアロンでも QuantumCircuit.calibrations)が含まれており、QPYファイルのシンボリック・エンコーディングが sympy に設定されている場合、そのペイロードは潜在的に安全ではなく、それをロードすることで任意のコードが実行される可能性があります。 このフラグはQiskit >= に存在しないインスタンスのデシリアライズを制御するためのものなので、 Qiskit >= には存在しない。 ScheduleBlock Qiskit >= 2.0.0 に存在しないインスタンスのデシリアライズを制御するためのものなので、 このフラグは Qiskit 1.4.x にのみ存在し、 Qiskit >= 2.0.0 には存在しません。

アップグレードの注意

  • デフォルトでは、 qpy.loadQpyError オブジェクトを含むQPYペイロードで呼び出された場合に発生するようになりました。 ScheduleBlock オブジェクト(単体または QuantumCircuit.calibrationssympy の一部)を含むQPYペイロードで呼び出されたときに発生するようになった。 これは、ペイロードが潜在的に脆弱であるためで、内容を信頼できる場合にのみ読み込むべきである。 ペイロードが悪意のあるものでないことが確かならば、 qpy.load の新しい引数 trust_payloadTrue に設定すれば、ペイロードのロードが可能になる。

セキュリティー問題

  • のセキュリティ脆弱性を修正した。 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() を呼び出して ParameterParameterExpression. 例:

    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を参照してください。

回路の特徴

回路の廃止予定

  • サブクラス化 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 ├
         └───┘                 └───┘

プリミティブの非推奨化

プロバイダーの廃止予定

合成の非推奨

  • クラスのコンストラクタの引数 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:

    この 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_idleshow_barrier は、Qiskit v1.4 で非推奨となりました。 選択肢はそれぞれ、Qiskit v1.1 で紹介されている idle_wiresplot_barriers パラメータで、完全に等価である。 レガシーパラメータ名は Qiskit v2.0 で削除されます。

  • Qiskit v1.4 では、timeline drawer timeline_drawer() 関数は、 target が指示の継続時間を取得するために指定されていない場合、非推奨の警告を発行します。 Qiskit v2.0 以降、 target は必須で、指定されないと失敗します。 timeline_drawer() が必要で、指定されないと失敗します。

  • 型の入力を BackendV1backend 引数に 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と一緒にメタデータ・フィールドに置かれる。

バグ修正

その他の注意事項

  • への任意のキーワード引数として property_set を渡す。 run() のサブクラスのメソッドに任意のキーワード引数として渡すと BasePassManager のサブクラスのメソッドに任意のキーワード引数を渡すと、Qiskit v2.0 の動作が変わります。 このキーワードは現在、パス・マネージャーの内部表現変換関数に転送される。 Qiskit v2.0 以降、このオプションはパイプライン実行のための PropertySet を設定するために使用され、引数は変換関数に渡されません。

    のサブクラスの実装者にのみ関係する。 BasePassManagerproperty_set と呼ばれるキーワード引数を受け付けるように _passmanager_frontend_passmanager_backend の実装を選択したサブクラスの実装者にのみ関係します。

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。