A free and open-source IDL/PV-WAVE compiler
Clone or download
alaingdl Merge pull request #518 from GillesDuvert/random_dSFMT
Fix annoying bugs in dSFMT-aware random() functions.
Latest commit b467cc0 Nov 14, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
CMakeModules Added libgeotiff subdir used in some distros Jul 31, 2018
doc removing obsolete Makefile.am files (the only left is still in testsu… Apr 19, 2018
obsolete keep obsolete/udg as a tar-gz file Jun 17, 2018
scripts better detection of OS family. No exception now if OSX :( Oct 30, 2018
src Merge pull request #518 from GillesDuvert/random_dSFMT Nov 14, 2018
testsuite small issue in Basic_benchmark, better finding for recent OS of libs.… Nov 10, 2018
.travis.yml fixing OSX build on Travis Nov 12, 2018
AUTHORS adding Gilles to the author lists Nov 7, 2012
CMakeLists.txt small issue in Basic_benchmark, better finding for recent OS of libs.… Nov 10, 2018
COPYING FSF address update in various files Jun 28, 2011
ChangeLog applied patch https://anonscm.debian.org/cgit/debian-astro/packages/g… May 29, 2017
HACKING applied patch #35 Oct 7, 2013
INSTALL.CMake OLDPLPLOT cleanup Aug 23, 2018
MAP_INSTALL one missing file in MAP_INSTALL, one new nice case for demo. Jul 3, 2014
NEWS Remove or invalidate references to qhull library as we still do not n… May 3, 2018
PYTHON.txt numarray -> Numpy transition (based on the patch by Orion Poplawski, … Dec 31, 2010
README OLDPLPLOT cleanup Aug 23, 2018
README.GRIB updating README.GRIB [skip ci] Jun 26, 2018
README.md adding info on ecCodes to README.md Jun 26, 2018
appveyor.yml Failure of Where inn Windows was due to a too hasty replacement of ma… Nov 3, 2018
config.h.cmake OLDPLPLOT cleanup Aug 23, 2018
quick_start_GDL.sh relative path now OK for running "quick_start_GDL.sh"; Mar 11, 2016

README.md

Linux/OSX Build Status Windows Build status Coverage Status Codacy Badge License: GPL v2

GDL - GNU Data Language

GDL is a free/libre/open source incremental compiler compatible with IDL (Interactive Data Language) 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 development had been started by Marc Schellens back in early noughties and has since continued with help of a team of maintainers, developers, packagers and thanks to feedback from users.

IDL is a registered trademark of Harris Geospatial Solutions. PV-WAVE is a product of Rogue Wave Software.

Overview

GDL is a domain-specific programming language and a data analysis environment. As a language, it is dynamically-typed, array-oriented, vectorised 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. The built-in widget functionality enables development of GUI-based software. GDL has also a Python bridge (Python code can be called from GDL; GDL can be compiled as a Python module). Development and maintenance of GDL is carried out targeting Linux, BSD, OSX and Windows (MinGW, Cygwin).

Other open-source numerical data analysis tools similar to GDL include SciPy, GNU Octave, Scilab, PDL, NCL, R, Yorick.

Dependencies and package availability

Packaged versions of GDL are available for several Linux distributions, BSD and Mac OS X. Please note that several features of GDL depend on compile-time configuration, and might not be available in pre-built or pre-configured packages. The table below summarises GDL mandatory and optional dependencies along with the availability of the optional functionalities in packages (as of April 2018):

Fedora Debian Ubuntu Gentoo Arch FreeBSD Homebrew Macports
latest release 0.9.8 0.9.8 0.9.8 0.9.6 0.9.7 0.9.8 0.9.7 0.9.7
readline/editline + (r) + (r) + (r) + (r) + (r) + (r) + (r) +
[n]curses + (n) + (n) + (n) + (n) + + (n) + (n) + (n)
zlib + + + + + + + +
GSL + + + + + + + +
plplot + + + + + + + +
OpenMP + + + + + + - +
Magick++ / GraphicsMagick + (G) + (G) + (G) + (G/I) - + (G) + (G) + (G)
wxWidgets + + + + + + - -
netCDF + + + + + + + +
HDF4 + + + + - - - +
HDF5 + + + + - + + +
FFTW + + + + + + + +
PROJ.4 - - - + - + - +
GSHHG - - - + - - - +
MPICH - - - - - + - +
Python/NumPy + + + + + + - +
udunits + + + + + + + +
Eigen + + + + + + + +
pslib + + + + + + - +
ecCodes/GRIB + + + + + + - +
GLPK - - - - - + - -
Python module + (python2-gdl) + (python-gdl) + (python-gdl) + - - - -

Build-time dependencies

Build and test automation is carried out using CMake.

GDL interpreter has been developed using ANTLR v2 but unless you want to change the grammar (*.g files) you don't need ANTLR. All relevant ANTLR files are included in the source tree.

Support, feedback and contributions

Your comments are welcome! Let us know what you use GDL for. Or if you don't, why not. Which functionality are you missing/would appreciate most for coming versions. Please use the github issue-tracking system to report bugs, complaints, suggestions and comments.

Code enhancements in the form of pull requests are very welcome! Note that contributions can be made in C++, IDL/GDL or Python, as well as by providing enhancements and extensions of the README files, diagnostic messages, etc.

Among the major challenges GDL development is facing currently, there are:

  • enhancing test coverage by writing test programs in GDL
  • streamlining development and maintainance of GDL reference docs and examples (using the Jupyter kernel?)
  • bringing in into the team the needed know-how to address the backlog of ANTLR-related issues
  • increasing presence within and interoperability with the Python ecosystem, including adding support for Python 3 (calling GDL from Python 2 and calling Python 2 from GDL is already implemented!)

Help welcome!

Information resources

As GDL is aimed as a drop-in replacement for IDL, resources for IDL constitute valuable sources of information for GDL users as well. These include:

There are several open source packages compatible or interoperable with GDL, including:

Alain Coulais maintains the GDL-accounces mailing list.

There have been quite some mentions of GDL in scientific literature which also provide example use cases. The Coulais et al. papers from the ADASS conferences are the best way to cite GDL as of now.

Acknowledgements

GDL development had been carried out at SourceForge in years 2003-2018 - thank you!