Visitar URL original
Releases · rigetti/pyquil · GitHub
Skip to content

Releases

v4.23.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 17:01
053d0c8

Changed

  • Updated QCS SDK to 0.31.1. Update QCS SDK for benchmarking campaign. Required for single-use
    refresh tokens.

v4.23.0rc1

v4.23.0rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 09 Oct 18:20
0c48f7b

Changed

  • Updated QCS SDK to 0.30.0. Update QCS SDK for benchmarking campaign. Required for single-use
    refresh tokens.

v4.22.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 21:09
025f409

Changed

  • A Channel whose noise generator acts on more levels than its gate promotes the gate to the
    generator's dims, as the identity on the levels above its own: Channel.from_lindbladian(RX(theta, q), qx.lindbladians.leakage(rate)) is a qutrit channel without a hand-promoted gate in custom_gates.
    Channel.from_mixture does the same for constituents on more levels. Noise that cannot hold the gate
    raises a ValueError naming both dims.
  • MeasurementChannel.from_confusion_and_transition takes a (num_outcomes, d) confusion matrix, so a
    two-state discriminator on a qutrit is a (2, 3) matrix, and its transition matrix defaults to the
    identity (a quantum non-demolition measurement).

Deprecated

APIs that pyQuil v5 removes now emit a PyQuilDeprecationWarning when used, and a deprecated
module warns when imported. It is a FutureWarning, so Python shows it by default; filter on
pyquil._deprecation.PyQuilDeprecationWarning to silence it.

  • Replaced in pyQuil v5 by the JAX-based simulators and noise model. pyQuil v4 already includes
    them as private, experimental modules (pyquil.simulation._simulator and
    pyquil.noise._noise_model; see the
    simulation architecture documentation),
    so we recommend continuing to use the deprecated APIs until you upgrade to pyQuil v5. Note also,
    the qcs-sdk maintains support for executing Quil
    programs on the QVM as of its 0.27.0 release (see documentation for
    qcs_sdk.qvm):
    • The pyquil.pyqvm and pyquil.wavefunction modules.
    • pyquil.api.QVM, pyquil.api.QVMCompiler and pyquil.api.WavefunctionSimulator, and getting
      a QVM-backed quantum computer from get_qc (a -qvm or -pyqvm name, or as_qvm=True).
    • From pyquil.simulation: NumpyWavefunctionSimulator, ReferenceWavefunctionSimulator,
      ReferenceDensitySimulator, get_measure_probabilities, targeted_einsum,
      targeted_tensordot and zero_state_matrix.
    • The Kraus-map noise model in pyquil.noise: NoiseModel, KrausModel, NoisyGateUndefined,
      add_decoherence_noise, append_kraus_to_gate, apply_noise_model,
      bitstring_probs_to_z_moments, combine_kraus_maps, correct_bitstring_probs,
      corrupt_bitstring_probs, damping_after_dephasing, damping_kraus_map,
      decoherence_noise_with_asymmetric_ro, dephasing_kraus_map, estimate_assignment_probs,
      estimate_bitstring_probs, get_noisy_gate, pauli_kraus_map and tensor_kraus_maps. The
      constants ANGLE_TOLERANCE, INFINITY and NO_NOISE are deprecated too, but do not warn.
    • Program.define_noisy_gate, Program.define_noisy_readout and
      pyquil.quil.merge_with_pauli_noise, whose noise pragmas only the QVM understands.
  • Replaced in pyQuil v5 by rigetti-qpu-hybrid-benchmark:
    • The pyquil.experiment module, with QuantumComputer.run_experiment and
      QuantumComputer.calibrate.
    • The pyquil.operator_estimation module, by its Estimator interface.
  • Removed in pyQuil v5 without replacement: the pyquil.latex module.
  • pyquil.api.local_forest_runtime warns that starting a QVM server is deprecated: in pyQuil v5 it
    starts only quilc.

v4.22.0rc1

v4.22.0rc1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 30 Sep 15:06
e06a2f1

Deprecated

APIs that pyQuil v5 removes now emit a PyQuilDeprecationWarning when used, and a deprecated
module warns when imported. It is a FutureWarning, so Python shows it by default; filter on
pyquil._deprecation.PyQuilDeprecationWarning to silence it.

  • Replaced in pyQuil v5 by the JAX-based simulators and noise model. pyQuil v4 already includes
    them as private, experimental modules (pyquil.simulation._simulator and
    pyquil.noise._noise_model; see the
    simulation architecture documentation),
    so we recommend continuing to use the deprecated APIs until you upgrade to pyQuil v5. Note also,
    the qcs-sdk maintains support for executing Quil
    programs on the QVM as of its 0.27.0 release (see documentation for
    qcs_sdk.qvm):
    • The pyquil.pyqvm and pyquil.wavefunction modules.
    • pyquil.api.QVM, pyquil.api.QVMCompiler and pyquil.api.WavefunctionSimulator, and getting
      a QVM-backed quantum computer from get_qc (a -qvm or -pyqvm name, or as_qvm=True).
    • From pyquil.simulation: NumpyWavefunctionSimulator, ReferenceWavefunctionSimulator,
      ReferenceDensitySimulator, get_measure_probabilities, targeted_einsum,
      targeted_tensordot and zero_state_matrix.
    • The Kraus-map noise model in pyquil.noise: NoiseModel, KrausModel, NoisyGateUndefined,
      add_decoherence_noise, append_kraus_to_gate, apply_noise_model,
      bitstring_probs_to_z_moments, combine_kraus_maps, correct_bitstring_probs,
      corrupt_bitstring_probs, damping_after_dephasing, damping_kraus_map,
      decoherence_noise_with_asymmetric_ro, dephasing_kraus_map, estimate_assignment_probs,
      estimate_bitstring_probs, get_noisy_gate, pauli_kraus_map and tensor_kraus_maps. The
      constants ANGLE_TOLERANCE, INFINITY and NO_NOISE are deprecated too, but do not warn.
    • Program.define_noisy_gate, Program.define_noisy_readout and
      pyquil.quil.merge_with_pauli_noise, whose noise pragmas only the QVM understands.
  • Replaced in pyQuil v5 by rigetti-qpu-hybrid-benchmark:
    • The pyquil.experiment module, with QuantumComputer.run_experiment and
      QuantumComputer.calibrate.
    • The pyquil.operator_estimation module, by its Estimator interface.
  • Removed in pyQuil v5 without replacement: the pyquil.latex module.
  • pyquil.api.local_forest_runtime warns that starting a QVM server is deprecated: in pyQuil v5 it
    starts only quilc.

v4.21.0

Choose a tag to compare

@github-actions github-actions released this 23 Sep 18:28
9430e03

Features

  • TrajectorySimulator, a Monte-Carlo trajectory simulator for programs with mid-circuit
    measurements and resets. It samples pure-state trajectories under JAX, returning the
    measurement outcomes alongside the final state; sample streams trajectories in batches,
    data-parallel across the available devices, so the shot count is not bounded by device
    memory. compute is jax.jit-traceable (though not differentiable).
    (#1861)
  • A gate angle may be any Quil arithmetic expression over declared memory, so the parametric
    programs quilc emits -- RX(theta[0]/2 + pi) 0 -- simulate without rewriting.
    (#1869). Restored from
    #1860, where it was errantly dropped during a
    rebase (prior to the 4.19.0 release).
  • The simulators accept an initial_state to evolve from, so a circuit can be split in two and
    a prefix shared across many runs evolved once instead of once per run.

Fixed

  • Tolerant Circuit equality (and its unhashability, which follows), the split of
    Circuit.__post_init__ into named coercion and validation steps, and a mypy fix for JAX's
    dynamically defined config flags. Restored from
    #1860, where it was errantly dropped during a
    rebase (prior to the 4.19.0 release).
  • Circuit.to_kraus_maps no longer truncates the Kraus set.

v4.20.0

Choose a tag to compare

@github-actions github-actions released this 22 Sep 01:01
ad9f2c9

Features

  • Helper for adding leading delays to programs with leading classical computation, including
    cases with control flow. See pyquil._qpu.add_leading_delay_to_first_pulse_block.
    (#1851)
  • Support for per-shot randomized compiling on the QPU control system. The top-level
    pyquil._qpu.RandomizedCompilingConfiguration provides methods for building the necessary
    classical instructions (build_quil_program), seed values (generate_seed_values), and
    memory map values (build_memory_map) to enable the method. It additionally provides methods
    for verifying final memory read off of the QPU for verification (verify_final_memory),
    along with tracking the randomizations shot by shot (track_pauli_frames).
    (#1851)
  • Support Quil shift operators. (#1851)

v4.19.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 02:52
1115719

Features

  • Experimental exact simulators built on rigetti-quax: PureStateVectorSimulator and
    DensityMatrixSimulator in pyquil.simulation._simulator. They evolve a program exactly
    under JAX, so they are jit-compatible and differentiable with respect to gate
    parameters, and they accept a NoiseModel. The API is not yet stable; see
    the architecture guide.
    (#1855)
  • A gate angle may be any Quil arithmetic expression over declared memory, so the parametric
    programs quilc emits -- RX(theta[0]/2 + pi) 0 -- simulate without rewriting.
    (#1869)

4.18.0 (2026-08-19)

Choose a tag to compare

@rigetti-githubbot rigetti-githubbot released this 19 Aug 23:22

Features

drop Python 3.9 support, add rigetti-quax (1/5) (#1858)

qudit noise model (2/5) (#1854) (#1859)

Fixes

format complex params with nonzero real and unit imaginary part (#1850)

4.18.0-rc.1 (2026-08-18)

Pre-release

Choose a tag to compare

@rigetti-githubbot rigetti-githubbot released this 18 Aug 23:40

Features

drop Python 3.9 support, add rigetti-quax (1/5) (#1858)

qudit noise model (2/5) (#1854) (#1859)

Fixes

format complex params with nonzero real and unit imaginary part (#1850)

4.18.0-rc.0 (2026-07-16)

Pre-release

Choose a tag to compare

@rigetti-githubbot rigetti-githubbot released this 16 Jul 19:07

Features

drop Python 3.9 support, add rigetti-quax (1/5) (#1858)

Fixes

format complex params with nonzero real and unit imaginary part (#1850)