Releases: viamrobotics/viam-cpp-sdk
releases/v0.4.0
Breaking change: Instance class
The SDK now features a single Instance class which manages application-global initialization and state. Every SDK program must define an Instance variable before any other Viam SDK objects are constructed. Typically this will look like
#include <viam/sdk/common/instance.hpp
// ...
int main(int argc, char** argv)
{
Instance inst;
// ...
}Existing code will throw an exception shortly after program startup if this change is not made.
Compilation errors will also occur if your code was making direct use of static Registry member functions. Calls to Registry::some_func() should be replaced with Registry::get().some_func()
What's Changed
- RSDK-6158 - initial connection options by @stuqdog in #376
- Automated Protos Update by @github-actions in #375
- RSDK-9901 - run tests in update proto workflow by @stuqdog in #378
- Update README.md by @JessamyT in #381
- RSDK-9298: Instance class by @lia-viam in #374
- Fix conan build failures by @lia-viam in #379
- RSDK-9901 - use git-access-token by @stuqdog in #382
- version bump by @lia-viam in #384
New Contributors
Full Changelog: releases/v0.3.0...releases/v0.4.0
releases/v0.3.0
What's Changed
Full Changelog: releases/v0.2.1...releases/v0.3.0
releases/v0.2.1
releases/v0.2.0
What's Changed
- RSDK-9848 - fix update-proto workflow by @stuqdog in #362
- Automated Protos Update by @github-actions in #364
- Update README.md for sensor module by @lia-viam in #363
- Automated Protos Update by @github-actions in #365
- RSDK-9842 - add get_machine_status implementation by @stuqdog in #366
- Automated Protos Update by @github-actions in #367
- bump version by @stuqdog in #368
Full Changelog: releases/v0.1.0...releases/v0.2.0
releases/v0.1.0
Version 0.1.0 Release
This release is a stability milestone for the C++ SDK, marking the first 0.x.y release following 0.0.x releases. At this point the SDK is in a stable beta state and breaking changes will be less frequent. If you have not updated your C++ SDK dependency in several months, a lot has changed. Here are some of the larger items that will affect developer experience and general quality of life improvements.
Viam API and all google libraries are now private dependencies
- These libraries are no longer propagated as part of the public build interface of our CMake
- Allows for future API/ABI stability against changes to the API and in grpc/proto/abseil
- The SDK will respect your choice of C++ standard if you're targeting C++14; abseil's versioning hygeine previously broke this
- If you are working with the Viam API or google libraries directly, you will now need to declare them as public deps of your library
- Relatedly...
New API for conversion from SDK to API types
- See
src/viam/sdk/common/proto_convert.hppfor guides and documentation - Previous scattered collection of free/member/static member functions for
to_protoandfrom_protoare now replaced by singleto_protoandfrom_protofunctions which are enabled for any class that specializesstruct to_protoandstruct from_proto. - Note that the detail structs refer to API types by pointer to forward declared type, enabling ABI insulation
- If you need direct "back door" access to API types, you can include the relevant Viam API header and then
to_protoandfrom_protowill "just work"
Replaced AttributeMap and ProtoType with ProtoStruct and ProtoValue
ProtoValueis the new sum-type which is our version ofgoogle::protobuf::Value- No longer need to wrap everything in a
make_sharedor access byshared_ptr - Value semantics for constructing and working with
ProtoValueobjects rather than pointer semantics ProtoStructmodelsgoogle::protobuf::Struct, andProtoListis a vector ofProtoValue- See generated documentation or
src/viam/sdk/common/proto_value.hpp
Conan support
- See documentation in BUILDING.md
- Can now obtain SDK deps with Conan, and build the SDK itself as a Conan package
- Supports shared and static builds; tested in CI
What's Changed (auto-generated release notes)
- Rust utils bump to v0.2.17
- RSDK-9719: Simple module sensor by @lia-viam in #359
- remove old reference to printer module by @lia-viam in #360
- bump version: v0.1.0 by @njooma in #361
- remove instability notice by @abe-winter in #331
Full Changelog: releases/v0.0.21...releases/v0.1.0
releases/v0.0.21
What's Changed
- RSDK-9707: Make API a private dependency of SDK by @lia-viam in #355
- Remove DiscoverComponents by @randhid in #356
- RSDK-9731 Remove v2 namespace prefix for proto conversion by @lia-viam in #354
- RSDK-9740: Make google libraries a private dependency of the SDK by @lia-viam in #357
- version bump by @lia-viam in #358
New Contributors
Full Changelog: releases/v0.0.20...releases/v0.0.21
releases/v0.0.20
What's Changed
- RSDK-9670: remove RobotService_ by @lia-viam in #351
- RSDK-9549: Make RpcSubtype model api ResourceRPCSubtype by @lia-viam in #349
- Remove reference to old module-example-cpp by @lia-viam in #352
- Bump version to v0.0.20 by @purplenicole730 in #353
Full Changelog: releases/v0.0.19...releases/v0.0.20
releases/v0.0.19
What's Changed
- RSDK-9449 Miscellaneous further proto cleanups by @lia-viam in #339
- RSDK-9518: upgrade upload artifact to v4 by @purplenicole730 in #344
- RSDK-9556 Forward declarations for grpc Client stuff by @lia-viam in #341
- Fix conan build by adding missing include by @lia-viam in #345
- refer to grpc::Channel by forward decl by @lia-viam in #342
- Module service insulate by @lia-viam in #343
- Miscellaneous google header insulation by @lia-viam in #346
- remove api imports from examples by @lia-viam in #347
- Bump version to v0.0.19 by @njooma in #348
- RSDK-9672 Insulate grpc Status by @lia-viam in #350
Full Changelog: releases/v0.0.18...releases/v0.0.19
releases/v0.0.18
What's Changed
- RSDK-3589 audit nav service docstrings by @raybjork in #334
- RSDK-6574: Fix use of
time_pointby @lia-viam in #335 - RSDK-9337: Introduce proto API bridge and insulate various geometry and math types from API by @lia-viam in #332
- RSDK-9466 - Remove robot status endpoint from SDK by @cheukt in #338
- Version bump by @lia-viam in #340
New proto API bridge approach
As part of an ongoing project to insulate google protobuf and the Viam API from the ABI and public API of the Viam SDK, we have introduced a new approach for writing and using to_proto and from_proto conversions. See https://github.com/viamrobotics/viam-cpp-sdk/blob/main/src/viam/sdk/common/pose.hpp for a worked example.
You have to
- include
viam/sdk/common/proto_convert.hpp - forward declare the relevant API types
- specialize the
structcallablesproto_convert_details::to_protoandproto_convert_details::from_prototo implement API to SDK interchange.
Note that the detail structs only refer to API types by pointer to a forward-declared class, so there is no ABI dependency on the Viam API types.
The proto_convert.hpp header also provides the callables viam::sdk::v2::to_proto, which returns an API type by value, and viam::sdk::v2::from_proto which takes an API type by reference to const. In practice if you need an escape hatch to work with API types directly, you should include the relevant viam/api/... headers and use the to_proto and from_proto callables rather than the struct templates. The v2 namespace will be removed when this migration is complete and none of the old conversion functions remain.
Full Changelog: releases/v0.0.17...releases/v0.0.18
releases/v0.0.17
What's Changed
- RSDK-6634 - remove resource proto conversions from public headers by @stuqdog in #328
- use docker base image in CI by @abe-winter in #327
- RSDK-9299 - refactor get_resource_name to be a non-proto method by @stuqdog in #329
- Automated Protos Update by @github-actions in #321
- remove null opt derefs by @lia-viam in #330
- bump to 0.0.17 by @stuqdog in #333
Full Changelog: releases/v0.0.16...releases/v0.0.17