What’s new?

Below you will find the most relevant news that brings the Sardana releases. For a complete list of changes consult the Sardana CHANGELOG.md file.

What’s new in Sardana 3.5?

Date: 2024-06-26 (Jan24 milestone)

Type: biannual stable release

It is backwards compatible and comes with new features, changes and bug fixes.

Exceptionally, this release was not tested on Windows platform.


  • Experiment Status widget, a complete interface to monitor the status of the elements and running macros. It can be launched with sardanactl expstatus script.

  • Sardana Configuration Tool:

    • Now it is possible to split the configuration file into multiple files for easier management (added !include statement).

    • sardanactl config graph script to generate a graph with controllers and elements to visualize the configuration from a YAML file.

    • Description field to document the purpose of the elements in the config file. This will map directly to the Tango device description property.

    • sardanactl config validate now checks if required properties are declared in the config.

  • Possibility to execute one point step scan by configuring starts equal to finals and nb_intervals = 0 (e.g. ascan mot01 1 1 0 .1).

  • Showscan online widget enhancements (showscan online):

    • Click-to-move functionality to move a motor to a clicked position.

    • Pre-scaling of x-axis on scan start according to the scan’s range.

  • Possibility to execute mesh/dmesh scans without moving the second (slow) motor by setting the macro parameter m2_correct_drift to False or by setting this value to the MeshM2CorrectDrift environment variable (so it will be used as default). See documentation.

  • Possibility to use characters from other encodings than Latin1 e.g. UTF-8 by changing LOG_MESSAGE_CODEC

  • Diffractometer improvements:

    • New diffractometer HKL controller type Diffrac4Cp23.

    • Added Ki and Kf attributes to diffractometer HKL controllers.

  • Elements used (reserved) by running macros are now exposed on the Door device

  • Compatibility with Python 3.12


  • Now Sardana uses by default non-numeric ids and physical roles properties. Custom setting USE_NUMERIC_ELEMENT_IDS is now by default False and USE_PHYSICAL_ROLES_PROPERTY is now by default True. Old installations should migrate (migration guide) or, alternatively, force the old values.

  • Sardana command-line interface tool renamed to sardanactl


  • Multiple fixes in Sardana Configuration Tool to improve reliability and usability.

  • Plotting of timescan in showscan online tool.

  • Reload macro when the macro name is the same as the macro library name.

  • Deterministic scans:

    • rscan, r2scan and r3scan are now deterministic with number of points equal to the total points throughout all regions.

    • fscan is now deterministic if number of points is known and integration time is a scalar.

What’s new in Sardana 3.4.4?

Date: 2024-03-20

Type: hotfix release


  • Fixed scan velocity verification before to move the motor when the velocity of the motor is 0, in the case of the meshct it happens for the slow motor.

What’s new in Sardana 3.4.4?

Date: 2024-03-20

Type: hotfix release


  • Fixed scan velocity verification before to move the motor when the velocity of the motor is 0, in the case of the meshct it happens for the slow motor.

What’s new in Sardana 3.4.3?

Date: 2023-11-15

Type: hotfix release



  • Fix trigger/gate moveable_on_input in time synchronized measurement. See documentation for more details.

What’s new in Sardana 3.4.2?

Date: 2023-08-31

Type: hotfix release


  • Build process of the sardana package when using setuptools < 40.1.0.

What’s new in Sardana 3.4.1?

Date: 2023-08-30

Type: hotfix release


  • Make installation of sardana extra dependencies optional for pip and conda. See Installation instructions for more details.


  • Improve handling of motion errors and error reporting in continuous scans. This avoids confusion about the source of the error between acquisition and motion.

  • Errors in continuous scan when motor velocities were using units.

  • Restore compatibility with taurus < 5.1.4.

What’s new in Sardana 3.4?

Date: 2023-04-06 (Jan23 milestone)

Type: biannual stable release

It is backwards compatible and comes with new features, changes, deprecations and bug fixes.

Exceptionally, this release was not tested on Windows platform.

This release simplifies Tango DB configuration so Sardana does not rely on some properties anymore. It is highly recommended that you cleanup your systems created prior to this release using the upgrade_ids.py script, using the following command: python upgrade_ids.py --server=Pool/sep20_example_pool --cleanup.


  • Sardana configuration format and CLI tools. The format is based on YAML and covers all the Tango DB configuration points. The tools can be invoked with the sardana config script sub-commands (temporarily sardanacli config on Windows):

    • dump

    • load

    • diff

    • update

    • validate

    Additionally, Sardana configuration was improved with the following features:

    • Element names are used instead of numeric ids when referring to elements in configuration (including Tango DB configuration). To enable this feature you need to switch the USE_NUMERIC_ELEMENT_IDS flag and migrate existing systems. This feature is incompatible with renaming elements at runtime.

    • More self-descriptive configuration of pseudo controllers (physical_roles property with role names and ids). To enable this feature you need to switch the USE_PHYSICAL_ROLES_PROPERTY flag.

  • Some of the previously existing standalone scripts were unified under one general script sardana (temporarily sardanacli on Windows) with sub-commands:

    • spock

    • macroexecutor

    • sequencer

    • expconf

    • showscan

    • config

  • Scan directory or file can be automatically changed on every new scan execution and its name can be parametrized with the ScanID environment variable.

  • New macros:

  • Macros can be executed programmatically more easily with the new API of runMacro()

  • Improved macro execution widgets:

  • Improved scanstats macro:

    • Can be executed independently right after the scan macro

    • N-dimensional scans are supported

  • Continuous scans better validate:

    • scan velocity before moving to pre-start position

    • if pre-start move ended correctly

  • Default Pool concept to macro server to disambiguate macro parameters when present in more than one pool. It is configurable with DefaultPool environment variable.

  • Generic data recorders (not file recorders) can be configured with DataRecorder environment variable.

  • Scan points in step scans can be repeated based on an arbitrary condition. Configurable with GeneralCondition environment variable.

  • Controller plugins tests can now be easily developed thanks to the sardana core pytest fixtures.

  • It is now possible to not move certain motors in custom step scans developed with SScan.

  • Automatically test sardana with different python versions using conda.



  • Some of the standalone scripts:

    • spock

    • macroexeutor

    • sequencer

    • showscan

    in favor of sardana (temporarily sardanacli on Windows) script with sub-commands.

  • showscan online magic command (in Spock) in favor of showscan magic command

  • set_lim, set_lm and set_pos macros in favor of set_user_lim, set_dial_lim and set_dial_pos macros


  • Compatibility with Python 3.11.

  • Make Spock prompt always visible at the bottom in the secondary session (when macros are executed from outside of this Spock session).

  • Pseudo counters with complex hierarchy.

  • Changes of controller (plugins) default properties and attribute values are now correctly applied.

  • MacroButton User’s Interface state correctly reflects exceptions raised during macro execution.

  • Remove Taurus deprecation warnings

What’s new in Sardana 3.3.8?

Date: 2022-01-09

Type: hotfix release


  • Properly stop/abort macros which call other macros when the interrupt request was sent while the internal macro was executing either of:

    • pre-cleanup and post-cleanup hooks

    • macro’s do_backup() and do_restore()

What’s new in Sardana 3.3.7?

Date: 2022-12-23

Type: hotfix release


  • Protect against exceptions in hardware acquisition and synchronization action starting procedure (exception raised in controller’s methods like: StartAll(), StartOne(), etc.). Such exceptions were impeding further executions of these actions.

What’s new in Sardana 3.3.6?

Date: 2022-10-05

Type: hotfix release


  • Regression introduced in version 3.3.0 causing final padding up to nb_points after interrupting a timescan.

What’s new in Sardana 3.3.5?

Date: 2022-09-21

Type: hotfix release


  • Regression introduced in version 3.3.3 causing attributes with memorization MemorizedNoInit to restore their memorized values on the server startup and the reconfig execution.

  • Allow to reduce size of the expconf widget by making the mode warning label wrap its text when there is not enough space.

What’s new in Sardana 3.3.4?

Date: 2022-09-06

Type: hotfix release


  • Regression introduced in version 3.2.1 causing deadlocks in macros which use disposable taurus.Device() objects.

  • macroexecutor and sequencer widget compatibility with Python 3.10

What’s new in Sardana 3.3.3?

Date: 2022-08-10 (Jul22 milestone)

Type: biannual stable release

It is backwards compatible and comes with new features, changes and bug fixes.


  • View and Edit alternative use modes of Experiment Configuration user interface. These modes let avoid annoying pop-ups with external changes e.g. when experiment configuration was changed programmatically by a macro.

  • Allow to not acquire the last point in Continuous scans (by specifying negative value of nr_interv macro parameters e.g. ascanct mot01 0 3 -3 1 will acquire only 3 scan points). This enables scans composed from only one scan point and does not extend the motion range beyond the point that was requested as the final position plus the necessary deceleration range.

  • rscanct macro - continuous scan with multiple regions.

  • reconfig macro - reconfigure a single axis element or the whole controller. Reconfiguration consists of the element initialization and application of memorized attribute values.

  • Recalculate and set software limits in the set_user_pos macro.

  • Fully stop macro sequences in Spock (multiline input macro execution) with Ctrl+c by propagating KeyboardInterrupt exception.

  • Possibility to use spectrum attributes in Scan snapshots in SPEC recorder.

  • Improved instruments usage experience:

    • Show NeXus class in the lsi macro

    • Add definstr macro for defining new instruments

  • Fix order of Restoring memorized attributes.

  • Trigger/gate coupled and multiplexor modes in position domain.

  • Allow to load Sardana custom settings from ini configuration files.



  • Corruption of move targets leading to wrong movements, especially affecting motor groups - some motors were erroneously sent to 0.

  • Decouple attribute default values from memorized values i.e. changes of the attribute default values in the controller code will take effect.

  • Issues with aborting Continuous scans.

  • Avoid hung Measurement group acquisition with hardware synchronization when working with extended timeout.


  • Hard links in NXscan HDF5 files measurement group pointing to measurement/pre_scan_snapshot items. Optionally could be re-introduced as soft links using NXSCANH5_RECORDER_LINK_PRE_SCAN_SNAPSHOT.

  • Auto-update mode in Experiment Configuration user interface in favor of the View mode.

  • Master timer/monitor from measurement group configuration. Measurement group configurations with master timer/monitor are still supported but are deprecated.

What’s new in Sardana 3.2.1?

Date: 2022-03-21

Type: hotfix release


  • Make Sardana compatible with Python 3.10.

  • Regression introduced in Sardana 3.2.0 causing hangs on motion/acquisition start.

  • Macro plotting for matplotlib < 3.

What’s new in Sardana 3.2?

Date: 2022-01-31 (Jul21 milestone)

Type: biannual stable release

It is backwards compatible and comes with new features, changes and bug fixes.


  • Possibility to release hung operations e.g. motion or acquisition hung due to a hung hardware controller. Such a release could be issued, for example, from Spock using further Control+c in the process of Stopping macros.

  • rscan, r2scan and r3scan scan macros (formerly available as examples under different names regscan, reg2scan and reg3scan). These macros were enahnced with the standard scan hooks and scan data support and fixed so the region_nr_intervals macro parameter type is now an int and the integ_time macro parameter was moved to the end.

  • Possibility to disable overshoot correction in continuous scans using the ScanOvershootCorrection environment variable.

  • Print in form of a table relevant motion parameters: acceleration, velocity, etc. used during continuous scans before the scan starts.

  • macro_start_time dataset in NXscan (HDF5, NeXus) data file which contains the scan macro execution start timestamp in addition to already existing start_time dataset which contains the scan measurement start timestamp.

  • Possibility to change custom data format e.g.: #UVAR, #C, etc. in the SPEC data file

  • lsp macro to list Pools the MacroServer is connected to

  • Improve error handling for state read in mv family macros and step scan macros.

  • History log of motor attributes (sign, offset and step_per_unit) changes.

  • Validate new limit values before applying them in set_lim and set_lm macros.


  • Execute post-scan hooks also in case an exception occurs during the scan execution.

  • Default SPEC recorder custom data format: #C -> #UVAR


  • Memory leaks in scans.

  • Deletion of Pool element now checks if dependent elements exists. For example, if you delete a motor it will be checked if any pseudo motor depends on it and eventually it will prevent the deletion.

  • Several issues with stopping macros:

    • Remove annoying info messages of stopping instruments when stopping macros

    • Stop motion only once in scans

    • Stop/abort element in ct macro when used directly with a channel instead of a measurement group

    • Allow aborting macros without prior stopping of them

  • Allow to recreate measurement group with the same name but other channels at runtime.

  • Showscan offline widget is again usable.

  • Avoid problems with duplicated entries in Scan snapshots

  • Spock prompt informs when the Door is offline i.e. MacroServer server is not running.

  • Make MeasurementGroup state readout evaluate states of the involved elements

  • Prevent start of operation e.g. motion or acquisition when the element is not ready.

  • Fix restoring velocity in software (ascanc) continuous scans.

  • Ensure controller, element and group state are set to Fault and details are reported in the status whenever plugin code i.e. controller library, is missing.

  • Hang of IPython when Asking for user input gives timeout

  • Allow running Spock without an X-session on Linux.

  • amultiscan macro parameters interpretation

  • Respect measurement group enabled configuration in uct macro

  • set_meas_conf macro when setting plot axes on all channels

  • Sequencer widget action buttons (new, save and play) state (enabled/disabled)

  • Make PoolMotorTV User’s Interface relative move combobox accept only positive numbers.

  • post_mortem Spock’s magic command which is useful for debugging problems.

What’s new in Sardana 3.1.3?

Date: 2021-09-17

Type: hotfix release


  • Regression introduced in Sardana 3.0.3 affecting grouped move/scan of pseudo motors proceeding from the same controller e.g. slit’s gap and offset, HKL pseudo motors. Such a grouped move was only sending set possition to the first pseudo motor.

  • Regression introduced in Sardana 3.1.2 affecting custom continuous scans composed from waypoints with non-homogeneous number of points. Such scans were producing erroneuous number of points due to an error in the final padding logic.

What’s new in Sardana 3.1.2?

Date: 2021-08-02

Type: hotfix release


  • Avoid memory leak in continuous scans (ascanct, meshct, etc.). The MacroServer process memory was growing on each scan execution by the amount corresponding to storing in the memory the scan data.

What’s new in Sardana 3.1.1?

Date: 2021-06-11

Type: hotfix release


  • Correctly handle stop/abort of macros e.g. Ctrl+c in Spock in case the macro was executing another hooked macros e.g. a scan executing a general hook.

What’s new in Sardana 3.1?

Date: 2021-05-17 (Jan21 milestone)

Type: biannual stable release

It is backwards compatible and comes with new features, changes and bug fixes.


This release, in comparison to the previous ones, brings significant user experience improvements when used on Windows.



  • Experimental channel’s shape is now considered as a result of the configuration e.g. RoI, binning, etc. and not part of the measurement group configuration:


  • Sardana server (standalone) startup is more robust.

  • Storing string values in datasets, pre-scan snapshot and custom data in NXscanH5_FileRecorder.

  • Stopping/aborting grouped movement when backlash correction would be applied.

  • Randomly swapping target positions in grouped motion when moveables proceed from various Device Pool’s.

  • Enables possible dead time optimization in mesh scan macro by executing per measurement preparation.

  • Continuously read experimental channel’s value references in hardware synchronized acquisition instead of reading only once at the end.

  • Problems when Changing default interface of standard attributes in controllers e.g. shape of the pseudo counter’s Value attribute.

  • Sequencer related bugs:

    • Fill Macro’s parent_macro in case of executing XML hooks in sequencer

    • Problems with macro id’s when executing sequences loaded from plain text files with spock syntax

    • Loading of sequences using macro functions from plain text files with spock syntax

  • Apply position formatting (configured with PosFormat ViewOption) to the limits in the wm macro.