forked from gnudatalanguage/gdl
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NEWS
797 lines (760 loc) · 44.4 KB
/
NEWS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
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
1.0.0-rc.1:
- entirely rewritten mapping support
- major improvements on the Windows compatibility
- shift to Python 3
- added READ_CVS, SCOPE_VARNAME
- fixes in CONGRID, FILE_MKDIR, FX_ROOT, INTRPOLATE, LINFIT, MAKE_ARRAY, RESTORE, TAG_NAMES, ...
- numerous other fixes and performance improvements and increased test coverage
1.0.0-rc.2
- fixed linestyle +psym problem when NaN in data (#678)
- fixes for path separators on Windows
- cleanup of map projections resource files (much reduced tarball size)
- cleanup of GSHHS leftovers (GDL no longer depends on GSHHS)
- clarification of projection resource licensing information
- fix for SMOOTH() making it work correctly with complex arrays (#685)
- fix for SMOOTH() curing segfault condition with large arrays (#682)
- fix for POLYFILL and log axes (#674)
- fixing build failures on s390x (#676)
- fix for segmentation fault on total(,/double) (#680)
- removed confusing message about graphic magick compiled only with 8 BPP
- improved management of input to RANDOM( ... poisson=)
- fixed WRITE_JPEG so it creates 2-dim jpg by default instead of 3-dim (#710)
- fix in HELP so it does not free memory twice when used like help,/obj,out=xxx
- corrected behaviour of '...' in string truncation in HELP
- fixed OBJ_CLASS so it does not include structures in the list of objects (#173)
- added "compile_opt idl2, hidden" to numerous GDL-written library routines
- VALUE_LOCATE: speedup + better error message
- XMANAGER: many new features supported
- improved IDL compatibility in the idlneturl class
- added FILE_CHMOD
- improvements in PRT_VALID and OBJ_VALID (e.g. correct support of /CAST)
- new implementation of WordExp for use in path expansion
- better integration of !NULL type (#589)
- added WIDGET_INFO(/display) and WIDGET_INFO(/map)
- SPAWN modified to allow immediate return when background job
- multiple choice support in list widget
- better HELP,/HEAP
- FILE_MOVE improvements
- FSTAT() improvements
- fixed HDF_VD_READ segfault issue (#664)
- fixed FindXdr.cmake
- support for SORT()-ing pointers (#698)
- STRUCT_ASSIGN fixed so it assigns correctly parts of structs that were themselves structs
- some compiler warnings eliminated
- fixed crash in REPLICATE_INPLACE (#574)
1.0.0-rc.3:
- transparent reading of windows text files (terminated with <CR><LF>)
- speedup of TRISOL
- SAVE/RESTORE correctly handling complicated objects and heap nested structures
- TERMINAL_SIZE() added
- adding HANNING() and GAUSSIAN_FUNCTION() (thanks J. Tappin)
- SIGMA() added
- fixes in SIMPLEX(), PTRARR() and IDLNETURL
- correction dim. in POLYWARP() (thanks Igor Ch.)
- reworked help,/obj and help,/path_cache and help,/sys
- complex inputs in READS
- removing EditLine and PSlib from dependencies
- fixed OpenMP-related bug in MAX/MIN
- revised test_hash() and test_list()
- added test_widgets()
- numerous small fixes (CMake, typos, cleanups, compilation issues...)
- Windows compilation issues
- numerous updates in plotting and widget infrastructure
- updated manpage