0.6:      initial release

0.6.1:    made GDL compile with g++ 3.3 (datatypes.hpp)

0.6.2:    fixed bug with # and ## operator (basic_op.cpp)
          added -I.. cpp option (Makefile.am)

0.7:      added graphic support (PLOT, WINDOW, WDELETE, SET_PLOT, WSET)
	  some small bug fixes.

0.7.1:    added 64 bit integer support (LONG64, ULONG64)
	  added python support (PYTHON function and procedure)
	  completed type functions for all types (ULONG, UINT, ...)
	  completed INDGEN and INTARR functions for all types
	  New library routines: SYSTIME, LEGENDRE, MACHAR, FFT, TVLCT,
	  MAX, MIN, TOTAL, ARRAY_EQUAL, CATCH, ON_ERROR
	  Library routines written in GDL (check out *.pro files not
	  starting with test_)
	  several bugfixes: conversion between BYTE and STRING.
	  GOTO within IF statement.
	  Memory leakage concatenating struct arrays.
	  
0.7.2:    Bugfix: dereferenced pointers are now passed by reference

0.8:      added netCDF support.
	  several new library routines.
	  support for .COMPILE command.
	  Improved formatted and unformatted output.
	  Improved configure script.
	  Extended and cleaned up the API for library routines (envt.hpp)
	  Fixed: GOTO,undefined_label made GDL crash. 
	  Several other bugfixes.

0.8.1:    Updated the configuration files (automake).

0.8.2:    added HDF support.
	  added support for several image file formats.
	  changed the code and configuration files to make GDL build 
	  also on Mac OS X.
	  bug fix for TRANSPOSE function.

0.8.3:    now netCDF and HDF can be used together (there were linker
	  errors in 0.8.2).
	  updated some obsolete commands in configure.in
	  more complete HDF support.
	  added DEFSYSV procedure.
	  addef CONJ and IMAGINARY functions.

0.8.4:    introduced _STRICT_EXTRA
	  solved remaining problem of using netCDF and HDF together.
	  HELP now reports variable names correctly.
	  the line continuation operator ($) is now also recognized in
	  interactive mode.
	  Added SORT, UNIQ, SHIFT (1 dim only), STRTOK, FILE_TEST, CD,
	  HISTOGRAM and REFORM function.
	  Added LOADCT, CD and TV procedure.
	  Basic HDF5 support.

0.8.5:    Fixed bug in STRING with PRINT or FORMAT keywords set.
          Fixed bug in STRMID with 3rd parameter undefined or not given.
	  Added MESSAGE procedure (some keywords not enforced)
	  Added FILE_SEARCH, ARG_PRESENT and EOF functions.
	  Fixed bug in AssignAt functions.
	  Fixed subtle bug concerning arrays() and function() which
	  made GDL not recognize library functions when identifier was
	  used before as array.

0.8.6:    Added CONVOL function (very fast).
	  Added EXP function.
	  Added JOURNAL procedure.
          Completed SHIFT for multiple dimensions.
	  HISTOGRAM now supports REVERSE_INDICES keyword.
	  HELP,/LIB sorts now the output.
	  Made # and ## operators IDL conforming for 1 dimensional arrays.
	  N_ELEMENTS now returns LONG (before ULONG)

0.8.7:    Support for GDL_PATH (falls back to IDL_PATH) environment variable.
	  Added EXPAND_PATH, ARRAY_INDICES, REBIN, LEGENDRE, IGAMMA,
	  LNGAMMA, BETA functions.
	  Added OPLOT procedure.
	  Bugfixes for ATAN (with 2 floats), CONVOL (1-dim kernel),
	  MESSAGE (prefix).

0.8.8:    Added OBJ_CLASS, OBJ_ISA, N_TAGS, SWAP_ENDIAN, BYTSCL functions.
	  Added PLOTS, XYOUTS (both 2D only), BYTEORDER procedures.
	  Improved FFT.
	  OMIN,OMAX keyword support for HISTOGRAM.
	  Fixed braced reference argument bug.
	  Changed equality checking to compatibility checking for
	  struct array definitions.
	  Added structure compatibility check for assignment to struct
	  arrays.
	  Fixed offset bug for conversion functions (BYTE, FIX, ...).
	  Fixed libfunction returning parameter bug.
	  Fixed AND, OR operator bug.
	  Fixed TVLCT bug.
	  @file now honors !PATH.
	  Changed configure.in to support python on OS X (fink)
	  Added SETENV, STRUCT_ASSIGN pro.
	  Added GETENV, STREGEX, TAG_NAMES functions.
	  Minor adjustments of default output (no FORMAT keyword).
	  Widen struct tag name rules: "!", "!$" and "!TEXT" are
	  allowed.
	  System variables can be named "!$", or "!$TEXT".
	
0.8.9:    Added SPAWN, WAIT procedure.
	  Added FINITE, ROUTINE_INFO, TEMPORARY functions.	
	  Added DIST function and TVSCL procedure (as .pro files).
	  !EXCEPT system variable.
	  Changed common block compilation.	  
	  Allow RETURN as jump label (remove it from reserved words)
	  Allow library functions to return their own parameters if used
	  in a return statement.
	  Allow library functions as l-functions.
	  Fixed assignment to indexed array at one position (insert at) for
	  indices which are 0.
	  Cleaned up Compiler/Interpreter.
	  Added NAN keywords to BYTSCL, MIN, MAX.
	  Added SUBSCRIPT_MIN/MAX keywords to MAX/MIN.
	  Added NTOHL, NTOHS, HTONL, HTONS keywords to BYTEORDER.
	  Added z-buffer device
	  Fixed MOD division by zero for integers.
	  Support for files with main programs.
	  Fixed COMMON and GOTO for interactive use.	
	  Added .RUN command
	  True color support for TV (X-device).
	  
0.8.10:   Optimization (~10%): Arrayindexing, non-copy constants, 
	  Complex (pow, abs).
	  Optimization (>200%): Dedicated ProgNodes for compiled programs
	  Fixed RETURN statement in FOR loops.
	  Made GDL buildable as a python module.
	  .RUN handle files without subroutines.
	  GCC 4.0 compilance.
	  INTERPOLATE function.
	  Fixed eof detection on input.
	  Implemented strided index support.
	  Improved raise to power (^ operator) for integer types.

0.8.11:   Added CONTOUR procedure.
          Added CREATE_STRUCT, RADON, LAGUERRE, STRCMP, GAUSS_PDF, GAUSS_CVF
	  functions.
 	  Added STRUCTURES keyword to HELP.
	  Added NAN keyword to TOTAL.
	  Sub-millisecond resolution for SYSTIME function
	  Added !DIR system variable
          Much faster array indexing.
	  Much faster operators (+-/*^...)
	  Faster FFT (requires FFTW library: http://www.fftw.org/download.html)

0.9:      Added HEAP_GC, PRODUCT, FILEPATH, MEDIAN (no filtering), READ_ASCII,
	  PUSHD, POPD, PRINTD, PRIMES, NORM, T_PDF, POLY_2D routines.
	  Support for SAVE and RESTORE through Craig Markwardt's CMSVLIB library.
	  Added SMOOTH and DERIV as external functions.
	  Full support of ON_IOERROR
	  Full support of F77_UNFORMATTED.
	  Support for XDR I/O.
          Fixed positional index (value and dimension) returned by STREGEX.
	  HELP without parameters and keywords puts out a list of all local
	  variables as well as compiled procedures and functions.
	  Add support for PROCEDURES & FUNCTIONS keywords in HELP
	  Made GDL compile under x86_64 linux.
	  Fixed incompatibility with # operator and one-dim vectors.
	  Speedup for ^ operator for integer types.
	  Speedup (>100x!) for REVERSE_INDICES of HISTOGRAM.
	  Implement INPUT keyword in HISTOGRAM.
	  Support for non-rectangular (x,y 2d arrays) calls to SURFACE and CONTOUR.
	  Support for DICOM files (GDLffDICOM object).
	  INTEGER keyword for TOTAL.
	  Add support for variable-length VMS files.	  
	  Add support for CHANNEL keyword in TV/TVSCL.
	  Add support for TRUE/CHANNEL keywords in TVRD (X only)
	  Add support for DIMENSION keyword in FFT.
	  Add REGEX keyword support to STRTOK.
	  Add preliminary support for MPI.
	  Add initial support for SOCKET.
	  Preliminary support for map projections. (requires libproj4 from
	  (http://members.verizon.net/~vze2hc4d/proj4/lbp4_050319S.tar.gz)
          Add initial support for BESELI, BESELJ, BESELK and BESELY but only for
	  integer order due to limitations of GSL Bessel functions
	  Added Erf() [and Errorf() for compatibility], Erfc(), Expint(), Gaussint().
	  Fixed I/O of Gamma(), Igamma(), LnGamma() and Beta()
	  +-Inf now managed in MIN and MAX (if called with /Nan)
	  NaN and +-Inf now properly managed in PLOT, OPLOT, PLOTS
	  Speedup in PLOT, OPLOT, PLOTS for large data sets (see test_plot_benchmark.pro)
	  Add 6 linestyles (via !p.linestyle or keyword) for PLOT, OPLOT, PLOTS
	  Improved memory management.
	  Improved new implementation of struct arrays.
	  Management of an history (ASCII) file save in ~/.gdl/history (with memory of previous sessions)
	  Add initial CURSOR, limited but functionnal (know
	  limitations documented in program) and !mouse
 
0.9rc1:   fixing memory leak in FFT when using FFTw lib.
	  fixing FACTORIAL (GDL syntax)
	  add SKIP_LUN (used by Astron Lib.; GDL syntax)
	  add VOIGT() function (in C++) based on Wells' paper.
	  add REAL_PART() function (GDL syntax)
	  add RK4() function (in C++)
	  in CONTOUR: throw when levels= are not ordered, manage NaN
	  and Inf values, add Nlevels= and /Fill
	  Two new projections in MAP_SET: Satellite and Robinson
	  Preliminary version for Width parameter in MEDIAN()
	  initial import for SPL_INIT() and SPL_INTERP() (GDL syntax)

0.9rc2:   undocumented BYTSCL accepting three parameters (value,min,max)
	  g++ 4.3 compatibility
	  ignore something like a=(a=a) (so it is allowed even if a is undefined)
	  accept self assignment of undefined variables
	  fixed print, ', ', FORMAT='(A)'
	  Add SUBEXPR keyword support for STREGEX
	  Add S_FUNCTIONS/S_PROCEDURES keywords for ROUTINE_NAMES
	  in MEDIAN(), managing "width" parameter
	  precalculation for (selected) constant parmeter functions. 
	  precalculation for constant arrays composed of constant expressions
	  precalculation for constant expressions and constant arrays, a major improvement
	  speedup for constant arrays
	  add FILL and NLEVELS for CONTOUR
	  Initial import of RK4
	  initial import of codes for function VOIGT
	  initial import of function REAL_PART in GDL syntax
	  allow floats without exponent number like 1e
	  FACTORIAL correcting bug when inputs are Integers; managing arrays
	  Made for READ_ASCII DATA_START independent of HEADER

0.9rc3:  interpreter:
           - corrected GOTO out of loops within outer blocks
           - corrected array to tag of struct array assignment
           - $: fixing two segfault conditions when SHELL or HOME env. variables not set
           - allowing tag names with leading '!'
           - imroved DataListT an empty procedure call by extimated 40%
           - detecting change of type of FOR index variable
           - allowing common blocks outside subroutines
         library routines:
           - ATAN: precision fixes (atan(float, float) -> float(atan(double, double))),
             /PHASE keyword support, array-scalar argument combination support, 
             two-complex-arguments case support
           - BESEL*: non integer order, X neg, Complex, and better management of arrays dimensions
           - BETA: better management of the dimensions of output arrays
           - BROYDEN: initial import
           - CALENDAR: initial import
           - CALDAT: initial import
           - CD: avoiding segfault on OSX (wordexp() bug)
           - COMMAND_LINE_ARGS: initial import
           - CONTOUR: avoiding plplot error messages when filling, 
             fixing segfault when contouring NaNs,
             smarter contour-level choice,
             partial labelling support
           - CREATE_STRUCT: accepting excl. mark as a first char of a tag name
           - EXIT: fixing segfault if HOME env. var undefined
           - EXPINT: better management of the dimensions of output arrays
           - FILE_INFO: initial import
           - FILE_LINES: no longer calling awk to parse wc output
           - FILE_SAME: initial import
           - FILE_SEARCH: support for FULLY_QUALIFY_PATH kw.
           - FILE_TEST: handling /NOEXPAND_PATH keyword
           - FFT: Fix /OVERWRITE with non-global parm bug (FFTW), fix auto_ptr bug with DOUBLE
           - FLUSH: initial import
           - GET_DRIVE_LIST: initial import
           - GET_KBRD: reading only one character (setting stdin to non-echo and non-canonical mode)
           - GET_LOGIN_INFO: initial import
           - HISTOGRAM: fixing inclusive ranges definition
             setting OMIN/OMAX type according to the type of input data
             binsize = (max - min) / (nbins - 1) when NBINS specified with neither MAX nor BINSIZE
             LOCATION keyword set correctly when HISTOGRAM called with NBINS and without BINSIZE or MAX
           - HELP: reporting structure data lengths, /MEMORY keyword support
           - IDL_BASE64: initial import
           - IGAMMA: better management of the dimensions of output arrays
           - IMSL_CONSTANT: initial import (using UDUNITS-2)
           - IMSL_ZEROSYS: initial import
           - LL_ARC_DISTANCE: initial import
           - LOCALE_GET: initial import
           - MAKE_ARRAY: /PTR & /OBJ keywords, /INDEX keyword support for strings
           - MAKE_ARRAY: keyword name changed from INT to INTEGER
           - MAX: DIMENSION keyword support
           - MIN: ditto
           - MEDIAN: memory leak fix + change DIM into DIMENSION
           - MEMORY: initial import
           - MOMENT: MAXMOMENT kw support + update of the documentation header
           - N_TAGS: rename keyword /LENGTH to /DATA_LENGTH
           - NCDF_ATTGET: code cleanup + fixes
           - NCDF_ATTPUT: fixing invalid keyword numbering
           - NCDF_DIMINQ: accepting long integers as file and dimension ids
           - NCDF_VARGET: 64-bit fix (SizeT->Dlong for transposed_dim_length[])
             reading text data
           - NCDF_VARGET1: reading text data
           - NCDF_VARPUT: fixing random behaviour due to type mismatch (size_t -> int), 
             fixing uninitialized variable bug
           - NEWTON: initial import
           - OPENW: allowing /APPEND flag for non-existant files
           - PARSE_URL: initial import
           - PATH_SEP: now return good type STRING = '/', before STRING = Array[1]
           - PLOTS: correction for DATA coordinates
           - PM: initial import
           - PRINT: handling VMS compatibility syntax; demo: print, "$(F)", 1
           - PRINTF: ditto
           - READ_ASCII: handling both whitespace and tab as delimiter by default; 
             using FILE_LINES instead of spawning wc
           - READ_XWD: fixing a conditional statement typo
           - READF: bugfix - allowing reads from standard input (lun 0)
           - REVERSE: initial import
           - ROTATE: better error message
           - SIZE: fixing datatype (sign) conflict in IDL_SIZE structure assignment
           - SHOWFONT: initial import
           - SPAWN: fixed segfault when SHELL env. variable not set, 
             undoing bitwise shift in EXIT_STATUS value; demo: spawn, "exit -1", e=i & help, i
             setting EXIT_STATUS parameter when nParam==0; demo: spawn, exit=i & help, i
           - SPL_INIT: initial import of C++ version (y0= and yn_1= not ready)
           - SPL_INTERP: ditto
           - STRING: handling VMS compatibility syntax; demo: help,string(1,"(G)")
           - STRSPLIT: will allow 'str' and ['str'] 1D strings
           - SYSTIME: correction for /JULIAN flag; conflicting keywords message
           - TV: managing [1,n,m], [n,1,m] and [n,m,1] cases when TRUE=0
           - VOIGT: better management of the dimensions of output arrays
           - XYOUTS: axis thickness fix, DATA coordinates fix
         configure script:
           - HDF4/HDF5: linking with SZIP if needed
           - detecting presence of Python numarray package
           - printing summary information
           - support for linux ppc64
           - using nc-config (if present) to determine netcdf LIBS/INCLUDES
           - using Magick++Config (if present) to determine Magick LIBS/INCLUDES
           - better ncurses/curses check, preventing linking both libraries
         other:
           - embedded formatting commands for plotting routines (TEXTOIDL works)
           - !DTOR & !RADEG values more precise
           - SVG terminal available via set_plot, 'svg'
           - misc. minor updates in readme/doc files
           - several new test routines
           - input/output: 64-bit OSX fix (xdr_long()/xdr_u_long() argument types)
           - allowing setting history-file lenght in startup file using !EDIT_INPUT
           - OpenSolaris compatibility fixes
           - handling some out-of-memory exceptions
           - gcc 4.4 compatibility fix
           - HDF5: v1.8 compatibility fix
           - widgets: some new functionality
           - mapping: support for new LIBPROJ4

0.9rc4:  in short: 
         ---------
         - thread pool support using OpenMP (G++ >= 4.2),
         - enhanced error-reporting (line numbering, message decoration, etc.) 
         - new library routines, including: CPU, CROSSP, GET_SCREEN_SIZE, IMSL_BINOMIALCOEF, 
           IMSL_CONSTANT, IMSL_ZEROPOLY, QUERY_*, WSHOW, WTN (wavelet transform), ...
         - enhanced HDF5 (15 new routines) and netCDF support
         - support for GRIB 1/2 file format (read-only, using ECMW GRIB_API)
         - several new command-line options, support for specifying batch files at command-line
         - bug-fixes in library routines and the interpreter
         - new plotting functionalities (contouring on maps, color PostScript output, ...)
         - enhanced detection of libraries in the configure script
         - enhanced "make install" and "make check" rules
         - compatibility fixes for various GCC versions and UNIX flavours

         in detail:
         --------------
         interpreter:
           - fixed/enhanced numerous error-reporting related features including:
             line number tracking, error message "decoration" (prefixes etc.),
             inclusion of string-representation of error-related values in error messages
           - fixed STRUCT access of non struct struct member (e. g. a={b:0}&print,a.b.c )
           - corrected beahvior of call_fun and call_lfun for RC_ABORT return code,
             old behavior lead to endless loop at startup in some conditions
           - fixed wrong handling of CONTINUE under certain conditions in nested loops
           - support for COMPILE_OPT OBSOLETE & !WARN.OBS_ROUTINES
           - support for numeric constants in explicit binary format, e.g. a='1010101'b
           - honouring COMPILE_OPT within $ and EXECUTE
         library routines:
           - BROYDEN: fixed behaviour with constant-returning functions
           - BYTEORDER: support for structures
           - CHECK_MATH: 2 undocument params and also keep memory of value
           - CONTOUR: memory-leak fix (thanks to Valgrind), support for the /OVERPLOT keyword,
                      partial support for contouring on maps, more sanity checks for argument types,
                      better filled-contour level-choice mechanism, fixing axis colour
           - CPU: initial import
           - CREATE_STRUCT: fixed behaviour with no parameters
           - CROSSP: initial import
           - CURSOR: verification if we are in X mode, support for lat/lon query on maps
           - DEVICE: support for /COLOR, XSIZE and YSIZE for PostScript driver,
                     support for the GET_VISUAL_DEPTH keyword
           - DIST: runs correctly when called like dist([2,2])
           - FFT: sanity check for the rank of argument, preventing bogus memory freeing with dcomplex input
           - FILE_BASENAME: support for array argument, better handling of empty and space-only strings
           - FILE_LINES: spawning subprocesses with /NOSHELL keyword to prevent execution of shell startup file 
           - FILE_TEST: stripping the trailing '/' if present
           - [F,D,L,...]INDGEN: making the values of the resulting array more precise for large 
             arrays (demo: print, (findgen(40000000))[40000000-1])
           - GET_SCREEN_SIZE: initial import
           - GETENV: error message when called with /ENV and a positional parameter
           - GRIBAPI_*: initial import of GRIB-1/2 file format support using the ECMWF GRIB API
           - H5F_IS_HDF5, H5_GET_LIBVERSION, H5D_GET_TYPE, H5T_GET_SIZE, H5A_OPEN_NAME, 
             H5A_OPEN_IDX, H5A_GET_NAME, H5A_GET_SPACE, H5A_GET_TYPE, H5A_GET_NUM_ATTRS, H5G_OPEN,
             H5A_CLOSE, H5T_CLOSE, H5G_CLOSE, H5A_READ: initial import
           - HELP: corrected output for expressions
           - HISTOGRAM: correcting binsize definition when max and nbins set, 
                        better INPUT-kw-related error message
           - IMSL_BINOMIALCOEF: initial import
           - IMSL_ZEROPOLY: initial import (using gsl_poly_complex_solve())
           - IMSL_ZEROSYS: fixed behaviour with constant-returning functions
           - INVERT: fixing a segfault condition with non-global parameter
           - LA_TRIRED: checking if the first argument is an array
           - LOADCT: set !D.TABLE_SIZE from 0 to 256
           - LOCALE_GET: returning locale of the parent process
           - N_TAGS: support for LENGTH keyword (currently equal to DATA_LENGTH)
           - NCDF_ATTGET: outputing byte arrays instead of strings
           - NCDF_ATTNAME: allowing to specify the global atribute number 
           - NCDF_ATTPUT: support for LENGTH keyword
           - NCDF_VARGET: fixing a segfault condition
           - NCDF_VARINQ: fixing failed-assertion condition (dimension(0)) with scalar variables
           - NCDF_*: fixes in error handling, compatibility with netcd-4 
             (file handles are now Long instead of Int)
           - NEWTON: fixed behaviour with constant-returning functions
           - OPLOT: sanity checks for the rank of arguments
           - PLOT: adjusting axes when charsize changed, better automatic range selection,
                   sanity checks for the rank of arguments
           - POINT_LUN: assuring the 2nd par is a global par
           - POLY_AREA: initial import
           - PRINT/PRINTF: changed output of trailing newline after empty string output,
                           corrected alignment for all types
           - RSTRPOS: initial import
           - READ_TIFF: ignoring errors related to GeoTIFF fields in TIFF files
           - QUERY_BMP, QUERY_DICOM, QUERY_GIF, QUERY_IMAGE, QUERY_JPEG, QUERY_PICT, QUERY_PNG:
             QUERY_PPM, QUERY_TIFF: initial import (using Magick++'s ping functionality)
           - READ_ASCII: printing error message when DATA_START exceeds file length
           - REVERSE: support for /OVERWRITE keyword
           - ROUTINE_INFO: support for PARAMETERS keyword
           - ROUTINE_NAMES: fixed ARG_NAME keyword for values larger than current level,
                            corrected name lookup, proper behaviour with the /STORE kw.,
                            fixed support for /FETCH kw.
           - STREGEX: preventing bogus call to basic_string::substr(-1,...)
           - STRMID: fixed behaviour for negative values of 3rd parameter
           - STRPOS: does no longer ignore undefined 3rd parameter
           - STRSPLIT: fixed probem related with STRTOK bug
           - STRTOK: fixed output dimensions
           - SURFACE: memory-leak fix (thanks to Valgrind), more sanity checks for argument types
           - TVRD: fixed segfault with no window open
           - WAIT: allowing interruption with control-c 
           - WSHOW: initial import (ICONIC kwrd not implemented yet)
           - WTN: initial import (using GSL DWT routines)
         configuration/installation:
           - installing library .pro files, manpage and basic docs during make install
           - setting default library-routine search path if GDL_PATH/IDL_PATH not defined
           - checking if HDF4 was compiled with --disable-netcdf
           - checking if netCDF installation is usable (HDF4 installation conflict)
           - configure: checking if netcdfcpp.hpp is usable (conflicting hdf4/netcdf installation issue)
           - fixes in wxWidgets detection code
           - support for the Debian naming of the HDF4 libraries from the hdf4-alt packages 
             (compiled with --disable-netcdf)
           - checking for GSL >=1.7 which is requiered to use both FFT and DWT at the same time
         other:
           - adding a manpage
           - Cygwin compatibility fixes (as of version 1.7.1, Cygwin still needs a patch for rpc and fenv)
           - adding on_error,2 for all routines implemented in GDL
           - error reporting for HDF5 support
           - Strassen algorithm for matrix multiplication (needs manual enabling)
           - !DEVICE.N_COLORS in now dependant on the actual X-window setting
           - handling "cannot connect to X-server" via a GDL error message
           - initial thread pool support using OpenMP
           - checking if PLplot supports the requested driver (ps, xwin, mem) 
             and informing the user via a GDL error message if not 
           - SVG plots: swithing between svg and svgcairo drivers by checking which 
             drivers are supported by PLplot
           - support for -quiet and -e command-line options and for specifying batch files
             at command-line; ignoring numerous license-related options for compatibility
           - warning the user if MPI changes the working directory of GDL
           - welcome message changes (informing about the library-routine search path)
           - more meaningful contnents of the !VERSION structure
           - GCC 3.4.3, 3.4.4, 4.3.4, and 4.4 compatibility fixes
           - support for reading ASCII files not ending with newline character
           - ![X,Y].RANGE support in plotting routines 
           - Allow neg. width for A format code, fixed T,TL,TR format codes
           - sanity checks in array-returning library routines preventing segfaults
             when called with invalid arguments
           - new test-routines: test_dims_of_arrays.pro, test_valgrind.pro, test_check_math.pro,
             test_get_screen_size.pro, test_nestedloop.pro, test_plotting_misc.pro, 
             test_plotting_ranges.pro, test_grib.pro, test_poly2d.pro, test_wavelet.pro
           - inclusion of some of the test-routines in the "make check" rule
           - quick_start_GDL.sh script 
           - making the initial "DECOMPOSED" setting of the X device dependant on the colour 
             depth reported by the X-server

0.9:	    
	   - FOREACH statement, syntax: FOREACH loopVar,array[,indexVar] DO
	   - member function and procedure calls with '.' e. g.: object.aProcedure
	   - support of negative index ranges. -1 is the last element, -2 the one before 
	     the last and so on. E.g.: array[-7:-5]
           - new widget features incl. WIDGET_DROPLIST
           - automatic garbage collection
           - numerous bugfixes (incl. SAVE/RESTORE, WRITEU, ...)
           - memory leak in FFT when using FFTw lib should be solved
           - all input types OK in FFT when using GSL FFT
           - new routines: HIST_2D, INTERPOL, MAP_CONTINENTS, POLYFILL, 
             RESOLVE_ROUTINE, SPHER_HARM, IMSL_ERF
           - new keywords/calling sequences handled:
             - DEVICE, /INCHES, GET_SCREEN_SIZE
             - PRODUCT, /PRESERVE_TYPE, /INTEGER
             - REBIN: support for specifying new dimensions as an array
             - TOTAL, /PRESERVE_TYPE
             - FILE_SEARCH, /FOLD_CASE
             - STRSPLIT, /preserve_null
           - new test routines (invoked during "make check")
           - DIALOG_PICKFILE, based on Zenity, OK on most Linux and OSX
           - FILE_DELETE, FILE_COPY and FILE_EXPAND_PATH
	   - SPL_INIT: now y0= and yn_1= ready
           - Compressed files should be well processed now (readf, printf, fstat, point_lun, ...). See test_zip.pro

0.9.1:
           - fixes/improveents in: CONTOUR, DIALOG_PICKFILE, EXECUTE, EXIT, FIX (TYPE=7 and /PRINT),
             FFT, FSTAT, HEAP_GC, MOMENT, NCDF_ATTNAME, NCDF_DIMDEF, NCDF_VARID, NCDF_VARPUT, INTERPOL,
             PLOTS, POINT_LUN (64-bit addressing), POLYFILL (support for LINE_FILL, SPACING, LINESTYLE, 
             ORIENTATION and THICK), PRINT, PRINTF, SAVE/RESTORE, SPL_INIT (mem leak), STRSPLIT,
             SURFACE (added AX,AZ), WAIT, XYOUTS (support for the WIDTH kw), DEVICE (WINDOW_STATE kw)
           - other improvements: fixed reading of (big) compressed files, decomposed colours with PostScript, 
             gdlffdicom update (v20100309), new test routines, improved cmake configuration (still experimental),
             fixed behaviour with non-comma locale-defined decimal separators
           - early draft of GDL User's & Developer's guide: source files in doc/udg, current pdf version at:
             http://gnudatalanguage.sf.net/gdl.pdf
           - Python bridge: Numarray -> NumPy transition (several known bugs still exist)
           - the .STEP command
           - new routines: CALL_EXTERNAL (by Christoph Fuch), DIALOG_MESSAGE, ROBERTS, SWAP_ENDIAN_INPLACE,
             CORRELATE
0.9.2:
	   - tremendous speed improvements: Indexing, subroutine calls, operators (especially for scalar values in 
	     conjunction with OpenMP), ...
           - UNIT keyword for SPAWN (thanks to a patch by Greg Huey)
           - fixed ASSOC var indexing with a variable
           - new routines: FILE_MKDIR, FILE_WHICH (patch by H Xu), IDL_VALIDNAME (by Rene Preusker), SCOPE_VARFETCH,
             SEM_CREATE, SEM_LOCK, SEM_RELEASE, SEM_DELETE (SEM_* routines by Mateusz Turcza),
           - fixes/enhancements in: BETA, CONTOUR, CORRELATE, DIALOG_PICKFILE, EXPINT, HDF_OPEN, H5F_OPEN,
	     HDF_SD_START,
             IGAMMA, IMSL_CONSTANT, INTERPOL, LOADCT, NCDF_CONTROL, NCDF_OPEN, ROUTINE_NAMES, TV, TVRD, 
             XYOUTS (!P.MULTI vs. !P.POSITION, ORIENTATION with logscales), INTERPOLATE (the MISSING kw)
	   - fixes in STREGEX, STRPOS, STRSPLIT
           - non-Encapsulated PostScript support along with XSIZE, YSIZE, XOFFSET, YOFFSET, PORTRAIT, LANDSCAPE and
             SCALE_FACTOR settings support for PostScript output (requires pslib - http://pslib.sourceforge.net/
             and makes advantage of PLplot fixes introduced in PLplot 5.9.9)
           - memory leak fix (bug introduced in the previous version)
           - various testsuite & docs updates (incl. docs and examples for CALL_EXTERNAL)
	   - fix in WordExp() when filename argument contain whitespaces (useful in various cases, including 
	     OPENR/W, FILE_MKDIR, ...) [AC 2012/01/04: not finished :( 
	   - !version.os now in lower case for Linux and Darwin

0.9.3:
	   - activities on speed improvements continuing
	   - Initial import of STRMATCH()
	   - Initial import of USERSYM
	   - SCOPE_VARFETCH (only LEVEL keyword supported)
	   - keyword /NaN for HISTOGRAM
	   - Initial import of LUDC, LUSOL and DETERM, OK now only for DOUBLE
	   - Initial import of ROT, CONGRID and BILINEAR
	   - Initial import of TV for PS output
	   - fix in RANDOMN/RANDOMU (Binomial OK, conflicting keywords detected ...)
           - Initial import for QROMB(), QSIMP() (based on QROMB) and QROMO()
           - Initial import for TRISOL()
	   - fix in ERASE for background color (preparing Coyote lib. support)
	   - Initial import of STANDARDIZE and HIST_EQUAL
	   - improvment in MAGICK related codes, especially MAGICK_PING (pb with ImageMagick (IM) in Ubuntu 12.04; GraphicsMagick can also be used instead of IM)
	   - FZ_ROOTS: initial import (same way than IMSL_ZEROPOLY using gsl_poly_complex_solve(), only real coefs. for input poly)
	   - FX_ROOT: initial import. in c++
           - keyword DIM in MOMENT(), MEAN(), STDDEV(), VARIANCE(), SKEWNESS(), KURTOSIS() (requested DIM and other improvments)
           - keyword SIGN in FINITE
	   - support for empty arrays and !NULL system variable
	   - promotion of FOR loop index variable type
	   - various improvments on READ_JPEG, READ_PNG, WRITE_JPEG, WRITE_PNG
	   - keyword ICONIC in WSHOW
	   - keyword ISOTROPIC in PLOT, CONTOUR
           - new widget features incl. WIDGET_LIST and CW_GROUP
           - various fix in FFT: DIM keyword, memory leak when using GSL
	   - support for some overloaded operators (_overloadIsTrue,
	     _overloadPlus, _overloadMinus, _overloadBracketsLeftSide,
	     _overloadBracketsRightSide, _overloadEQ, _overloadNE)
	   - support for .SKIP [NSteps] command

0.9.4:
           - when compiled with Eigen3 library, significant speed improvement
	     in MATRIX_MULTIPLY() (and # operators), especially on multi-cores
	     Basic loading management included (if some core are busy).
           - LIST and HASH are fully supported
	     even left-side struct access is possible e. g.: 
	       GDL> h = HASH('key',{tag1:1})  &  h['key'].tag1 = 3
	     this even works with all (derived) GDL_OBJECTs:
	     In this case (a variable set to) !NULL is passed as the OBJREF 
	     parameter to the OBJECT::_OVERLOADBRACKETSLEFTSIDE member procedure,
	     it must in turn set this OBJREF parameter (the variable) to a POINTER to
	     the heap variable to access.
           - .RESET_SESSION and .FULL_RESET_SESSION commands
           - CHOLSOL/CHOLDC using Eigen3 (sub-optimal but efficient for big matrix on multicores) (LA_CHOLSOL/LA_CHOLDC removed for technical issues)
           - large change in various graphic/plotting keywords (see below). 3D options supported, 
             but some limitations due to the use of the plplot library. 
           - PLOT, OPLOT: All keywords supported except FONT and CHANNEL,
	   	Correct handling of log/DATA/NORMAL/DEVICE coordinates and CLIPPING.
           - PSYMs shapes now identical to IDL's.
           - PLOTS: idem as above, all keywords now supported.
           - XYOUTS: idem as above, one-argument support (XYOUTS,"string"). 
	   	Enhancement wrt. reference program: color,size,angle,etc 
	   	of text are vectors. FONT and TEXT_AXES not supported.
           - CONTOUR: Support of all options except CELL_FILL, C_ANNOTATIONS, CLOSED, DOWNHILL,
               IRREGULAR, TRIANGULATION,PATH_***
               Correct implementation of Z, [X,Y], i.e., contours may be skewed,
	       rotated, etc depending on X and Y.
               Better than IDL:
               - a new ZLOG option makes log contours as well.
               - C_ORIENTATION, C_SPACING are also vectors.
               - log axes give better results
               - good contouring of Not-A-Number values in Z and MIN_VALUE/MAX_VALUE
               - CLIPPING ok.
               - Automatic limits in some cases still different from IDL.
           - AXIS and boxes in plots: all [XYZ]TICK[***] options supported except TICKV
	   	and a few TICKFORMAT specifics.
           - CURSOR: full support for CURSOR command, which is interruptible by control-c 
	   	and has all the options.
           - SURFACE: all Keywords supported except "LEGO" and "CHANNEL".
           - Added SHADE_SURF (slow and imperfect shading from the plplot library).
           - Added cursor-related functions TVCRS and command EMPTY. 
           - Added DEVICE options CURSOR_CROSSHAIR, CURSOR_STANDARD, CURSOR_ORIGINAL and 
	   	GET/SET_GRAPHICS_FUNCTION (GXoR, GXand, etc). 
           - Disabled by default the focus in the X11 graphics windows as IDL does and 
	   	repositioned WINDOWS by default to top-right of screen. Screen size and behaviour
                using GDL_GR_X_WIDTH, GDL_GR_Y_WIDTH and GDL_GR_X_QSCREEN environment variables (X window)
                (GDL_GR_WIN_WIDTH, GDL_GR_WIN_WIDTH and GDL_GR_WIN_QSCREEN under windows)
           - WSHOW works irregularly, depending on the window manager.


0.9.5:
           - lot of improvments in Widgets related code. Available widgets:
	     WIDGET_DRAW(!), WIDGET_BASE, WIDGET_BUTTON, 
             WIDGET_DROPLIST, WIDGET_COMBOBOX, WIDGET_LIST, 
             WIDGET_SLIDER, WIDGET_TAB, WIDGET_TEXT, 
             WIDGET_LABEL, CW_BGROUP
	     (Note: Not all keywords are supported yet (however, they are accepted) but almost all functional keywords.
	     This means: Programs using these widgets should work but maybe look a bit different)
	     Controlling routines:
	     WIDGET_EVENT, WIDGET_CONTROL, XMANAGER
           - TIC and TOC
           - !CONST system variable
           - initial import of NetCDF-4 related codes:
             NCDF_GROUPSINQ, NCDF_GROUPNAME, NCDF_GROUPDEF, NCDF_FULLGROUPNAME,
             NCDF_GROUPPARENT, NCDF_DIMIDSINQ, NCDF_NCIDINQ, NCDF_VARIDSINQ
           - introducing the NULL device type, better result on Unix like system without X11 
             (e. g. computing nodes on HPC)
	   - better free format for print, preserving precision digits.
	   - ISA() and TYPENAME()

0.9.6:
	   - support for projections now complete. See MAP_INSTALL for details.
	   - new keywords (BOOLEAN,INTEGER,FLOAT,COMPLEX,STRING) in ISA()
	   - two new system variables: !TRUE and !FALSE
	   - initial import for SCOPE_TRACEBACK() (/sys and /struct not ready)
           - combination of input arrays in math. special functions now ok with IDL
           - SVSOL(); RESOLVE_ALL, more keywords in RESOLVE_ROUTINE
           - initial import of LA_LEAST_SQUARES (for Ulyss), required Eigen3
	   - keyword LEVEL in MESSAGE
	   - support for Calendar format codes in input/output
 	   - better handling of multiaxes in plot
	   - option --fakerelease for gdl: "$gdl --fakerelease 6.2" will pretend that the software
	     release is 6.2 by setting !VERSION.RELASE to that value. !VERSION.RELASE is often tested by
	     procedures to decide whether some function or option should be used. It is sometimes possible to
	     use this option to fool a procedure that request a specific value of !VERSION.RELEASE
0.9.7
           - Huge gains in plotting speed for X device by bypassing plplot's X11 color handling. Especially
             noticeable for remote X11 displays.
           - Widget numbering scheme aligned to IDL's.
           - Patched several buggy output formats (PRINT, etc).
           - better report of memory size (MEMORY command) for unix.
           - .RESET_SESSION OK.
           - better behaviour of WRITE_GIF and WRITE_PNG as well as other graphic formats.
           - Correct setup of !D.N_COLORS and !P.COLOR when switching devices and decomposed state.
           - Window-related commands (WSET,EMPTY,WINDOW...) now correctly handle the managed/widget/free/absent cases.
           - ISHFT() now an internal C++ function (for speed).
           - Begun implementation of TRIANGULATE when GDL is compiled with the QHULL library. Only the most basic
	     support is provided. 
           - Experimental: use device wxWidgets as replacement of X11 and WIN devices (of course when GDL is
             linked with the wxWidgets library). This is at the moment triggered by the environment variable 
             GDL_USE_WX="YES" : setting this variable, the device 'X' or 'WIN' will actually be a wxWidgets device,
             with antialiasing and trueType fonts.
           - Experimental: calling GDL with option "--fussy" or setting the environment variable "GDL_IS_FUSSY"
             enforces the STRICTARR compiling scheme (array index always between "[]"). This generally speeds up
             procedure compilation.

0.9.8
          - internal SAVE and RESTORE. CMSVLIB not required anymore, and references to it removed in the documentation.
          - better L64 support (N_ELEMENTS, SIZE)
          - better TOTAL for large numbers or special types
	  - update RANDOM ...
          - revisited MAKE_DLL & CALL_EXTERNAL
          - MIN, MAX /ABSOLUTE.
          - support of DEVICE,SET_CHARACTER_SIZE, and consequently a better positioning and sizes of plots.
          - TRIANGULATE and TRIGRID complete (including spherical triangulation) using Renka's legacy algorithms.
  
0.9.9
          - build requirements and development hosting changes:
            - development hosting moved from SourceForge to Github
            - introduction of continuous integration services with Linux, OSX and Windows builds
            - C++11 and CMake 3 requirements
            - OpenMP required by default
            - dropped support for OLDPLPLOT
            - support for using eccodes instead of grib_api
          - language/interpretter:
            - auto-print feature
            - implicit array generation, ex: array=[0.1:3.5:0.33]
            - many HASH and LIST handling improvements
            - DELVAR and .RNEW
            - STATIC and NOSAVE compile options
          - new functionalities:
            - major TIFF improvement and GEOTIFF support
            - LINFIT, DILATE, ERODE, SOBEL, PREWITT, ROBERTS
            - NCDF4_EXISTS and H5F_CREATE
            - HELP improvements for objects, structures, etc
          - performance improvements:
            - WHERE speedup
            - parallelized FINITE, MIN and MAX
            - RANDOM functions (RANDOMUn RANDOMN etc) rewritten using dSFMT, both simd-accelerated and parallelized
            - FILE_LINES, FILE_LINK, FILE_COPY, FILE_MOVE reimplemented in C++
          - other enhancements:
            - reimplemented PARSEL_URL
            - added support for START and INCREMENT to MAKE_ARRAY
            - /ABSOLUTE keyword for MAX and MIN
            - /L64 keyword for WHERE	 
            - CONTOUR, SURFACE and SHADE_SURF accept degenerated N-D equivalents to 2D arrays
            - preservation of types by TOTAL
            - FIX & ROUND improvements 
            - colormap initialisation fix 
            - corrected os_name reporting in !version for OSX
            - fixed behaviour with no X-server connection available 
            - several files cleaned up or moved to obsolete folder
            - Windows fixes for STRTRIM and SYSTIME
            - FreeBSD fixes for sincos 
            - improvements in idlneturl class
            - numerous compiler warnings addressed  
            - pytest-based Python module testsuite
            - new tests, test cleanups
