Igor Pro 10.01 Beta 1 Released

A new beta release of Igor Pro 10 is now available. A list of notable changes for this release is included below. If you've reported an issue to us and we've told you it's been fixed, the fix will be included in this release, even if it's not mentioned below.

If you have enabled checking for beta releases (select the Misc→Miscellaneous Settings menu item to open the Miscellaneous Settings dialog, select the Updates category, then select the "Also Check for Beta Releases" checkbox) you can select the Help→Updates for Igor Pro menu item within Igor Pro 10 to get the latest beta release. Otherwise you can go to the Downloads page to download the installer manually.

Notable Changes in Igor Pro 10.01 Beta 1

IGOR APPLICATION

NEW FEATURES

  • Added a German language translation of the user interface (menus, dialogs, etc. but not documentation). We used AI for the translation (with partial human review) so there may be mistakes. Open the Miscellaneous Settings dialog (Misc🠖Miscellaneous Settings menu item) and select the Environment category to select a language. If your OS language is German Igor should ask you if you want to use the German language when it starts. Igor will remember your selection.

    We might use a similar process for additional languages. If you are interested in helping translate Igor, please see our post at https://www.wavemetrics.com/forum/general/help-us-translate-igor-pro for additional information.
  • Documentation for Igor Pro is now available online at https://docs.wavemetrics.com.
  • PlaySound entirely rewritten to achieve gap-less playback of queued sounds. Added /STOP flag to stop any asynchronously playing sounds.
  • Python 3.14 is now supported in Igor Pro 10.01.

    NOTE: Our support for Python 3.14 is currently limited to the 'standard' installation of Python 3.14, not the free-threaded installation.
  • Added the igorpro.fn submodule for Python. This submodule allows users to directly call — and return values from — built-in, external, and user-defined Igor functions.

    For example, to call Igor's built-in SortList function, you can now write:

    # Descending sort. 'sorted' will hold: 'a;c;d;e;g;x;'
    sorted = igorpro.fn.sortlist('x;c;e;g;d;a', ';', 1)
    

     

    igorpro.fn supports returning real and complex numbers, strings, wave references, and data folder references from Igor functions.

  • Using the Igor64.exe command line flag /START=3 now prints startup information to standard output (stdout). This can be useful if you are running Igor via some automated process.
  • MatrixOP /KCLS flag has been extended to support the third dimension.
  • Improved performance of all-at-once threadsafe curve fitting by approximately 50%. The unperturbed model calculation is now run inside the parallel multithreading loop.
  • Added a flag (/CPAD) to ImageTransform padImage that supports symmetric padding around the image in either mirroring the edge data or repeating the last pixel values.
  • Gizmo, Igor's 3D graphing tool, now supports rendering of exported graphics and page layout images when the Gizmo window is hidden. Previously, a Gizmo page layout object displayed a blank box with the message, "Cannot draw a hidden Gizmo". See Gizmo Overview to learn about Gizmo.

CHANGED BEHAVIOR

  • The _labels_ keyword used in Display, AppendToGraph, and ReplaceWave commands is no longer translated in localized versions of Igor. Previously, Japanese Igor translated this keyword to _ラベル_, which caused errors when experiments or procedure files were shared between different language versions. Commands now always use _labels_ regardless of language. For backward compatibility, Igor still accepts _ラベル_ when parsing commands, but always generates _labels_ when creating commands.

    NOTE: Experiments or procedure files created with Igor Pro 10.01 or later that use the _labels_ keyword will cause errors when opened with Japanese Igor Pro 8 through 10.00, since those versions only recognized the translated _ラベル_ keyword. When opening an experiment file, a dialog will appear allowing you to edit the failed command- simply replace _labels_ with _ラベル_ to resolve the error.
  • Improved error checking for inputs to the IntegrateODE operation. This includes checking numeric inputs for proper range, forbidding NaN and Inf values, and checking for missing waves or waves with incorrect type or size. This could potentially cause errors in "working" code, but the errors flagged would have caused incorrect behavior that could be hard to debug.
  • Bitwise operators (|, &, ~, and %^) no longer convert their operands to unsigned integers with truncation. They now convert their operands to signed integers, so that signed operands produce the expected result.
  • #pragma independentModule=ProcGlobal is now a compilation error. This was never valid but was previously silently accepted.
  • Igor now checks the Python version before initialization and gives a clear error message if the version is unsupported.
  • HDF5SaveGroup saves waves more efficiently when data folders contain many waves. This also applies to saving a packed HDF5 experiment.

BUG FIXES

  • Fixed a bug in the Text Marker dialog that caused a mismatch between the text anchor point widget and the anchor point in the generated command.
  • Improved rendering of EMF pictures in notebooks and help files.
  • Control position and sizes accept floating point values.
  • Controls are more accurately positioned and sized when control panel expansion is other than a multiple of 100%.
  • XOPs can now be used as fit functions. Previous incorrect behavior was that any fit using a non-threadsafe external fit function would result in a singular matrix error. This has been fixed. Threadsafe external fit functions were not affected by this bug and continue to execute normally.
  • Fixed a bug that caused layouts to be the wrong size and position when printed.
  • Fixed a bug that could result in incorrect triggering of trace drag in a graph subwindow if you clicked first in the graph subwindow and then quickly clicked and held in some other area of the window containing that graph subwindow.
  • Fixed a bug that caused too many calls to a window hook function for Resize events.
  • Fixed a bug in the FindPeak operation that caused a crash when finding peaks in a wave with more than a million data points. The fix both prevents the crash and improves performance on these large waves by a factor as large as 40.
  • Fixed a bug that could prevent drawing of graph draw objects that use axis coordinates.
  • Fixed a bug that incorrectly limited dragging of Layout Guides when a subwindow was activated.
  • Fixed a potential crash if you killed a wave while in Edit Wave mode in a graph window.
  • Fixed a bug that caused custom colors added in the Select Color dialog (what you get when you click the Other... button in a color picker) to not be saved and restored across Igor sessions.
  • Fixed a bug where Python code completion results were not sorted.
  • Fixed a bug where collections of Python booleans (lists, arrays, tuples) could not be returned to Igor.
  • Fixed a bug where Python import could not find modules in the current working directory.
  • Fixed a bug where the Python console window was not shown and raised when selecting Open Console from the Python menu.
  • Fixed Python console docking and undocking coordinate issues on multi-monitor setups.
  • Fixed a bug where the code completion popup did not offer suggestions for module-qualified functions (e.g., myModule#funcName). Also improved completion within independent modules to offer functions from the entire module namespace, not just the current file.
  • Fixed a bug in ImageRegistration that caused a memory issue when processing stacks.
  • Fixed a crash in WaveStats and incorrect wave creation in MatrixOP related to the /KCLS flag with certain dimension configurations.
  • Fixed bugs in ImageEdgeDetection boundary processing.
  • Fixed a bug where the ImageMorphology /S flag was incorrectly changed to /H. The documented /S flag is now used.
  • Fixed a bug in DuplicateDataFolder that could corrupt a pre-existing local string variable when it shared an internal pointer with a global string being overwritten.
  • Fixed a bug where MoveWave incorrectly cleared the contents of wave-reference waves when moving free waves through a free data folder.
  • Fixed a bug where ReorderTraces with an invalid trace name could delete traces from the graph before reporting the error.
  • Fixed a bug in the ReorderTraces and ReorderImages dialog that caused it to fail when the same wave appeared in a graph more than once.
  • Fixed a bug where IntegrateODE programmed stop (derivative function returning 1) did not take effect immediately and could delay for a long time with small internal step sizes.
  • Fixed a bug in IntegrateODE using the BDF method where an error weighting wave could cause incorrect results or errors due to uninitialized memory.
  • Fixed a bug where string functions such as TrimString truncated strings at embedded null bytes instead of preserving the full string content.
  • Fixed a bug where RemoveFromTable incorrectly applied column type restrictions that should only apply to AppendToTable.
  • Fixed a crash when dragging a subwindow resize handle.
  • Fixed a crash when using the graph contextual menu in certain configurations.
  • Fixed a potential crash when XOP functions use structs with threadsafe pointers. Also fixed incorrect complex return values from external functions used by SumSeries.
  • Fixed a potential crash when checking structs for external curve fitting functions.
  • Fixed a crash during mouse release on exterior subwindows when the window is destroyed during event handling.
  • Fixed a bug where tags attached to hidden traces or images were not hidden.
  • Fixed Gizmo axis labels being clipped at the top.
  • Fixed a bug where Gizmo surface objects with NaN-containing matrix waves did not draw when using constant color.
  • Fixed a bug where free axes positioned relative to perpendicular axes did not reserve room for axis labels during graph recreation.
  • Fixed a bug where column grid lines in table subwindows within layouts were not drawing correctly at certain display scalings.
  • Fixed a bug where table subwindow column widths shifted incorrectly during resolution changes in layouts.
  • Fixed a bug where table subwindows in layouts were continuously repainting, causing excessive drawing and performance issues.
  • Fixed a bug where right-clicking a table subwindow did not activate it before showing the contextual menu.
  • Fixed several issues with Find (Ctrl+F), Replace (Ctrl+R), and Go To Line (Ctrl+G) keyboard shortcuts in procedure windows, the command window, and plain text edit fields. The cursor now correctly focuses on the appropriate text field when switching between Find and Replace modes.
  • Fixed a bug where the STFT dialog "From Target" toggle did not work correctly.
  • Fixed a bug where 8-bit AIFF and AIFC audio files were loaded with corrupted (unsigned instead of signed) sample data.
  • Fixed a bug where DoIgorMenu did not update associated graphs while a dialog was open.
  • Fixed duplicate ruler IDs in notebooks that caused rulers to switch unexpectedly when adjusted.
  • Fixed a bug where the compiler gave a confusing error instead of "Expected a wave reference" in certain scenarios.
  • Fixed inconsistent error messages in ControlBar between compiled and interpreted code paths.
  • CurveFit now accepts wave subranges when using an X wave. Previously, subranges were rejected even when the subrange size matched the X wave size. This has been a bug for decades.
  • Fixed a bug where dashed lines with NaN coordinates could cause rendering issues.
  • Fixed a bug in the area function where the trapezoidal end-point correction was discarded, producing incorrect results. The faverage function was also affected.
  • Fixed bugs in MatrixOP crossCovar and binVar. crossCovar was squaring the wrong input's data, and binVar was summing deviations instead of squared deviations.

PROCEDURES

  • IFDL.ipf - Resized the IFDL panel to show entire title.

EXAMPLES

  • All Controls Demo.pxp - Modernized for Igor 10.
  • Resize Panel and List Demo.pxp - explains 3 different ways to resize controls in a panel:
    1. custom window hook
    2. generalized window hook with ResizeControls.ipf
    3. user guides introduced in Igor 10

Forum

Support

Gallery

Igor Pro 10

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More