Skip to content

Releases: EarthScope/libmseed

v3.1.3

13 Jun 23:59
Compare
Choose a tag to compare
  • Use sequence number from extra headers (/FDSN/Sequence) if present when writing format v2

v3.1.2

27 May 22:29
Compare
Choose a tag to compare
  • When writing v2 derive the quality code from the publication version when the extra-header "/FDSN/DataQuality" is not present. Use quality indicator 'D' when the publication version cannot be mapped, e.g. > 4.
  • Add tests for msr3 utility functions.
  • Add msr3_nsperiod() to calculate the sample period in nanoseconds.
  • Add CRC values to diagnostic message when header values does not match calculated.
  • Replace ms_dabs() with macro to use system fabs(), document as deprecated.
  • Simplify mstl3_addmsr_recordptr() a bit.
  • Update yyjson to v0.9.0.

v3.1.1

24 Jan 17:57
Compare
Choose a tag to compare
  • Change library compatibility version in Makefile to MAJOR.1.0, as this is now incompatible with the x.0.0 releases.

v3.1.0

23 Jan 20:07
Compare
Choose a tag to compare

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().

v3.0.18

06 Jan 23:12
Compare
Choose a tag to compare
  • Increase MAXRECLEN from 131,172 to 10,485,760 (10 MiB) for v3 records.
  • Define MAXRECLENv2 as 131,172 (131+ KiB) to limit miniSEED v2 records and add test for sample counts beyond the 16-bit field limit in v2 records when packing.
  • Add LMIO_FD type of reading IO via arbitrary file descriptor and hooks for setting.
  • Add mseh_replace() to replace extra headers.
  • Consistently initialize header values to 0, fixing edge cases like header-only records.
  • Update link in documentation of ms_readleapsecondfile() for sources of leap-seconds.list.
  • ms_nslc2sid() requires all codes except location to be set to reduce misuse.
  • Fix raw, diagnostic generation of SIDs from miniSEED v2 when full codes are used.
  • Fix handling of data length field in miniSEED v3 as 32-bits instead of 16-bits.
  • Update yyjson to release 0.8.0.

v3.0.17

25 Jul 13:43
Compare
Choose a tag to compare
  • Add tests for default record length and encoding.
  • Document versioning schema as semantic versioning.
  • Add const qualifiers to packing routines that do not modify the passed MS3Record structure.

v3.0.16, major new version release

23 Jul 18:31
Compare
Choose a tag to compare

This is the initial stable release of major version 3 of library.

This release supports reading and writing of both miniSEED 3 and miniSEED 2 (defined as a subset of SEED 2.4). When reading data the format version is auto-detected so programs using the library can be agnostic to the format version.

Documentation can be found here:
https://earthscope.github.io/libmseed

A guide for porting from previous major version releases is here:
https://earthscope.github.io/libmseed/porting-guide.html

Changes since the previous (pre-release) of this major version:

  • Optimize Steim 1 & 2 decoders
  • Fix logic in msr3_duplicate() for certain cases
  • Add many const qualifiers to pointer values where the library interface does not modify the data. Thanks @damb!
  • Incorporate ms_gswapX() functions into libmseed.h to promote inlining
  • Change test for environment variable DECODE_DEBUG to compile-time define
  • Change test for environment variable ENCODE_DEBUG to compile-time define

v3.0.15

11 Jun 20:22
Compare
Choose a tag to compare
v3.0.15 Pre-release
Pre-release
  • Print sample rate in Hz consistently in msr3_print()
  • Fix writing of SNR values field 9 of Blockette 201 (v2)
  • Read and write microsecond offsets to/from Blockette 500 (v2)
  • Fix addition of Clock Model field 9 of Blockette 500 (v2)

v3.0.14

09 Jun 20:57
Compare
Choose a tag to compare
v3.0.14 Pre-release
Pre-release

WARNING: BREAKING API CHANGES - API is now frozen for the pre-releases

This is an extra large release in expectation of becoming the initial stable release of the major version 3 library.

This release contains the following API changes:

  1. The fpos and last arguments of ms3_readmsr(), ms3_readmsr_r(), and ms3_readmsr_selection() have been removed. The same capabilities are available and details are included in the porting guide.

  2. The MS3TraceList.numtraces member was renamed MS3TraceList.numtraceids to clarify.

  3. The ptr argument, previously named path, to mseh_get and mseh_set routines is now in JSON Pointer (RFC 6901) format. This is a more appropriate, and standardized, format than the pseudo-JSON Path, dotted string style previously used. It also allows more flexibility such as specification of an array element.

  4. The mseh_get_path_r() and mseh_set_path_r() were previously named without the _r suffix, now take a additional parsestate argument. This functionality allows the parsed extra headers to be retained between calls to avoid re-parsing. For advanced usage, this allows more efficient getting or setting of multiple extraheader values. If used, this state information must be free'd with mseh_free_parsestate(). If used with mseh_set_path_r() the headers must also be serialized with mseh_serialize().

  5. mstl3_printtracelist() now takes an additional versions argument. When non-zero the routine will decorate SIDs with publication versions.

  6. The MS3TraceID structure is no longer a simple linked list. Instead, it is a skip list, slightly changing the syntax for traversing the list as illustrated in the examples.

Furthermore, this release contains the following changes:

  • Add JSON Merge Patch capability to mseh_set_ptr_r() using the value type M. This allows flexible modification, including deletes, of extra header values.
  • New test suite based on Tau (https://github.com/jasmcaus/tau). Many tests were added and the suite now works on MS-Windows.
  • Replace JSON library with yyjson (https://github.com/ibireme/yyjson). Benefits include performance, shortest accurate real number representation, JSON Pointer support, and UTF-8 support.
  • Significant optimization for the case of constructing trace lists with large numbers of different source IDs, by using a skip list. Implementation inspired by: https://github.com/tdeck/c-skiplist, thanks @tdeck!
  • Add new mstl3_findID() function for searching a trace list for specific SourceID and, optionally, publication version.
  • Optimize trace construction in mstl3_addmsr_recordptr() for the case of duplicate records.
  • Add cURL detection and full build support to example/Makefile.
  • Add 'const' declarations to ms_sid2nslc()and ms_nslc2sid() to guarantee input will not be modified.
  • Update example/lm_pack.c to a) use improved test data (a sinusoid) that contains all differences for Steim1 and Steim2 encoding, and b) add an -F option to set the format version to create.
  • mseh_get_path_r() and mseh_set_path_r() now accept a value type of i that is used with int64_t values.
  • Add nstime_t special value of NSTUNSET for use as "unset" meaning.
  • Fix logic test for LIBMSEED_NO_THREADING declaration.
  • Fix zero-padding of empty bytes following data in miniSEED v2 creation.
  • Rename DE_ASCII to DE_TEXT to generalize to UTF-8, legacy mapping provided.
  • Change sample type for text encoding to 't', value 'a' still supported as an alternative.
  • Add MS3Tolerance_INITIALIZER for MS3Tolerance values.
  • Handle special case of year 0 when parsing version 2 blockettes. These are now treated as "unset" and not included in the extra headers.
  • Added FAQ to documentation and update example code to match API changes.

v3.0.13

30 Jan 04:26
Compare
Choose a tag to compare
v3.0.13 Pre-release
Pre-release
  • Embed current leap second list, used by default and replaced by ms_readleapsecondfile().
  • Add ISOMONTHDAY_DOY time string variant, with day-of-year added in parenthesis.
  • Add '_Z' variants of multiple time string formats that add a trailing Z versions.
  • Print record timestamp in new ISOMONTHDAY_DOY_Z format.
  • Deprecate the ms_nstime2timestrz() function and reformulate to use the '_Z' format definitions.
  • Re-brand to EarthScope.