Skip to end of metadata
Go to start of metadata

This is the first full (Production-ready) release of ecCodes.
This means that the application has gone through a thorough internal testing process and that all known technical issues have been resolved.  It is now fully functional and ready to be released for general use.

GRIB encoding and decoding has been particularly well tested within the IFS and ecCodes replaces GRIB-API in the next operational cycle update.
BUFR encoding and decoding has been tested and work has started to replace BUFRDC with ecCodes in ECMWF operational software.


Downloadable from our Releases page.

Changes for version 2.0.0:


  • [ECC-260] - Add support for template 5.42 (CCSDS)
    Thanks to Daniel Lee (DWD) and Mathis Rosenhauer (DKRZ)

  • [ECC-303] - Cannot build with OpenJPEG version 2
    Thanks to Alastair McKinstry

New Features/Improvements

  • [ECC-284] - Dump instructions to create the input BUFR message
  • [ECC-320] - Dump instructions to decode a BUFR message
  • [ECC-151] - Implement change of compression method in BUFR
  • [ECC-178] - Implement codes_set for delayedReplication in BUFR
  • [ECC-307] - implement area extraction in bufr_filter for compressed data
  • [ECC-314] - implement extraction of a time interval in BUFR for compressed data
  • [ECC-354] - simple thinning of BUFR data
  • [ECC-312] - Interface change: Remove functions codes_new_from_samples and codes_handle_new_from_samples
  • [ECC-297] - Add support for Data representation template 5.42 - Grid point and spectral data - CCSDS
  • [ECC-285] - bufr_dump -Efilter
  • [ECC-292] - bufr_dump -Efortran
  • [ECC-293] - bufr_dump -Epython
  • [ECC-327] - bufr_dump -EC
  • [ECC-295] - codes_set_string_array Fortran
  • [ECC-304] - New wave parameters as requested by member state users
  • [ECC-310] - Python codes_set_array with strings
  • [ECC-348] - BUFR decoding not to fail when wrong data section length
  • [ECC-283] - F90/Python: Add functions for setting definitions and samples paths
  • [ECC-294] - C function grib_get_data has unused argument 'size'
  • [ECC-296] - Use Python distutils to install Python modules
  • [ECC-300] - add some BUFR header keys to dump
  • [ECC-301] - Add tests for bufr_dump -Efortran feature
  • [ECC-323] - bufr_dump should fail if decoding fails
  • [ECC-330] - Array size control in grib_fortran.c
  • [ECC-334] - BUFR edition 3: bufr_dump does not show the key 'edition'
  • [ECC-224] - Make Python and Fortran test for set by rank
  • [ECC-251] - typicalDate should be localDate and read only
  • [ECC-332] - GRIB-netCDF parameter mappings updates

Bug Fixes

  • [ECC-200] - doxygen not working and documentation missing
  • [ECC-236] - bufr_ls does not print the right value for unpacked data
  • [ECC-286] - bufr_filter not able to set keys names starting with a number
  • [ECC-288] - bufr_compare -R key=tolerance does not work
  • [ECC-289] - problem encoding string in BUFR non compressed
  • [ECC-290] - not possible to set value for operator 205YYY in BUFR
  • [ECC-291] - numberOfObservations key in BUFR header conflict with element key name
  • [ECC-298] - fortran codes_new_from_samples does not work for BUFR
  • [ECC-299] - Fortran error messages in codes_ functions print message with grib_
  • [ECC-302] - bufr_compare does not compare attributes
  • [ECC-324] - bufr_dump: Segmentation fault
  • [ECC-328] - Compiler warning: passing incompatible pointer types on macosx
  • [ECC-333] - bufr_compare -H aborting
  • [ECC-335] - grib_util_set_spec: Setting edition=2 and deleteLocalDefinition=1 on GRIB1 does not delete the local definition in target GRIB2
  • [ECC-338] - Many transient keys are shown in the dump and keys_iterator
  • [ECC-317] - Number of values not set correct in JPEG encoded constant field.
  • [ECC-319] - GRIBEditionNumber returns "?" if queried as a string
  • [ECC-316] - GRIB1: Representation of 'seconds' unit (15) disagrees with WMO table 4 (254)
  • [ECC-308] - grib_to_netcdf duplicate grib message error output
  • [ECC-331] - grib_get_size returns incorrect size for GRIB 1 'reservedNeedNotBePresent' key