GNU Data Language (GDL) is a free/libre/open source incremental compiler compatible with IDL and to some extent with PV-WAVE. Together with its library routines it serves as a tool for data analysis and visualization in such disciplines as astronomy, geosciences and medical imaging. GDL is free software licensed under the GPL. GDL is developed by an international team of volunteers led by Marc Schellens - the project's founder
GDL as a language is dynamically-typed, vectorized and has object-oriented programming capabilities. GDL library routines handle numerical calculations, data visualisation, signal/image processing, interaction with host OS and data input/output. GDL supports several data formats such as netCDF, HDF4, HDF5, GRIB, PNG, TIFF, DICOM, etc. Graphical output is handled by X11, PostScript, SVG or z-buffer terminals, the last one allowing output graphics (plots) to be saved in a variety of raster graphics formats. GDL features integrated debugging facilities. GDL has also a Python bridge (Python code can be called from GDL; GDL can be compiled as a Python module).
Packaged versions of GDL are available for several Linux and BSD flavours as well as Mac OS X. The source code compiles as well on other UNIX systems, including Solaris.
Full syntax compatibility with IDL up to version 7.1 (for >8.0 see below):
- objects, pointers, structs and arrays,
- system, common block and assoc variables,
- all operators and datatypes,
- _EXTRA, _STRICT_EXTRA and _REF_EXTRA keywords...
Supported IDL 8.0 language elements:
- FOREACH loop
- negative array indices
- garbage collection pointers and objects
- call methods on an object using "." (e. g. object.aMemberProcedure,arg1)
The file input output system is fully implemented
(Exception: For formatted I/O the C() sub-codes are not supported yet)
Supported file formats include:
- netCDF 3 (read/write)
- HDF4 (read/write)
- HDF5 (read-only, limited support)
- IDL SAVE files (supported using the Craig Markwardt's CMSVLIB)
- FITS files, when Astro Lib. is in the path ( test suite OK)
- various graphic formats (e.g. PNG if compiled with ImageMagick)
Graphical output is partially implemented. The PLOT, OPLOT, PLOTS, XYOUTS, CONTOUR, SURFACE, TVRD and TV commands (along with WINDOW, WDELETE, SET_PLOT, WSET, TVLCT) work (important keywords, some !P system variable tags and multi-plots are supported) for X windows, z-buffer and postscript output.
GUI support (widgets) is officially provided since the 0.9 version (but it's not complete yet).