30-09-2008   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.6.4
	* Fields containing a bitmap with all missing values can be coded in grib1 and grib2
	* Multifields grib2 messages can be loaded from memory.
	* local definition 31 added
	* Better use of memory
	* minor bug fixes

16-07-2008   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.6.1
	* More efficient use of memory and improvement of performance.
	* Thread safe version available through the --enable-pthread configure option.
	* New computation of kindOfInt, kindOfLong, kindOfDouble, kindOfFloat, kindOfSize 
	  to allow safe arguments handing between Fortran 90 and C.
	* A new key bitmap is provided to get the full bitmap as a string with the grib_filter
	  instruction:  print "[bitmap]";
	* all the tools are failing on error and can be forced to proceed execution with
	  the option -f . The only exception is grib_ls because we already have an identical
	  tool failing (grib_get).
	* new error messages from the Fortran 90 interface will give you some more chance to debug
	  your code.
	* New function grib_count_in_file available from Fortran and C to count the messages in a file.
	  See example: examples/F90/count_messages.f90
	* In the Fortran 90 interface any valid grib id passed to a grib_new_from_file or grib_new_from_message
	  will be released before being assigned to a new grib message. 
	  Example
		 call grib_new_from_file(ifile,igrib, iret)
	     do while (iret /= GRIB_END_OF_FILE)
		   ... do something with the message pointed by igrib
		   ... igrib will have the same value, but 
		   ... it will point to a different message each cycle
		   ... the message from the previous cycle will be released
		   ... no need for grib_release(igrib)
		   call grib_new_from_file(ifile,igrib, iret)
		 enddo
	  If you want to keep the grib message in memory remember to pass a negative grib id.
	  Example
	     call grib_count_in_file(ifile,n)
		 allocate (igrib(n))
		 do i=1,n
		   call grib_new_from_file(ifile,igrib(i), iret)
		   ...
		 enddo
		 ... remember to release the grib ids to free memory
		 do i=1,n
		   call grib_release(igrib(i))
		 enddo
	* grib_filter is now able to print with a format, number of colums and a separator for array keys.
	  The format is expressed with a % followed by a C like (printf) format declarator.
	  The number of columns is started with !
	  The separator string is delimited by ' '
	  Examples 
	   print "[values!6%.5f',']"       values with 5 digits precision in 6 columns separated by ,
	   print "[latitudes%.3f!1]"       latitudes with 3 digits precision in a column
	   print "pl={[pl!7', ']}"         pl (number of point for each latitude) in 7 columns separated by ', '
	* New keys:
        julianDay
        latLonValues    array containing latitude(1),longitude(1),value(1), latitude(2),longitude(2),value(2),...,
                        latitude(N),longitude(N),value(N)   (N=number of points in the grid)
        latitudes       latitude(1),latitude(2),...,latitude(N) (N=number of points in the grid)
        longitudes      longitude(1),longitude(2),...,longitude(N) (N=number of points in the grid)
        distinctLatitudes    list of distinct latitudes
        distinctLongitudes   list of distinct longitudes
	* minor bug fixes

03-06-2008   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.5.0
	* Review of packing algorithms. Improvement of performance mainly on big endian
	  platforms.
	* Modified the internal retrieval of keys, improving performance in getting and setting
	  keys.
	* Implemented memory management. An efficient tecnique to reuse memory is implemented.
	  --disable-memory-management configure option available to disable the memory managemet 
	  and use system malloc/free.
	* Some experimental multithreaded packing is available for big endian machines.
	  A configure option --enable-omp-packing is provided to enable the openMP instructions
	  contained in the new packing. The environment variable OMP_NUM_THREADS sets the number
	  of threads used in the packing algorithm.
	* grib_filter improvement:
	  * it is now possible to set array keys like values or pl as follows:
	    values = { 0.1, 3.2, 7.5 };
	  * it is now possible to print array keys like values or pl as follows:
	    print "values=[values]";
		it is also possible to print on a file ("test.out") doing:
		print("test.out") "values=[values]";
	  * better error messages are printed
	  * it does not fail if an undefined key is used in a write or print statement   
	* New keys or changed keys:
	  * a scale factor and an offset can be applied to the data values through the keys
	    "scaleValuesBy" and "offsetValuesBy". 
	  * setBitsPerValue is the new key to be used to change the number of bits per value.
	    It also executes the repacking.
	  * The keys periodOfTime is now working also when indicatorOfUnitOfTimeRange=0 (time units is
	    minutes)
	* Concepts can be defined by the user. Concepts are a way to link the value of a key to
	  a combination of values of other keys. They are used to define the short_name and the
	  name.
	* minor bug fixes

07-02-2008   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.4.0
	* New Fortan 90 interface. Main featues:
	  * unique grib_get/grib_set subroutines to get/set any variable type.
	  * status code is an optional argument in all the subroutines (when omitted 
	    the program will exit in case of error)
	  * new subroutine grib_get_data to get the latitude/longitude/values arrays.
	  * new subroutine grib_get_element to get one or several elements of an array key 
	    through their index.
	  * new subroutine grib_nearest function to get the nearest grid point of a given lat/lon.  
	    It accepts in input also arrays of latitude/longitudes to find the nearest points in one
		single call. A land sea mask mode is also available to get the nearest land point.  
	* New Fortran 90 examples and documentation.
	* New grib_keys tool to obtain the list of keys available for a specified type of grib.
	* Modified the -l option in grib_ls (see documentation or type grib_ls without arguments)
	* fixed a bug in the grib_filter and added the -o option for the output file.
	* minor bug fixes.

12-11-2007   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.3.0
	* grib_ls -l lat/lon/mode to retrieve values in the nearest grid points of a given
	  latitude longitude point
	* grib_ls -B"order by" to order the output using some keys
	* grib_ls -i index. To extract the value in the index grid point.
	* new grib_dump exposing a minimum set of keys which are the ones suggested for the
	  standard use. Some options added to the grib_dump. The output of this new
	  grib_dump is ready to be coupled to the new grib_gen which will be released in the
	  next version.
	* grib_copy -r to repack data fixing problems in the original file
	* improved keys search for faster tools
	* grib_get_data and grib_iterator working with all scanning mode
	* new experimental functions introduced, not available in the fortran
	  interface: grib_fieldset_new,grib_fieldset_apply_order_by,grib_fieldset_next_handle
	  grib_nearest_new,grib_nearest_find,grib_nearest_delete
	* some examples on the grib_fieldset and grib_nearest are added.
	* The management of the missing data in grib_get_data is changed. Please refer to the help
	  obtained executing grib_get_data without arguments.
	* Added the key stepRange which is native type string. It can represent start and end of a
	  cumulation or a max of min interval. Example stepRange=24-36 for a precipitation means that it
	  is cumulated between 24 and 36. It also addresses the problems with the big steps which don't
	  fit in the grib1 P1 and P2. 
	* Added key numberOfCodedValues. It is different from numberOfValues only if a bitmap is present and
	  the difference between the two should be numberOfMissingValues.
	* Added the option -g to grib_copy, grib_set, grib_convert, grib_filter to preserve GTS headers 
	  wrapping the grib message
	* fixed some bugs in the fortran interface
	* fixed a bug in reading the signed floats with the grib_convert.

01-09-2007   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.2.0
	* changed license. Now grib_api is distributed under LGPL see LICENSE file in distribution.
	* changed io functions and configure.ac to support files larger than 2GB  
	* as a consequence to the large file support the key offset has native type double
	* added support for predefined grids
	* modified grib_handle_new_from_file to read messages with wrong message length.
	  In this case an error will be raised.
	* A new -M option is provided for all the tools to turn off the multi-field grib
	  support.
	* Changed behaviour of grib_copy. Default is quiet and option -v (verbose) is available.

09-07-2007   Enrico Fucile <enrico.fucile@ecmwf.int>
-- released version 1.1.0
	* fixed a bug affecting constant fields.
	* rewritten the ibm floating point encoding/decoding routines gaining a factor of 7 in performance
	* fixed a problem in the configure affecting compilation of fortran programs on AIX platforms
	* Added some new keys:
		* max,min,average (maximum, minimum and average respectively of the data )
		* numberOfDataPoints(alias numberOfPoints) computed from the grid description
		* numberOfValues is the same as the numberOfPoints if a bitmap is not present 
		  otherwise it takes into account the bitmap
		* numberOfMissing (alias numberOfMissingValues) number of missing values in the field
		It's easy to check if a field is constant by simply comparing max,min,average
		and some information about bitmap and missing values can be found comparing numberOfValues
		numberOfPoints, numberOfMissing.
	* added some new tests
	* added a new example on how to print all the data when the iterator is not available.
	* grib_tools are now failing with an error when the input file does not contain any 
	  valid grib message
	* added management of reduced gaussian non global fields.

17-04-2007   Enrico Fucile <enrico.fucile@ecmwf.int>
	* grib_api version 1.0 released
