Jump to content

IDL (programming language)

From Wikipedia, the free encyclopedia
IDL (Interactive Data Language)
Paradigmvector-oriented programming
Designed byDavid Stern
DeveloperDavid Stern & ITT Visual Information Solutions (ITT VIS)
First appeared1977
Stable release
IDL 9.2 / July, 2025
Typing disciplineDynamic
Websitehttps://www.nv5geospatialsoftware.com/Products/IDL
Major implementations
IDL, GNU Data Language, Fawlty Language

IDL, short for Interactive Data Language, is a programming language used for data analysis. It is popular in particular areas of science, such as astronomy, atmospheric physics and medical imaging.[citation needed] IDL shares a common syntax with PV-Wave and originated from the same codebase, though the languages have subsequently diverged in detail. There are also free or costless implementations, such as GNU Data Language (GDL) and Fawlty Language (FL).

Overview

[edit]

IDL is vectorized, numerical, and interactive, and is commonly used for interactive processing of large amounts of data (including image processing). The syntax includes many constructs from Fortran and some from C.

IDL originated from early VMS Fortran, and its syntax still shows its heritage:

 x = findgen(100)/10
 y = sin(x)/x
 plot,x,y

The findgen function in the above example returns a one-dimensional array of floating point numbers, with values equal to a series of integers starting at 0.

Note that the operation in the second line applies in a vectorized manner to the whole 100-element array created in the first line, analogous to the way general-purpose array programming languages (such as APL, J or K) would do it. This example contains a division by zero; IDL will report an arithmetic overflow, and store a NaN value in the corresponding element of the y array (the first one), but the other array elements will be finite. The NaN is excluded from the visualization generated by the plot command.

As with most other array programming languages, IDL is very fast at doing vector operations (sometimes as fast as a well-coded custom loop in Fortran or C) but quite slow if elements need processing individually. Hence part of the art of using IDL (or any other array programming language, for that matter) for numerically heavy computations is to make use of the built-in vector operations.

History

[edit]

The predecessor versions of IDL were developed in the 1970s at the Laboratory for Atmospheric and Space Physics (LASP) at the University of Colorado at Boulder. At LASP, David Stern was involved in efforts to allow scientists to test hypotheses without employing programmers to write or modify individual applications. The first program in the evolutionary chain to IDL that Stern developed was named Rufus; it was a simple vector-oriented calculator that ran on the PDP-12. It accepted two-letter codes that specified an arithmetic operation, the input registers to serve as operands, and the destination register. A version of Rufus developed on the PDP-8 was the Mars Mariner Spectrum Editor (MMED). MMED was used by LASP scientists to interpret data from Mariner 7 and Mariner 9. Later, Stern wrote a program named SOL, which also ran on the PDP-8. Unlike its predecessors, it was a true programming language with a FORTRAN-like syntax. SOL was an array-oriented language with some primitive graphics capabilities.[1]

Stern left LASP to found Research Systems Inc. (RSI) in 1977. The first RSI product was IDL for the PDP-11.[1] In this release, the graphics supported by IDL were primarily Tektronix terminals and raster graphics displays. RSI sold its first IDL licenses to NASA's Goddard Space Flight Center and Ball Aerospace & Technologies Corp. in 1979. Two years later RSI released an initial VAX/VMS version of IDL, which was written in VAX MACRO and FORTRAN. It took advantage of the VAX virtual memory and 32-bit address space.[1] The National Center for Atmospheric Research (NCAR), the University of Michigan, the University of Colorado, and the Naval Research Laboratory started to use IDL with this version.

In 1987 RSI shifted development work of IDL to the Unix environment, which required a complete re-write of the code in C rather than a port of the existing version of VAX IDL. [1] Stern and Ali Bahrami rewrote IDL for Unix on the Sun 3, taking advantage of the re-write to extend and improve the language. Subsequently, IDL was further expanded and ported to several variants of Unix, VMS, Linux, Microsoft Windows (1992), and Mac OS (1994).

Widgets were added to IDL in 1992, providing event-driven programming with graphical user interfaces. In 1997 ION (IDL On the Net), a web server-based system, was commercially released. The first version of ENVI, an application for remote sensing multispectral and hyperspectral image analysis written in IDL, was released in 1994. ENVI was created, developed and owned by Better Solutions Consulting, LLC, until it was purchased from BSC in October 2000 by Eastman Kodak coincident with their purchase of RSI. RSI sold, marketed and supported ENVI under the terms of a license agreement with BSC, LLC from 1994 through October 2000. New object and pointer types, and limited object-oriented programming capabilities, were added to IDL in 1997.

IDL has been applied widely in space science, for example in solar physics. The European Space Agency used IDL to process almost all of the pictures of Halley's Comet taken by the Giotto spacecraft. The team repairing the Hubble Space Telescope used IDL to help them diagnose anomalies in the main mirror. In 1995, astronauts on board a Space Shuttle used IDL loaded on a laptop to study ultraviolet radiation. Currently, amongst other applications, IDL is being used for most of the analysis of the SECCHI part of the STEREO mission at NRL, USA, and at the Rutherford Appleton Laboratory, UK.

RSI became a wholly owned subsidiary of ITT Industries in March 2004. As of 15 May 2006, RSI began doing business as ITT Visual Information Solutions. Effective 31 October 2011, as a result of restructuring, that company became Exelis Visual Information Solutions. In 2015, IDL was purchased by Harris Geospatial Solutions which later became L3Harris Geospatial Solutions. In April 2023, IDL was acquired by NV5 Geospatial.

Features

[edit]

As a computer language, IDL:

  • is dynamically typed.
  • has separate namespaces for variables, functions and procedures, but no namespace hierarchy.
  • was originally single threaded but now has many multi-threaded functions and procedures.
  • has all function arguments passed by reference; but see "problems", below.
  • has named parameters called keywords which are passed by reference.
  • provides named parameter inheritance in nested routine calls, by reference or value.
  • does not require variables to be predeclared.
  • provides COMMON block declarations and system variables to share global values among routines.
  • provides a basic form of object-oriented programming, somewhat similar to Smalltalk, along with operator overloading.
  • implements a persistent, global heap of pointer and object variables, using reference counting for garbage collection.
  • compiles to an interpreted, stack-based intermediate p-code (à la Java virtual machine).
  • provides a simple and efficient index slice syntax to extract data from large arrays.
  • provides various integer sizes, as well as single and double precision floating point real and complex numbers.
  • provides composite data types such as character strings, homogeneous-type arrays, lists, hash tables, and simple (non-hierarchical) record structures of mixed data types.

Problems

[edit]

Some of these features, which make IDL very simple to use interactively, also cause difficulties when building large programs. The single namespace is particularly problematic; for example, language updates that include new built-in functions have on occasion invalidated large scientific libraries.[2]

Arrays are passed by reference, and this mechanism is an advertised feature of the language to pass data back out of a subroutine – in contrast, array slices are copied before being passed, so that data modifications do not flow back into array ranges (after the subroutine exits), violating the principle of least surprise.

Many historical irregularities survive from the early heritage of the language, requiring individual workarounds by the programmer. As an example:

  • Array indexing and subroutine entry can both be carried out with exactly the same syntax (parentheses); this ambiguity, coupled with the single namespace for all variables and subroutines, can cause code to stop working when newly defined subroutines or language extensions conflict with local variable names. IDL programmers can avoid many of these problems by using square brackets for array indexing, thereby avoiding conflicts with function names which use parentheses.

The preceding issue can be alleviated using this compiler option:

COMPILE_OPT STRICTARR

ITT Visual Information Solutions (ITT VIS), the developers of IDL, have taken explicit steps to prevent bytecode compatibility with other environments. Files containing compiled routines use a binary tagged-data-structure format that has not been officially published but has been investigated and documented by users[3] but also contain the following notice as ASCII text embedded within each saved file:

IDL Save/Restore files embody unpublished proprietary information about the IDL program. Reverse engineering of this file is therefore forbidden under the terms of the IDL End User License Agreement (IDL EULA). All IDL users are required to read and agree to the terms of the IDL EULA at the time that they install IDL. Software that reads or writes files in the IDL Save/Restore format must have a license from NV5 Geospatial Solutions, Inc. explicitly granting the right to do so. In this case, the license will be included with the software for your inspection. Please report software that does not have such a license to your account manager or sales representative.

As of August 2023, the statement has not been tested in a court of law. Also, that provision of the IDL EULA has no effect in Australia, as a result of sections 47D and 47H of that country's Copyright Act.

Examples

[edit]

The following graphics were created with IDL (source code included):

Release Dates and Platform Support

[edit]
VersionRelease dateNew featuresSupported platforms
IDL 2.0 1990
  • Array syntax for vectors and multi-dimensional matrices
  • Direct graphics engine overhauled
  • Command line interpreter upgraded
  • VMS operating system support
  • Built-in image processing functions
VMS
SunOS
HP-UX
DEC Unix
IDL 3.0 1992
  • Native widget toolkit on Unix
  • Motif widget look and feel on Unix
  • Hierarchical data structures with named tag variables
  • File selection dialog interfaces
  • Direct graphics window backing store
  • Memory management improvements
VMS
SunOS
HP-UX
ULTRIX
IRIX
AIX
Microsoft Windows 3.1
Macintosh System 7
IDL 3.1 1993
  • advanced contouring
  • Contour file bug
  • Callback mechanisms for widgets
VMS and OpenVMS
SunOS
HP-UX
IBM AIX
SGI IRIX
Ultrix
Microsoft Windows 3.1
Macintosh System 7
IDL 3.5 1994
  • Julian and Calendar functions
  • Offscreen pixel map logic
VMS and OpenVMS
SunOS
HP-UX
IBM AIX
SGI IRIX
Ultrix
Microsoft Windows 3.1, NT
Power Macintosh and Motorola Macintosh System 7
IDL 3.6 1994
  • Fixed nested file read error
  • Streamlined multi dimensional array memory allocation
VMS and OpenVMS
SunOS
HP-UX
IBM AIX
SGI IRIX
Ultrix
Microsoft Windows 3.1, NT
Power Macintosh and Motorola Macintosh System 7
IDL 3.6.1 Aug 1994
  • Fixed memory leaks on UNIX workstations
  • Corrected a VMS pathing issue
VMS and OpenVMS
SunOS
HP-UX
IBM AIX
SGI IRIX
Ultrix
Microsoft Windows 3.1, NT
Power Macintosh and Motorola Macintosh System 7
IDL 4.0 May 1995
  • Double-precision complex number support
  • Spherical gridding for irregular data points
  • IEEE NaN missing data handling
  • Expanded statistics routines (hypothesis testing, correlation, time series)
  • Cross-platform development environment enhancements
  • Callable IDL engine improvements
Win NT/95
Solaris
HP-UX
OpenVMS
AIX
IRIX
IDL 4.0.1 Aug 1995
  • Bug fixes
Win NT/95
Solaris
HP-UX
OpenVMS
AIX
IRIX
IDL 5.0 Apr 1997
  • Object graphics system
  • IDLffDICOM object for DICOM/medical imaging
  • Pointer data type
  • Object-oriented programming (classes, methods)
  • Expanded callable IDL from C/C++
  • New file format support
Win 95/NT
Solaris
HP-UX
OpenVMS
AIX
IRIX
IDL 5.0.3 Dec 1997
  • Object graphics memory leak fixes
  • Matrix math fixes for high-performance platforms
  • Licensing utility improvements
  • Medical image metadata format fixes
  • OpenVMS platform bug fixes
Win 95/NT
Solaris
HP-UX
OpenVMS
AIX
IRIX
IDL 5.1 Apr 1998
  • ActiveX control for COM integration (Visual Basic, Delphi)
  • IDL ActiveX container for third-party apps
  • Printer graphics device keyword updates
  • Color table configuration fixes
  • GUI documentation navigation infrastructure updated
Win 95/98/NT
Solaris
HP-UX
OpenVMS
AIX
IRIX
IDL 5.1.1 Jul 1998
  • COLOR_CONVERT function (RGB to HSV/HLS)
  • 24-bit color decomposition improvements
  • Object graphics polyline rendering fix
  • Binary matrix export improvements
  • ActiveX display refresh on Windows NT
  • Cross-platform signal filtering fixes
Win 95/98/NT
Solaris
HP-UX
OpenVMS
AIX
IRIX
IDL 5.2 Oct 1998
  • Unsigned integer types (16/32-bit)
  • 64-bit integer types
  • IDLgrClipboard object
  • LABEL_DATE format codes
  • DEVICE color decomposition state check
  • SIZE N_Dimensions keyword
  • Widget UNAME keyword
  • HDF 4.1r2 library support
Win 95/98/NT
Solaris
HP-UX
OpenVMS
AIX
IRIX
IDL 5.2.1 Aug 1999
  • IDL_SYSFUN_DEF2 structure
  • IDL_SysRtnAdd function
  • Runtime engine improvements
  • Internal API updates for obsolete routines
  • Callable IDL interface modernized
Win 95/98/NT
Solaris
HP-UX
OpenVMS
AIX
IRIX
IDL 5.3 Nov 1999
  • netCDF file browser
  • Reset_Session command
  • Printer device keyword options
  • IDLanROI object
  • CPU procedure for multi-processor support
  • TrueType font rendering improvements
  • Direct graphics color palette improvements
  • ActiveX performance improvements
Win 98/NT/2000
Solaris
HP-UX
Linux x86
OpenVMS
AIX
IRIX
IDL 5.4 Oct 2000
  • IDLffShape object for ESRI Shapefiles
  • READ_ASCII performance improvements
  • READ_PNG/WRITE_PNG bit depth and metadata enhancements
  • MPEG creation improvements
  • ARRAY_EQUAL function
  • BREAK and CONTINUE statements
  • FILE_CHMOD and FILE_DELETE functions
  • MATRIX_MULTIPLY function
  • FILE_WHICH function
  • MAKE_DLL function
Win NT/2000/XP
Solaris
HP-UX
Linux x86
OpenVMS
AIX
IRIX
IDL 5.5 Oct 2001
  • REAL_PART_OF_ROUTINE function
  • Null pointer constant
  • Macintosh directory alias handling
  • MPEG export in object graphics
  • DataMiner SQL driver updates
  • File I/O performance improvements
  • OpenGL mesh rendering improvements
  • Array creation routine improvements
  • Change to CALL_EXTERNAL interface
  • HDF/HDF-EOS parameter changes
Win NT/2000/XP
Solaris
HP-UX
Linux x86
Mac OS 9
OpenVMS
AIX
IRIX
IDL 5.6 Nov 2002
  • IDLDrawX3 ActiveX control
  • Mac OS X performance improvements
  • Coyote graphics library compatibility
  • File handling improvements
  • SolarSoftWare integration updates
  • Memory handling improvements
Win NT/2000/XP
Solaris
HP-UX
Linux x86
macOS X 10.1+
AIX
IRIX
IDL 6.0 Jul 2003
  • iTools suite (iSurface, iPlot, iImage, iVolume)
  • Pre-built user interfaces for components added
  • IDL Virtual Machine
  • ActiveX control support updated for Windows
  • New file formats: MRID, GRIB, McIDAS
  • WAVEs and Curvefit updates
  • Support for Apple Mac OS X added
  • Object Graphics printing and export enhancements
Win 2000/XP
Solaris
HP-UX
Linux x86
macOS X 10.2+
AIX
IRIX
IDL 6.1 Jul 2004
  • Alpha channel support added for object graphics
  • Lighting and color enhancements
  • Mapping: cartesian coordinates without map system variable
  • CMYK color support added in direct and object graphics.
  • Vector graphics output support expanded.
  • Hierarchical cluster tree and dendrite plotting
Win 2000/XP
Solaris
HP-UX
Linux x86
macOS X 10.3+
AIX
IRIX
IDL 6.2 Jul 2005
  • IDL-Java Bridge introduced
  • IDLgrImage Tiling and Texture Mapping
  • IDL DICOM Network Services Module
  • IDL System Preferences on UNIX
  • SCOPE_TRACEBACK function
  • New Help System
Win XP
Solaris
HP-UX
Linux x86
macOS X 10.3+ (PPC/Intel)
IDL 6.3 Apr 2006
  • IDL-IDL Bridge for running concurrent background processes
  • IDL Export Bridge Assistant to package objects as Java classes or COM DLLs
  • IDL Connector Objects for integrating IDL into external applications
  • Enhanced HDF5 support for opaque, variable length, and enumerated data types
  • Motion JPEG 2000 support for opening, creating, and reading/writing animations
  • DICOM Network Services API for programmatic control over medical image applications
  • iVector Tool added to the iTools suite
  • Tree Widget Drag and Drop functionality for building user interfaces
  • Multi-Monitor support for managing visualizations across multiple screens
  • Text Object Performance optimizations for faster rendering
  • Cross-Platform Initialization with the new IDL_Initialize function
  • Windows XP 64-Bit support
  • Mac OS X Large File Support on the HFS+ filesystem
  • Butterworth and Canny Edge filters
Win XP/XP64
Solaris
Linux x86/x86_64
macOS X 10.4+ (PPC/Intel)
IDL 6.4 May 2007
  • Add IDL on 32-bit Mac Intel
  • Support for OGC
  • Obsoleted IDLDrawWidget ActiveX control
  • OpenGL shaders
  • Color mapping functions
  • Edge detection filters
  • Noise functions
  • New CDF routines
  • IDL_IDLBridge on Windows/Linux
  • IDLnetURL class
  • Java export bridge on Windows/Linux
Win XP/Vista
Solaris
Linux x86/x86_64
macOS X (PPC/Intel)
IDL 7.0 Nov 2007
  • IDL Workbench development environment
  • Removed GUI Builder
  • Dropped IBM AIX, SGI IRIX
  • Java import/export bridge
  • Make_rt runtime app routine
  • Profiler code profiling routine
Win XP/Vista
Solaris
Linux x86/x86_64
macOS X (Intel)
IDL7.1 May 2009
  • Add IDL on 64-bit macOS Intel
  • Add command-line IDL for 64-bit Solaris x86
  • IDLffDicomEx on 64-bit Windows
  • 64-bit COM export bridge on Windows
  • Command-line IDL on Windows
  • Image processing filter routines
  • FFT /center keyword
  • Read/write CSV files
Win XP/Vista/7
Solaris x86_64
Linux x86/x86_64
macOS x86_64
IDL 8.0 Jul 2010
  • Dropped Apple PowerPC support
  • New graphics functions: Plot, barplot, errorplot, polarplot, plot3d, imae, contour, surface, map, vector, streamline
  • IDLgrPDF
  • !null, empty brackets [ ]
  • Automatic garbage collection for objects & pointers
  • List, Hash classes
  • Foreach operator
  • Negative array indices
  • Simpler object syntax, operator overload
Win XP/Vista/7
Solaris
Linux x86/x86_64
macOS x86_64
IDL 8.1 Apr 2011
  • IDLffVideoWrite
  • Map function with hi-res coastlines
  • GRIB read/write
  • Graphics save to KML/KMZ
  • Workbench source-control tools
  • I18N conversion routines on Windows
Win XP/Vista/7
Solaris
Linux x86_64
macOS x86_64
IDL 8.2 May 2012
  • Dropped 32-bit Solaris
  • Dropped 32-bit Mac Intel
  • Graphics function updates
  • DejaVuSans symbol font
  • Widget_Tree checkboxes
Win XP/Vista/7/8
Solaris x86_64
Linux x86_64
macOS x86_64
IDL 8.2.1
  • New graphics antialiasing
  • Colorbar, legend functions
  • Plot histogram function
  • Workbench class hierarchy
  • Workbench macros
  • Proleptic Gregorian Calendar
Win XP/Vista/7/8
Solaris x86_64
Linux x86_64
macOS x86_64
IDL 8.2.2
  • Boxplot function
  • Scatterplot, scatterplot3d functions
  • Tic/toc timing routines
  • !const system variable
  • Random numbers use Mersenne Twister algorithm
Win XP/Vista/7/8
Solaris x86_64
Linux x86_64
macOS x86_64
IDL 8.2.3
  • Bubbleplot function
  • Volume function
  • ZIP, TAR, GZIP, ZLIB compress/uncompress
  • Additional GRIB routines
  • IDLffVideoRead
Win XP/Vista/7/8
Solaris x86_64
Linux x86_64
macOS x86_64
IDL 8.3 Dec 2013
  • Dynamic equation visualization
  • Implied print
  • Async non-blocking timers
  • System clipboard
  • Static methods/properties
  • Colon operator for array creation [0:1000]
  • IDLUnit
  • LambertW function
  • HDF5 wrapper functions
  • Dictionary, OrderedHash class
Win 7/8
Solaris
Linux x86_64
macOS 10.8+
IDL 8.4 Oct 2014
  • BigInteger
  • Boolean type
  • Code coverage in Workbench
  • FFT_PowerSpectrum
  • Lambda functions
  • Variable attributes
  • Variable functions
Win 7/8/8.1
Linux x86_64
macOS 10.9+
IDL 8.4.1 Apr 2015
  • HDF_Parse function
  • NetCDF helper routines
  • Locale_Get/Set
Win 7/8/8.1
Linux x86_64
macOS 10.9+
IDL 8.5 Jul 2015
  • IDL Python bridge added
  • WGET function
  • READ_CSV from URLs
  • SOCKET: Server side sockets
Win 7/8/10
Linux x86_64
macOS 10.10+
IDL 8.5.1 Oct 2015
  • FILE_MODTIME function
  • IDLnetURL::URLEncode/URLDecode
  • Write PNG to buffer
Win 7/8/10
Linux x86_64
macOS 10.10+
IDL 8.5.2 May 2016
  • BUILD_DATE field changed to include the specific build revision identifier within the !VERSION system variable
  • IDLHydrate and IDLDehydrate serialization functions stabilized for nested structure transfers across parallel session bridges
  • Python Bridge integration enhanced to expand direct bidirectional calling access between routines and modules
  • Support added for the modern Geospatial Services Framework service engines to execute headless tasks
  • File parsing internal routines updated to handle complex multidimensional structures
Win 7/8/10
Linux x86_64 (RHEL 6+)
macOS 10.11+
IDL 8.6 Dec 2016
  • Dropped IDL on Solaris
  • Dropped 32-bit installers on Windows, still shipped 32-bit binaries
  • FlexNet (FNE/FNO) licensing
  • Add Python 3.5, added setup.py
  • Added check for updates
  • IDL Tasks, Task Engine
  • NCDF_Parse function
  • New DejaVu TrueType fonts
  • LaTeX math symbols for Text function
Win 7/8/10
Linux x86_64 (RHEL 6/7)
macOS 10.12+
IDL 8.6.1 Jul 2017
  • Add Python 3.6
  • Hex constants
  • XML_Parse routine
  • TrueType font updates
Win 7/8/10
Linux x86_64 (RHEL 6/7)
macOS 10.12+
IDL 8.7 Feb 2018
  • Async job classes
Win 7/10
Linux x86_64 (RHEL 6/7)
macOS 10.12+
IDL 8.7.1 Sep 2018
  • Remove Python 3.4
  • IDL Machine Learning framework
  • IDL Package Manager
Win 7/10
Linux x86_64 (RHEL 6/7)
macOS 10.13+
IDL 8.7.2 13 Feb 2019
  • Widget_browser on Windows/Linux
  • Fillplot function
Win 7/10
Linux x86_64 (RHEL 6/7)
macOS 10.13+
IDL 8.7.3 Feb 2020
  • Matrix multiply uses Intel Math Kernel Library
Win 7/10
Linux x86_64 (RHEL 7)
macOS 10.14+
IDL 8.8 1 Aug 2020
  • Add Python 3.7, 3.8
  • Remove Python 2.7 and 3.5
  • IDL Workbench themes
  • New video codecs
Win 10
Linux x86_64 (RHEL 7/8, Ubuntu 18.04)
macOS 10.14+
IDL 8.8.1 8 Sep 2021
  • Alan / Next-Gen license technology "Preview"
  • Add Python 3.9
  • Dictionary, hash, list, orderedhash ported to C++
  • FFT uses Intel Math Kernel Library
Win 10
Linux x86_64 (RHEL 7/8, Ubuntu 20.04)
macOS 11+
IDL 8.8.2 7 Apr 2022
  • Add Python 3.10
  • Remove Python 3.6
  • Remove Windows 32-bit support for video read/write
Win 10/11
Linux x86_64 (RHEL 7/8, Ubuntu 20.04)
macOS 11/12
IDL 8.8.3 1 Nov 2022
  • RHEL 7 no longer supported (RedHat EOL); Linux minimum kernel/glibc = 4.18.0/2.28
  • RSA public/private key generation
  • compile_code routine
  • running_stats/running_covariance
  • make_rt rewrite
  • IDL/ENVI code signing on macOS
Win 10/11
Linux x86_64 (RHEL 8+, Ubuntu 20.04)
macOS 12/13
IDL 8.9 1 Apr 2023
  • Removed 32-bit IDL binaries
  • Remove Python 3.7
  • Official release of new Alan licensing engine
  • ASDF, YAML file format
  • Template Literal Strings
  • compile_opt idl3, float64
  • removed 32-bit COM, DXF
Win 10/11
Linux x86_64 (RHEL 8/9, Ubuntu 20.04)
macOS 12/13
IDL 9.0 1 Nov 2023
  • Added support for Mac ARM (Apple Silicon)
  • Add Python 3.11
  • HttpRequest class
  • IDL Extension for VS Code (out of band)
Win 10/11
Linux x86_64 (RHEL 8/9, Ubuntu 22.04)
macOS 13/14 (Intel & ARM)
IDL 9.1 24 Sep 2024
  • Add Python 3.12
  • Remove Python 3.8
  • Remove all DXF functionality
  • Dark Mode on Windows widgets
  • Spherical Harmonic Transforms
  • Binary16 half-precision float read/convert
  • Command-line progress bar
  • New SVG icons
  • Map shapefile updates
  • Widget_browser for Mac
  • Dataminer installed automatically
Win 10/11
Linux x86_64 (RHEL 8/9, Ubuntu 22.04)
macOS 14/15 (Intel & ARM)
IDL 9.2 24 Jul 2025
  • BZIP2 Support
  • Embedded Python (3.13) for IDL and ENVI
  • FILE_HASH
  • HttpRequest PATCH
  • Windows Command Line rewrite
  • CREATE_STRUCT PRESERVE_CASE keyword
  • HttpRequest FILENAME keyword
  • IDL Package Manager - IDL/ENVI Repository Portals
  • ISA STRICT_ARRAY keyword
  • Physical Constants updated
  • Python::GetAttr method
  • Shapefiles huge integer attributes
  • SORT function STABLE keyword
  • MAKE_RT smaller distribution
  • Trailing Commas in Array and Structures
  • WIDGET_INFO SCREENSHOT keyword
  • WIDGET_TABLE repeat Format strings
  • FILE_POLL_INPUT with Windows pipes
Win 10/11
Linux x86_64 (RHEL 8/9, Ubuntu 22.04)
macOS 14/15 (Intel & ARM)
IDL 9.3 13 Aug 2026
  • Arrays up to 64 dimensions
  • BigFloat
  • Congrid with Lanczos
  • Dialog_Calendar
  • Graphics output to GLTF/GLB/Cesium 3D
  • Graphics output to X3D
  • HEAP_DEBUG procedure
  • IDL_GETPID function
  • READ_TEXTFILE
  • SINC function
  • TYPEMIN/TYPEMAX functions
  • Websocket Client
  • IDL_String methods without parentheses
  • TEXT/IDLgrText line spacing
  • Embedded Python 3.14
  • Running_Covariance with arrays
  • Widget_Draw/Text/Tree enhancements
Win 10/11
Linux x86_64 (RHEL 8/9, Ubuntu 24.04)
macOS 15 (Intel & ARM)

See also

[edit]
  • List of numerical-analysis software
  • ENVI – an image processing software package built in IDL
  • IRAF – a free, graphical data reduction environment produced by NOAO
  • MATLAB – a technical computing environment providing similar capabilities to IDL
  • NumPy – an extension for Python that gives it array math capabilities similar to those of IDL
  • Perl Data Language (PDL) – An extension to Perl that gives it array math capabilities similar to those of IDL
  • Scilab - a high-level, numerically oriented programming language designed for Scientific computing and interfaces
  • Solarsoft – library for solar data analysis and spacecraft operation activities written predominately in IDL
  • GDL – GNU Data Language, a free implementation similar to IDL.
  • Fawlty Language – Fawlty Language is an IDL8 (Interactive Data Language) compatible compiler.

References

[edit]
  1. 1 2 3 4 Schienle, Mike (1991-01-19). "IDL FAQ". Archived from the original on 2018-10-07. Retrieved 8 February 2019.
  2. Fanning, David. "Program Naming Conflicts in IDL 8". Archived from the original on 6 March 2014. Retrieved 30 September 2014.
  3. Markwardt, Craig (2011-12-21). "Unofficial Format Specification of the IDL "SAVE" File". Retrieved 2013-02-13.
[edit]