History

1: Introduction
2: Invoking Gre
3: Gre Grammar
4: Commands
5: Cookbook
6: Hints
7: History
8: Plans
9: Concept Index

7: History of Gre

The `gre' version-numbering scheme is quite standard, borrowing from the Linux methodology. It is worth a moment of explanation. `gre' version numbers comprise three integers separated by decimal points (e.g. `0.2.2').

The first digit (`0' in the present example) represents the major version number. This number changes infrequently, perhaps once in a couple of years, and indicates very significant changes to `gre'.

The second digit (`1' in the present example) plays two roles. The first role is natural: higher values indicate more recent releases. The second role, borrowed from Linux, is more clever: odd-numbered values indicate that the version is undergoing rapid development. New features may be added and then modified or even deleted. In the Linux parlance, the version is said to be ``unstable.'' Such odd-numbered versions should only be used by those who feel comfortable being on the bleeding edge of software development. However, if the second digit is an even number, the version is said to be ``stable.'' This means that the features are frozen, with the only changes occuring being bug fixes.

The third digit is updated for each and every release within a so-called ``stream.'' Thus, versions `0.1.1', `0.1.2', etc., are said to be within the unstable stream numbered `0.1'. It is common for unstable streams to have many releases, often several a week, so that the last digit can get up to high numbers (50 or more). By contrast, the the stable streams have many fewer updates (usually fewer than 5 or so).

7.1: Unstable (developmental) stream 0.3.x

No versions yet.

7.2: Stable stream 0.2.x

Version 0.2.2 2000-jun-29
  • Fix bug in interpolation of synonyms into strings.

Version 0.2.1 2000-may-8

  • Clean up installation scripts.
  • Make user-written textual subroutines work correctly.

Version 0.2.0 2000-may-6

  • Identical to version 0.1.45, except for the version number. One of the main things that this version lacks, compared to what is envisioned as the final `gre' version, is decent and stable support for images. Since adding image support may be a slow process, this 0.2.x stream is intended as a sort of landing on a staircase.

7.3: Unstable (developmental) stream 0.1.x

Version 0.1.45 2000-may-4
  • Add `set x axis unknown' and same for y axis.

Version 0.1.44 2000-may-3

  • Add `set y axis decreasing' and `set y axis increasing', and analogously for the x-axis; see Set x axis.
  • Change so that the numbers on axes all have same number of digits after the decimal point.
  • Clean a bug in regular expression matching, which prevented recognition of the `^' character as a flag denoting the beginning of a string; see Comparing Textual Items With Regular Expressions.

Version 0.1.43 2000-apr-30

  • Change copyright date to 2000 ... a few months late!
  • Improve discussion of version-numbering scheme in the manual.
  • Fix bug that made `make test' (invocation of the test suite, normally done only by power users) fail, due to directory renaming in recent version.

Version 0.1.42 2000-apr-29

  • Change the Makefile in the `proj' directory (which creates map projections) to remove a mysterious bug that occurs on some Solaris computers.

Version 0.1.41 2000-apr-26

  • Add ability to use any punctuation character in string-edit constructs, e.g. `$name =~ s:foo:bar:' can be used instead of `$name =~ s/foo/bar/'. The advantage is that this permits editing of the `/' character. see Modifying Strings.

Version 0.1.40 2000-apr-18

  • Change location of files from the `/opt/...' directory to more standard locations. For an example, what used to be `/opt/gre/bin/gre' is now `/usr/bin/gre'. This is more consistent with the linux OS.
  • Use OS-installed subroutines to check for NaN and Inf, if these subroutines are available.

Version 0.1.39 2000-apr-15

  • Fix bug in memory allocation of image colormaps.
  • Change placement of titles so that less space is wasted (Draw title).

Version 0.1.38 2000-mar-14

  • Add assignment of lists to vectors, e.g. `@v = (1,2);'.

Version 0.1.37 2000-mar-10

  • Make `draw grid' obey `set color'.

Version 0.1.36 2000-feb-17

  • Add `my $x,$y;' and `my ($x,$y);' styles.
  • Trying to get `skip' working.

Version 0.1.35 2000-feb-15

  • Fixed two sample files that were broken (`sound_speed.gre' and `TS.gre') because they used a version of `my' that isn't supported right now.
  • Remove bug in `subs.cpp' that was revealed in version 2.95.2 of the gcc compile; the changed source still compiles fine in the author's version 2.91.66 of this compiler.

Version 0.1.34 2000-feb-12

  • Add iso-latin-1 font support for European languages which have accents over/under letters. Selection of font ``encoding'' is now available with the `set font encoding' command Set font encoding.

Version 0.1.34 1999-oct-25

  • Fix bug in `set image range' that didn't record the top end of the range.

Version 0.1.33 1999-sep-24

  • Fix bug in `draw x box plot' and `draw y box plot' that made it not realize that data existed.
  • Remove `log()' subroutine, added in version 0.1.31, because it was confusing even me! Stick to `ln()' and `log10()', which make sense to everybody.

Version 0.1.32 1999-Jul-27

  • Relax requirement for parentheses surrounding the expression in `if' statements, `while' loops, etc. However, the `for' loop still needs it!

Version 0.1.31 1999-Jul-20

Version 0.1.30 1999-jul-14

Version 0.1.29

  • Add `=~' operator for modifying text-valued scalar variables see Modifying Strings.

Version 0.1.28 1999-jun-26

  • Add
  • If clipping is on, ensure that contours extend to edges of clipping box. NOTE: this introduces a new bug: labels may be messed up this way though (since they may be drawn, invisibly, outside the box); another version will get rid of this bug.

Version 0.1.27 1999-jun-16

  • Add `draw grid' see Draw grid.
  • Fix bug in `read grid x|y' that made it think non-empty files were empty.
  • Tweak manual so that it compiles in the version of `texinfo' that comes with redhat-linux version 6.0.
  • Remove bug in which post-increment and post-decrement operators yield the values from after the opertion, not before.

Version 0.1.26

  • Add `draw filled contour'. This is a TEST VERSION ONLY, and may not work properly. It is also NOT documented yet. Finally, I am not sure the syntax will remain as it is; I may make it be `draw contour filled' instead.

    At any rate, the below is a demo file:
        set x grid 0 1 0.1;
        set y grid 1 2 0.25;
        open(IN, "test.dat-2") or die;
        read grid data IN;
        draw axes;
        set color red;   draw filled contour 1.5;
        #set color black;draw contour 1.5;
        set color green; draw filled contour 2;
        #set color black;draw contour 2;
        set color brown; draw filled contour 2.5;
        #draw contour 1.5 2.5 0.5;
    
    for datafile, `test.dat-2', that is:
       2 1 0 0 0 1 2 1 0 0 1
       3 2 0 0 0 2 3 2 0 0 2
       2 1 0 0 0 1 2 1 0 0 1
       0 0 0 0 0 0 0 0 0 0 0
       0 0 0 0 0 0 0 0 0 0 0
    
    Note that this example tests: (1) multiple peaks; (2) peaks that interesect one side; (3) peaks that intersect two sides.

Version 0.1.25

  • Add skeleton for filled contours. The new command may be called `draw filled contour', or something like that, but in any case it is not working yet.
  • In Postscript driver, prevent needless repetition of commands to set the pen color. For a text-intensive, text-only application, this reduces file size by a factor of 3.

Version 0.1.24

  • Add `set image colorscale' see Set image colorscale.
  • Add `draw image' see Draw.
  • Add `print image' see Print.
  • Add `convert grid to image' see Convert grid to image.
  • Speed up `glob' by using POSIX.2 `glob' library call, if it is installed see Glob. Also, fix bug that occured for globs that returned no matches.

Version 0.1.23

  • Fix bug in `glob' see Glob. At the same time, lay groundwork for proper perl-style lists.

Version 0.1.22

  • Add ability to assign to variables in `my' commands see My. Remove ability to give `my' lists of variables ... this ability will be added back later.

Version 0.1.21

  • Add `set flag'.
  • Make `open' recognize filenames ending in `.Z', and first uncompress them with the unix `uncompress' program.
  • Make `open' recognize filenames ending in `.gz', and first uncompress them with the GNU `gunzip' program.
  • Ensure that any temporary files are removed no matter how `gre' exits (except for a core-dump).

Version 0.1.20

  • Fix bug in which `set dash' (without keyword `on') didn't set to dashed lines.

Version 0.1.19

  • Change so that `0' is written with same format as other numbers, on the y axis. (This removes a remnant from Gri, which had to do with rounding artifacts, artifacts which seem to have disappeared in recent versions.)

  • Fix bug in which various `draw' commands didn't obey clipping exactly near the edges of the clipping domain.
  • Fix bug in which `draw polygon' and `draw line' that caused automatic drawing of axes even for centimeter-based coordinates.

Version 0.1.18

  • While drawing strings, insert a thinspace (1/6-th width of character `m') after math-mode italicized strings, if next item is a closing-parenthis or a non-mathmode character.
  • Move axes autoscaling from `read columns' into the `draw' commands. This removes a bug that prevented autoscaling for columns created (or modified) by loops.
  • Add `set clip to curve' see Set clip.
  • Add `pscomment' see Pscomment.

Version 0.1.17

Version 0.1.16

  • Add `new page' see New Page.
  • Add matching for regular expressions see Comparing Textual Items With Regular Expressions.
  • Recognize `package' keyword ... but don't obey it yet see Package.
  • Planned: make `package' localization work on `$'-style variables. Note: must not localize `$ARGV', `$_', and all variables beginning with `$_').
  • Planned: make `package' localization work on `@'-style variables.
  • Add `use' command see Use, allowing incorporation of modules.

Version 0.1.15

  • Port to the `egcs' compiler.
  • Add linux-style processing of commandline options, including long-names and aliasing see Commandline options.
  • Add `ROWS' option to `read columns' see Read columns.
  • Add web-delivered files for use in the `open' command see Open.

Version 0.1.14

Version 0.1.13

  • Add `read grid' commands see Read.
  • Add `erf()' and `erfc()' mathematical functions.

Version 0.1.12

  • Speed up `set map projection' by making it internal instead of a system-call see Set map projection. This also reduced requirement to have `set map projection' on the system.
  • Add `set clip rectangle'
  • Allow embedded newlines in strings, and handle in `print' (but not in drawing commands ... yet).
  • Add unix-like back-tick capability to strings see System.
  • Add `set missing value' see Set missing value.
  • Add `set page' command see Set page.

Version 0.1.11

  • Add `set map projection' support to `draw curve', `draw symbol', and `draw line from'.
  • Add `$ARGV' vector to hold command-line arguments.
  • Add `-p' command-line option.

Version 0.1.10

  • Add `set map projection' command and related subroutines -- but not support in the various drawing commands.

Version 0.1.9

  • add `?' and `:' operator pair
  • add `rewind' subroutine
  • add `printf'
  • add `$_time'

Version 0.1.8

  • add `regress'
  • add `draw arrows'
  • add `set arrow size'
  • add `set u scale'
  • add `set u scale'
  • add `set symbol size'
  • add `draw curve filled'
  • add `draw curve overlying'
  • add beginnings of `draw contour'
  • use English, rather than numeric, codes in `set line cap' and `set line join'
  • add all `draw x/y box plot'
  • add `set image range'
  • prepare for `delete' command (NOT DONE YET!!)
  • add `axis|symbol|all' option to `set line width'

Version 0.1.7

  • add all gri-like `draw axis' styles
  • change `draw arrow' to match gri syntax
  • rename `draw line connecting' as `draw line from' to match gri
  • add `text_ascent', `text_descent', and `text_width'
  • add `draw box'
  • extend `draw label' to match gri
  • add `draw x axis' and `draw y axis'
  • allow `default' in `set font size'
  • allow `default' in `set line width'

Version 0.1.6

  • prevent redefinition of existing cmds
  • add `sw_alpha()' function
  • add `sw_beta()' function
  • add `sw_spice()' function

Version 0.1.5

  • add `sw_lapse_rate()' function
  • add `sw_salinity()' function
  • rename all `eos_' functions as `sw_' functions
  • add `set contour format'
  • add `set contour label position'

Version 0.1.4

  • new method for variable interpolation
  • add `sw_freezing_temperature' function

Version 0.1.3

  • switch from gri-like string mathmode, $...$, to \(...\), to not collide with variable interpolation syntax.
  • add `set line join'.
  • add `draw isopycnal'.
  • add `reorder columns randomly'.
  • add `set clip on' and `set clip off'
  • add `glob' (not understood outside `foreach', yet)
  • add sw_density and eos_potential_temperature functions
  • allow `open' filenames to be pipe commands
  • add `print columns'
  • add `print grid'
  • add `draw arrow'
  • add `draw label'
  • rationalize code to speed compilation
  • warn if filehandle not in upper-case
  • improve accuracy of PostScript bounding-box
  • add `set x|y grid'

Version 0.1.2

  • allow e.g. `$#vname' as an lvalue (not documented yet)
  • make many commands coerce strings to numeric and vice-versa
  • add `set x|y format'
  • make `split' attach proper symbol-table item (bug fix)

Version 0.1.1 - add enough to allow crude x-y plots

  • add e.g. `$vector[$index]++'
  • add e.g. `$vector[$index]--'
  • add `draw line connecting'
  • add `draw symbol'
  • add `draw title'
  • add `set line width rapidograph'
  • add `draw curve filled'
  • add `set symbol size'
  • add `draw symbol'
  • add `draw symbol "name"'
  • add `set graylevel'
  • add `set tic size'
  • add `set tics in|out'
  • add `ls' and `cd'

Version 0.1.0

  • add `chomp'
  • allow `chop' and `chomp' to take variable_name as arg
  • add `set x|y type'
  • make `set dash' work (all forms)
  • add `set font to $name'
  • make `chop()' be a subroutine
  • add `set font size'
  • add `set color "name"'
  • add `set color hsv'
  • add `set color rgb'
  • make ps filename be correct

(c) 1997-2000 Dan E. Kelley, email Dan.Kelley@Dal.Ca