Skip to content

Releases: viamrobotics/viam-cpp-sdk

releases/v0.1.0

28 Jan 19:42
d9413c9
Compare
Choose a tag to compare

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 and from_proto are now replaced by single to_proto and from_proto functions which are enabled for any class that specializes struct to_proto and struct 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 and from_proto will "just work"

Replaced AttributeMap and ProtoType with ProtoStruct and ProtoValue

  • ProtoValue is the new sum-type which is our version of google::protobuf::Value
  • No longer need to wrap everything in a make_shared or access by shared_ptr
  • Value semantics for constructing and working with ProtoValue objects rather than pointer semantics
  • ProtoStruct models google::protobuf::Struct, and ProtoList is a vector of ProtoValue
  • 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)

Full Changelog: releases/v0.0.21...releases/v0.1.0

releases/v0.0.21

21 Jan 16:51
e14af53
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: releases/v0.0.20...releases/v0.0.21

releases/v0.0.20

13 Jan 19:37
951b7e4
Compare
Choose a tag to compare

What's Changed

Full Changelog: releases/v0.0.19...releases/v0.0.20

releases/v0.0.19

08 Jan 21:02
ddbf852
Compare
Choose a tag to compare

What's Changed

Full Changelog: releases/v0.0.18...releases/v0.0.19

releases/v0.0.18

16 Dec 18:35
f845acf
Compare
Choose a tag to compare

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 callables proto_convert_details::to_proto and proto_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

02 Dec 18:03
a63b7a0
Compare
Choose a tag to compare

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

18 Nov 21:54
7c8487c
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: releases/v0.0.15...releases/v0.0.16

releases/v0.0.15

11 Nov 19:00
7851b44
Compare
Choose a tag to compare

What's Changed

Full Changelog: releases/v0.0.14...releases/v0.0.15

releases/v0.0.14

04 Nov 19:59
69e1758
Compare
Choose a tag to compare

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

21 Oct 17:58
d5000dd
Compare
Choose a tag to compare

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