The L3Harris Geospatial maintenance program allows you to pay a reasonable yearly fee and receive new products versions and updates as they become available.

14258 Rate this article:

What's New in IDL 8.6

Mark Alonzo

What's New in IDL 8.6

Note: If you are new to IDL or upgrading from an older version, see also:

New Features

Automatic Check for Updates

IDL now has a mechanism to automatically check for updates on startup. If a new version is available, IDL will report this in the output console. This feature may be enabled or disabled using the new IDL_UPDATE_CHECK preference or by using the Preferences dialog in the IDL Workbench.

IDL Tasks

IDL Tasks are an object-oriented API to encapsulate IDL procedures.

IDL Tasks provide the following to users:

  • One entry point for users through the IDLTask function.
  • Stores all input and output in the IDLTask object for easy access.
  • Discover available tasks through IDLQueryTaskCatalogTask.
  • Provides introspection to learn about the input parameters and their requirements.
  • Provides validation of input for expected data types, available choices, ranges, and any additional constraints a task has defined.

IDL Tasks provide the following to developers:

  • Create new procedures and allow IDLTask to validate inputs instead of having to write additional code in the routine.
  • Allows wrapping existing libraries as IDL Tasks by simply creating a task file (*.task) that maps to library routines.
  • Provides information on each parameter on direction, expected data types, available choices, ranges, and more.
  • IDL Tasks can be executed from other programming languages; See the "IDL Task Engine" topic for details.

If you have an application using the IDL Task Engine and want task information, use IDLQueryTaskTask and IDLQueryAllTasksTask.

See the "Custom Tasks" topic for details on creating tasks.

IDL Task Engine

In addition to the introduction of an IDLTask, an IDLTask Engine has been provided to run IDLTasks in command-line environments. You can plug IDL into applications in different programming languages or environments that share information. The environments must be able to handle standard streams (stdin, stdout, and stderr).


You can use the new NCDF_PARSE function to parse through a NetCDF-3 or NetCDF-4 file and return the contents as a hash containing all of the file information and data.


The new NCDF_IS_NCDF function will let you determine if a file is in the NetCDF-3 format.

New Licensing Method

IDL licensing is now managed through a 3rd-party solution from Flexera software. You obtain the license through a portal hosted by Flexera, then you can choose to activate the license on a license server or on an individual node-locked machine. Details about licensing IDL are documented in a standalone topic outside this help.


C Printf-Style Format Strings

When you use a C printf-style format string with IDL's input/output routines, you can now specify the string directly without the need for extra parentheses or the opening % character. For example, instead of:

PRINT, INDGEN(3), FORMAT = '(%"The values are: %d %d %d")'

You can now simply write:

PRINT, INDGEN(3), FORMAT = 'The values are: %d %d %d'

For backwards compatibility you can still use the older style. For more details, see the "Using Formatted Input and Output" topic.

Graphics Font Improvements

The graphics functions now use the DejaVuSans font by default. This produces better-looking text in plots and visualizations. If desired, you can use the FONT_NAME property to switch back to the default "Helvetica" font. See PLOT, TEXT, or any of the other graphics functions for details.

New TrueType Fonts

IDL now comes with four new fonts: DejaVuSans Italic, DejaVuSans Bold, DejaVuSans Bold Italic, and a custom DejaVuSymbol font which includes many useful math symbols. These fonts can be used with direct, object, or new graphics, and can also be accessed through the Embedded Formatting Commands. See the "Using TrueType Fonts" topic for a map of the new DejaVuSymbol font.

Enhanced TeX-like Math Symbols

The TEXT graphics function now uses the new DejaVuSymbol font for math symbols. See the TEXT function for details.

Python-to-IDL Bridge Error Handling

In the Python-to-IDL bridge, when an IDL command encounters a syntax or runtime error, the bridge will now throw an IDLError exception and halt execution of your Python script. You can use the standard Python try/except block to catch these errors if desired. See the "Python to IDL Bridge" documentation for details.

Note: To take advantage of the new error handling, when you import the "idlpy" library into Python you should now import the entire module, not just the IDL class:

>>>from idlpy import *
>>>>IDL.run('print, 2+')
IDLError Traceback (most recent call last)
IDLError: % Syntax error.

IDL IPython Notebook Now Supports Multi-line Blocks

The IDL IPython (Jupyter) Notebook now supports multi-line IDL code blocks. You can now include statements such as FOR BEGIN/END or IF/THEN blocks, or even compile functions and procedures. See the "IDL Notebook Kernel" topic for details.

IDL IPython Notebook Now Supports Magic Commands

The IDL IPython (Jupyter) Notebook now supports magic commands that control the notebook behavior. The available commands allow you to embed HTML, run arbitrary Python code, and switch from inline to windowed graphics. See the "IDL Notebook Kernel" topic for details.

Skip Existing Routines when Compiling or Restoring

Normally, when you compile a file in IDL or restore a SAVE file, all of the new routines will replace any existing routines. This can cause issues if you have an application that is already running (ENVI for example) and you restore a SAVE file that contains old code. To avoid this issue, you can use the new SKIP_EXISTING keyword on RESTORE, RESOLVE_ROUTINE, and RESOLVE_ALL.

SYSTIME Has New Elapsed Seconds Keyword

The SYSTIME function has a new ELAPSED keyword which replaces the ElapsedSeconds argument. The SecondsFlag and ElapsedSeconds arguments have been obsoleted but will continue to work in existing code. New code should use the SECONDS and ELAPSED keywords instead. See SYSTIME for details.

High-Precision Repeating Timer

You can now create a timer that will repeat at precise intervals, regardless of the time that IDL spends processing the timer callback. See the new REPEAT keyword in Timer.Set.

Library Updates

  • The cURL library has been updated to version 7.49.1.
  • The OpenSSL library within cURL has been updated to version 1.0.2h.
  • The Python bridge now supports Python 3.5.

3 comments on article "What's New in IDL 8.6"

Avatar image


is there any machine learning or deep learning model in idl?

Avatar image

jinggang wang

I cannot find a link to buy or download!

Avatar image


How to obtain IDL license for Academic research use.

Please login or register to post comments.

Get the latest geospatial analysis and data visualization technology as soon as it’s available and for a fraction of the costs. Maintenance customers have access to our world class technical support team to walk you through the answers to your ENVI and IDL related questions.

Update your Software >