Releases: viamrobotics/viam-cpp-sdk
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.hpp
for guides and documentation - Previous scattered collection of free/member/static member functions for
to_proto
andfrom_proto
are now replaced by singleto_proto
andfrom_proto
functions which are enabled for any class that specializesstruct to_proto
andstruct 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_proto
andfrom_proto
will "just work"
Replaced AttributeMap
and ProtoType
with ProtoStruct
and ProtoValue
ProtoValue
is the new sum-type which is our version ofgoogle::protobuf::Value
- No longer need to wrap everything in a
make_shared
or access byshared_ptr
- Value semantics for constructing and working with
ProtoValue
objects rather than pointer semantics ProtoStruct
modelsgoogle::protobuf::Struct
, andProtoList
is 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_point
by @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
struct
callablesproto_convert_details::to_proto
andproto_convert_details::from_proto
to 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
releases/v0.0.16
What's Changed
- Conan CI job additional typo fix by @lia-viam in #319
- Automated Protos Update by @github-actions in #318
- build docker base images in CI by @abe-winter in #322
- RSDK-3589 add wrapper for navigation service by @abe-winter in #323
- Add MoveThroughJointPositions to Arm component by @raybjork in #324
- bump version to v0.0.16 by @purplenicole730 in #326
New Contributors
Full Changelog: releases/v0.0.15...releases/v0.0.16
releases/v0.0.15
releases/v0.0.14
What's Changed
- Automated Protos Update by @github-actions in #308
- Automated Protos Update by @github-actions in #311
- RSDK-9077: Docker containers for module development by @lia-viam in #310
- Automated Protos Update by @github-actions in #313
- Bump version to 0.0.14 by @jckras in #314
- Update README.md for module dev Docker by @lia-viam in #315
Full Changelog: releases/v0.0.13...releases/v0.0.14
releases/v0.0.13
What's Changed
- Automated Protos Update by @github-actions in #305
- RSDK-8822: Whole archive linking by @lia-viam in #306
-
- module example code is no longer broken on static builds
-
- no further guarantees are made and this is not extensively tested in CI/releases nor will it be part of release archives going forward
- version bump by @lia-viam in #307
Full Changelog: releases/v0.0.12...releases/v0.0.13