Skip to content

v3.1.0

Compare
Choose a tag to compare
@chad-earthscope chad-earthscope released this 23 Jan 20:07
· 13 commits to main since this release

Warning

Breaking data structure and API changes relative to the v3.0.x releases.

The following data structure and API changes are included in this release:

  • MS3Record.encoding now int16_t instead of int8_t.
  • MS3Record.datalength now uint32_t instead of uint16_t (change in 3.0.18).
  • MS3Record.datasize and MS3TraceSeg.datasize now uint64_t instead of size_t.
  • ms3_detect() now returns int64_t instead of int.
  • mstl3_unpack_recordlist()'s outputsize argument is now uint64_t instead of size_t.
  • mseh_get_ptr_r()'s maxlength is now uint32_t instead of size_t.

The decision to change the API (and not move to a new major version) was not easy. The precipitating change
was that the MS3Record.datalength value was too small to accommodate the value in the format specification.
This means the library would not be future proof to properly detect all records of the format, and, while it could
read and write the commonly-used, small records, it would eventually fail in a bad way. With this unfortunate
breakage the opportunity was taken to apply a few more breaking changes, in particular the encoding value
can now represent the entire range allowed in the format.

The v3.1.0 release API is now stable and semantic versioning can be expected.

The fixes in this release include:

  • Fix to handle full range of allowed encoding values from 0-255.
  • Fix to handle detection of huge record lengths beyond MAXRECLEN gracefully.
  • Add more checks to avoid writing impossible values to miniSEED v2 blockette fields.
  • Fix all compiler warnings at level -Wextra for clang, gcc, and \W3 for MSVC.
  • Fix build of DLL target on Windows by defining exports in libmseed.def.
  • Improve formatting of gap list produced by mstl3_printgaplist().