X
7341

IDL 8.6 Release Notes

IDL 8.6

See the following sections:

IDL Supported Platforms

Platform Hardware Operating System Supported Versions
Windows Intel/AMD 64-bit 7 SP1, 8, 10
Macintosh Intel 64-bit OS X 10.10, 10.11 (El Capitan)
Linux Intel/AMD 64-bit Linux Kernel 2.6.32, glibc 2.12
  • Supported versions indicate that IDL was either built on the lowest version listed or tested on that version. You can install and run IDL on other versions that are binary-compatible.
  • IDL Help requires an HTML5-compatible browser.
  • An X-Windows manager is required for Macintosh. IDL was tested using XQuartz 2.7.11.
  • On Windows, installers for 32-bit are no longer available. However, the 32-bit binaries are still provided with the 64-bit Windows installer so that you can launch IDL in 32-bit mode on 64-bit Windows systems. You can find the 32-bit versions of IDL in the IDL program group under Windows Start-->Programs-->IDL x.x-->32-bit (where x.x is the IDL version).

New Routines and Features in IDL

For information on new routines and features, see "What's New" in the IDL Help.

Backward-Compatibility Issues in IDL

Automatic Check for Updates IDL 8.6: By default, every 7 days IDL will automatically check for updates on startup. If a new version is available, IDL will report this in the output console. You can enable or disable this feature using the new IDL_UPDATE_CHECK preference or by using the Preferences dialog in the IDL Workbench.
New Licensing Method IDL 8.6: 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 help topic in your IDL installation.
LMGR Changes IDL 8.6: with the new IDL licensing, several keywords to the LMGR licensing function have changed. In particular, the DEMO, EMBEDDED, EXPIRE_DATE, FORCE_DEMO, INSTALL_NUM, LMHOSTID, SITE_NOTICE, STUDENT, and TRIAL keywords have been deprecated. These keywords are still accepted but are quietly ignored and return 0 as the result.
macOS DYLD_LIBRARY_PATH IDL 8.6: Recent macOS releases do not allow users to modify DYLD_LIBRARY_PATH. Because of this, the Python Bridge no longer requires you to set DYLD_LIBRARY_PATH (see IDL-69603 below). To avoid problems running IDL you should remove any DYLD_LIBRARY_PATH settings from your bashrc or cshrc shell scripts.
Graphics Font Improvements IDL 8.6: 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.
Python-to-IDL Bridge Error Handling IDL 8.6: 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. To take advantage of the new error handling, when you import the "idlpy" library into Python you should now import the entire module:

from idlpy import *
Python Bridge Data Type Conversions IDL 8.6: To improve consistency between IDL and Python, some of the data type conversions have changed. Python OrderedDict is now converted to an IDL Ordered Hash and vice versa, to preserve the key order. IDL structures (which used to be converted to Python dicts) are now converted to Python OrderedDict, to preserve the structure tag order.
Solaris Sparc Feature Support IDL 8.6: Support for Dataminer, DICOM Read/Write (IDLffDicomEx), and IDLgrMPEG has been dropped on Solaris Sparc.
Solaris x86 Feature Support IDL 8.6: Support for IDLgrMPEG has been dropped on Solaris x86.
_REF_EXTRA as a keyword IDL 8.5.2: In previous versions, if you used _REF_EXTRA as a keyword when calling a routine, IDL would quietly put the keyword into the _EXTRA structure for the called routine. This would lead to unexpected and incorrect behavior because the keywords would not actually be passed through as "true" keywords. IDL will now throw a syntax error at compile time if it encounters _REF_EXTRA as a keyword to a routine. To fix your code, you should pass the _ref_extra value using _EXTRA when calling your subroutine. For example:

function MyRoutine, _REF_EXTRA=extra
    MySubroutine, _REF_EXTRA=extra
    MySubroutine, _EXTRA=extra
end
!VERSION BUILD_DATE Change IDL 8.5.2: For the !VERSION system variable, the BUILD_DATE field has been changed to include the build identifier. The field now has the format "MMM DD YYYY (REVISION)", where MMM is the month name, DD is the date (with an extra space for dates less than 10), YYYY is the year, and REVISION is the build identifier. For example: "Feb 29 2016 (306707)".
IDL Workspace Name Change IDL 8.5.1: The name of the IDL Workspace used by the Workbench has been changed from IDLWorkspace85 to just IDLWorkspace. After installation, you should go into your home directory and rename the IDLWorkspace85 folder to IDLWorkspace.
Default Value Changed for Tile Cache Size Preference IDL 8.5.1: The default value for the IDL_GR_TILECACHESIZE preference has been changed from a default of 512 MB to 0. A value of 0 indicates an "unlimited" tile cache size: memory usage will continue to grow as more graphics tiles are cached. You can set this preference in the IDL Workbench Preferences dialog.

Live Tools have been removed IDL 8.5: The obsolete Live Tools routines have been removed from the IDL installation. These routines have been obsolete since IDL 6.2. If you have code that uses the Live routines, you should migrate your code to use the new function graphics routines.

Code SAVE Files Created with IDL 8.3 Cannot be Restored in Previous Versions IDL 8.3: The IDL Save file revision level was increased from 11 to 12 because of the new colon operator (see the "What's New in IDL 8.3" Help topic). Save files that contain IDL code and that are created with IDL 8.3 and later versions cannot be restored in previous versions of IDL. If you want to distribute a code SAVE file to other users who may only have IDL 8.0, IDL 8.1, or IDL 8.2, you should create your SAVE file using one of these earlier IDL versions.



Note: This change does not affect older Code SAVE files or SAVE files that contain data.

IDL Core Preference Migration IDL 8.0: IDL does not automatically migrate IDL core preferences between releases. After upgrading IDL to a new version, you should:

Reset any IDL core preferences you want to use with the new IDL version by using the Preferences dialog or the PREF_SET routine.
Additional Documentation is Provided In Acrobat (PDF) Documents IDL 8.0: The online help contains all the routines and functions in the IDL language. Documentation that does not exist in the online help is provided in fully searchable PDF format as part of the IDL installation, located in <install_dir>\help\pdf.


Fixed Issues in IDL

IDL-68887: NCDF_VARGET segfaults on user's file There was a mismatch in IDL's wrapper code between the input variable and the output dimensions. NCDF_VARGET now works correctly with the user's data file.
IDL-69346: OpenSSL vulnerabilities The IDL OpenSSL library has been upgraded to 1.0.2h; the IDL curl library has been upgraded to 7.49.1.
IDL-69022, IDL-69451, IDL-69491: Function Graphics Legend Issues Various issues with plot legends have been fixed, including sizing with non-ASCII characters, the number of plot symbols, and vertical/horizontal alignment.
IDL-69431: IDLffDICOM crashes IDL when accessing file with unsupported JPEG-LS compression (1.2.840.10008.1.2.4.81) IDLffDICOM now correctly reports that these files are unsupported and returns without crashing.
IDL-69476: IDL crashes when NaNs are passed to QHULL procedure IDL now throws an error if QHULL encouters NaN values.
IDL-69479: POLAR_CONTOUR fails with double precision data POLAR_CONTOUR should now be able to handle double-precision data.
IDL-69485: Workbench seems to ignore Java CLASSPATH IDL will correctly report the value of the "java.class.path" property.
IDL-69493: object cleanup clears math error status IDL will no longer clear the math error status when returning from a user's cleanup method.
IDL-69501: MAKE_RT on Mac OS X uses wrong path IDL no longer calls "xterm -e", and MAKE_RT will now run properly.
IDL-69502: Butterworth function memory usage BUTTERWORTH now uses much less memory and is significantly faster.
IDL-69506: Unable to call CALL_FUNCTION and CALL_PROCEDURE with IDL python object You can now use CALL_FUNCTION, CALL_PROCEDURE, and EXECUTE with the Python-to-IDL Bridge.
IDL-69513: Direct Graphics render very slowly on Mac OS X with XQuartz 2.7.9 and earlier This was due to a bug in XQuartz. Upgrading your Mac to XQuartz 2.7.11 will fix the issue.
IDL-69520: IDL TIMESTAMP and SYSTIME(with /JULIAN) have incorrect fractional seconds TIMESTAMP and SYSTIME(with /JULIAN) now have the correct fractional seconds. Also, SYSTIME will now work properly beyond the 19 January 2038 UNIX millenium bug.
IDL-69527: Content Assist with Unicode characters can freeze the Workbench Content Assist can now process Unicode characters.
IDL-69535: TOARRAY method for LIST fails with arrays of structures List::ToArray now works correctly with arrays of structures.
IDL-69539: VECTOR fails with three element arrays VECTOR now works correctly with three element arrays.
IDL-69541: READ_CSV: Throws Illegal subscript error with empty columns READ_CSV now properly handles empty columns.
IDL-69548: READ_PNG has a bug that causes it to fail to read some PNG images The IDL PNG library was throwing errors for files that do not follow the PNG spec. The library now gracefully handles these bad files and returns the correct image data.
IDL-69556: NaN values cause images saved as PDF or EPS to be grayscaled The IMAGE function now properly handles images with NaN values.
IDL-69571: Adding attributes to a NCDF file can cause IDL to crash This was only a problem when adding the _FillValue attribute while in "REDEF" mode. It is due to a NetCDF library bug. The NCDF_ATTPUT documentation was updated with this information. Workaround: Be sure to set _FillValue during the initial file creation.
IDL-69583: SURFACE with ZLOG plots off of the canvas space The SURFACE, PLOT3D, and CONTOUR functions now handle the ZLOG property.
IDL-69603: IDL to Python bridge fails on Mac OS X 10.11 (El Capitan) IDL now ships with a "setup.py" script that automatically sets the proper library paths, and avoids having to set the DYLD_LIBRARY_PATH. See the IDL Python bridge documentation for install instructions.
IDL-69605: Bug in MAP function when using Polar Stereographic and FILL_COLOR The MAP function now correctly displays polar stereographic projections.
IDL-69614: MESH_VALIDATE cast doubles as floats If double-precision inputs are given to MESH_VALIDATE, the routine uses double-precision for calculations and returns double-precision results.
IDL-69615: New Debian-based Linux releases need libXp to run IDL Debian-based Linux releases (such as Ubuntu 16.04) do not come with libXp and no longer include this package in their online repositories. IDL now ships with libXp on Linux.
IDL-69643: List::ToArray with result array greater than 231 elements fails List::ToArray now successfully returns an array of any size up to your memory limits.


Known Problems in IDL

All Platforms

IDLffVideoWrite Cannot Create Animated GIFs Because of vendor issues in the ffmpeg library, IDLffVideoWrite cannot create animated GIF files. Use the WRITE_GIF routine instead.
Installation error on Windows platforms: "Key not valid for use in specified state" Some customers have reported this error during the installation process. It is caused by a Microsoft update (KB2918614), which affects the Windows installer service. Workaorund: uninstall this Microsoft update. For more information, see the Microsoft Community website.
IDL-42545: WIDGET_TREE Drop EventCan Cause IDL to Crash if an Error Exists in the DRAG_NOTIFY Callback Routine If there is an error (such as an undefined variable) in the custom DRAG_NOTIFY callback routine, IDL may freeze or crash since the error halts execution in the child routine and IDL cannot return to the calling function.

Workaround
: Handle potential problems in the callback routine by including CATCH statements in your code. See the documentation topic "Responding to Drag Notifications (Callbacks)" for more information.
IDL-55393: Breakpoints in Files Opened via Links, Shortcuts, or Alternate Paths To improve performance, IDL always compiles the first version of a file it finds in its path. If you open a file in the editor and set a breakpoint, then compile from a version of the same file with a different path, IDL will not assume that the two files are the same. As a result, IDL will not stop at the breakpoint set in the second file. Alternate paths to the same file can be constructed via UNIX links, Windows shortcuts, mapped drives, or UNC paths.

Workaround: Make sure that the full path to the file in which you set the breakpoint is the same as the full path to the compiled file. If you use the IDL Workbench, compiling using the Workbench menus or toolbars will ensure that the same path is used for compilation and debugging.
IDL-49236: Deleting a Project or a Directory Within a Project While the Project Is Open Causes Exceptions when the Workbench Exits When a project file or a directory within a project is deleted from outside the Workbench (for example, from Windows Project Explorer) while the project is open, a warning message may be issued while the Workbench is still running. An exception may occur on exiting the Workbench.
IDL-51318, IDL-51322: Formatter Preferences for Keywords and Class Names are Ignored by the Source→Format Command The keyword and class name formatting preferences set on the IDL Formatter preference page are not applied when the code is highlighted and the Source > Format command is selected.
IDL-58532: Default UTF-8 Encoding is Corrupting .pro Files with Non-English Characters Non-English characters are converted to symbols when imported into the IDL Workbench. Importing a .pro file containing non-English characters in IDL permanently corrupts the file with bad characters. Workaround: Before opening a file or before saving an open file, change the file encoding to ISO-8859-1 for Spanish or German, or to Shift-JIS for Japanese.

To change the encoding for an individual file, open the file in an IDL editor, then select File > Properties. In the Resources dialog box, change the 6Text file encoding preference.

To change the default encoding preference for IDL, select Window > Preferences. In the Preferences dialog box, choose General > Workspace. Change the Text file encoding preference.

IDL-57214, IDL-58285, IDL-58839: IDL Crashes on Macintosh and UNIX When Performing Graphics Operations Where GL Drivers are Present Possible workaround: Rename the gl_driver.so file (located in bin\bin.<platform>) to gl_driver.ba.
IDL-60473: Accessing Preferences while IDL is Busy May Hang Workbench Trying to change Preferences while IDL is busy (for example, when a lengthy command is being executed) may cause the Workbench to hang.
IDL-63902: Using the IDL_Java Bridge Causes the Workbench to Ignore the Current Directory in CLASSPATH Workaround: Copy the .class file to any other directory explicitly listed in CLASSPATH.

Macintosh Platforms

IDL-60599: On Macintosh OS, Only One Workbench Instance Can Run at a Time Even if the preference "Prompt for workspace on startup" is set and multiple workspaces are available, only one instance will run.

Workaround: Run the Workbench from the init script located in the idlde.darwin.x86_64.app/Contents/MacOS directory of your IDL installation.
IDL-64149: Widget Interface Loses Focus When Selection is Made in a Drop-down List Workaround: In X11 Preferences, enable "Click-through Inactive Windows"
IDL-67319, IDL-67320: Graphics Rendering Causes Memory and Device Errors XQuartz version 2.7.2 causes these error messages when creating IDL Graphics. When IDL is installed, the Macintosh operating system may direct you to install the most recent version of XQuartz.

Workaround: Use the latest version of XQuartz.
IDL-68845: Launching the IDL Workbench on Macintosh May Prompt Installation of Java v1.6 If you launch the IDL Workbench on Macintosh without first having Java v1.6 installed, the Macintosh OS may prompt you to install it first. This will happen even though IDL includes Java v1.7. For more information on this issue, please see: http://stackoverflow.com/questions/11919004/eclipse-4-2-mac-os-x-10-8-ml-and-java-6



Workaround: Install the Macintosh version of Java 1.6 when prompted. The Workbench will continue to use Java v1.7 as it was installed with IDL. Another workaround is to add a softlink as sudo from Frameworks 1.6 -> 1.7 as described in the link above.

Windows Platforms

IDL-27165: Using DIALOG_PICKFILE with the MULTIPLE Keyword Limits the Maximum nFiles or Maximum nBytes for a File Array When attempting to open multiple files using DIALOG_PICKFILE, the operating system has a maximum buffer of 32767 bytes.
IDL-48454: WIDGET_TIMER Can Cause Applications To Freeze Until An Event Is Sent To The Application WIDGET_TIMER events fail after 10 events. This problem happens in the following cases:
  • Timer events are chained together by setting the next timer within the handling of the current timer and before the "work" section of the event handler is performed.
  • The next timer goes off during the current timer event processing (for example, during a lengthy calculation).
Workaround: Chain timer events by setting the next timer after any computations are completed. For smoother performance, set the next timer based on how long the computations execute, which accounts for variances in machine speed. For example, to fire the timer once every second, set the next timer to 1.0 - (time to perform computation)
IDL-49641: Updating Edited Variable Values is Slow While IDL is Busy or Blocking If you edit a variable value using the IDL Workbench Variables view while IDL is busy (for example, when a lengthy command is being executed, or when a widget application is blocking), it may appear that the variable is not being updated. The new variable value is displayed when IDL is no longer busy. (Related to ID 49604.)
IDL-61842: IDL on Windows 7 May Have Unpredictable Behavior When Using Graphics The cause may be graphics cards that are unsupported in Windows 7. Please see a list of supported graphics cards on the Microsoft.com website. You may want to upgrade your graphic driver or switch the IDL Graphics preference to use software rendering.
IDL-66357: Installing into a Directory Named with Multibyte Characters May Cause the IDL Workbench to Not Launch If you are installing IDL into a directory that contains multibyte characters, path names in the idlde.ini file may be truncated. 

Workaround for 32-bit systems: In the  <install_dir>\IDLxx\bin\bin.x86\idlde.ini file, edit the following lines:

Line 2 should read: <install_dir>\IDLxx\bin\bin.x86\jre\bin Line 14 should read: Dosgi.sharedConfiguration.area=<install_dir>\IDLxx\bin\bin.x86\configuration Workaround for 64-bit systems:

In the  <install_dir>\IDLxx\bin\bin.x86_64\idlde.ini file, edit the following lines:

Line 2 should read: <install_dir>\IDLxx\bin\bin.x86_64\jre\bin Line 14 should read: Dosgi.sharedConfiguration.area=<install_dir>\IDLxx\bin\bin.x86_64\configuration
IDL-66363: Executable for a C++ Project that Uses COM_idl_connect.tlb Needs to be in \bin directory to Run If you create a C++ project that uses COM_idl_connect.tlb, the .exe must be installed in <install_dir>\bin\bin.x86 or <install_dir>\bin\bin.x86_64 to run. Alternatively, you can add the install path to the PATH environment variable.

UNIX Platforms

IDL-14221, IDL-30564: DIALOG_PRINTERSETUP Causes IDL to Hang When Called from a Modal Widget This is a known problem with no known workarounds except to use DIALOG_PRINTERSETUP with a non-modal widget.
IDL-41964: IDL Does Not Run in Security Enhanced Linux Some recent versions of Linux implement mandatory access control in the Linux kernel using the Linux Security Modules framework. IDL will not run in such an environment without a modification to the security context for the IDL binaries. Workaround: Either disable SELinux or modify the default security context for IDL. See Help Article 3092 for details.
IDL-43301: Upper Left Corner of Tree Widget is Never a Valid Drop Zone When the ability to drag and drop tree widget nodes has been enabled, the UNIX tree widget does not recognize the upper left corner of the widget as a valid drop zone. This area typically extends over the icons of the first two nodes (but not the labels). This is a vendor issue. You can drop items onto the first two nodes by moving the cursor over the labels instead of the icons.
IDL-55427: IDL Dataminer Requires latest libstdc++ Third-party libraries used by the IDL Dataminer module require a library that may not be available by default on some newer Linux systems. Attempting to run the IDL Dataminer may cause IDL to issue an error similar to the following:

% DLM_LOAD: Error loading sharable executable. Symbol: IDL_Load, File =/rsi/qa/unix/idl71/bin/bin.linux.x86_64/idl_dataminer.so libstdc++.so.5: cannot open shared object file: No such file or directory

You will need to install the appropriate libstdc++ compatible library for your platform.
IDL-57381: Missing 64-bit Library IDL requires a 64-bit version of libXp. Red Hat-based Linux distributions such as RHEL and Fedora may not install this library by default. On Red Hat you can obtain this library using the following command:

yum install libXp.x86_64
IDL-58106: DIALOG_PRINTERSETUP Crashes on Linux 64-bit running in the Workbench Calling DIALOG_PRINTERSETUP from the Workbench causes 64-bit IDL to crash. Workaround: To set up a printer, launch IDL in command line mode and run DIALOG_PRINTERSETUP. Once you have set up a printer, the information is cached in your home directory. Then printed IDL programs will go to the appropriate printer regardless of whether you are running the Workbench or command line IDL.
IDL-58460: IDL Graphics Cause Crash in Ubuntu Versions of UNIX Recent versions of Ubuntu and other Debian-based Linux distributions may not ship with the libstdc++.so.6 library, which is required by Xerces. You will need to download this library and install it in the /bin/bin.linux.x86 directory of your IDL installation. (On 64-bit installations, this directory is /bin/bin.linux.x86_64.)
IDL-59497: IDL Graphics Fail with Software Rendering on Linux IDL graphics in the Workbench in software rendering mode may fail on Linux machines if the display is local and Xinerama is not enabled. Workaround: Configure Xinerama on the system or run from the IDL command line.
IDL-68960, IDL-68965: Java-IDL Bridge with Drawable Windows may not render properly with software rendering When using the Java-IDL Bridge with drawable windows and software rendering, the window may not display anything. Note that this affects the example code in the IDL documentation (IDLWindowExample.java and IDLgrWindowExample.java).

Workaround: If nothing appears in the drawable window, change to hardware rendering by setting your drawable object's RENDERER property to zero (i.e., RENDERER=0).
IDL-69332: Selecting the Help Preference Can Crash the IDL Workbench on Some Linux Systems Selecting Window > Preferences > Help on some Linux systems may cause the IDL Workbench to crash. Workaround: Open the idlde.ini file and find the -vmargs line. Add the following new line after the -vmargs line:

-Dorg.eclipse.swt.browser.DefaultType=mozilla.