ABI breaking change in 3.08

  • This topic has 0 replies, 1 voice, and was last updated by .
Viewing 1 post (of 1 total)
  • Author
    Posts
  • #2219
    oprs
    Participant

      A quick heads-up for applications developers out there: version 3.08 of the API introduced a new valid field in the middle of the sdrplay_api_DeviceT structure. As a result, the rspDuoSampleFreq and dev fields are now shifted one word further in the structure (assuming no padding), which breaks binary compatibility with earlier versions of the library.

      This is unfortunate (and easy to miss unless you’re paying close attention). Of course, from an application developer’s perspective, there are a few ways around that:

      . forcing the user to upgrade/downgrade to whatever API version matches the one the application was compiled with,
      . having the user recompile the application (assuming it is possible, i.e. open/free software),
      . maintaining two versions of the sdrplay_api_DeviceT structure in the application, and picking the right one at runtime, based on sdrplay_api_ApiVersion().

      This is unfortunate; IMHO the dev team would have been well advised to add the valid field at the end of the structure (application developers would still have to check the API version before attempting to access it, but at least backward binary compatibility would have been maintained).

      As it stands, version 3.08 might just as well be numbered as 4.0 (major version increment denoting a breaking change).

      • This topic was modified 1 year, 7 months ago by . Reason: formatting
      • This topic was modified 1 year, 7 months ago by . Reason: style
    Viewing 1 post (of 1 total)
    • You must be logged in to reply to this topic.