Please note: There is a new webpage for the Migration to GRIB2: Migration to GRIB2
This webpage also includes a section where changes in the parameter encodings for the coming ecCodes versions are documented: Changes in the parameter encodings

Version 2.34.1 (February 2024)

  • [ECC-1364] - GRIB: Geoiterator for Lambert Conformal in the southern hemisphere
  • [ECC-1768] - GRIB2: Issue with setting PDTN 8, stepUnits and step at the same time
  • [ECC-1771] - Build with -DBUILD_SHARED_LIBS=OFF on the Atos HPC doesn't work
  • [ECC-1772] - GRIB2: activate stepRange for levtype o2d/o3d under stream mmsf type fc
  • [ECC-1751] - GRIB2: Consolidate parameters with fixed statistical processing ranges
  • [ECC-1765] - GRIB2: Move upward sea water velocity encoding to correct typeOfLevel
  • [ECC-1685] - GRIB2: Correct local ECMWF table entries
  • [ECC-1774] - GRIB2: Add MARS system keyword for class Cerise mmsf/fc and msmm.fcmean

Version 2.34.0 (February 2024)

Please note some important changes in this release (v2.34.0) of ecCodes:

  • Support for sub-hourly data in GRIB edition 2. For more details, see here

New Features/Improvements

  • [ECC-1238] - GRIB: Support for sub-hourly steps
  • [ECC-1742] - Add function to clone only the meta-data of a message
  • [ECC-1750] - MARS: Add new class 'ai'
  • [ECC-1757] - MARS: Add stream 'rfsd'
  • [ECC-1713] - GRIB2: Add correct definition to discipline 192 parameter 228004; mean2t for DestinE ClimateDT
  • [ECC-1731] - GRIB2: Add additional paramIds to be used with CAMS chemIds
  • [ECC-1737] - GRIB2: Add wave and ocean parameters
  • [ECC-1740] - GRIB2: Addition to concept combinationOfAttributesOfTile
  • [ECC-1743] - GRIB2: New hydro and wave parameters
  • [ECC-1745] - GRIB2: Local ECMWF parameters for covariances
  • [ECC-1751] - GRIB2: Consolidate parameters with fixed statistical processing ranges
  • [ECC-1756] - GRIB2: Add mean parameters for CERISE project
  • [ECC-1758] - GRIB2: add local ECMWF parameters to pseudo-centre ERA6
  • [ECC-1748] - Tools: grib_dump on index file should print the key types
  • [ECC-1752] - Definitions: Harmonise cfVarName.def files
  • [ECC-1753] - Scripts: Update create_def.pl to work with the new Parameter Database design
  • [ECC-1754] - CMake: Remove deprecated 'FindPythonInterp' module
  • [ECC-1738] - BUFR: Better error message for invalid sequence

Bug Fixes

  • [ECC-786] - grib_get -i -p has a space missing in the output
  • [ECC-791] - grib tools with print of dummy:s puts a " 1" in the output
  • [ECC-1676] - Negative step conversion from hour to seconds fails
  • [ECC-1733] - GRIB2: codes_set_missing doesn't work for indicatorOfUnitOfTimeIncrement key
  • [ECC-1741] - Assertion failure: Encoding a large field in GRIB1
  • [ECC-1744] - Rounding errors in 2 tests with intel LLVM-based compilers 2023.2
  • [ECC-1746] - GRIB2 template 4.34: Incorrect values for 'time' namespace
  • [ECC-1749] - grib_dump: No gap between offsets and key name
  • [ECC-1739] - BUFR: Assertion failure decoding with invalid masterTablesVersionNumber

Version 2.33.0 (December 2023)

Please note:

We are aiming to add official support for sub-hourly GRIB2 data in the next release (v2.34.0).

This will have an impact on users of ecCodes who currently produce sub-hourly GRIB2 data.
We strongly encourage you to contact us ahead of time so that we can help you adapt to the changes that this release will bring.

 

Please note some important changes in this release (v2.33.0) of ecCodes:

  • The key "levtype" is now read-only (for GRIB edition 2). Please use "typeOfLevel" to set fixed surface types
  • The key "validityTime" now has 4 characters as a string (like dataTime). This affects the output of commands like "grib_ls -n time"

New Features/Improvements

  • [ECC-1333] - GRIB2 only: make levtype read-only, typeOfLevel should be used to set fixed surfaces
  • [ECC-1704] - GRIB: Implement unpack_string for validityTime
  • [ECC-1722] - API: Allow setting integer key as missing via codes_set_string
  • [ECC-1714] - GRIB2: Update tables/templates with the latest WMO V32.0.0
  • [ECC-1715] - BUFR: Update tables with the latest WMO V41.0.0
  • [ECC-1537] - GRIB2: Generalised tile template for encoding variables on tiles
  • [ECC-1702] - GRIB2: Add turbulent surface parameters
  • [ECC-1707] - GRIB2: Add support for two FESOM grids
  • [ECC-1724] - Implement changes for CARRA monthly/daily products
  • [ECC-1698] - Add format specifier keys for converting a number (float or int) into a string
  • [ECC-1701] - Compile-time initialisation of IBM/IEEE float tables
  • [ECC-1691] - GRIB2: Destination Earth ClimateDT metadata support
  • [ECC-1697] - GRIB2: Update long name of hydrology parameter 231002
  • [ECC-1700] - GRIB2: Add support for ecPoint
  • [ECC-1709] - GRIB2: Rename indicatorOfUnitOfTimeRange to indicatorOfUnitForForecastTime
  • [ECC-1710] - GRIB2: Replace 'highres' with 'high' in DestinE resolution table
  • [ECC-1711] - GRIB2: Correct incorrect fixed surface encodings in samples
  • [ECC-1712] - GRIB2: New table entries for DestinE ClimateDT
  • [ECC-1713] - GRIB2: Add correct definition to discipline 192 parameter 228004; mean2t for DestinE ClimateDT
  • [ECC-1716] - GRIB2: Use dataDate and dataTime for indexing within MARS stream clte
  • [ECC-1719] - GRIB2: New parameter encodings from WMO FT2023-2
  • [ECC-1720] - GRIB2: Add correct GRIB2 definitions to discipline 192 definitions from WMO FT2023-2
  • [ECC-1721] - GRIB2: Update existing encoding to correct deprecated parameter encoding
  • [ECC-1725] - GRIB2: Add descriptions for soil wetness index parameters
  • [ECC-1729] - GRIB2: Add missing time-mean sea water salinity
  • [ECC-1730] - GRIB2: replace encodings of instantaneous turbulent surface stress component parameters
  • [ECC-1736] - Add MARS classes for C3S hydrology and CERISE projects

Bug Fixes

  • [ECC-1703] - GRIB: AddressSanitizer: heap-buffer-overflow
  • [ECC-1708] - grib_get_data returns offset longitudes in some cases
  • [ECC-1717] - CRASH: grib_get -p numberOfMissing on invalid GRIB

Version 2.32.1 (October 2023)

  • [ECC-1699] - BUFR: Bitmap problem for ERA5 data
  • [ECC-1702] - GRIB2: Add turbulent surface parameters
  • [ECC-1707] - GRIB2: Add support for two FESOM grids
  • [ECC-1691] - GRIB2: Destination Earth ClimateDT metadata support
  • [ECC-1700] - GRIB2: Add support for ecPoint

Version 2.32.0 (October 2023)

 

Please note some important changes in this release (v2.32.0) of ecCodes:

  • The tigge_* tools have been removed (tigge_check, tigge_split etc)
  • The grib1to2 script has been removed

New Features/Improvements

  • [ECC-1361] - Prototype HEALPix grid
  • [ECC-1674] - GRIB2: Add support for encoding template 5.200 (Run length packing with level values)
  • [ECC-1633] - Tools: Deprecate the tigge_* tools (tigge_check, tigge_split, etc)
  • [ECC-1640] - Tools: Remove the grib1to2 script
  • [ECC-1447] - Proposal for a template for parameters dependent on a reference period
  • [ECC-1648] - GRIB2: Update encodings of accumulated tendency parameters
  • [ECC-1649] - GRIB2: Add WMO encodings for wave parameters
  • [ECC-1650] - GRIB2: Update encoding for wave parameters with discipline=192
  • [ECC-1651] - GRIB2: Remove the encoding for wave parameters 3105 and 3106
  • [ECC-1653] - GRIB2: Add encoding for mean parameters
  • [ECC-1655] - GRIB2: Change of definition and new mars levtype concepts for ocean parameters
  • [ECC-1656] - GRIB: Add keys isGridded and isSpectral
  • [ECC-1658] - GRIB2: Add WMO encoding to parameters
  • [ECC-1659] - GRIB2: Update encodings with 192 discipline
  • [ECC-1660] - GRIB: Delete the GRIB2 representation of parameter 3037
  • [ECC-1661] - GRIB2: Add encoding for parameters with only uerra grib2
  • [ECC-1665] - GRIB2: Move parameters to pseudo-centre uerra
  • [ECC-1667] - GRIB: Add new key 'validityDateTime'
  • [ECC-1670] - GRIB: Add new key 'setPackingType'
  • [ECC-1672] - Tools: Add '-d' option for grib_compare
  • [ECC-1677] - GRIB2: Replace discipline 192 local encoding
  • [ECC-1678] - GRIB2: Add encoding for CAPES
  • [ECC-1679] - GRIB2: Replace discipline=192 encodings
  • [ECC-1688] - GRIB2: Update encoding for altimeter wave height parameters

  • [ECC-1693] - Python3 bindings: Update minimum recommended version
  • [ECC-1632] - Definitions: Deprecate GRIB2 template 3.130 and remove code table entries
  • [ECC-1634] - GRIB2: Correction of neutral wind parameters
  • [ECC-1636] - GRIB2: Add more values to the typeOfLevel key
  • [ECC-1637] - GRIB2: Remove template.5.6.def and template.7.6.def
  • [ECC-1645] - GRIB: Update parameter long names and move discipline 192 encoding to legacy
  • [ECC-1647] - GRIB2: Addition of missing fixed surfaces to recently updated parameters
  • [ECC-1662] - GRIB2: new ocean parameters for OCEAN6
  • [ECC-1663] - GRIB2: Revert paramId 26 to old encoding
  • [ECC-1664] - GRIB2: Add new CloudLayer concepts for 'typeOfLevel'
  • [ECC-1666] - GRIB2: Add new MARS class O6 for ORAS6
  • [ECC-1668] - GRIB2: Modification of name/shortName for sea ice temperature parameters
  • [ECC-1669] - GRIB2: New plain sea ice temperature parameters
  • [ECC-1673] - MARS: Add mars.number to the combination ocda/tpa
  • [ECC-1682] - GRIB2: New reflectance parameters
  • [ECC-1683] - GRIB2: Add new pseudo-centre for DestinE (Destination Earth)
  • [ECC-1692] - GRIB2: Add Carbon Dioxide parameter encoding to 210061 for pseudo-centre DestinationEarth

  • [ECC-633] - Fortran examples: looping over messages
  • [ECC-1642] - Geoiterator: No error for badly encoded regular grids
  • [ECC-1643] - GRIB2: Remove experimental templates 5.40010 and 7.40010
  • [ECC-1652] - Improve error message re stepUnits
  • [ECC-1675] - C internals: Add error argument to grib_nearest_factory function
  • [ECC-1684] - GRIB2: Rename wind gust parameters
  • [ECC-1685] - GRIB2: Correct local ECMWF table entries
  • [ECC-1694] - CMake: Add libaec_ROOT as search hint for FindAEC

Bug Fixes

  • [ECC-530] - GRIB2: Order of setting keys creates a failure
  • [ECC-1541] - Modifying the PDTN for GRIB2 changes keys for certain values of typeOfFirstFixedSurface
  • [ECC-1621] - Valgrind error: grib_compare -H
  • [ECC-1631] - Segmentation fault: Decode bufrdcExpandedDescriptors as string
  • [ECC-1638] - GRIB2: Error creating variable resolution latitude/longitude grid
  • [ECC-1639] - CRASH: Nearest neighbour on Gaussian grid with N=0
  • [ECC-1641] - Assertion failure in grib_to_netcdf for acetone product
  • [ECC-1644] - GRIB2: Changing the PDTN changes the scale factor and scaled value keys
  • [ECC-1646] - Error setting GRIB edition to 2 for parameters: sro, uvb, lsp, e, and pev
  • [ECC-1654] - Error setting key of type 'codetable' as a string
  • [ECC-1671] - GRIB: Issue in reading glofas data with eccodes since 2.27.0

Version 2.31.0 (July 2023)

Please note some important changes in the next release (v2.32.0) of ecCodes:

  • The tigge_* tools will be removed (tigge_check, tigge_split etc)

New Features/Improvements

  • Performance enhancements
    • [ECC-1602] - GRIB: CCSDS performance improvement (both decoding and encoding)
    • [ECC-1614] - Performance: Faster grib_count and bufr_count

  • [ECC-743] - Fully implement GRIB encoding with complex spatial differencing packing
  • [ECC-788] - Problem with the scale factor of Potential vorticity surface
  • [ECC-793] - Provide mechanism to reject EXPERIMENTAL parameters
  • [ECC-1312] - ecCodes does not support writing of grid_complex_spatial_differencing
  • [ECC-1552] - GRIB: return non empty proj string for unprojected gridded fields
  • [ECC-1568] - Update C++ standard from C++11 to C++17
  • [ECC-1607] - Move the version info from CMakeLists.txt to the VERSION file
  • [ECC-1600] - sourceSinkChemicalPhysicalProcess key for paramId 403000 Emission mass flux
  • [ECC-1580] - Make codes_get_native_type available in Fortran
  • [ECC-1585] - GRIB2: Update tables/templates with the latest WMO V31.0.0
  • [ECC-1599] - BUFR: Update tables with the latest WMO V40.0.0
  • [ECC-1584] - grib_dump: indicate which keys are 'read-only'
  • [ECC-1611] - C API: Add function to determine if a BUFR key is a coordinate descriptor
  • [ECC-1615] - Fortran API: Ability to read an array of double-precision integers
  • [ECC-1630] - Python3 bindings: Get API version as an integer
  • [ECC-1622] - Python3 bindings: Drop Python version 3.7
  • [ECC-1601] - Python3 bindings: Support GRIB data values array decoded in single-precision
  • [ECC-1610] - MARS: configure keywords mapping for ocda/tpa and oper/fc for ocean levtype o2d/o3d
  • [ECC-1569] - GRIB2: Add missing ocean parameter typeOfLevelConcept
  • [ECC-1577] - GRIB2: Add support for stepType when typeOfTimeIncrement=255
  • [ECC-1504] - GRIB2: Make deprecated WMO parameters legacy
  • [ECC-1564] - GRIB2: Support local product definition templates for different centres
  • [ECC-1625] - GRIB2: ERA6 parameters with constituentType regarding DGOV-357
  • [ECC-1626] - GRIB2: Mass and water budget parameters for ERA6
  • [ECC-1628] - GRIB2: Energy budget parameters for ERA6
  • [ECC-1629] - GRIB2: CAMS emission parameters for additional sink and sources
  • [ECC-1563] - GRIB2: Introduce new local section 4 templates for extra-large ensembles
  • [ECC-1570] - GRIB2: Accumulated mass emission of methane from Wetlands
  • [ECC-1571] - GRIB2: Allow new expver=0002 for class=ur and origin=lfpw
  • [ECC-1574] - GRIB2: Modifications to parameter long names (WMO conforming) for Destination Earth
  • [ECC-1575] - GRIB2: Modification of convective precipitation GRIB2 deprecated encoding
  • [ECC-1581] - GRIB2: Modification of total snowfall GRIB2 deprecated encoding
  • [ECC-1582] - GRIB2: Modification of snow melt GRIB2 deprecated encoding
  • [ECC-1583] - GRIB2: Modification of top net short-wave (solar) radiation GRIB2 deprecated encoding
  • [ECC-1587] - GRIB2: Updating climatological discipline 192 parameter encodings
  • [ECC-1588] - GRIB2: Modification of albedo parameters
  • [ECC-1589] - GRIB2: Change unit of 152; logarithm of surface pressure parameter
  • [ECC-1590] - GRIB2: Add correct GRIB2 definition to discipline 192 parameter 244; fsr
  • [ECC-1591] - GRIB2: New parameter encodings from WMO FT2023-1
  • [ECC-1592] - GRIB2: Add correct GRIB2 definitions to discipline 192 definitions from WMO FT2023-1
  • [ECC-1593] - GRIB2: Add GRIB2 encodings to current GRIB1-only parameters from WMO FT2023-1
  • [ECC-1594] - GRIB: Deletion of unused parameter definitions
  • [ECC-1596] - GRIB2: Deletion of unused parameter definitions
  • [ECC-1597] - GRIB2: Make several GRIB2 encodings legacy
  • [ECC-1598] - GRIB2: Modifications to sea-ice parameter long names
  • [ECC-1603] - GRIB2: New parameter encodings for ocean parameters
  • [ECC-1604] - GRIB2: Modification of sea water practical salinity units
  • [ECC-1616] - GRIB2: Modification of parameter encodings for ocean parameters
  • [ECC-1617] - GRIB2: Merging of GRIB2 encodings into pre-existing GRIB1 parameters
  • [ECC-1618] - GRIB: Fix minor typos in parameter names for consistency
  • [ECC-1619] - GRIB2: Remove trailing spaces from parameter names
  • [ECC-1627] - GRIB2: Add new pseudo-centre for ERA6
  • [ECC-1565] - Add centre abbreviation 'birk' for Reykjavik

Bug Fixes

  • [ECC-803] - Problem with encoding grid_complex_spatial_differencing packing
  • [ECC-1081] - "level" is not edition-independent for potential vorticity levels
  • [ECC-1433] - GRIB2 CCSDS: Very small values are not encoded correctly
  • [ECC-1472] - Complex packing: Incorrect missing values handling
  • [ECC-1560] - GRIB2: Changing from PDTN=8 to 11 changes the level from 1.5 to 2
  • [ECC-1572] - Fortran codes_get/grib_get fails to get array of 32-bit real numbers
  • [ECC-1573] - GRIB spectral_simple: Assertion failed: `ref == *val'
  • [ECC-1578] - codes_handle_new_from_index does not initialise its 'err' argument
  • [ECC-1586] - grib_get_data: Invalid latitude values printed
  • [ECC-1605] - GRIB: Overflow for key forecastTime
  • [ECC-1606] - GRIB2 CCSDS: Corrupted data after changing bitsPerValue
  • [ECC-1608] - GRIB: Increasing bitsPerValue produces different results (in some cases)
  • [ECC-1623] - BUFR: Assigning a single-element array to a string key fails with FunctionNotImplementedError

Version 2.30.2 (June 2023)

  • [ECC-1579] - Fortran: grib_get_real4_array (single-precision mode) not bit-identical
  • [ECC-1586] - grib_get_data: Invalid latitude values printed

Version 2.30.0 (April 2023)

Please note some important changes in this release (v2.30.0) of ecCodes:

  • 32-bit platforms are no longer supported

New Features/Improvements

  • Performance enhancements
    • [ECC-1525] - Performance: Keys 'latitudes' and 'longitudes' should not decode the field values
    • [ECC-1526] - Performance: Unnecessary decoding during nearest neighbour computation
  • [ECC-1467] - GRIB: Support data values array decoded as "floats" (single-precision) to reduce memory consumption
  • [ECC-1510] - GRIB2: Add support for template 5.200 (Run length packing with level values)
  • [ECC-1521] - Drop support for 32-bit architectures
  • [ECC-1543] - GRIB2: New parameter encodings for DestinationEarth
  • [ECC-1544] - GRIB2: Deprecation of parameter definitions
  • [ECC-1545] - GRIB2: Deletion of parameter definitions
  • [ECC-1549] - GRIB2: New parameter encodings for upcoming tile templates
  • [ECC-1556] - Add new MARS class ML for machine learning
  • [ECC-1557] - Add new MARS class D1 for Destination Earth
  • [ECC-1558] - GRIB2: Add new ocean parameters
  • [ECC-1561] - GRIB2: Update some legacy ocean parameters
  • [ECC-1523] - Try downloading of test-data more persistently
  • [ECC-1528] - Tools: Setting -w constraint with count=0 should issue an error
  • [ECC-1531] - Detect old versions of libaec
  • [ECC-1532] - GRIB: Allow setting 'expver' on CARRA/CERRA data
  • [ECC-1534] - Remove the GRIB1 key 'mybits'
  • [ECC-1536] - Testing: Speed up the BUFR downloads by allowing them to be run in parallel
  • [ECC-1538] - Python3 bindings: Add support for CODES_TYPE_BYTES
  • [ECC-1539] - Python3 bindings: Use the 'warnings' library for selfcheck
  • [ECC-1548] - GRIB2: Add missing templates for PDTNs 62 and 63
  • [ECC-1559] - GRIB encoding: data quality checks should test if shortName=unknown

Bug Fixes

  • [ECC-1502] - BUFR encoding: Setting strings longer than the maximum allowed length should fail
  • [ECC-1515] - Assertion failure: set packingType to grid_png
  • [ECC-1516] - grib_dump error on index file
  • [ECC-1518] - grib_to_netcdf: Error 'Cannot get stepUnits as string'
  • [ECC-1519] - grib_ls: Using the 'statistics' namespace does not respect the specified format
  • [ECC-1522] - prgenv/amd: Test eccodes_t_grib_bpv_limit fails
  • [ECC-1529] - grib_util_set_spec: Input packing type of grid_ccsds changed to grid_simple
  • [ECC-1530] - grib_util_set_spec: Input packing type of grid_second_order changed to grid_simple
  • [ECC-1540] - Ensemble member issue with localDefinitionNumber=36 for param=210170 (VSO2)
  • [ECC-1542] - Assertion failure: Reduced Gaussian grid with zeros in its pl array
  • [ECC-1547] - GRIB2: Changing PDTN from rectangular to circular cluster fails
  • [ECC-1550] - GRIB2: Incorrect product definition conversion from 48 to 46
  • [ECC-1551] - grib_get: Error message does not include the offending key
  • [ECC-1554] - grib_util_set_spec: Add support for Lambert Azimuthal Equal Area grid
  • [ECC-1555] - Python3 bindings: 2D numpy array incorrectly handled
  • [ECC-1562] - Segmentation fault: Invalid orderby directive

Version 2.29.0 (March 2023)

Please note some important changes in this release (v2.29.0) of ecCodes:

  • The Python2 interface has been removed
  • Users will require a C++ compiler to build ecCodes. It can no longer be built with a C compiler.
    Note: The C, Fortran and Python3 interfaces have not changed

Please note some important changes in the next release of ecCodes:

  • 32-bit platforms will no longer be supported
  • [ECC-1508] - Set project language to be C++
  • [ECC-1511] - Remove the Python2 interface

Version 2.28.0 (January 2023)

Please note some important changes in the next release of ecCodes:

  • The Python2 interface will be removed
  • Users will require a C++ compiler to build ecCodes. It can no longer be built with a C compiler

Deleted parameters and changes to encoding of existing ones

In preparation for the Migration to GRIB2, from 2.28.0 there has been a number of changes in the way a number of parameters are encoded in GRIB 2. There are also a number of new parameters, some existing ones have seen their names changed, and a small number of them have been removed. Check the corresponding links for the details of the parameters affected. If ecCodes 2.28.0 or later is used to encode those parameters that changed encoding, it will not be possible to correctly decode them for earlier versions. 

New Features/Improvements

  • [ECC-1449] - GRIB2: New urban and wetland/vegetation parameters
  • [ECC-1450] - GRIB2: Add entries for wetland/vegetation in WMO tables version 30
  • [ECC-1452] - GRIB2: Update tables/templates with the latest WMO V30.0.0
  • [ECC-1461] - GRIB2: Update Fire Variable names in paramDB
  • [ECC-1464] - GRIB2: WMO conforming water equivalent parameters for DestinationEarth
  • [ECC-1465] - GRIB2: Add GRIB2 encodings to current GRIB1-only parameters for DestinationEarth
  • [ECC-1466] - GRIB2: Add correct GRIB2 definitions to discipline 192 definitions for DestinationEarth
  • [ECC-1469] - GRIB2: Modifications to parameter encodings to reflect standard practice for Destination Earth
  • [ECC-1470] - GRIB2: Modifications to parameter long names (WMO conforming) for Destination Earth
  • [ECC-1479] - GRIB2: Add correct GRIB2 definitions to discipline 192 definitions for DestinationEarth
  • [ECC-1481] - GRIB2: Add GRIB2 encodings to current GRIB1-only parameters for DestinationEarth
  • [ECC-1493] - GRIB2: Setting paramId 131074-131077 changes keys not part of the definition
  • [ECC-1495] - GRIB2: Discipline 192 to legacy for parameters with valid WMO definitions
  • [ECC-1506] - GRIB2: Add soil moisture parameter
  • [ECC-1478] - GRIB2: Deletion of unused parameter definitions (part 1)
  • [ECC-1480] - GRIB2: Deletion of unused parameter definitions (part 2)
  • [ECC-1486] - GRIB2: Deletion of unused parameter definitions (part 3)
  • [ECC-1499] - GRIB2: Deletion of unused parameter definitions (part 4)
  • [ECC-1501] - GRIB2: Add missing local code for source / sink table 4.238
  • [ECC-1503] - Set scaleFactor/scaleValue keys to MISSING for params 228007, 228011, 228014
  • [ECC-1474] - GRIB: local encoding for SPP random field parameters - extension
  • [ECC-1492] - GRIB: Add key jScansNegatively
  • [ECC-1456] - MARS: Create 2 new classes EF (for EFAS) and GF (for GLOFAS)
  • [ECC-1484] - MARS: New class for Greenhouse Gases dataset
  • [ECC-1462] - MARS: Ocean layer correct mapping for mars 'levelist'
  • [ECC-1512] - MARS: New type for time processed analysis
  • [ECC-1513] - MARS: New type for interim forecast
  • [ECC-1514] - MARS: New stream for GFAS reanalysis
  • [ECC-1483] - BUFR: Update tables with the latest WMO V39.0.0
  • [ECC-1497] - bufr_dump -D/-E python: Drop support for Python2
  • [ECC-1457] - Fortran: Interface functions should use 'void*' instead of 'char*'
  • [ECC-1458] - Thread safety: Use 'strtok_r' instead of 'strtok'
  • [ECC-1468] - Replace all instances of the deprecated function 'sprintf' with 'snprintf'
  • [ECC-1482] - grib_dump: Hide keys containing "ECMF" in their names
  • [ECC-1485] - Definitions: Split the statistics from missing-values templates
  • [ECC-1500] - Tools: Print the online help page URL
  • [ECC-1473] - C API: Add the codes_context functions to set logging/printing/etc procedure hooks
  • [ECC-1269] - grib_util_set_spec: Remove obsolete option GRIB_UTIL_SET_SPEC_FLAGS_ONLY_PACKING
  • [ECC-1505] - Python3 bindings: High-level Message.set function should allow dictionary and check result

Bug Fixes

  • [ECC-1172] - BUFR encoding: Memory leaks
  • [ECC-1498] - BUFR subset extraction by area: Memory leaks
  • [ECC-1476] - BUFR: Memory leaked during encoding of test data files
  • [ECC-1477] - Compilation fails with libjasper v4.x.x
  • [ECC-523] - GRIB2: numberOfMissingValues incorrect with grid_complex_spatial_differencing
  • [ECC-726] - grib_get -l reports wrong values with reduced_ll grid (subarea)
  • [ECC-802] - GRIB: Problem with various packing types
  • [ECC-804] - Extraction of point values in regular Gaussian grid when scanning with '+i' and '+j'
  • [ECC-1446] - Python3 bindings: Data file era5-levels-members.grib not included in released tar file
  • [ECC-1460] - Python3 bindings: Cannot import eccodes on M1 MacBook Pro
  • [ECC-1448] - MARS ORIGIN keyword is wrongly overwritten for class = gw, stream = mmsf
  • [ECC-1451] - GRIB: key 'level' not equal to 'mars.levelist' for soil levels
  • [ECC-1459] - UndefinedBehaviorSanitizer: applying zero offset to null pointer
  • [ECC-1475] - Check return size of md5 keys
  • [ECC-1488] - Fortran: Bug in grib_f_get_error_string
  • [ECC-1489] - Crash on MacOS (release build): printing the tool man page
  • [ECC-1491] - Pseudo GRIB: The offset and count keys are incorrect
  • [ECC-1494] - Segmentation fault: 'grib_ls -p values' on several test GRIBs
  • [ECC-1496] - GRIB1: Nearest neighbour value incorrect for grid_second_order_constant_width
  • [ECC-1507] - Errors from cppcheck: Using argument that points at uninitialized variable [ctuuninitvar]

Version 2.27.1 (December 2022)

  • [ECC-1477] - Compilation fails with libjasper v4.x.x
  • [ECC-1475] - Check return size of md5 keys
  • [ECC-1448] - MARS ORIGIN keyword is wrongly overwritten for class = gw, stream = mmsf
  • [ECC-1451] - GRIB: key 'level' not equal to 'mars.levelist' for soil levels
  • [ECC-1484] - GRIB: New MARS class for Greenhouse Gases dataset
  • [ECC-1449] - GRIB2: New urban and wetland/vegetation parameters
  • [ECC-1456] - MARS: Create 2 new classes EF (for EFAS) and GF (for GLOFAS)
  • [ECC-1462] - MARS: Ocean layer correct mapping for mars 'levelist'

Version 2.27.0 (August 2022)

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.

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

Version 2.26.0 (May 2022)

Please note:

  • Calling the deprecated C functions codes_box_new and codes_box_get_points now return an error. These functions will be removed in the next version.

New Features/Improvements

  • [ECC-1375] - GRIB2: Add key to allow alternativeRowScanning to be turned off/on
  • [ECC-1019] - ecCodes and use of BUFR operator 3
  • [ECC-680] - BUFR operator 203YYY: implement encoding
  • [ECC-1387] - GRIB2 CCSDS: bitsPerValue should be set to 0 for a constant field
  • [ECC-1343] - Problems compiling with Jasper v3.0
  • [ECC-1362] - Testing: Add AEC packed data to test suite, that cannot be unpacked by SZIP
  • [ECC-1377] - GRIB: Change units of several wave parameters from dimensionless to radians
  • [ECC-1378] - GRIB2: Update tables/templates with the latest WMO V29.0.0
  • [ECC-1385] - BUFR: Update tables with the latest WMO V38.0.0
  • [ECC-1379] - GRIB: Provide GRIB2 IFS samples with CCSDS packing (for grid-point data)
  • [ECC-1380] - GRIB2: Create mechanism to resolve Fire dataset origin for MARS archiving
  • [ECC-1389] - Python3 bindings: Drop Python versions 3.5 and 3.6
  • [ECC-1367] - C API: codes_get_double_elements: The 'index_array' argument should be 'const'
  • [ECC-1369] - handle_new_from_samples: Allow sample file to include its extension
  • [ECC-1372] - GRIB: Update names and descriptions of 3 GFAS parameters
  • [ECC-1374] - GRIB: Add key 'accuracy' that represents the number of bits, whatever the packing
  • [ECC-1381] - GRIB2: Change the title of parameter code tables to include discipline and category
  • [ECC-1382] - C API: codes_fieldset_new_from_files: The 'keys' argument should be const
  • [ECC-1383] - Spelling: Accessor 'octect_number' should be 'octet_number'

Bug Fixes

  • [ECC-507] - BUFR operator 203YYY: decoded values wrong
  • [ECC-989] - BUFR: Valgrind error: Setting 'unpack=1' before setting unexpandedDescriptors
  • [ECC-1359] - codes_set_string: Fails for integer key even if string can be converted to an integer
  • [ECC-1363] - codes_set_string: Does not fail for invalid value for key of type 'double'
  • [ECC-1370] - GRIB2: Add the 1.5m versions of 2t, 2d, mn2t6 and mx2t6 for S2S
  • [ECC-1371] - GRIB2: Fix definitions for CERRA dataset
  • [ECC-1373] - GRIB2: Two CAMS parameters have duplicate encodings
  • [ECC-1390] - Python3 bindings: NameError: name 'GribInternalError' is not defined

Version 2.25.0 (March 2022)

Please note:

  • The CMake option ENABLE_AEC is now ON by default.
    AEC (Adaptive Entropy Coding) provides the WMO GRIB CCSDS compression and decompression of data.
    To force the build without it, use -DENABLE_AEC=OFF

New Features/Improvements

  • [ECC-1348] - CMake: Option Adaptive Entropy Coding (AEC) should be turned on by default

  • [ECC-1342] - GRIB2: Finalise the development of Ocean modelling
    The GRIB2 encodings of some parameters have changed. Please check the issue details.

  • [ECC-1318] - GRIB: Change units of parameter 260125
  • [ECC-1321] - GRIB2: replace is_s2s key with a generic S2S pseudo-centre
  • [ECC-1324] - GRIB2: replace is_tigge key with a generic TIGGE pseudo-centre
  • [ECC-1334] - GRIB2: add missing typeOfLevel from levtype mapping
  • [ECC-1344] - Always call fflush() and fsync() before fclose() of a written file
  • [ECC-1345] - GRIB: ECCODES_GRIB_IEEE_PACKING environment variable value should be checked
  • [ECC-1354] - GRIB2: Refactor and generalise the postProcessing concept
  • [ECC-1356] - OpenSuse Leap distribution fails to detect libaec even if installed, if sz2 is not installed too
  • [ECC-1357] - GRIB2: Add key 'aerosolTypeName' for aerosol templates
  • [ECC-1298] - GRIB2: Open Data parameters
  • [ECC-1335] - C API: Deprecate functions codes_box_new and codes_box_get_points
  • [ECC-1346] - GRIB: Fix the capitalisation in several parameter names
  • [ECC-1349] - GRIB2: Add the newly proposed heat index parameters
  • [ECC-1352] - GRIB CCSDS packing: Add extra tests
  • [ECC-1358] - GRIB2 UERRA: Add scaledValue/scaleFactor keys for param 174098
  • [ECC-1325] - Examples: Extend 'bufr_keys_iterator' example to determine the subset number
  • [ECC-1326] - grib_to_netcdf: Improve usage message
  • [ECC-1336] - CMake: Introduce ECCODES_ON_LINUX_32BIT variable for testing
  • [ECC-1327] - Examples: Provide the C version of bufr_read_tempf
  • [ECC-1351] - Python3 bindings: Support numpy.int64 as input to codes_set and codes_set_long

Bug Fixes

  • [ECC-670] - PowerPC: Some tests fail on ppc platform
  • [ECC-1315] - Keys like parameterName and nameOfFirstFixedSurface have a trailing space
  • [ECC-1316] - GRIB: Fortran API: codes_index_select doesn't work with 'parameterName' as key
  • [ECC-1319] - GRIB2: Add missing snow layer definition in marsLevtype concept
  • [ECC-1322] - grib_compare: Option '-e' generates dubious error message
  • [ECC-1323] - GRIB: Cannot convert gridType=space_view to edition 2
  • [ECC-1328] - GRIB2: Add missing marsLevtype concept: Lake or river bottom
  • [ECC-1329] - GRIB: Cannot convert Runoff (paramId=205) to edition 2
  • [ECC-1330] - BUFR: bufrTemplate='unknown' but should be 'aircraftReportWithSecondsAndPressure'
  • [ECC-1331] - GRIB: Polar stereographic projection with alternativeRowScanning is incorrect
  • [ECC-1332] - GRIB2: conditional levtype mapping for lake (sfc) vs ocean (o2d) for ice over water parameters
  • [ECC-1338] - Fortran: call to fclose() should check the return value
  • [ECC-1339] - GRIB2: ECCODES_GRIB_IEEE_PACKING environment variable does not work for edition 2
  • [ECC-1340] - GRIB1: setting packingType=grid_ieee does not work if there is a bitmap
  • [ECC-1347] - BUFR crash: malloc failure during encoding
  • [ECC-1350] - grib_compare: Incorrect behaviour when first file argument is a directory

  • [ECC-1254] - python-eccodes on conda uses the synchronised release tag for its version
  • [ECC-1317] - Python3 bindings: Data file tiggelam_cnmc_sfc.grib2 not included in released tar file

Version 2.24.2 (January 2022)

  • [ECC-1298] - GRIB2: Open Data parameters
    Please note: Regarding parameter 228 (=Total Precipitation):
    After converting from GRIB1 to GRIB2, the paramId will no longer change to 228228 (units of kg/m^2) but will remain as 228 (units of m) and the values will not be scaled
  • [ECC-1322] - grib_compare: Option '-e' generates dubious error message
  • [ECC-1328] - GRIB2: Add missing marsLevtype concept: Lake or river bottom
  • [ECC-1329] - GRIB: Cannot convert Runoff (paramId=205) to edition 2
  • [ECC-1318] - GRIB: Change units of parameter 260125

Version 2.24.1 (January 2022)

  • [ECC-1319] - GRIB2: Add missing snow layer definition in marsLevtype concept

Version 2.24.0 (December 2021)

Please note:
The high-level Python interface (in eccodes/high_level/*) was always experimental and has been removed in this release.
Please use cfgrib and pdbufr instead.

New Features/Improvements

  • [ECC-1234] - Python3 bindings: Remove the experimental high-level interface

  • [ECC-1291] - GRIB2: Implement Lambert Azimuthal geoiterator on oblate spheroid
  • [ECC-1280] - GRIB1: Geoiterator for 'space view' is not implemented
  • [ECC-1270] - GRIB2: Change the way MARS levtype is computed
  • [ECC-1241] - GRIB2: Implement the new local time templates for WMO validation
  • [ECC-1284] - bufr_dump: Display of missing strings in arrays
  • [ECC-1300] - GRIB2: Add keys 'firstSize' and 'secondSize' for Aerosol products
  • [ECC-1287] - GRIB2: Remove keys "is_uerra" and "is_efas"
  • [ECC-1289] - GRIB2: parameter database changes required for removal of is_uerra and is_efas keys
  • [ECC-1293] - Update GRIB2 tables/templates with the latest WMO V28.0.0
  • [ECC-1297] - Update BUFR tables with the latest WMO v37.0.0
  • [ECC-1296] - GRIB2: Fix remaining MARS key mapping issues for UERRA/CARRA/CERRA
  • [ECC-1299] - GRIB2: Add WMO encodings for 3 CAMS parameters
  • [ECC-1301] - Add new centre 'UFZ' in Common Code table 11
  • [ECC-1302] - GRIB2: Add missing codes in ECMWF version 1 local tables
  • [ECC-1306] - GRIB2: Add new dry and wet deposition mass fluxes needed for CAMS 48r1
  • [ECC-1307] - GRIB2: Add local ECMWF entries in code table 4.230 for CAMS 48r1 parameters
  • [ECC-1309] - GRIB2: Add new precipitation type diagnostics 'most severe' and 'most frequent'
  • [ECC-1310] - GRIB2: Add convective specific rain/snow water content
  • [ECC-1311] - GRIB2: Add glacier mask parameter
  • [ECC-1313] - GRIB2: Add/update parameters needed for Copernicus flood project
  • [ECC-1276] - MEMFS: Better management of generated files
  • [ECC-1294] - New MARS classes for ERA6 and ERA6/LAND

Bug Fixes

  • [ECC-1261] - GRIB local definition 12: MARS 'time' key should be HHMM not single digit
  • [ECC-1286] - GRIB: Cannot set keys "scaleFactorOfLowerLimit" and "scaledValueOfLowerLimit" via the "lowerLimit" key for negative values
  • [ECC-1295] - GRIB: nearest function fails on regular lat/lon grid on oblate spheroid
  • [ECC-1273] - grib_get_data: keys added via '-p' should be separated by spaces not commas
  • [ECC-1303] - GRIB2: Setting localDefinitionNumber=1 on paramId=228104 (e_WLCH4) corrupts message
  • [ECC-1275] - grib_set: Setting unsigned values to -1 sets the maximum value for that key
  • [ECC-1314] - GRIB1: Memory leak if conversion to GRIB2 fails
  • [ECC-1277] - Test eccodes_t_grib_to_netcdf fails
  • [ECC-1283] - bufr_compare: Does not detect differences in string arrays
  • [ECC-1274] - BUFR: duplicated/incorrect error messages during decode
  • [ECC-1290] - BUFR: Key spectralWaveDensity decoded incorrectly (on Windows)
  • [ECC-1304] - BUFR encoding: Crash if bitmap specification is invalid
  • [ECC-1305] - BUFR: Invalid code in definitions/bufr/tables/operators.table

Version 2.23.0 (August 2021)

Please note:
The high-level Python interface (in eccodes/high_level/*) was always experimental and will be removed in the next release.
Please use cfgrib and pdbufr instead.

New Features/Improvements

  • [ECC-1247] - grib_dump: indicate which key values can be set to "missing"
    The "-D" option of grib_dump can now be used to see which keys can be set to "missing"

  • [ECC-1250] - Update BUFR tables with the latest WMO v36.0.0
  • [ECC-1267] - Performance: reduce number of calls to function 'grib_is_all_bits_one'
  • [ECC-1245] - GRIB: Add typeOfPostProcessing for 'geff' to efas_post_proc
  • [ECC-1249] - GRIB: Update CAMS parameters (required for ADS, task 3)
  • [ECC-1252] - Fortran example: problem compiling grib_read_from_file.f90
  • [ECC-1253] - GRIB2: Error when setting localDefinitionNumber (centre=98)
  • [ECC-1264] - GRIB2: Allow date and time of forecast to be 'missing' in local definition 98.41

Bug Fixes

  • [ECC-922] - grib_get_data should fail on incorrectly coded grid
  • [ECC-1219] - GRIB: packingType conversion from grid_ieee to grid_second_order
  • [ECC-1243] - grib_ls -j: error listing the geography namespace
  • [ECC-1244] - grib_get_data: iterator consumes vast amounts of memory when Ni is missing
  • [ECC-1246] - Python3 bindings: UnicodeDecodeError when parsing BUFR file
  • [ECC-1251] - MARS streams: Add config files for new ENS-Extended range streams
  • [ECC-1258] - GRIB: find_nearest returns wrong point if searched location is at a grid point
  • [ECC-1259] - BUFR encoding: Crash if compressedData set after unexpandedDescriptors
  • [ECC-1260] - grib_ls/grib_get -pstep: does not show step ranges with hyphens in some cases
  • [ECC-1262] - GRIB: Key 'typeOfLevel' not mapped for typeOfFirstFixedSurface 17 and 18
  • [ECC-1263] - GRIB2: CCSDS packing: Assertion when creating constant field
  • [ECC-1268] - eccodes_f90 library should link to threading library (pthreads/omp)
  • [ECC-1255] - GRIB2: Key 'is_efas' has two elements rather than just one

Version 2.22.1 (June 2021)

  • [ECC-1246] - Python3 bindings: UnicodeDecodeError when parsing BUFR file
  • [ECC-1251] - MARS streams: Add config files for new ENS-Extended range streams
  • [ECC-1245] - GRIB: Add typeOfPostProcessing for 'geff' to efas_post_proc
  • [ECC-1249] - GRIB: Update CAMS parameters (required for ADS, task 3)

Version 2.22.0 (May 2021)

New Features/Improvements

  • [ECC-1233] - grib_filter: Allow printing of 'byte' keys like bitmap and section paddings
  • [ECC-1227] - GRIB2: Add new parameter "tropopause pressure"
  • [ECC-1231] - Python2 bindings: Remove the experimental high-level interface
  • [ECC-1232] - GRIB: Add units to orography fields
  • [ECC-1235] - Fortran examples: Show how to convert an error code into a string
  • [ECC-1236] - MARS Streams: Support next ENS-Extended range configuration
  • [ECC-1239] - grib_get_data: Polar Stereographic: Better error message if earth is oblate

Bug Fixes

  • [ECC-1237] - grib_compare behaves differently for different compilers on CRAY
  • [ECC-1242] - GRIB2: version 22 tables are incomplete
  • [ECC-1201] - grib_util_set_spec: packing=av on IEEE packed gribs
  • [ECC-1220] - Encoding with packingType=grid_ieee via codes_grib_util_set_spec
  • [ECC-1221] - Encoding with packingType=grid_complex via codes_grib_util_set_spec
  • [ECC-1222] - Encoding with packingType=grid_ccsds via codes_grib_util_set_spec
  • [ECC-1225] - GRIB1: Fix units reported in grib_dump (for local parameters)
  • [ECC-1226] - Python3 bindings: AttributeError when calling codes_index_get_double
  • [ECC-1230] - Conversion of param=tp to edition=2 loses ensemble number

Version 2.21.0 (March 2021)

Please note:

  • grib_get_data output is slightly modified: Words on the first line are now separated by spaces not commas (See ECC-1197)
  • The tools now check that the output file is not the same as the input to avoid overwriting/corrupting the source (See ECC-539)
  • The MARS keys levtype and levelist have been removed from the GRIB2 templates 4.53 and 4.54 (See ECC-1204)

Contributions

  • [ECC-1207] - GRIB2: BiFourier packing error
    Thanks to Météo-France

New Features/Improvements

  • [ECC-822] - grib_get_data: Allow user to specify number of decimal places for lats/lons
    The option "-L" is now provided for grib_get_data to specify the format for printing the latitudes/longitudes

  • [ECC-539] - grib_copy/grib_set: Avoid overwriting files (output file same as input)
    This is a change of behaviour: The output file cannot be the same as the input

  • [ECC-1211] - GRIB: Add new MARS class 'gw' - Global Wildfire
  • [ECC-1209] - GRIB: New and updated parameters for CARRA/CERRA
  • [ECC-1210] - GRIB: Add additional typeOfPostProcessing to EFAS local definition
  • [ECC-1213] - GRIB: New and updated parameters for CARRA/CERRA, bunch 3
  • [ECC-1214] - GRIB: Add new type of postprocessing for ULYSSES to the efas_post_proc concept
  • [ECC-1223] - GRIB: New and updated parameters for CARRA/CERRA, bunch 31
  • [ECC-1224] - GRIB2: CAMS parameters for 48r1
  • [ECC-1216] - GRIB2: Add 'time' to the 'ls' namespace for local time templates
  • [ECC-1196] - GRIB2: Add support for pre-operational WMO table versions
  • [ECC-1203] - GRIB2 Definitions: Refactor section 4 templates for better modularisation
  • [ECC-1204] - GRIB2 Definitions: Remove MARS keys from templates 4.53 and 4.54
  • [ECC-1205] - GRIB2 Definitions: Remove unnecessary extra key from satellite templates
  • [ECC-1218] - tigge_check update for CARRA/CERRA
  • [ECC-1194] - MARS: Remove unused types
  • [ECC-1208] - Fix name of macros: CODES_DUMP_FLAG_OCTECT and GRIB_DUMP_FLAG_OCTECT

Bug Fixes

  • [ECC-1193] - GRIB CCSDS and PNG packing: setting packingType before values
  • [ECC-1195] - Accessor 'sprintf' should by default be read-only
  • [ECC-1197] - grib_get_data: Words on the first line should be separated by spaces not commas
  • [ECC-1198] - Examples: grib_iterator should mention the 'bitmapPresent' key
  • [ECC-1202] - GRIB CCSDS packing: fails if input packingType=grid_ieee
  • [ECC-1206] - tigge_check not failing for some wrong validityTime/validityDate


Version 2.20.0 (January 2021)

Please note:

  • The CMake option ENABLE_PYTHON has been renamed to ENABLE_PYTHON2
    The Python 2 interface is no longer being developed. Users are strongly advised to migrate to Python 3.
  • The GRIB2 representation of parameter 238 has been modified. See ECC-1177 for details
  • The command "codes_info -v" no longer outputs a trailing space. Some user scripts may need to be modified.

Contributions

  • [ECC-1164] - Performance: grib_nearest_find for reduced Gaussian grids
  • [ECC-1159] - Windows: MEMFS option does not work

New Features/Improvements

  • [ECC-1178] - Spurious trailing blank in "codes_info -v"
    [ECC-1157] - Python 2 support: Rename CMake option ENABLE_PYTHON to ENABLE_PYTHON2
  • [ECC-1168] - Update GRIB2 tables/templates with the latest WMO V26.0.0
  • [ECC-1173] - Update BUFR tables with the latest WMO v35.0.0
  • [ECC-1167] - GRIB: Allow setting byte array as string
  • [ECC-1171] - Performance: Python bindings: remove assert statements
  • [ECC-1181] - Add function to determine if a BUFR key is defined in the header or data section
  • [ECC-779] - Tools: Error 'no messages found in ...' should go to stderr
  • [ECC-1163] - Update CAMS parameters with their CF names
  • [ECC-1166] - GRIB: Add the gridName key for ORCA grids
  • [ECC-1169] - GRIB2: Create 3 new parameters in the category 211
  • [ECC-1175] - BUFR: Local tables to support CloudSat and CALIPSO data
  • [ECC-1177] - Update GRIB2 definition of parameter 238
  • [ECC-1182] - GRIB2: Deprecate Product Definition Template 4.47 in favour of 4.85
  • [ECC-1184] - GRIB2: TypeOfLevel 17 and 18 should be mapped to levtype "sfc"
  • [ECC-1190] - New MARS class UL (Ulysses)
  • [ECC-1192] - Originating Centre: Update the details for the WMO code 291
  • [ECC-1179] - bufr_copy/bufr_ls: Allow 'where' clause with Data Section keys
  • [ECC-1183] - grib_ls: Add "gridName" to the list of keys for ECMWF unstructured grids
  • [ECC-1186] - grib_dump: Does not print the definition file used for Flag Table keys

Bug Fixes

  • [ECC-403] - BUFR: codes_is_missing reports 1 on keys that are not missing
  • [ECC-806] - Local definitions precedence order
  • [ECC-1156] - Python bindings test fails when library is built with MEMFS
  • [ECC-1158] - GRIB encoding: data quality checks (limits) not working for spectral fields
  • [ECC-1160] - Building with ENABLE_PRODUCT_BUFR=OFF and ENABLE_MEMFS=ON fails
  • [ECC-1162] - GRIB2: Remove typeOfFirstFixedSurface from cnmc paramId 500044
  • [ECC-1165] - Assertion: calling codes_set_bytes with incorrect length passed in
  • [ECC-1170] - grib_filter: Fail if key of type double (e.g. values) is assigned to a string
  • [ECC-1174] - bufr_filter: Time interval extraction fails if 'second' key has a missing value
  • [ECC-1176] - Python3 bindings: float32 recognised as int instead of float
  • [ECC-1185] - Crash in codes_context_delete() call
  • [ECC-1187] - BUFR: Crash on codes_set_missing()

Version 2.19.1 (November 2020)

  • [ECC-1158] - GRIB encoding: data quality checks (limits) not working for spectral fields
  • [ECC-1162] - GRIB2: Remove typeOfFirstFixedSurface from cnmc paramId 500044

Version 2.19.0 (October 2020)

Please note:

  • For this release, the minimum required version of CMake is 3.12
  • The CMake option ENABLE_PYTHON now defaults to OFF (previously it was ON).
    In the next release, this option will be renamed to ENABLE_PYTHON2
    The Python 2 interface is no longer being developed. Users are strongly advised to migrate to Python 3.

Contributions

  • [ECC-1140] - Python3 bindings: Segfault from invalid pointer reference in grib_set_double_array()
  • [ECC-1133] - C API: Propagate const char* for codes_index_new_from_file and codes_index_select_string
  • [ECC-1125] - Code contribution to improve performance on NEC

New Features/Improvements

  • [ECC-1137] - BUFR performance: use fixed-length strings for descriptor name and units
  • [ECC-1143] - CMake: Migration to ecbuild v3.4
  • [ECC-1124] - Python 2 support: CMake option ENABLE_PYTHON should be OFF by default
  • [ECC-1142] - CMake: add option to build tools (ON by default)
  • [ECC-1128] - Reduce size of executables
  • [ECC-1145] - GRIB: Add parameter representing "liquid water content in snow pack"
  • [ECC-1155] - GRIB: New CAPE and CIN parameters
  • [ECC-935] - GRIB2: Change encoding of snow depth parameter 141
  • [ECC-1122] - BUFR: Fix the keys for the mars namespace
  • [ECC-1123] - CARRA (non UERRA) parameters (bunch 1)
  • [ECC-1135] - Add new parameters for latitude and longitude for use with unstructured grids
  • [ECC-1147] - GRIB2: Remove typeOfFirstFixedSurface from paramId 228141
  • [ECC-1149] - GRIB: Add new fire parameters
  • [ECC-1153] - Originating Centre: New WMO code 291 for IAP CAS
  • [ECC-566] - multi-threading improvements
  • [ECC-1126] - BUFR: ECMWF Local use section key 'ident' should be trimmed
  • [ECC-1148] - BUFR decoding: better error message when descriptors overflow the data section
  • [ECC-1150] - GRIB keys 'lowerLimit' and 'upperLimit' cannot be MISSING
  • [ECC-1151] - GitHub CI: use same branch of ecbuild

Bug Fixes

  • [ECC-440] - grib_index_release/grib_index_delete does not close the file
  • [ECC-811] - shapeOfTheEarth=6 for GRIB1
  • [ECC-1127] - CRASH: bufr_ls -p expandedOriginalCodes
  • [ECC-1131] - Build failures on big endian platform
  • [ECC-1138] - CRASH: bufr_dump -p on invalid file
  • [ECC-1139] - CRASH: bufr_ls -p numericValues
  • [ECC-1141] - Compile error on MinGW: undefined reference to 'realpath'

Version 2.18.0 (June 2020)

Please note:
ecCodes now uses the standard CMake way of putting the project version number directly into the top-level CMakeLists.txt file.
The file "VERSION.cmake" is no longer present. See ECC-1098 below

New Features/Improvements

  • [ECC-1114] - Lat/Lon iterator: Support for the Mercator grid
  • [ECC-1115] - GRIB: Add new keys to get the proj strings for a grid
  • [ECC-1103] - Update GRIB2 definitions with the latest WMO V25.0.0 code tables/templates
  • [ECC-1104] - Update BUFR tables with the latest WMO v34.0.0
  • [ECC-1111] - Performance: Lock overhead when threads process different files
  • [ECC-1116] - MARS Streams: Add new streams for EFAS and GLOFAS
  • [ECC-1090] - Create a new MARS type "eme" for ensemble data assimilation model errors
  • [ECC-1053] - Add key to get the forecast step in human-readable format
  • [ECC-1088] - Definitions path: Core extensions added to end of path implicitly
  • [ECC-1092] - Rename key 'is_rotated_grid'
  • [ECC-1094] - Fortran API: Implement a way to check if an instance of ecCodes has been compiled with thread support (either POSIX or OpenMP)
  • [ECC-1098] - CMake: define version in the project declaration (in CMakeLists.txt)
  • [ECC-1109] - Upgrade versions of flex and bison
  • [ECC-1110] - Python3 bindings: Remove obsolete function codes_close_file()
  • [ECC-1117] - Python3 bindings: Add codes_grib_multi_support_reset_file()
  • [ECC-917] - eccodes_memfs is a compilation bottleneck
  • [ECC-1068] - tigge_check update (resolution checking for S2S)
  • [ECC-1091] - Change shortname of paramId 171055 to mean2t24a
  • [ECC-1093] - GRIB1: Local definition 192: mars keys should be of type 'string'

Bug Fixes

  • [ECC-1055] - Shape of the earth not taken into account for Lambert Conformal Conic
  • [ECC-1085] - grib_dump: should not fail if a local definition file does not exist
  • [ECC-1096] - bufr_dump shows '2147483647' instead of 'null'
  • [ECC-1086] - grib_copy/bufr_copy: does not fail in the presence of an invalid message
  • [ECC-1097] - Memory leak: bufr_count on an invalid BUFR
  • [ECC-1099] - grib_file_open: errno from fopen overwritten by call to strdup
  • [ECC-1100] - Function grib_context_log(): errno value can potentially be overwritten
  • [ECC-1101] - BUFR decoding: error message issued if numberOfSubsets==0 and empty data section
  • [ECC-1107] - bufr_dump -E: should set the 'messageLength' ECMF local section key
  • [ECC-1108] - Python3 bindings under Windows: use of GRIB/BUFR handle causes crash
  • [ECC-1113] - Python3 bindings under Windows: codes_get_long_array returns incorrect values
  • [ECC-1118] - Crash: substr function called with invalid indexes
  • [ECC-1119] - Testing: Mac OS: tests fail due to json_xs problem
  • [ECC-1121] - Python bindings: Segfault when closing GribFile if messages are closed manually

Version 2.17.0 (March 2020)

New Features/Improvements

  • Performance enhancements
    • [ECC-1071] - Performance: GRIB1: Calculating number of points for Reduced Gaussian grids

  • [ECC-805] - Some keys use the "center" spelling, others (correctly) use the "centre" spelling
    Please note that some GRIB keys have been renamed:

    Old key nameNew key name
    altitudeOfTheCameraFromTheEarthSCenterMeasuredInUnitsOfTheEarthaltitudeOfTheCameraFromTheEarthsCentreMeasuredInUnitsOfTheEarthsRadius
    longitudeOfFirstDiamondCenterLinelongitudeOfFirstDiamondCentreLine
    longitudeOfFirstDiamondCenterLineInDegreeslongitudeOfFirstDiamondCentreLineInDegrees
    projectionCenterFlagprojectionCentreFlag
    latitudeOfCenterPointlatitudeOfCentrePoint
    latitudeOfCenterPointInDegreeslatitudeOfCentrePointInDegrees
    longitudeOfCenterPointlongitudeOfCentrePoint
    longitudeOfCenterPointInDegreeslongitudeOfCentrePointInDegrees
  • [ECC-1082] - GRIB: Rename key 'angularPrecision'
    The key "angularPrecision" has been replaced by "angleSubdivisions"

  • [ECC-1064] - Fortran API: Implement codes_get_api_version()
  • [ECC-1073] - grib_ls/bufr_ls with the JSON option: Set key 'file'
  • [ECC-1058] - GRIB2: Definitions of the new "socioeconomic impact" discipline and its categories
  • [ECC-1061] - GRIB2: new paramIds for UTCI and MRT
  • [ECC-1062] - GRIB2: new paramIds for the Malaria model
  • [ECC-1063] - Apply consistent code style to source

Bug Fixes

  • [ECC-1060] - grib_to_netcdf assertion: 'handle_to_request(r,h) == 0'
  • [ECC-1065] - grib_filter/bufr_filter: Operator '^' (power) argument order wrong
  • [ECC-1066] - GRIB encoding: Data quality checks. Min/max should be specified as 'double'
  • [ECC-1070] - bufr_dump -O should not unpack the data section
  • [ECC-1075] - grib_dump error on GRIB edition 1 with raw packing
  • [ECC-1076] - Segmentation fault when reading grib1 file
  • [ECC-1078] - Missing CODES_UTIL_PACKING_TYPE_CCSDS
  • [ECC-1079] - Missing CODES_UTIL_GRID_SPEC_REDUCED_ROTATED_GG
  • [ECC-1083] - codes_bufr_extract_headers_malloc: Infinite loop when invalid file passed in

Version 2.16.0 (January 2020)

New Features/Improvements

  • Performance enhancements
    • [ECC-1029] - Python3 bindings: Type checks on function arguments should be disabled by default
      In the new Python3 bindings, by default no type checking will be done on function arguments.
      If you wish to enable these checks, set the environment variable ECCODES_PYTHON_ENABLE_TYPE_CHECKS to 1.
      The type checking can add a significant overhead in cases where ecCodes functions are called many times.
  • [ECC-1052] - Porting: Improved support for Windows
    The test pass rate is now 98%. Thanks to Daniel Tipping from OldReliableTech.

  • [ECC-794] - Python3 interface: Expose the grib_get_data() function
  • [ECC-1032] - Python3 interface: Add function codes_samples_path() and codes_definition_path()
  • [ECC-1018] - Encoding and decoding of DIAG pseudo-GRIB messages
  • [ECC-1048] - new GRIB1 local section for model error in ELDA
  • [ECC-1037] - eccodes should build with openjpeg 2.3
  • [ECC-1040] - Implement a way of choosing whether OpenJPEG or Jasper are linked, instead of always linking whichever is found, possibly both
  • [ECC-1045] - GRIB1: Local definition 5: Allow lowerThreshold and upperThreshold to be MISSING
  • [ECC-1051] - bufr_dump -Efilter should output the sample file to use
  • [ECC-1038] - grib_util_set_spec: Add support for unstructured grids (GRIB2)
  • [ECC-992] - GRIB encoding: Data quality checks (limits)

Bug Fixes

  • [ECC-1035] - Memory leak: setting 'scaleValuesBy' and 'setBitsPerValue' when an error occurs
  • [ECC-1039] - Problem converting to expver=test of new ocean data with levtype=o2d
  • [ECC-1041] - grib_to_netcdf gives unexpected parameter names
  • [ECC-1042] - Python3 interface writes integer arrays incorrectly
  • [ECC-1047] - S2S ocean: MARS levtype incorrect for 151131 and 151132
  • [ECC-1022] - Grib2 Keys: parameterName, parameterUnits are displayed incorrectly if the parameterName includes parentheses

Version 2.15.0 (November 2019)

New Features/Improvements

  • Performance enhancements
    • [ECC-753] - Python3 interface: Expose the codes_grib_nearest_find_multiple function
    • [ECC-1003] - Performance: Use faster shift operator rather than power function
  • [ECC-1030] - grib_get: Add '-B' option for ordering
    The option "-B" is now provided for grib_get (ordering). This works the same was as grib_ls

  • [ECC-1016] - Update BUFR tables with the latest WMO version 33
    Note: The key for descriptor 033075  has been renamed:

    DescriptorNew name (from version 33)Old name
    033075scanLevelDataValidityQualityFlagsscanLevelQualityFlags

    The name for the other descriptor 033080 remains unchanged.
    This is due to ECC-1021

  • [ECC-1014] - Update GRIB2 definitions with the latest WMO V24.0.0 code tables/templates
  • [ECC-839] - Add WMO GRIB2 definition to S2S ocean parameters
  • [ECC-993] - GRIB: Support for Copernicus regional reanalysis (CARRA/CERRA)
  • [ECC-999] - GRIB: new -10 degree Celsius isothermal level
  • [ECC-1006] - Create new GRIB1/GRIB2 local definitions for Seasonal forecast monthly means for lagged systems
  • [ECC-1007] - Python3 interface for eccodes cannot write large arrays
  • [ECC-1012] - BUFR: Key 'bufrHeaderSubCentre' should not be a codetable
  • [ECC-1013] - MARS levtype (o2d/o3d) and parameters for S2S ocean
  • [ECC-1015] - New text abbreviation "nasa" for centre=173
  • [ECC-995] - C API: Review const-ness of arguments
  • [ECC-1004] - Handle Copernicus regional reanalysis (CRR) fields the same way as UERRA (is_uerra)
  • [ECC-1009] - tigge_check packing type check
  • [ECC-997] - grib_util_set_spec: Add support for CCSDS packing (GRIB2)

Bug Fixes

  • [ECC-1021] - BUFR: Flag table descriptors have the same key: scanLevelQualityFlags
  • [ECC-1028] - Segmentation fault: bufr_dump -d on message with incorrect replication
  • [ECC-998] - Height levels for class=RR
  • [ECC-1000] - "grib_ls -l" fails when used on two files with different grids
  • [ECC-1001] - grib_ls -j -l lat,lon broken (JSON output with nearest)
  • [ECC-1002] - Windows: encoding tests fail: 'maximum allowable value is 0'
  • [ECC-1008] - ParamIDs 210247–210249 (nitrate aerosol mixing ratios) become 0 if you set STREAM=ELDA
  • [ECC-1020] - codes_count hangs if input is a directory (with option -f)
  • [ECC-1023] - grib_to_netcdf: when writing to a directory without permissions, the error message is very cryptic
  • [ECC-1024] - Python3: segmentation fault on writing GRIB
  • [ECC-1026] - GRIB2 CCSDS packing: Nearest functionality not implemented
  • [ECC-1027] - GRIB2 Table 4.230 empty in tableVersions 6 to 20

Version 2.14.1 (October 2019)

  • [ECC-1001] - grib_ls -j -l lat,lon broken (JSON output with nearest)
  • [ECC-1002] - Windows: encoding tests fail: 'maximum allowable value is 0'
  • [ECC-999] - GRIB: new -10 degree Celsius isothermal level

Version 2.14.0 (October 2019)

Contributions

  • [ECC-969] - GitHub contribution: codes_split_file option to split individual messages
    Thanks to the Bureau of Meteorology

New Features/Improvements

  • Performance enhancements
    • [ECC-604] - Improve multi-threaded performance of GRIB decoding/encoding
    • [ECC-985] - BUFR decoding performance: reduce number of strdup and atol calls
    • [ECC-965] - BUFR decoding performance: tune initial sizes of dynamic arrays


  • [ECC-401] - Request for grib_ls output in JSON format
    The option "-j" will now output in JSON. This applies to bufr_ls too.

  • [ECC-543] - Feature request: -w for grib_histogram
  • [ECC-954] - GRIB: Add fire related parameters for CEMS-Fire
  • [ECC-961] - grib_dump: ability to dump specific keys
  • [ECC-987] - MARS: new class for CARRA/CERRA
  • [ECC-947] - MARS: add new streams WFAS and WFCL (GLOFAS) matching the existing EFAS and EFCL (EFAS)
  • [ECC-948] - MARS: Amend type 'sfo'
  • [ECC-963] - Update parameters shortnames/names
  • [ECC-964] - Update parameter 171207 with correct shortname
  • [ECC-972] - Add WMO GRIB2 definition to CERRA/CARRA parameters
  • [ECC-994] - New parameter for S2S ocean "Mean sea water potential temperature in the upper 300 m"
  • [ECC-827] - grib_to_netcdf should not ignore the HDATE key
  • [ECC-958] - grib_compare: show bit values for codeflag keys
  • [ECC-962] - grib_to_netcdf: Set date to 'hdate' for hindcast fields
  • [ECC-967] - GRIB2: Fallback if tables version is bigger than the latest installed version
  • [ECC-975] - Add new error code: 'Functionality not enabled'
  • [ECC-976] - More user-friendly error when key cannot be decoded as double or long
  • [ECC-979] - grib_util_set_spec: Allow encoding of double values on scaledValueOf/scaleFactorOf keys

Bug Fixes

  • [ECC-136] - grib_compare ignores difference in indicatorOfTypeOfLevel
  • [ECC-428] - Inconsistent number of values when decoding compressed BUFR data
  • [ECC-673] - bufr_filter: Arguments not parsed correctly on CLI
  • [ECC-778] - Valgrind error when GRIB_IEEE_PACKING=1 (Invalid read)
  • [ECC-941] - Crash: simple packed GRIB with invalid data section size/bits per value
  • [ECC-945] - Error converting GRIB1 to GRIB2: total precipitation
  • [ECC-949] - grib_merge fails to merge grib1 tiles
  • [ECC-960] - grib_util_set_spec: Interpolation fails on GRIB message with no levelType key
  • [ECC-966] - Crash: setting shapeOfTheEarth=1 but scale factor missing
  • [ECC-973] - Assertion: BUFR encoding error should return exit code not assert
  • [ECC-974] - Valgrind error: GRIB2: setting gridType=regular_gg on reduced gaussian grid
  • [ECC-977] - GRIB2 encoding of scaledValueOfEarthMinorAxis with out-of-bounds value
  • [ECC-978] - BUFR key section1Padding: bufr_dump -O gives erroneous length=4 instead of 5, the first character is skipped
  • [ECC-981] - grib_util_set_spec: Fails to set gridType of lambert_azimuthal_equal_area
  • [ECC-982] - BUFR decode memory leak: associatedFieldSignificance accessors not freed
  • [ECC-983] - BUFR decoding: Crash in case of invalid delayed replication
  • [ECC-984] - grib_get_data: GRIB2 file with missing jDirectionIncrement produces huge values
  • [ECC-986] - GRIB2: setting shortName=10fgg10 produces 'gust' and not '10fgg10'
  • [ECC-990] - Crash: grib_copy -r on packingType of grid_second_order_general_grib1

Version 2.13.1 (August 2019)

  • [ECC-954] - GRIB: Add fire related parameters for CEMS-Fire
  • [ECC-947] - MARS: add new streams WFAS and WFCL (GLOFAS) matching the existing EFAS and EFCL (EFAS)
  • [ECC-948] - MARS: Amend type 'sfo'
  • [ECC-963] - Update parameters shortnames/names
  • [ECC-964] - Update parameter 171207 with correct shortname
  • [ECC-949] - grib_merge fails to merge grib1 tiles
  • [ECC-960] - grib_util_set_spec: Interpolation fails on GRIB message with no levelType key

Version 2.13.0 (July 2019)

Please note: For this release, the minimum required version of cmake is 3.6.0

Contributions

  • [ECC-924] - GRIB2: Add support for encoding AROME and ALADIN fields
    Thanks to MeteoFrance

New Features/Improvements

  • [ECC-815] - Separate the Python bindings to a different package
    For Python 3 we no longer use SWIG. Please install the Python3 bindings by:   pip3 install eccodes-python.
    We are grateful to B-Open for their help.
    Note: Python 2 is unaffected (it is still SWIG based)

  • [ECC-240] - bufr_dump should be able to dump a given subset
    A new option "-S" is provided for bufr_dump to dump a given subset

  • [ECC-932] - bufr_dump: Add option to print expanded descriptors along with their keys and units
    A new option "-d" is provided for bufr_dump to dump the expanded descriptors

  • [ECC-342] - BUFR: Implement extraction of a time interval for uncompressed data
  • [ECC-913] - Tools: Add gts_count
  • [ECC-925] - Remove the tool bufr_index_build
  • [ECC-600] - Implement grib_find_nearest for rotated lat/lon grids
  • [ECC-877] - Create new S2S ocean parameter Mean sea water temperature in upper 300 m
  • [ECC-909] - Add a key monthlyVerificationTime in all monthly streams
  • [ECC-879] - Add WMO GRIB2 definition to S2S ocean parameters II
  • [ECC-890] - CAMS GRIB parameters required for 46r1 CAMS o-suite
  • [ECC-897] - Add GRIB edition 2 representation to 8 vegetation/biomass parameters
  • [ECC-898] - GRIB: Neural network soil moisture data
  • [ECC-920] - Add WMO GRIB2 to the existing "tpg" parameters and backward compatibility GRIB1 to the new ones
  • [ECC-921] - Add backward compatibility GRIB1 to 10fgg10
  • [ECC-926] - bufr_compare should fail if passed index files
  • [ECC-927] - Update BUFR tables with the latest WMO version 32.0.0
  • [ECC-934] - GRIB2: Remove local ECMWF encodings
  • [ECC-943] - Add WMO definition to S2S ocean parameter Sea surface practical salinity 151219
  • [ECC-947] - MARS: add new streams WFAS and WFCL (GLOFAS) matching the existing EFAS and EFCL (EFAS)
  • [ECC-948] - MARS: Amend type 'sfo'
  • [ECC-770] - Update GRIB2 definitions with the latest WMO V23.0.0 code tables/templates
  • [ECC-846] - grib_to_netcdf slow for high resolution data
  • [ECC-888] - GRIB performance: remove GRIB1-specific keys from GRIB2
  • [ECC-930] - GRIB: Reduce size of reduced lat/lon sample files by removing bitmap section
  • [ECC-931] - bufr_dump -p: print the key 'subsetNumber' (uncompressed data)
  • [ECC-933] - Update parameters 172142, 172143, 172228
  • [ECC-907] - Key required to inquire whether a reduced Gaussian grid is '"legacy"

Bug Fixes

  • [ECC-735] - gts_ls memory fault
  • [ECC-787] - Memory leak in grib_index.c
  • [ECC-817] - grib_ls for GRIB1 has problems dealing with mars.step when it's unaliased
  • [ECC-835] - GRIB iterator for subareas of reduced Gaussian grids produced by mir is shifted
  • [ECC-845] - Python3: Reopening the same file and decoding the first message causes an error
  • [ECC-867] - Python3: file seek ignored by bufr handler (codes_bufr_new_from_file)
  • [ECC-869] - BUFR: Bitmap created inconsistently for different type of data
  • [ECC-871] - Python3: codes_new_from_message returns bytes not str
  • [ECC-887] - BUFR: Search by condition does not work for floating point value
  • [ECC-896] - Fortran API: Memory leak in grib_index_get_int and grib_index_get_string
  • [ECC-902] - UERRA GRIB2: wind speed fields match different paramIds
  • [ECC-904] - grib_get_data returns wrong lat-lons for sub-area of a reduced Gaussian grid
  • [ECC-905] - grib_ls -l (grib_find_nearest) problem with sub-area of a reduced Gaussian grid
  • [ECC-906] - grib_get_data not working correctly with old-style sub-areas of reduced grids produced by PRODGEN
  • [ECC-911] - grib_util_set_spec: packing keyword has no effect on grid_simple_matrix (packing type=5)
  • [ECC-914] - BUFR decode memory leak: section 4 keys not freed
  • [ECC-915] - Support for type=ssd under stream=scda
  • [ECC-923] - Mismatched grib count not reported as difference by grib_compare
  • [ECC-929] - grib_dump -O output: grib1 section 3 inconsistent
  • [ECC-937] - BUFR keys iterator memory leak
  • [ECC-938] - BUFR keys iterator: key 'ident' from ECMWF local header is not included
  • [ECC-939] - BUFR decoding: Table B for masterTablesVersionNumber=2 types are incorrect

Version 2.12.5 (May 2019)

  • [ECC-904] - grib_get_data returns wrong lat-lons for sub-area of a reduced Gaussian grid
  • [ECC-905] - grib_ls -l (grib_find_nearest) problem with sub-area of a reduced Gaussian grid
  • [ECC-906] - grib_get_data not working correctly with old-style sub-areas of reduced grids produced by PRODGEN
  • [ECC-911] - grib_util_set_spec: packing keyword has no effect on grid_simple_matrix (packing type=5)
  • [ECC-909] - Add a key monthlyVerificationTime in all monthly streams
  • [ECC-890] - CAMS GRIB parameters required for 46r1 CAMS o-suite
  • [ECC-897] - Add GRIB edition 2 representation to 8 vegetation/biomass parameters
  • [ECC-898] - GRIB: Neural network soil moisture data
  • [ECC-920] - Add WMO GRIB2 to the existing "tpg" parameters and backward compatibility GRIB1 to the new ones
  • [ECC-921] - Add backward compatibility GRIB1 to 10fgg10

Version 2.12.0 (February 2019)

Contributions

Thanks to Daniel Tipping from OldReliableTech for the Windows support and conda setup

New Features/Improvements

  • [ECC-853] - Install tigge tools only if ECCODES_INSTALL_EXTRA_TOOLS is set
    The tools tigge_name, tigge_accumulations and tigge_split are no longer installed by default

  • [ECC-862] - GRIB2: The 'tablesVersion' key should default to the latest operational WMO version
    When converting from GRIB1 to GRIB2, the "tablesVersion" key is now the latest WMO (was previously 5)

  • [ECC-868] - Provide key to control whether large constant fields are produced
    The key "override_large_constant_fields" has been removed and replaced by "produceLargeConstantFields"

  • [ECC-830] - BUFR encoding: set to missing if value out of range (key)
  • [ECC-860] - GRIB2: Add support for atmospheric chemical product definition templates
  • [ECC-713] - grib_to_netcdf: Wrong time steps when stepUnits not in hours
  • [ECC-837] - BUFR Tables: non-ASCII characters
  • [ECC-838] - New probability T850 standardized anomalies with respect to standard deviation
  • [ECC-854] - MARS: add soil level and layer with correct mapping for mars 'level'
  • [ECC-861] - GRIB2: The 'time' namespace not defined for product definition templates 55 and 59
  • [ECC-870] - Add Clear air turbulence (CAT) and Mountain wave turbulence
  • [ECC-876] - Add 200-metre U and V wind components and modify 10 and 100-metre related parameters
  • [ECC-877] - Create new S2S ocean parameter Mean sea water temperature in upper 300 m
  • [ECC-878] - Add wave parameters for cy46r1
  • [ECC-711] - Add keys packingError and unpackedError in template 7.42
  • [ECC-851] - Refactoring: duplicated tigge 'scan' function
  • [ECC-857] - GRIB2: stepType undefined for typeOfStatisticalProcessing 8, 10 and 11
  • [ECC-859] - GRIB2 templates for chemicals should use forecastTime and not startStep
  • [ECC-863] - GRIB2: Additional keys for gridType=lambert_azimuthal_equal_area
  • [ECC-864] - Improved name for the angularPrecision key
  • [ECC-883] - grib_ls -B: does not issue error if sort keyword is wrong
  • [ECC-884] - Visual Studio solution: upgrade to VS 2017

Bug Fixes

  • [ECC-744] - Defining master and local table version in GRIB2
  • [ECC-834] - Chemicals: using local definition 36 causes grib2 parameters to become unknown
  • [ECC-856] - BUFR - length of string attribute not correct if used with subset section
  • [ECC-866] - Python3: codes_gts_new_from_file does not return all GTS bulletins
  • [ECC-872] - Step should be set to endStep, not startStep, in stream wamd, type=fc.
  • [ECC-873] - grib_ls with sorting: The 'count' key is wrong
  • [ECC-875] - bufr_copy -g not implemented
  • [ECC-880] - grib_to_netcdf calculates the time wrongly for forecast data files from opendata.dwd.de

Version 2.10.0 (December 2018)

Contributions

  • [ECC-769] - Imaginary part of first spectral coefficients is not zero when decoding a spectral field

New Features/Improvements

  • [ECC-264] - Support for Python 3
    We now have a beta version of the Python 3 interface. Although we tried to minimise the impact to users some changes to the client code will be necessary.
    When opening BUFR or GRIB files, please ensure this happens in binary mode, as follows:
      = open("fields.grib", "rb")  # Reading
      = open("output.bufr", "wb")  # Writing
    Please test the Python 3 support carefully and provide us with feedback. We appreciate your co-operation.

  • [ECC-763] - Break tests into two sets, one that includes its data files in the distribution and another "extended" that downloads them
    The default set of tests no longer requires any data to be downloaded and takes less time than before. Users who wish to run extensive tests (which require downloads) should configure the build as follows:
       cmake /path/to/src -DENABLE_EXTRA_TESTS=ON ...
    These extra tests should be run if users plan to change the code e.g. for contributions.
    We are aware that many maintainers/packagers of ecCodes did not run any tests to avoid the downloads. Please enable the tests again, they are vital to ensure ecCodes has been installed properly.

  • [ECC-602] - Add parameters for Standardised Precipitation index (seasonal fc)
  • [ECC-775] - BUFR decode performance: check skipExtraKeyAttributes just once
  • [ECC-809] - grib_get_data: add -s option to set keys
  • [ECC-771] - Update BUFR tables with the latest WMO version 31.0.0
  • [ECC-278] - grib_ls -n namespace fails if namespace contains an array-type key
  • [ECC-751] - Add new grib.efcl.[type].def for EFAS climatology
  • [ECC-759] - DWD local Tables: GRIB and BUFR
  • [ECC-761] - Add probability parameters to comply with new GDPFS Manual
  • [ECC-828] - 172144 and 172189 - short name is undefined
  • [ECC-772] - Polar stereographic: keys 'latitudes' and 'longitudes' not defined
  • [ECC-776] - Python examples: Use 'open' with binary mode
  • [ECC-777] - Compiling with gcc and -std=c99 fails
  • [ECC-808] - Offer a way for grib_get_data and iterators not to unrotate rotated grids

Bug fixes

  • [ECC-767] - grib_dump -j produces invalid JSON when a file has multiple messages
  • [ECC-356] - bufr_dump: ident is not shown
  • [ECC-758] - GRIB1: grib_dump -j crashes
  • [ECC-764] - Description of parameters aermr07diff, aermr08diff and aermr09diff seems to be wrong, with interchanged "Hypdrophilic" and "Hydrophobic"
  • [ECC-768] - Reduced Gaussian grid: grib_get_reduced_row() not working for particular field
  • [ECC-774] - Change packingType: error message issued despite success

Version 2.9.2 (November 2018)

  • [ECC-756] - Reduced Gaussian grids in GRIB1: Do not set section1Flags
  • [ECC-761] - Add probability parameters to comply with new GDPFS Manual

Version 2.9.0 (September 2018)

New Features/Improvements

Performance enhancements

    • [ECC-710] - BUFR decode performance: JSON bufr_dump much slower than plain mode
    • [ECC-741] - BUFR decode performance: add option to exclude some attributes
      A new key has been added: skipExtraKeyAttributes.
      Set this to 1 (BEFORE the unpack) and you should notice a 20% improvement in the decoding speed

    • [ECC-734] - BUFR decode performance: keys iterator stores all key names
    • [ECC-745] - bufr_compare performance: speed up by skipping extra key attributes
    • [ECC-708] - grib_dump performance: WMO option unpacks unnecessarily
    • [ECC-742] - BUFR: Remove unused key 'BUFRstr'
  • [ECC-706] - bufr_dump: add -X option to specify the offset in the input file
  • [ECC-737] - bufr_copy/grib_copy: add -X option to specify the offset in the input file
  • [ECC-723] - bufr_dump: option '-f' should dump header if unpack fails
  • [ECC-690] - New Satellite Winds BUFR Sequence for GOES16 - AMVs
  • [ECC-701] - EFAS: Latest MARS implementation
  • [ECC-712] - Update definitions of ocean parameters
  • [ECC-721] - Create a new MARS class for running CAMS Research experiments
  • [ECC-722] - Add extra MARS streams for EFAS
  • [ECC-728] - update standard_name (cfName) of ocean parameters
  • [ECC-746] - Testing: Allow test executables to be run with valgrind
  • [ECC-724] - GRIB Parameters: create GRIB2 definitions for table 210 (Wildfire flux)
  • [ECC-725] - grib_to_netcdf: Does not preserve MARS type
  • [ECC-703] - ecCodes BUFR local tables don't work for masterTablesVersionNumber 19
  • [ECC-739] - BUFR encoding: issue better error messages when values out of range
  • [ECC-740] - bufr_dump -D/-E python: make output Python3 compatible
  • [ECC-730] - Harmonise capitalisation of names in the parameter database for MARS types

Bug Fixes

  • [ECC-445] - Error numberOfPoints != size(values) on reading specific reduced_gg with sub-area
  • [ECC-644] - Compilation of python bindings with the C PGI compiler
  • [ECC-696] - Valgrind error: grib_get_data on reduced gaussian sub-area
  • [ECC-697] - GRIB parameters: change shortName of 171170 (should be stal2)
  • [ECC-704] - Wrong latitude values returned for sub-area
  • [ECC-716] - Segmentation fault: bufr_filter on synop
  • [ECC-717] - BUFR: behaviour of ECCODES_BUFR_SET_TO_MISSING_IF_OUT_OF_RANGE
  • [ECC-727] - ecCodes should be able to handle all versions of HDF5 Super Block
  • [ECC-729] - NetCDF standard name: 'air_pressure_at_sea_level' is deprecated
  • [ECC-735] - gts_ls memory fault
  • [ECC-736] - bufr_count -f: hangs on invalid input
  • [ECC-738] - bufr_dump fails when memfs is on
  • [ECC-748] - grib_get/bufr_get: infinite loop when a directory is passed in
  • [ECC-750] - BUFR encoding: maximum allowed value
  • [ECC-754] - grib_to_netcdf unit for time does not comply to ISO8601
  • [ECC-755] - Change to VERSION #defines breaks client C programs

Version 2.8.2 (August 2018)

  • [ECC-701] - EFAS: Latest MARS implementation
  • [ECC-712] - Update definitions of ocean parameters
  • [ECC-721] - Create a new MARS class for running CAMS Research experiments
  • [ECC-722] - Add extra MARS streams for EFAS
  • [ECC-724] - GRIB Parameters: create GRIB2 definitions for table 210 (Wildfire flux)
  • [ECC-445] - Error numberOfPoints != size(values) on reading specific reduced_gg with sub-area
  • [ECC-576] - Sub-area of Gaussian grids fails to encode bounding box
  • [ECC-727] - ecCodes should be able to handle all versions of HDF5 Super Block

Version 2.8.0 (June 2018)

New Features/Improvements

Performance enhancements

    • [ECC-638] - grib_ls/grib_get -l using mask: nearest neighbour performance
    • [ECC-668] - BUFR decode performance: high replication counts
    • [ECC-689] - GRIB decode performance: remove redundant keys from GRIB2 messages
    • [ECC-667] - BUFR decode performance: Operator 203YYY: override table keeps growing
  • [ECC-687] - Update GRIB2 definitions with the latest WMO V21.0.0 code tables/templates
  • [ECC-691] - Update BUFR tables with the latest WMO version 30
  • [ECC-616] - BUFR: Cannot extract subsets when operator 203YYY is present
  • [ECC-651] - grib_compare/bufr_compare: Enable a 'two-way' switch for symmetric comparison
  • [ECC-658] - bufr_compare: apply relative comparison (-R) to all ranks of a given key
  • [ECC-625] - Encoding of La1/La2/Lo1/Lo2 should 'snap out' domain edges for sub-areas.
  • [ECC-636] - filter rules: allow printing of array data all on one line
  • [ECC-637] - bufr_dump -p should show descriptors in the WMO F-X-Y format
  • [ECC-646] - Harmonise names of MARS CLASSes between the paramDB, Apps Catalogues and MARS
  • [ECC-654] - Change the name and shortName for parameter 217004 (Methane)
  • [ECC-655] - Lightning parameters: provide GRIB2 representation
  • [ECC-662] - Add extra keys in the EFAS local definition to store info on analysis and fillup
  • [ECC-664] - GRIB: Change the units of the emission parameters (table 219)
  • [ECC-672] - Use WMO codes for new lightning parameters
  • [ECC-679] - Add numberOfForecastsInEnsemble to the GRIB1 Local Definition number 16
  • [ECC-682] - Change the name of averaged lightning parameters
  • [ECC-684] - GRIB: Remove shortNames 'ocu' and 'ocv' from parameters 150133 and 150134
  • [ECC-690] - New Satellite Winds BUFR Sequence for GOES16 - AMVs
  • [ECC-692] - GRIB parameters: change name and shortName of aerosols (table 215)
  • [ECC-652] - New parameters for CAMS chemistry schemes: new species (table 217)
  • [ECC-659] - New parameters for CAMS chemistry schemes: species total column (table 218)
  • [ECC-660] - New parameters for CAMS chemistry schemes: Emissions and Wildfire flux (table 219)
  • [ECC-661] - New parameters for CAMS chemistry schemes: Dry deposition velocity (table 221)
  • [ECC-674] - Examples: typo in bufr_read_scatterometer.f90
  • [ECC-675] - Examples: confusing comment in bufr_expanded.f90

Bug Fixes

  • [ECC-693] - grib_to_netcdf: fails with UKMO GRIB (fields are not considered distinct)
  • [ECC-685] - grib_to_netcdf: fails with GRIB message with almost constant values
  • [ECC-694] - grib_to_netcdf: fails compilation with NetCDF version 3
  • [ECC-431] - bufr_compare: succeeds for BUFR files which are different
  • [ECC-568] - Different behaviour between bufr keys iterator and bufr dump
  • [ECC-640] - grib_ls -B crashes with non-existent input file
  • [ECC-645] - CRASH: BUFR encoding: setting a string key with integer value
  • [ECC-695] - BUFR encoding: Incorrect error message when value out of range
  • [ECC-648] - grib_filter: Cannot set codetable key to an array
  • [ECC-649] - Valgrind error: statistics for a field with all missing values
  • [ECC-650] - bufr_filter: outputs non-printable characters if string key is MISSING
  • [ECC-653] - Three files still have the GPL licence notice
  • [ECC-656] - bufr_compare: using relative comparison (-R) with 'all' does not work
  • [ECC-657] - grib_copy behaviour of -p -P -v options / manual
  • [ECC-677] - Delayed description replication factors not available (from bufr_dump -Dfortran)
  • [ECC-686] - BUFR: Changing the subtype in the local section has effect on other keys

Version 2.7.3 (April 2018)

  • [ECC-672] - Use WMO codes for new lightning parameters
    These are lightning flash density parameters output by the model in IFS cycle 45r1

  • [ECC-625] - Encoding of La1/La2/Lo1/Lo2 should 'snap out' domain edges for sub-areas

Version 2.7.0 (February 2018)

Contributions

  • [ECC-463] - Encoding of spherical harmonics sub-truncation using IEEE-64

New Features/Improvements

  • [ECC-407] - Add option to bufr_count/grib_count to count valid messages
  • [ECC-341] - implement area extraction in bufr_filter for uncompressed data
  • [ECC-629] - grib_ls and grib_count to read standard input instead of a filename
  • [ECC-394] - bufr_dump -E option: include keys whose values are MISSING
  • [ECC-607] - BUFR decode performance: remove redundant calls to reset_deeper_qualifiers
  • [ECC-608] - bufr_descriptor struct: reference type should be 'long' (not 'double')
  • [ECC-611] - BUFR Encoding: channelNumber reset to 0
  • [ECC-602] - Add parameters for Standardised Precipitation index (seasonal fc)
  • [ECC-612] - New parameters for Global Fire Assimilation System (GFAS)
  • [ECC-570] - Wave forecast verification: add support for LC-WFV
  • [ECC-562] - EFAS: Create GRIB2 local definition for EFAS data
  • [ECC-563] - EFAS: Add two parameters for total precipitation in the last 6 and 24 hrs
  • [ECC-641] - new BUFR key for Continuous Data Assimilation

Bug Fixes

  • [ECC-359] - CRASH: set 'pack' to 1 on new bufr handle
  • [ECC-597] - "grib_dump -D" returns "wrong size" errors on grid_second_order
  • [ECC-603] - Decoding of ERS (BUFR edition 2) data
  • [ECC-610] - isOctahedral does not work for non-global gaussian grids with specific areas
  • [ECC-614] - BUFR: problem with datetime extraction
  • [ECC-627] - grib_to_netcdf: fails with less user-friendly error message on non-regular grid
  • [ECC-634] - bufr_dump -p: does not list string keys with MISSING value
  • [ECC-635] - bufr_dump (JSON): should show missing value of string key as 'null'
  • [ECC-609] - ecCodes requires python 2.7 to run all the tests but the minimum required version is 2.6
  • [ECC-615] - ECMWF Installation: build with OpenJPEG v2.3 on all platforms
  • [ECC-617] - BUFR: add WMO version 2 tables from BUFRDC to ecCodes
  • [ECC-618] - BUFR: add WMO version=2 local version=1 tables from BUFRDC to ecCodes
  • [ECC-624] - centre CMCC for mars
  • [ECC-626] - BUFR local tables for processing MWHS and IRAS of FY-3 VASS products
  • [ECC-628] - BUFR local sequence for EUMETSAT AMSR-2 data
  • [ECC-631] - Assign centre abbreviation for 204 (NIWA)

Version 2.6.0 (December 2017)

New Features/Improvements

  • [ECC-567] - codes_split_file tool
    A new tool has been added. It splits an input file (GRIB, BUFR etc) into chunks of roughly the same size. The output files are named input_01, input_02 etc. This is much faster than grib_copy/bufr_copy.

  • [ECC-592] - Update BUFR tables with the latest WMO version 29
    Note: Some keys have been renamed as a result of this change:

    New name (from version 29)Old name
    verticalSoundingProductQualifiertovsOrAtovsProductQualifier
    bandwidthCorrectionCoefficient1bandwidthCorrectionCoefficient1ForAtovs
    bandwidthCorrectionCoefficient2bandwidthCorrectionCoefficient2ForAtovs
  • [ECC-584] - Update GRIB2 definitions with the latest WMO V20.0.0 code tables/templates
  • [ECC-549] - Create MARS stream for GRIB EFAS data
  • [ECC-555] - Add verificationYear, monthlyVerificationYear, verificationMonth, monthlyVerificationMonth for monthly streams
  • [ECC-477] - Redundant error message changing packing from CCSDS to grid_simple
  • [ECC-547] - Add WMO definition to 2 wave parameters and rename them
  • [ECC-571] - DWD: corrections to edzw local definitions (newer)
  • [ECC-574] - Update MARS stream descriptions for esmm and ehmm
  • [ECC-575] - Add new GRIB fields for lightning
  • [ECC-577] - Add localYear, localMonth, localDay, localHour, localMinute and localSecond to bufr_dump
  • [ECC-578] - Long names of GRIB parameters 210007-210010 (aermr07-10) are incorrect
  • [ECC-580] - Change of parameter name and units: 210064 and 210065
  • [ECC-581] - Tables 172 and 173: rename parameters and assign shortnames
  • [ECC-583] - Two new parameters: Water Vapour Flux and Water Vapour Flux Index
  • [ECC-585] - Add parameter for 'Fraction of snow cover' with units 'Proportion'

Bug Fixes

  • [ECC-594] - Assertion failed: `ktype == GRIB_TYPE_LONG' in src/grib_expression_class_functor.c
  • [ECC-596] - Memory leak: grib_accessor_class_md5.c
  • [ECC-538] - ecCodes does not honour ECCODES_NO_ABORT
  • [ECC-550] - Segmentation violation when setting descriptor 236000
  • [ECC-551] - Standard deviation is shown as NAN
  • [ECC-556] - BUFR: 'typicalDate' calculation should cater for invalid year in BUFR4
  • [ECC-557] - class="l5": set mars.step=endStep for streams mnth/edmm/wamo/ewmm
  • [ECC-558] - Windows - linker error: unresolved external symbol _grib_dumper_class_bufr_simple
  • [ECC-579] - BUFR nested replication problem
  • [ECC-582] - bufr_dump -Efortran creates BUFR which differs from input (string value)
  • [ECC-586] - CRASH: extracting nonexistent BUFR subset with doExtractSubsets
  • [ECC-589] - Clang ThreadSanitizer error: data race on 'bits_all_one'
  • [ECC-590] - Clang ThreadSanitizer error: data race on expanded_descriptor_list_push

Version 2.5.0 (October 2017)

Contributions

  • [ECC-518] - grib_to_netcdf: support deflate option for netCDF-4 output formats
    Thanks to Antonio S. Cofino Gonzalez.
    New options provided for grib_to_netcdf to support deflate and shuffle options for netCDF-4 output formats.

New Features/Improvements

  • [ECC-419] - Simple bufr_dump
    A "-p" option is provided for bufr_dump to allow a "plain" mode dump, just listing key=value

  • [ECC-533] - Implement grib_find_nearest() for Polar Stereographic grid_type
  • [ECC-476] - Add new function codes_count_in_filename which takes a path
  • [ECC-504] - New runoff parameters for system 5 seasonal forecast
  • [ECC-534] - Add two parameters for river discharge in the last 6 and 24 hrs
  • [ECC-537] - Update the local concepts for DWD (2017.09)
  • [ECC-548] - Add GRIB2 Product Definition Templates 4.67 and 4.68
  • [ECC-443] - netcdf4 compression with grib_to_netcdf
  • [ECC-485] - Add support for non-integer size for the 'codetable' statement
  • [ECC-505] - Add BUFR local descriptors from EUMETSAT
  • [ECC-509] - Add option to skip install of fortran modules
  • [ECC-468] - tables seem to be installed as files instead of symbolic links
  • [ECC-500] - Performance: grib2: grib_ls using local parameter takes longer than WMO parameter
  • [ECC-508] - Add option to not install grib definitions and samples
  • [ECC-510] - Add new MARS class for ERA5 land surface parameters
  • [ECC-526] - typeOfLevel key should include typeOfFirstFixedSurface == 10 (Entire atmosphere)
  • [ECC-528] - Add wmo_read_any_from_stream_malloc()
  • [ECC-540] - When using MEMFS the default should be not to install samples and definitions

Bug Fixes

  • [ECC-532] - Problems with bufr_dump: taking all available memory
  • [ECC-435] - CRASH: Python keys iterator on GRIB message
  • [ECC-473] - isOctahedral does not work for non-global gaussian grids
  • [ECC-478] - Scaling values using grib_set ignores values=9999. when bitmapPresent=0
  • [ECC-480] - grib_filter slower on large GRIB file compared with grib_api
  • [ECC-490] - GRIB-API -> ecCodes F90 migration issue
  • [ECC-492] - bufr_dump problems for extracted Aeolus BUFR file
  • [ECC-501] - GRIB2 encoding: longitude values should be 0 to 360
  • [ECC-503] - Fortran interface: status argument of keys_iterator_next should not be optional
  • [ECC-511] - Invalid data read from FRET grib2 files with grid_complex_spatial_differencing packing
  • [ECC-515] - CRASH: reading very large GRIB1 message
  • [ECC-517] - crash/error setting inputExtendedDelayedDescriptorReplicationFactor greater than 486
  • [ECC-521] - grib_get_data for Lambert Conformal: incorrect if adjacent rows scan in the opposite directions
  • [ECC-522] - Lat/Lon iterator gives wrong result for some scanning and organisation modes
  • [ECC-524] - grib_iterator behaves strangely for lambert representation
  • [ECC-529] - grib_get_data for polar stereographic gets wrong lat and long
  • [ECC-535] - Workaround for internal compiler error in memfs.c on Cray
  • [ECC-542] - Enabling memfs searches for Python include dir
  • [ECC-545] - Assertion failure retrieving grib key

Version 2.4.1 (August 2017)

  • [ECC-511] - Invalid data read from FRET grib2 files with grid_complex_spatial_differencing packing
  • [ECC-478] - Scaling values using grib_set ignores values=9999. when bitmapPresent=0
  • [ECC-514] - CMath library is added as a source file
  • [ECC-509] - Add option to skip install of fortran modules
  • [ECC-345] - "make install" should allow not to install definitions files and samples when MEMFS is on
  • [ECC-508] - Add option to not install grib definitions and samples
  • [ECC-510] - Add new MARS class for ERA5 land surface parameters

Version 2.4.0 (July 2017)

New Features/Improvements

  • [ECC-287] - Support for GRIB3 (experimental)

    This is an initial prototype GRIB edition 3 decoder/encoder to accelerate development of the standard to be proposed to WMO.
    At this point this implementation is entirely experimental and can change in future releases.
    It is provided here to solicit feedback.

  • [ECC-470] - BUFR: iasi encoding performance
  • [ECC-482] - datetime comparison in bufr_filter
  • [ECC-484] - Implement logical AND specialised expression
  • [ECC-486] - Implement logical OR specialised expression
  • [ECC-487] - Add parameter for '2 metre relative humidity with respect to water'
  • [ECC-488] - Add GRIB1 representation for parameter 260048 (total precipitation rate)
  • [ECC-496] - Request for a modification of the naming of the new lightning GRIB fields
  • [ECC-497] - New GRIB parameters needed for system 5 seasonal forecast
  • [ECC-420] - CPU time of BUFR unpacking increased significantly in 2.1.0
  • [ECC-483] - Add mars key 'system' for class 'c3'
  • [ECC-481] - extended BUFR rdbSubtype
  • [ECC-493] - Saral altika data using a wrong masterTablesVersionNumber
  • [ECC-489] - Remove unused 'name' data member from struct 'bufr_descriptor'
  • [ECC-411] - Add an environment variable so that GRIB_MAX_OPEN_FILES can be user configurable

Bug Fixes

  • [ECC-313] - Add support for BUFR operator 203YYY
  • [ECC-433] - BUFR operator 206YYY not working
  • [ECC-494] - DESTDIR ignored for Python bindings

Version 2.3.0 (May 2017)

Contributions

  • [ECC-441] - MeteoFrance contribution: GRIB second order packing
  • [ECC-458] - MeteoFrance contribution: GRIB spectral complex packing
  • [ECC-461] - Python: GribMessage class to allow multiple keys to be set

New Features/Improvements

  • [ECC-475] - BUFR WMO version 28 and local tables to be added to ecCodes
  • [ECC-472] - Update GRIB2 definitions with the latest WMO V19.0.0 code tables/templates
  • [ECC-452] - codes_bufr_copy_data missing in Pythonic interface
  • [ECC-460] - Add centre codes for New Delhi (dems/vabb)
  • [ECC-454] - Add new parameters for land reanalysis (ERA5-Land)
  • [ECC-466] - Add two parameters for evaporation in the last 6 and 24 hrs
  • [ECC-437] - tigge_check: bitmap fields with only undefined values
  • [ECC-449] - Remove unused "unpack" data member from grib_context
  • [ECC-456] - type=oi for UERRA class
  • [ECC-457] - GRIB1 to GRIB2 conversion: total precipitation
  • [ECC-459] - GRIB1 to GRIB2 conversion: Local Definition 5 (Forecast probability data)
  • [ECC-465] - Key 'deleteLocalDefinition' works for GRIB edition 1 only

Bug Fixes

  • [ECC-438] - stepUnits throws errors when processing GRIBs with stepUnit != 1 (hour)
  • [ECC-444] - eccodes fails to build when both fmemopen and funopen are available
  • [ECC-447] - ecCodes Python packages not added to the installation manifest
  • [ECC-448] - codes_new_from_message does not set product_kind on handle
  • [ECC-451] - new pythonic interface segv
  • [ECC-453] - grib_set fails randomly: Unable to set stepRange: end must be equal to start when timeRangeIndicator=10
  • [ECC-467] - JRA55: map indicatorOfTypeOfLevel=101 to mars.levtype='sfc'

Version 2.2.0 (March 2017)

New Features/Improvements

  • [ECC-442] - Implement codes_get_double_element for BUFR array keys (compressed data)
  • [ECC-415] - Performance of eccodes used in BUFR2ODB not good for operations
  • [ECC-418] - Fortran and Python codes_bufr_keys_iterator
  • [ECC-424] - codes_bufr_keys_iterator_delete should free memory allocated for name
  • [ECC-432] - GRIB2 local coding for SPP random field parameters
  • [ECC-436] - Add parameters: maximum CAPE in the last 6 hours and maximum CAPES (CAPE/Shear) in the last 6 hours
  • [ECC-106] - CMake: overriding default install directories

Bug Fixes

  • [ECC-89] - bufrHeaderCentre cannot be printed as string for edition 3 messages
  • [ECC-406] - Cannot convert grid_simple to grid_second_order for some files
  • [ECC-417] - MEMFS option does not work with Python3
  • [ECC-425] - grib_to_netcdf crash when running out of memory
  • [ECC-426] - Use common code tables C-1 and C-11 for GRIB/BUFR
  • [ECC-429] - BUFR: The "count" key works differently from GRIB

Version 2.1.0 (January 2017)

Contributions

  • [ECC-157] - Add high-level Pythonic interface (experimental)
  • [ECC-369] - Differentiate exception types in Python interface
    Thanks to Daniel Lee (DWD)
    The high-level interface is currently experimental and may change in a future release. It is provided here to solicit feedback.

  • [ECC-261] - Reduce packing error by optimizing scaling factor
    Thanks to Philippe Marguinaud (MeteoFrance)

  • [ECC-409] - GNU Hurd support
    Thanks to Alastair McKinstry

New Features/Improvements

  • [ECC-414] - Create a sample BUFR file with the new Sentinel 1 descriptors

    We have included a sample BUFR file with the new Sentinel 1 descriptors approved in WMO tables 27 (released Nov 2016)
    You can find this file in the data tarball. It is also downloaded when running the tests (data/bufr/sentinel1.bufr)

  • [ECC-383] - Implement GRIB lat/lon iterator for 'space view'
  • [ECC-358] - Update GRIB2 definitions with the latest WMO V18.0.0 code tables/templates
  • [ECC-372] - Performance improvement of search by rank
  • [ECC-222] - Decode BUFR data section providing only values array
  • [ECC-363] - Update unbalanced component parameters with WMO GRIB2 codes
  • [ECC-370] - Python: setting keys should handle both scalars and arrays
  • [ECC-395] - Add a new MARS class for YOPP
  • [ECC-396] - Support for Jasper 2.0
  • [ECC-410] - Add GRIB2 Product Definition Template 4.58
  • [ECC-412] - Support for CAMS and CERA-SAT: streams mnth/edmm/wamo/ewmm
  • [ECC-357] - Implement codes_bufr_copy_data in C, Fortran and Python
  • [ECC-365] - add placeholder facility in the output filename of grib_filter (like it is done in grib_set/grib_copy)
  • [ECC-379] - BUFR encoding failing when value out of range
  • [ECC-382] - Provide API function to access the name of the package
  • [ECC-391] - Text fix for grib_index.c
  • [ECC-392] - bufr_compare: should print double value as MISSING rather than -1e+100
  • [ECC-397] - Rename parameter 260242 to '2 metre relative humidity'
  • [ECC-399] - Detecting NaN values when encoding grib
  • [ECC-413] - DWD local definitions: Remove superfluous tables

Bug Fixes

  • [ECC-325] - Memory leaks during BUFR unpack
  • [ECC-339] - Improve keys iterator for BUFR
  • [ECC-376] - BUFR tables version 27 to be added to ecCodes
  • [ECC-386] - GRIB: Slow-down of read routine
  • [ECC-272] - Flat JSON dump of some BUFR files doesn't contain the last element
  • [ECC-275] - errors.pl not creating ecCodes header files
  • [ECC-336] - ctest gts failures on minimac
  • [ECC-351] - grib_util_set_spec() returns a corrupted field
  • [ECC-353] - grib_util_spec() does not always generate jpeg
  • [ECC-355] - grib_compare: using relative comparison (-R) with "all" does not work
  • [ECC-361] - Test failure: bufr_copy_data F90 example with PGI compiler
  • [ECC-364] - BUFR extractSubsets wrong result when key is constant in the extracted range
  • [ECC-367] - BUFR extractSubsets for stationOrSiteName key
  • [ECC-368] - Last element of a BUFR message not found when using search expression
  • [ECC-373] - grib_api.h incorrectly wraps system headers in extern "C"
  • [ECC-378] - Reading a file of 0 bytes does not generate any error and eventually crashes
  • [ECC-380] - ecCodes attempts to link to openjpeg 1.X library if found
  • [ECC-387] - Thread safety for BUFR decoding
  • [ECC-388] - Missing bounds check in grib_trie.c leads to segfault
  • [ECC-389] - BUFR encoding 2 values as different should be one value
  • [ECC-393] - bufr_compare: cannot blacklist a key with given rank
  • [ECC-398] - untrapped error : No descriptors in section 3. Malformed message
  • [ECC-402] - codes_set does not set localLongitude in BUFR to correct values
  • [ECC-404] - JPEG-specific tests run and fail when ENABLE_JPG is off / JPEG headers are not available
  • [ECC-405] - Corrupt BUFR file: bufr_new_from_file crash
  • [ECC-408] - grib_handle_new_from_partial_message should take const data pointer

Version 2.0.2 (November 2016)

  • [ECC-364] - BUFR extractSubsets wrong result when key is constant in the extracted range
  • [ECC-367] - BUFR extractSubsets for stationOrSiteName key
  • [ECC-368] - Last element of a BUFR message not found when using search expression
  • [ECC-358] - Update GRIB2 definitions with the latest WMO V18.0.0 code tables/templates
  • [ECC-385] - UERRA: Type of first fixed surface 118 should be mapped to the levtype=ml

Version 2.0.0 (October 2016)

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.

Contributions

  • [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


Previous changes