Release Notes - Latest Stable Version
Stable Release 26.7.0
Release date 30.07.2026
Requires: LabOne 26.7
Requires: ZQCS Host Software 26.7.0b6 (when using ZQCS)
Supports: Applications Library 26.7.0
DSL
- Functionality Added the
quantum_element_uidsproperty to theQPUclass, which returns the list of quantum element UIDs in the QPU. - Functionality Added
reset_oscillator_phasetolaboneq.simple.dslnamespace, which resets the phase of the oscillator associated with a given logical signal. This function existed already but was not directly exposed. -
Functionality Added an option for the caller of a quantum operation to override the pulse name used by
create_pulse.The
create_pulsefunction used inside many quantum operations allows the implementation of the quantum operation to directly supply a pulse name, which is used to identify the pulse and forms part of the pulse UID. However, this was not exposed via quantum operations.A user may wish to generate different pulse objects even when using the same quantum operations. For example, in an experiment with M measure operations, a user may wish to replace a specific subset of those measurements with new pulses.
To enable this,
create_pulsenow accepts a new special key namednamein the dictionary of pulse options. This allows the user to override the supplied name by passing, for example,qop.measure(q, handle, readout_pulse={"name": "my-special-tag"})when calling a quantum operation. -
Documentation Added documentation for the list of real-time sweepable parameters vs near-time only parameters.
- Documentation Added reference documentation for for_each and sweep_range.
- Bug Fix Fixed a bug where runtime type validation for FIR precompensation coefficients failed with NumPy 2.5.
- Bug Fix Fixed a bug where a
SweepParameter/LinearSweepParameterarithmetic expression that re-used one of its own operands (e.g.2 * param - param) produced a corrupted parameter whose values could not be compiled, raisingTypeError: 'SweepParameter' object is not subscriptable.
Compiler
- Functionality Changed exception type from
RuntimeErrortoLabOneQExceptionwhen an invalid device combination is provided. - Functionality The compiler now raises an exception when an SHF oscillator intermediate frequency (IF) has an absolute value >= 1 GHz. SHF instruments do not support IF frequencies in this range.
- Functionality Removed
FIRCompensation.strict. This had effect only for ZQCS users, and now it is made redundant by a more actionable error message. When waveform memory is exhausted and pulse merging occurred (due to FIR precompensation tail or overlapping pulses), the error now includes a note identifying the merged pulses and their combined size. - Bug Fix Fixed a bug where compilation would fail when a chunked sweep contained both the driving parameter and the derived parameter.
- Bug Fix Fixed a bug where differences in comments produced excessively long, uncompressed SeqC.
- Bug Fix Fixed a bug where a minor rounding error biased phase increments by up to +0.3 µrad.
- Bug Fix Fixed a bug where explicitly setting
PortMode.RFon a QA channel had no effect and the hardware used the LF path instead. - Bug Fix Fixed a bug where
automutewas not correctly applied when multiplexing output. - Bug Fix Fixed a bug where a compiler error occurred in experiments with near-time sweeps and a static SHFPPC configuration.
- Bug Fix Fixed a bug where a compiler error occurred when sweeping a pulse parameter that overrides a value already defined on the pulse itself, and the pulse is used multiple times with different parameter values.
- Deprecation Added runtime deprecation warnings for properties deprecated long ago:
CompiledExperiment.src,CompiledExperiment.waves,CompiledExperiment.recipe,CompiledExperiment.wave_indices,CompiledExperiment.command_tables,CompiledExperiment.schedule. These will be removed inv26.10. As an end user, you do not need to use these properties, however for debugging or learning purposes you can still access the same information through the artifacts in the compiled experiment at your own risk (they do not come with backward compatibility promise). - Deprecation Previously deprecated methods
CompiledExperiment.replace_pulseandCompiledExperiment.replace_phase_incrementwill be removed inv26.10. NOTE: the methodsRuntimeContext.replace_pulseandRuntimeContext.replace_phase_incrementare not deprecated and will remain available for applying replacements in NT callbacks (these methods leave the compiled experiment unchanged). - Deprecation Deprecated support for Python object types not supported by JSON serializer in pulse parameter values and callback functions. Users requiring wider range of types can e.g. serialize the data into bytes and pass that instead.
- Removal Removed
LabOneQInstrumentortraces:laboneq.compiler.scheduleandlaboneq.compiler.generate-code. Capturing compiler traces from Python now requireslaboneq.instrumentation.tracing.laboneq_tracing().
Controller
- Functionality Changed the device setup compatibility verification between compilation and execution. Experiments compiled with previous versions of LabOne Q may need recompilation.
- Bug Fix Fixed a bug where the assignment vector calculation for multi-state discrimination on SHFQA was incorrect. The calculation is now delegated to
zhinst-utils. For 2-state discrimination, this change essentially flips the state assignment. If usingcalculate_integration_kernels_thresholds, no change is needed. Otherwise users are recommended to update their integration kernel calculation to adapt for the new state assignment. - Bug Fix Fixed a bug where a timeout error could occur during experiments using pipelined execution (chunked) with large result sizes. The timeout calculation now accounts for the GW-to-FW result transfer time, which was previously unaccounted for and could cause premature timeouts on experiments with many jobs and long readout blocks.
- Bug Fix Fixed a bug where
"zi:fw:19"execution errors occurred with (auto-)chunking on HDAWG. - Bug Fix Fixed a bug where outputs on different AWG cores of a single HDAWG were not synchronized (e.g. channels 1 and 3 out of sync).
- Removal Removed device setup hot-reloading.
Automation
- Functionality Added error tracking and visualization for failed layer executions. The exceptions from
run_layer_executableare recorded via a newAutomationStatus.ERRORstatus and error attribute, with errored nodes blinking yellow-to-red in the web viewer and displaying the error message in the info panel on click. - Functionality Multiple automation web viewers can now run simultaneously. Each
start_web_viewercall launches an independent server on its own port for a separateAutomationinstance. - Functionality Improved the "Node results" image discovery for nodes with multiple quantum elements. We now search for the target quantum element UID in the results image file names if the node key string is not found.
- Functionality Added a
skip_passedargument/attribute to theAutomationLayerclass that makes it possible to skip running passed nodes. - Functionality The automation web viewer now implements CSRF protection by rejecting state-changing requests (non-GET/HEAD) whose Origin or Referer header does not match the request host. Requests without Origin or Referrer header are rejected.
- Functionality Improved the performance of the automation web viewer so that it runs smoothly with up to 200 quantum elements per layer. The front end has been simplified and all transitions are now entirely done natively by the browser.
- Bug Fix Fixed a bug in the automation web viewer, where the "Node results" section of the node info panel sometimes displayed the results of the previously-clicked node.
Workflows
- Bug Fix Fixed a bug where passing workflow
OptionBuilderoptions directly to a task called outside a workflow context raised aValueError.
Serializer
-
Functionality Updated the
Experimentserializer to support a richer set of values as pulse parameters.Previously the
Experimentserializer supported only a limited basic set of pulse parameter types:float,int,str,bool,complexSweepParameter,LinearSweepParameterlist[SweepParameter],list[LinearSweepParameter]
This set of types proved too restrictive for some use cases.
Now the
Experimentserializer supports an extended set of types for pulse parameters:int,float,complex,str,bytes,bool,None,SweepParameterorLinearSweepParameter- lists of the above
- dictionaries of the above with
strkeys
The lists and dictionaries may be nested and need not have homogeneous element types.
The previous
Experimentserializer format was version 4. The new format is version 5. -
Bug Fix Fixed a bug where deserialization of compiled experiments that use an SHFPCC device with null amplifier pump parameters would fail.
- Bug Fix Fixed a bug where attempting to serialize an experiment containing
reset_oscillator_phasewould raise an error.ResetOscillatorPhaseoperations are now correctly serialized and deserialized. - Bug Fix Fixed a bug where a single-shot result of the form
np.array(X + jY)was deserialized asnp.array([X + jY]). - Bug Fix Fixed a bug where an experiment using SHFPPC failed to execute after a JSON serialization round trip.
Applications Library
- Functionality Added the following experiment and analysis workflows to
contrib, useful for two-qubit tune-up: single-qubit phase correction for parametric CZ calibration (para_cz_corr_sq_phases_tc), parametric CZ flux frequency vs amplitude calibration (para_cz_flux_freq_vs_amp_tc), parametric CZ flux frequency vs duration calibration (para_cz_flux_freq_vs_dur_tc), parametric CZ pulse-duration calibration (para_cz_flux_pulse_dur_tc), parametric CZ frequency vs RZ phase (para_cz_freq_vs_phase), two-qubit randomized benchmarking (two_qubit_rb). To achieve this, we added the necessary parameters (CzParameters), operations (TunableCouplerOperationswithczmethod), and pulses (modulated_flux) for the tunable coupler. - Breaking change: Changed the
nameof the ZZ coupling strength experiment workflow fromzz_coupling_strength_exptozz_coupling_strength. - Functionality Added the bosonic qubit type, quantum operations, and demo platform, along with a selection of experiments, including: displacement calibration, memory spectroscopy, selective transmon Rx calibration, SNAP gate calibration, SWAP gate calibration, and Wigner tomography.
-
Functionality Updated the VQE example to use
QPU,QuantumOperations, andOpenQASMTranspiler.Previously the VQE example used
GateStoreandexp_from_qasm_list, which are deprecated interfaces to the LabOne QOpenQASMTranspiler. TheGateStoreis replaced with aQPUand aQuantumOperationsclass.exp_from_qasm_listis replaced by callingOpenQASMTranspiler.batch_experimentdirectly instead. -
Bug Fix The behavior of
numpy.linalg.eigchanged in version2.5.0of NumPy (https://numpy.org/doc/stable/release/2.5.0-notes.html#linalg-eig-and-linalg-eigvals-now-always-return-complex-arrays). The code was updated to handle the change. - Removal Removed support for
qubit/qubits/parametric_amplifierarguments of typeQuantumElement/QuantumElements/TWPAin experiment workflows. Removed support forquantum_elementsarguments of typeQuantumElementsin thetemporary_quantum_elements_from_qputask. Please pass the quantum element UIDs instead of the quantum element instances. - Removal Removed the deprecated
update_qubitstask (useupdate_qpuinstead) and the deprecatedtemporary_modifytask (usetemporary_qpuinstead).
Known Issues
- Running Gen1 experiments can produce controller warnings indicating RT start conditions on follower devices are not fulfilled (e.g.,
UHFQA:dev2801: AWG 0 didn't startafter 5s); experiments may still execute correctly, but affected Gen1 experiments may take ~20%+ longer due to the additional wait/retry behavior. We are working on a fix and will release it as a patch to 26.1.0 as soon as it is available. - Using the
reset_signal_oscillator_phase()on signals of typerf_signalis currently not supported. - Using
OpenQASMTranspiler.batch_experimentwith QASM programs that contain native measurement operations will lead to an unexpected shape of the returned data. To ensure the correct shape, measurement operations should be removed from the OpenQASM program, and.batch_experimentshould be called with the option fieldadd_measurement=True, which will add the measurement operations to the LabOne QExperimentduring the import step (see our tutorial for more details). - Using the internal scope to acquire raw traces on multiple channels of an SHFQA in a single experiment is only possible if the timing of all acquisitions is equal between instrument channels.
- Using runtime checks of the sequencer playback through the
disable_runtime_checks=Falseargument ofsession.connect(), is currently not possible when the experiment contains real-time feedback or is using the on-device PRNG. In the latter case, unintended error messages may be produced if the option is used. - When using the pipeliner in an experiment by specifying a
chunk_countparameter in a sweep, the number ofacquirecommands in each chunk currently needs to be equal. Typically, this means that the number of sweep steps within each chunk has to be the same. - When using
OutputSimulatoror pulse sheet viewer with an experiment using the pipeliner or near-time sweeping, currently only the first sequence step will be displayed. - When delaying logical signal lines of type
rf_signalvia thedelay_signalcalibration property, allrf_signals on the same sequencer core must be set to the same delay. - When delaying logical signal lines on the SHFQA via the
delay_signalcalibration property, the delays for the measure and acquire line must be the same; the measure pulse delay is not added to the acquire pulse delay as on the UHFQA. We recommend to useport_delayfor now. - When creating a section with very short content (below the device's minimum waveform length), the compiler may fail to map the experiment to valid SeqC, and will generate an error. As a workaround in these cases, manually add delays to the sequence.
Pre-Release versions
- Pre-Release 26.10.0b1
- Pre-Release 26.7.0b6
- Pre-Release 26.7.0b5
- Pre-Release 26.7.0b4
- Pre-Release 26.7.0b3
- Pre-Release 26.7.0b2
- Pre-Release 26.7.0b1
- Pre-Release 26.4.0b5
- Pre-Release 26.4.0b4
- Pre-Release 26.4.0b3
- Pre-Release 26.4.0b2
- Pre-Release 26.4.0b1
- Pre-Release 26.1.0b4
- Pre-Release 26.1.0b3
- Pre-Release 26.1.0b2
- Pre-Release 26.1.0b1
Previous versions
- Stable Release 26.4.0
- Patch Release 26.1.2
- Patch Release 26.1.1
- Stable Release 26.1.0
- Patch Release 25.10.3
- Patch Release 25.10.2
- Patch Release 25.10.1
- Stable Release 25.10.0
- Release 2.62.0
- Release 2.61.0
- Patch Release 2.60.1
- Release 2.60.0
- Release 2.59.0
- Release 2.58.0
- Release 2.57.0
- Release 2.56.0
- Release 2.55.0
- Release 2.54.0
- Release 2.53.0
- Release 2.52.0
- Release 2.51.0
- Release 2.50.0
- Release 2.49.0
- Release 2.48.0
- Release 2.47.0
- Release 2.46.0
- Release 2.45.0
- Release 2.44.0
- Release 2.43.0
- Release 2.42.0
- Release 2.41.0
- Release 2.40.0
- Release 2.39.0
- Release 2.38.0
- Release 2.37.0
- Release 2.36.0
- Release 2.35.0
- Release 2.34.0
- Patch Release 2.33.1
- Release 2.33.0
- Release 2.32.0
- Release 2.31.0
- Release 2.30.0
- Release 2.29.0
- Release 2.28.0
- Release 2.27.1
- Release 2.27.0
- Release 2.26.0
- Release 2.25.0
- Release 2.24.0
- Release 2.23.0
- Release 2.22.0
- Release 2.21.0
- Patch Release 2.20.1
- Release 2.20.0
- Release 2.19.0
- Release 2.18.0
- Release 2.17.0
- Release 2.16.0
- Release 2.15.0
- Release 2.14.0
- Release 2.13.0
- Release 2.12.0
- Release 2.11.0
- Release 2.10.0
- Release 2.9.0
- Release 2.8.0
- Release 2.7.0
- Release 2.6.0
- Release 2.5.0
- Release 2.4.0
- Release 2.3.0
- Release 2.2.0
- Release 2.1.0
- Release 2.0.0
- prior to Release 2.0.0