Release Notes - Latest Stable Version
Stable Release 26.4.0
Release date 29.04.2026
Requires: LabOne 26.4
Supports: Applications Library 26.4.0
DSL
- Functionality Added
SectionTimingMode.STRICTfor sections and acquire loops. When enabled, the compiler raises an error if any timing value (section length, pulse length, repetition time) requires padding to fit the required grid, rather than silently padding.RepetitionMode.AUTOis incompatible with strict mode and also raises an error. - Bug Fix Fixed a bug where
attrsattributes were incorrectly labeled as bothclass-attributeandinstance-attributein the documentation. - Bug Fix Fixed a bug in the
temporary_qpufunction, where quantum elements and topology edges were not being copied correctly. - Bug Fix Fixed a bug where automatic measure section length in QPU did not take readout pulse into account.
- Bug Fix Fixed a bug where creating an experiment in a different thread than where LabOne Q was originally imported caused a crash.
- Bug Fix Fixed a vulnerability issue where a crafted serialized file could cause the deserialization engine to import and invoke arbitrary Python classes, resulting in arbitrary code execution. See ZI-SA-2026-002 for details.
Compiler
- Functionality Added a new attribute
result_propertiesforCompiledExperimentthat for each result handle contains information about the result array (the shape and the axis names). - Functionality Long readout pulses on SHFQA devices are now automatically compressed without requiring the
can_compressparameter when using hardware with long readout time support. - Functionality
ModulationType.AUTOon QA devices in integration mode now resolves toHARDWAREonly when the device has the LRT option and the acquisition length exceeds 2 µs; shorter acquisitions default toSOFTWAREto avoid silent phase-averaging errors and NCO limitations. Long acquisitions (> 2 µs) without LRT now raise a compile-time error. Spectroscopy mode is unchanged and always resolves toHARDWARE. - Functionality Ported event list generation (required for Pulse Sheet Viewer) from Python to Rust for improved performance.
- Bug Fix Fixed a bug where markers were not held during compressed pulse playback in the output simulator.
- Bug Fix Fixed a bug where PRNG match sections inside non-compressed sweep loops allocated duplicate command table entries on each sweep step, preventing the SeqC compressor from collapsing repeated bodies and potentially exhausting the command table entries.
- Bug Fix Fixed a bug where multiplexed SHFQA output channels used invalid oscillator frequencies.
- Bug Fix Fixed a bug where pulse replacements did not persist over near-time steps in situations where, besides the replacement(s), the near-time loop is used to sweep some pulse properties as well (the pulse being replaced, or another one).
- Bug Fix Fixed a bug where near-time pulse replacement replaced the wrong waveform if the pulse being replaced was in different positions in different near-time steps (can happen when matching against the near-time loop index and defining structurally different entries for different cases).
- Bug Fix Fixed a bug where delay compensation for input latency on SHFQA when using LRT was inaccurate. Users are advised to update their integration kernel estimations as this change affects signal latency.
- Bug Fix Fixed a bug where auto chunking, when chunking was not necessary, produced a different compilation result than when auto chunking was not enabled.
- Bug Fix Fixed a bug where acquisition delay was not compensated in LRT mode. Users no longer need to manually add a port delay offset to the acquire signal when using long readout.
- Bug Fix Fixed a bug where match-case against a near-time sweep parameter always executed the first case only.
- Bug Fix Fixed a bug where
axis_namein experiment results contained names of internal derived parameters. - Bug Fix Fixed a bug where near-time frequency sweep of QA acquire oscillator with hardware modulation did not work on SHFQA devices with the LRT option without requiring spectroscopy acquisition type.
- Bug Fix Fixed a bug where loops using SW oscillators were incorrectly compressed (re-rolled), causing all sweep iterations to reuse the same pre-computed waveform regardless of the accumulated oscillator phase.
- Bug Fix Fixed a bug where hardware modulation was not applied when using a short readout on SHFQA with the LRT option.
- Bug Fix Fixed a bug where
OutputSimulatordid not properly decompress long readout (LRT) waveforms on SHFQA, so that simulated output did not match the full hardware playback. - Bug Fix Fixed a bug where SHFQA in Spectroscopy mode did not play a readout pulse if
can_compress=Truepasses to a readout pulse while the LRT option is being used. - Bug Fix Fixed a bug where PSV crashed if a zero-length trigger was present.
Controller
- Functionality Added remote controller service for running experiments on remote machines.
- Functionality Renamed controller API endpoints to match new naming scheme, added stubs for sync controller API.
- Functionality Near-time Callbacks now receive an object implementing
RuntimeContextas their first argument instead of aSession. No changes are required to existing callback function definitions except when they use the accessors to experiment data, calibrations, connection state, or the device setup. In these cases, the required data must be submitted via the function arguments. It is still recommended to rename the parameter fromsessiontoruntime_contextand update the type hint, if present. - Functionality
Sessionnow supports automatic system profile fetching and caching when connecting to hardware. Use the newsystem_profileparameter in theSessionconstructor to explicitly provide a profile, or let it auto-load from cache when needed. - Bug Fix Fixed a bug where hold-off errors from a previous experiment could cause subsequent experiments to crash.
- Bug Fix Fixed a bug where UHFQA AWG status check failed after AWG ready logic changed in 26.1.0.
- Bug Fix Fixed a bug where a stale SHFQA integration kernel downsampling factor persists across sequential experiment runs within the same session.
- Bug Fix Fixed a bug where a read timeout occurred when running LRT after non-LRT, due to LabOne Q enabling MSD by default even for two states for non-LRT experiments. MSD is now explicitly disabled for LRT.
- Removal Remote controller service: drop the admin reset endpoint, the
connection_statefield of the/v1/inforesponse, and the implicit on-demand hardware connect. The service now connects at startup viaControllerContainer.create()and aborts if the connection fails.
Workflows
- Functionality Released the LabOne Q Automation framework and added a tutorial.
- Functionality Added support for injecting serialized experiment results into workflows via the
inject_resultsoption, enabling reuse of previously recorded runs for emulation or testing. - Bug Fix Fixed a bug where an incorrect exception was raised when injecting incompatible results in
run_experiment. - Bug Fix Fixed a bug where deserialization of a compiled experiment that uses local feedback would fail.
- Bug Fix Fixed a bug where deserialization of a scheduled experiment with RAW acquisition would fail.
- Removal Removed the deprecated
DataStoreclass and associated SQLite-based data storage functionality.
Applications Library
- Functionality Released the LabOne Q Workflow Automation framework and added a tutorial.
- Functionality Added the
result_handleargument to thecalibration_traces_rotation.calculate_qubit_population_2dfunction, useful for storing multiple measurement outcomes per qubit. - Functionality The
TunableTransmondemo_platform(n_qubits)andtunable_transmon_setup(n_qubits)functions were extended to support arbitrary numbers of qubits. Previously they supported at most six. The SHFQC and HDAWG instrument names and addresses in the setup were made unique by appending a count to them. - Functionality Added the
evaluate_experimenttask andevaluation_parametersargument to all experiment workflows that have anupdate_qputask. - Functionality Added a new
"continuous"option for specifying kernel pulses for acquire and measurement integration kernels onTunableTransmons. The new option causes the hardware to integrate for the entire integration length, weighting all samples equally. This is useful for performing very long integrations where the pulse samples would not fit into the device memory. - Functionality The functionality to determine the length of the measure section on
laboneq.dsl.quantum.QPUwas not compatible with all types of qubits. It only worked with tunable transmons. To avoid confusion and bugs with other types of qubits, the functionality has been moved toTunableTransmonOperations.measure_section_length. The method onlaboneq.dsl.quantum.QPUwill be deprecated and removed in future releases. - Bug Fix Fixed a bug in the Applications Library where several analysis methods did not properly support experiment results with multiple shots.
- Breaking Change For all experiment workflows, all arguments apart from
session,qpu, andqubit/qubits/parametric_amplifierare now keyword-only arguments. - Documentation Added a new section to the Experiment Workflows tutorial in the Applications Library explaining how to run an experiment workflow on previously measured results saved locally as JSON files.
- Documentation Fixed incorrect docstrings across experiment and analysis modules where workflow names, parameter references, module paths, and code examples had drifted out of sync with the code.
- Documentation Updated the How-to Guides landing page in the User's manual to show the experiment workflows before the pulse sequence guides. Also added a link to the single-qubit randomized benchmarking experiment workflow documentation.
- Documentation Updated the code examples in the reference documentation for the
amplitude_fineexperiment. - Documentation Fixed inaccurate description of the
add_resetargument tobatch_experiment. The argument adds a reset operation not an active reset operation. Whether the reset is active or passive is determined by the implementation provided by the quantum operations of the QPU. - Documentation Added TWPA quantum element to the reference documentation index.
- Documentation Fixed the link to the contribution guideline in the readme.
Deprecations
- Deprecated the methods
CompiledExperiment.replace_pulseandCompiledExperiment.replace_phase_increment. NOTE: the methodsRuntimeContext.replace_pulseandRuntimeContext.replace_phase_incrementare not deprecated and can still be used to apply replacements in NT callbacks (these methods leave the compiled experiment unchanged). - Deprecated
QPU.measure_section_length. The method is only meaningful for certain types of qubits, so it will be moved to the implementations ofQuantumOperationsin thelaboneq-applicationsrepository instead. - Deprecated the legacy serializer provided by
laboneq.dsl.serializationandlaboneq.core.serialization. These will be removed in LabOneQ 26.7. Uselaboneq.serializersinstead.
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.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
- 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