What's New in IDL 8.6
What's New in IDL 8.6
Note: If you are new to IDL or upgrading from an older version, see also:
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 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 (
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 *
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.
- 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.
© 2016 Exelis Visual Information Solutions, Inc., a subsidiary of Harris Corporation. All Rights Reserved. This information is not subject to the controls of the International Traffic in Arms Regulations (ITAR) or the Export Administration Regulations (EAR). However, this information may be restricted from transfer to various embargoed countries under U.S. laws and regulations.