# IDL 7.0 Release Notes

Note Visit www.ittvis.com/IDL for additional information and late-breaking release notes.

The information found in these release notes is separated into the following sections:

- New Features in IDL 7.0
- Backward-Compatibility Issues in IDL 7.0
- Problems Corrected in IDL 7.0
- Known Problems in IDL 7.0

ID numbers are included where applicable to allow ITT Visual Information Solutions to respond to inquiries more easily.

## New Features in IDL 7.0

For information on new features in this release, see the What's New in IDL 7.0 manual. What's New is included as part of the IDL online help system.

back to top

## Backward-Compatibility Issues in IDL 7.0

- All Platforms
- UNIX Platforms

### All Platforms

ID | Description
--- | ---
44008 | Export Bridges: IDL Error State and Successful Method Return
If your client creates an instance of a COM/Java Export Bridge wrapper object, and calls an object method whose code throws an error, the wrapped method will return an error unless the referenced code resets the internal IDL error state. In this circumstance, it is best if the wrapped code catches its own error, handles it, and resets the IDL error state. You can reset the IDL error state in the error handling catch block by calling the MESSAGE procedure: `MESSAGE, /RESET` This procedure call sets the !ERROR_STATE system variable back to the "success" state.
49528 | !PATH Seems to Change on its own
By default, the IDL Workbench manages the value of !PATH so that files in your project directories are found. The consequences of this automatic management may be unexpected, especially if you also modify the value of !PATH manually. See "IDL Path Management" in the IDL online help system for a detailed explanation.
n/a | PREF_MIGRATE Routine Not Called Automatically
Beginning with IDL 7.0, PREF_MIGRATE is no longer called automatically the first time IDL is run. You can still use PREF_MIGRATE to manually migrate IDL system preferences. IDL Workbench preferences are managed separately, by the workbench itself. For more on the difference between system and workbench preferences, see "IDL System Preferences" in the IDL Reference Guide.
n/a | New Process for Debugging Shared Library Code
Beginning with IDL 7.0, when the IDL Workbench is running there are two processes to which you can connect your debugger: the IDL Workbench (`idlde`) and the IDL out-of-process server (`idl_opserver`). The `idl_opserver` is the IDL process that runs the IDL interpreter and loads shared libraries (DLMs). To debug your shared library code, you need to attach your debugger (gdb, Visual Studio, etc.) to the `idl_opserver` process. On Windows, using Visual Studio, you can select Attach to Process and choose the `idl_opserver.exe` process. On Unix, using `gdb` or `dbx`, you can use the `ps` command to retrieve the ID of the `idl_opserver` process, and then attach your debugger to that process ID. If you are not using the IDL Workbench, continue to connect to the `idl` process.

back to top

### Windows Platforms

ID | Description
--- | ---
n/a | Location of the IDL Workbench Executable (idlde.exe) has changed in IDL 7.0
The location of the idlde.exe file has changed. In IDL 6.4 the default location was: `C:\Program Files\ITT\IDL64\bin\bin.x86\idlde.exe` In IDL 7.0 the default location is: `C:\Program Files\ITT\IDL70\idlde\idlde.exe`

### UNIX Platforms

ID | Description
--- | ---
n/a | IDL Installation Can Fail on Linux 64-bit Systems That Do Not Contain 32-Bit Compatibility Libraries
IDL may not install correctly on a pure 64-bit Linux system. If installation fails, install your platform's 32-bit compatibility libraries.
48917 49373 | Breakpoints in Files Opened via UNIX Links
To improve performance, IDL always compiles the first version of a file it finds in its path. If you open a file that has been linked using the UNIX `ln` command 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 linked file. 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.
49251 | IDL Workbench Does Not Automatically Run in Background
In IDL 7.0, when the IDL Workbench (idlde) is run from a terminal window, the window is not available for other commands while the Workbench is running. Workaround: To run the IDL Workbench in the background, add an ampersand (&) to the terminal command: `idlde &`

back to top

## Problems Corrected in IDL 7.0

- Windows Platforms
- Macintosh Platforms

### Windows Platforms

ID | Description
--- | ---
46881 | License Wizard Does Not Run on Solaris with Java Desktop
In IDL 6.4, Solaris Java Desktop did not correctly run the License Wizard after IDL installation. This problem has been corrected.
47474 | IDL crashes when attempting graphics operations on some Linux distributions
On some linux systems, IDL 6.4 crashed when a attempting graphics operations on certain Linux distributions when direct rendering is enabled. This may include rendering the IDL splash screen when starting IDL. The problem was due to a conflict with DRI drivers and has been corrected.

### Macintosh Platforms

ID | Description
--- | ---
42012 | Errors When Running the ITTLicense Application
In IDL 6.4, sometimes the ITTLicense application failed to start the license server automatically at boot time. This is a permissions problem. Now IDL issues a warning message if the user does not have permission to write to the installation directory when attempting to install the license manager.
47331 | Missing Manifest Files
In IDL 6.4, a line was inadvertently left out of the `manifest_rt.txt` file. This problem has been corrected.

back to top

## Known Problems in IDL 7.0

- All Platforms
- Windows Platforms
- UNIX Platforms
- Macintosh Platforms

### All Platforms

ID | Description
--- | ---
40768 | Firewall Can Catch Socket Communication between IDL and the Help System
IDL and its help systems (both the current help viewer and the older IDL Assistant help viewer) communicate via sockets, and some firewalls might question this communication. IDL is not trying to access the Internet; the communication is strictly between IDL and its locally installed help systems. If prompted to allow or deny the communication, you should allow it; otherwise, you will not be able to see or use IDL's online help. You might need to configure your firewall software to allow the communication.
42545 | WIDGET_TREE Drop Event Can Cause IDL to Crash if an Error Exists in the DRAG_NOTIFY Callback Routine
A tree widget can be configured to support drag and drop functionality. This functionality includes a callback to either the default callback routine, which provides information about where a node can be dropped, or a callback to a custom callback routine that is specified using the DRAG_NOTIFY keyword. In either case, the parent WIDGET_TREE function calls the child callback routine and the IDL processing focus switches to the callback routine. If there is an error (such as an undefined variable) in the custom callback routine, IDL may freeze or crash since the error halts execution in the child routine and IDL is unable to return to the calling function. Workaround: Handle potential problems in the callback routine by including CATCH statements in the code you are developing. See the documentation topic "Responding to Drag Notifications (Callbacks)" for more information.
43054 | Java Export Bridge: Hardware Rendering Not Supported By All Video Cards
When running IDL applications through the Java Export Bridge, some video cards on some systems experience problems that prevent them from rendering graphics properly. As a result, the Java Export Bridge creates applications that use IDL's built-in (software) renderer by default. Even systems that use hardware rendering successfully when running IDL itself can experience the problem when running the Java Export Bridge. Workaround: If you know that the target system for your application will display graphics properly using hardware rendering, you can explicitly set the renderer in the Init method for your application. Since a graphical application must inherit (directly or indirectly) from the IDLgrWindow class, you can set the RENDERER property equal to 0 to force the use of hardware (OpenGL) rendering if it is available. Note that the RENDERER property is not exported by the Export Bridge Assistant; the value must be hard-coded in your IDL object code.
43116 | Text Annotations Added During Macro Creation Are Incorrectly Placed or Missing
The iTools let you create a macro that records the operations that occur within a visualization window. If you add a text annotation during macro recording and close the annotation operation by clicking on the view instead of pressing the Enter key, an additional translation event is added to the macro. This causes the text annotation to be incorrectly placed when you run the macro. Workaround: Always close the creation of a text annotation by pressing the Enter key (instead of by clicking on the view) when recording a macro in an iTool window.
43599 | A 32-bit Application Cannot be Built On 64-Bit Linux
It is not possible to use 32-bit libraries on a 64-bit Linux machine to build a 32-bit Callable IDL application. Workaround: Build a 32-bit application on a 32-bit machine. Then you can execute that application on a 64-bit system that contains 32-bit compatibility libraries.
43733 | Connectivity Bridges: Dialog Windows May Appear Behind the Main Application Interface
Dialog windows that are launched from a child IDL_IDLBridge process, or other background process such as an Export Connectivity Bridge wrapper object may appear behind the current application interface and be completely hidden. The background process has no way to force a dialog to appear in the foreground.
43808 | Export Bridges: IDL Error Codes May Change Between Releases
Both the COM and Java Export Bridges allow you to catch and respond to errors generated by IDL. Errors are returned from IDL in the form of error codes, corresponding to the value of the !ERROR_STATE.CODE system variable field. The code used to designate a specific IDL error condition can change from one release of IDL to another. As a result, COM or Java code you write that reacts to a specific error code value may behave differently with different IDL releases.
43850 | Java Export Bridge: Error if Non-Drawable Object Instantiated First
If you create a Java application that incorporates both drawable and non-drawable IDL wrapper objects, instantiating the non-drawable object before the drawable object will cause a runtime error that looks something like:
    Exception in thread "main" java.lang.UnsatisfiedLinkError: Native Library
    path_to_your_AWT_library already loaded in another classloader
Workaround: Create an instance of a drawable wrapper object first. This will initialize the Java export bridge correctly, allowing both drawable and non-drawable wrapper objects to execute properly.
48165 | Deleting Linked Folders Does Not Update !path or IDL_PATH
When a linked folder is deleted from a project, the folder is not removed from the `!path` system variable and the `IDL_PATH` system preference. Workaround: Remove these items manually from your path settings.
48550 | The STATUS Keyword for EXIT Does Not Work in IDL 7.0 Workbench
The EXIT procedure quits the IDL Workbench and exits back to the operating system. IDL does not correctly return the exit status set by the STATUS keyword.
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 (for example, from Windows Project Explorer), while the project is open may result in a warning message while the Workbench is still running, and an exception on exiting the Workbench.

back to top

### Windows Platforms

ID | Description
--- | ---
40851 | WIDGET_DRAW WHEEL_EVENTS Can Arrive Out of Sequence of Other Draw-Widget Events
The draw widget delivers scroll-wheel events to the IDL event queue when it gets the wheel event from Windows. The draw widget cannot know whether events are arriving late from Windows. This is not an IDL problem. If you want to take advantage of the scroll-wheel functionality, you might want to ensure that you have a robust scroll-wheel-enabled mouse driver. Check your mouse's documentation for more information.
42359 | Incompatibility Between IDL and Microsoft Intelli-Mouse with Fingerprint Reader
If you are using the Microsoft Intelli-Mouse with Fingerprint Reader on the system that runs IDL, IDL may close unexpectedly in some cases. Workaround: Shut down the Digital Personal Password manager software that comes with the Microsoft Intelli-Mouse.
46816 | Installation Program Failures: Error 1719
On some systems, the IDL installation program may exit with the following error:
    Error 1719.Windows Installer service could not be accessed.  Contact your
    support personnel to verify that it is properly registered and enabled.
Workaround: Restart the IDL installer. If installation still fails, reboot the computer and restart the installer. Background: This error occurs when the Microsoft installer engine is older than the version required by the IDL installation package. In this situation, the IDL installer updates the installer engine. In some cases, the installation procedure may be able to proceed; in others (most notably on Windows 2000 systems), a restart of the installer or of the operating system may be required.
47445 | Object Creation Failure with Embedded License
Attempting to create an export object with an embedded license fails when no printer is set up. Workaround: Install and set up a printer before running 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 take to 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``)`, or to `0.0` if the value is negative.
49389 | Windows and Dialogs opened by IDL Can Display Behind the Workbench
If the last window opened by IDL displays behind the Workbench, then all subsequent windows and dialogs will open behind the Workbench. If a window is brought into the foreground and dismissed, the next window or dialog that is opened appears in front of the Workbench.
49522 | CVS Cheat Sheets Show Up In IDL Workbench Cheat Sheet List
Selecting Cheat Sheets from the Workbench *Help* menu shows a "Team/CVS" category containing two CVS-related cheat sheets. CVS functionality is not included in the IDL Workbench by default, and these cheat sheets will not function properly. If you later install the CVS plug-ins, these cheat sheets will function normally.
49604 | Workbench Fails to Stop on Breakpoints When IDL is Busy (Blocking)
When a program containing breakpoints is run while IDL is busy (when a lengthy command is being executed, or when a widget application is blocking, for example), IDL does not stop at the set breakpoints. When IDL is no longer busy, running the program with breakpoints successfully stops at the set breakpoints. (Related to ID 49641.)
49641 | Updating Edited Variable Values While IDL is Busy or Blocking is Slow
If you edit a variable value using the IDL Workbench Variables view while IDL is busy (when a lengthy command is being executed, or when a widget application is blocking, for example), 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.)

back to top

### UNIX Platforms

ID | Description
--- | ---
30564 | DIALOG_PRINTERSETUP Causes IDL to Hang When Called from Modal Widget
This is a known problem with no known workarounds except to use DIALOG_PRINTERSETUP with a non-model widget.
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 make a modification to the default security context for IDL. See Tech Tip 3092 for details.
42609 | WIDGET_BUTTON Bitmaps Not Found in Resource Directory
Using the VALUE keyword of WIDGET_BUTTON lets you specify the name of a bitmap image file to be used as the button label. On UNIX, this bitmap file is not being located in the IDL_DIR`/resource/bitmaps` directory and causes a "Can't open bitmap file" error. This occurs when only the name of the file (and not a complete path) is given. On Windows, a bitmap file identified by name only is correctly located. Workaround: Always specify the complete path to the bitmap file. For example, to use the `arrow.bmp` file, you could use FILEPATH as follows:
       bmpath = FILEPATH('arrow.bmp', SUBDIRECTORY=['resource', 'bitmaps'])
       b = WIDGET_BUTTON( tlb, VALUE=bmpath, /BITMAP)
42641 | Error May Occur After First Launch of IDL Assistant with Root Privileges
If you receive the following error after the first use of the IDL Assistant (the online-help viewer), "QSetting::sync: filename is null/empty," the problem is most likely due to file permissions. Workaround: Change the ownership on the .`qt` and .`assistant` folders and files in your home directory:
       chown -R <user> .qt
       chown -R <user> .assistant
where `<user>` is your user name.
43301 | Upper Left Corner of Tree Widget is Never 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 mouse cursor over the labels instead of the icons.
46672 | Using WAIT with IDLffMJPEG2000 on Solaris 10 causes IDL to freeze
On Solaris 10 systems, using a WAIT statement in code that calls IDLffMJPEG2000 object methods may cause IDL to freeze. Workaround: Use a widget timer to generate WIDGET_TIMER events in place of WAIT to control the flow of execution. For an example using a widget timer to control the frame rate of displayed frames, see `IDL_DIR``/examples/doc/objects/mj2_timer_doc.pro`, where `IDL_DIR` is the location of your IDL installation. For additional information, see "Controlling Playback Rate" in the "Animations" chapter of the Using IDL manual.
47348 | Unable To Create Exported IDL object in Virtual Machine Mode on Solaris When LANG Environment Variable is Set to C
The IDL Virtual Machine does not start when called from a java program or the command line because the splash screen cannot be displayed when the LANG environment variable is set to C. Workaround: Unset the LANG environment variable before using Java to run your exported IDL code. Note that other programs (including IDL) may rely on the value of the ~LANG~ environment variable, so removing it permanently from your environment may have unwanted side effects.
49527 | IDL Interpreter Suspends on OBJ_NEW('idlgrwindow') Until IDLgrWindow is Partially Visible (Redhat Enterprise 4)
When OBJ_NEW('idlgrwindow') is run from the Workbench, if a new window displays beneath the Workbench window, then the command line is desensitized until the Workbench is moved or minimized to make the IDLgrWindow at least partially visible.
49610 | Closing the Workbench While It Is Iconified Causes It To Lock Up (Solaris)
When at least one IDL process is running and the Workbench is iconified (minimized) and then closed from the icon, the Workbench hangs until all process are manually killed. Workaround: Use the IDL Workbench menu or the IDL EXIT command to shut down the IDL Workbench.

back to top

### Macintosh Platforms

ID | Description
--- | ---
41410 | Click-Through Focus Problem on Mac OS X 10.4 (Tiger)
In some instances, focus can remain stuck on a window, despite subsequent window commands. For example, if you type these consecutive commands at the IDL command line:
    PLOT, FINDGEN(99)
    ZOOM
the plot window does not get focus after the ZOOM command. The command locks up IDL because any attempt to click on the plot window, in order to tell ZOOM where to zoom, is thwarted because the window manager is swallowing the focus click. Workaround: Change the X11 start-up parameters. Do the following: 1. Open an X11 terminal window. 2. Enter the following at the shell prompt:
       defaults write com.apple.x11 wm_click_through -bool true
3. Quit X11. The new default will not take effect until after you restart X11, but it will persist from that point (i.e., you will not have to make the change again).
41916 | Errors When Starting the DICOM Service
If you install the DICOM Network Services module, the installer allows you to specify that the DICOM service be started automatically at boot time. If you encounter an error that looks like:
       dicomexstorscp_install error
       There was an error encountered running
       idl_7.0/bin/dicomexstorscp_install.
then your Administrator group may not have permission to modify items in the appropriate StartupItems directory. Workaround: 1. Log in as root. 2. Open a terminal window. 3. Enter the following commands:
       cd ~
       touch .profile
4. Change to the directory where ITT Visual Information Solutions products are installed (by default, `/Applications/itt`):
       cd /Applications/itt
5. Enter the following command:
       ./idl70/bin/dicomexstorscp_install
47334 | Java Bridge: Macintosh uses a different version of Java demo_world example
A java incompatibility on Macintosh causes the demo_world example to work incorrectly. The program (located in `ITT_DIR``\IDL70\resource\bridges\import\java\examples\)` should allow a user to click and drag to change the focus of the globe, but does not work on Macintosh.
47668 | Drag and drop .pro file from Navigator to Editor does not open the file
In some cases, dragging a file with the .pro extension from the Navigator to the IDL Workbench Editor is unsuccessful. Workaround: Open .pro files from within the IDL Workbench. If installed in Applications, double-clicking on a file it will open it in the Workbench.
48280 | CDF Routines Read Data Incorrectly on Intel-based Macintosh
The version of the CDF library included with IDL 7.0 does not correctly adjust for the little-endian byte ordering used by Intel-based Macintoshes. In some cases, this may result in IDL on an Intel-based Macintosh reading the data in a CDF file incorrectly. Workaround: The CDF libraries are maintained by CDF users at the Goddard Space Flight Center. A patched library is available from Goddard at http://cdf.gsfc.nasa.gov/html/cdf_patch_for_idl6x_new.html Note that this patch works for IDL 7.0 as well as for IDL 6.4.

back to top