-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deprecate legacy API [AP-643] #1373
Conversation
a04cd75
to
5c31084
Compare
5c31084
to
9f0a61b
Compare
f10fe9f
to
2b54f61
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tested the changes from the woodfell/follow_v5_deprecation_plan
with a couple of apps which were written against the v4 API and everything seemed to work as expected:
[removed internal links]
I confirmed in both cases that it was possible to build with the new "default" API as well as by explicitly requesting the v4 API.
I then checked with some other demo code which was written against the v3 API and confirmed that they can still be compiled with the libsbp/legacy/compat.h
header. However, when I tried to adapt these examples to the newer API, I found that there does not appear to be any direct replacement for sbp_send_message()
/sbp_payload_send()
in the new API. @woodfell: what is the modern equivalent?
Lastly, I would like to ask that we provide updated versions of tcp_example
/tcp_2sigma_example
with the new API. Otherwise these examples will get lost when the legacy API is removed. I can help out here if necessary.
Oh right, I thought there were already duplicates of all the examples. I'll add them on to this PR |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@woodfell I guess i'm kind of surprised these changes only affect the C code in libsbp.
I would think it would also affect the other language implementations of libsbp. If so, i think it would be a good idea to generate all those updates before doing a release (although maybe not part of this PR)
@woodfell The build docker step is failing with an npm version error:
|
There is no legacy or V4 API in other languages. This is only applicable to C bindings as introduced in #1000 |
ebc237b
to
8225f08
Compare
# Description @swift-nav/devinfra Bump node.js version in docker image to 18.17.0 This resolves the docker image build failures seen on #1373 and allows a freshly built docker image to build the javascript bindings # API compatibility Does this change introduce a API compatibility risk? No ## API compatibility plan If the above is "Yes", please detail the compatibility (or migration) plan: N/A # JIRA Reference https://swift-nav.atlassian.net/browse/AP-1081
8225f08
to
6dd431a
Compare
…warnings in legacy test suites
# Description @swift-nav/devinfra <!-- Changes proposed in this PR --> # API compatibility Does this change introduce a API compatibility risk? <!-- Provide a short explanation why or why not --> ## API compatibility plan If the above is "Yes", please detail the compatibility (or migration) plan: <!-- Provide a short explanation plan here --> # JIRA Reference https://swift-nav.atlassian.net/browse/BOARD-XXXX
6dd431a
to
72145c7
Compare
|
Description
@swift-nav/devinfra
Follow through on legacy API deprecation plan as previously agreed upon. The goals of this PR are:
libsbp/sbp.h
- legacy headers must be explicitly includeddeprecated
attributev4
(ie, the modern replacement API) removed from headers, source files, etc. Moving forwards there will be no such thing as the "v4" API, there will just be the libsbp APIlibsbp/observation.h
libsbp/v4/observation.h
) are still available but are deprecated. They generate a compile time message warning that they will be removed in version 6 and then includelibsbp/<package>.h
(the new header file) automaticallyAPI compatibility
Does this change introduce a API compatibility risk?
Nothing significant. The vast majority of symbols are present and have the same meaning as before. Users of the legacy API may find that they need to alter some include directives, but the warnings should be obnoxious enough that they have no excuse for not transitioning to the modern API immediately.
The one piece which has changed is the C++ state wrapper (
sbp::State
) which previously was capable of handling both the legacy and modern APIs. This has been broken up so thatsbp::State
now only handles the modern API, and a new classsbp::LegacyState
inherits fromsbp::State
and adds a coupld of functions to deal with the legacy API. This class is immediately deprecated and marked for deletion in version 6The modern API is untouched by this PR
API compatibility plan
If the above is "Yes", please detail the compatibility (or migration) plan:
All users must transition to the modern API immediately if they haven't already done so.
JIRA Reference
https://swift-nav.atlassian.net/browse/AP-643