Downloadable from our Releases page.

Please note:

  • The Python 2 interface will be removed in Q1 2023. Users are strongly advised to migrate to Python 3.

  • We have added an experimental CMake option to allow compilation with a C++ compiler. To enable this, pass the following to the cmake command:
    -D ENABLE_EXPERIMENTAL_BUILD_WITH_CXX=ON
    This option is disabled by default.

Changes for Version 2.27.0:

New Features/Improvements

  • Performance enhancements
    • [ECC-1403] - GRIB: codes_grib_nearest_find too slow
    • [ECC-1427] - GRIB Performance: Improve decoding speed of CCSDS packing
    • [ECC-1422] - BUFR performance: Reduce number of dynamic memory allocations

  • [ECC-1405] - Add new function: codes_handle_new_from_samples
  • [ECC-1413] - GRIB2: add iteration key in the MARS namespace for stream=elda, type=4i
  • [ECC-1212] - MARS key mapping for local time templates
  • [ECC-1393] - CMake: Add option to build ecCodes with C++ (Experimental)
  • [ECC-1399] - GRIB2: Add parameters for additional precipitation type severity and frequency
  • [ECC-1400] - GRIB2: Change shortnames of 260318 - 260321
  • [ECC-1411] - GRIB: Add CAMS physical quantities
  • [ECC-1412] - BUFR: Code table 020063 is missing the option with value 12
  • [ECC-1417] - GRIB2: Replace key aerosolType with constituentType
  • [ECC-1423] - GRIB2: Add wet-bulb potential temperature
  • [ECC-1425] - GRIB2: Add mars keyword FCMonth for C3S seasonal
  • [ECC-1435] - GRIB2: Add correct MARS level mapping for sea ice and snow layer
  • [ECC-1440] - GRIB2: ECMWF local definition 300 should be for decoding only (no encoding)
  • [ECC-1419] - C API: codes_fieldset_new_from_files: The 'filenames' argument should be const
  • [ECC-1424] - Allow accessor from_scale_factor_scaled_value to operate on an array of scaled values
  • [ECC-1430] - GRIB2: Add extra values for stepType: 'severity' and 'mode'
  • [ECC-1436] - GRIB2: Duplicated WMO/192 definitions in localConcepts/ecmf
  • [ECC-1439] - GRIB2: concept "units" should be read-only as it does not make sense to set it explicitly
  • [ECC-1441] - GRIB: Add support for OpenJPEG v2.5
  • [ECC-1442] - BUFR: bufr_dump should insert a question mark instead of dot for non-printable characters
  • [ECC-1404] - Python3 bindings: Add the grib_get_gaussian_latitudes() function
  • [ECC-1405] - Python3 bindings: Add new function: codes_handle_new_from_samples
  • [ECC-1415] - Python3 bindings: Implement a higher-level Python interface (Experimental)
  • [ECC-1429] - Python3 bindings: Remove the file "eccodes/messages.py"

Bug Fixes

  • [ECC-762] - GRIB2: find nearest functionality not working for MIR reduced grid sub-areas
  • [ECC-1054] - bufr_dump error with unsupported operator 54
  • [ECC-1388] - GRIB2 CCSDS: Unpacked values different from simple packing
  • [ECC-1392] - Fortran interface: codes_open_file fails if the filename has spaces
  • [ECC-1395] - BUFR: Encoding should fail if attempting to encode message with an undefined element descriptor
  • [ECC-1396] - Clang -fsanitize=undefined: runtime errors during tests
  • [ECC-1397] - Tools: grib_ls nearest neighbour with JSON output
  • [ECC-1401] - BUFR: bufr_dump generates invalid JSON
  • [ECC-1402] - GRIB1: Nearest point incorrect for second order boustrophedonic
  • [ECC-1406] - GRIB: grib_ls -l reports last grid point is out of area
  • [ECC-1407] - grib_set -r -s packingType=grid_simple does not preserve accuracy on input packingType=grid_ieee
  • [ECC-1410] - GRIB: C API: keys iterator name is NULL
  • [ECC-1414] - GRIB: Nearest neighbour does not work for PNG packing
  • [ECC-1416] - GRIB: Setting computed key firstSize to 3e-8 sets wrong coded keys
  • [ECC-1428] - GRIB2: No error when setting invalid marsType on S2S/TIGGE/UERRA
  • [ECC-1431] - GRIB2: CCSDS encoding failure AEC_STREAM_ERROR
  • [ECC-1432] - GRIB: Segmentation fault: nearest point on reduced Gaussian grid subarea
  • [ECC-1434] - Testing: tests/grib_md5 does not execute on osx on conda-forge