Current state: Accepted
ISSUE: https://github.com/milvus-io/milvus/issues/7713
PRs:
Keywords: C++ SDK
Released: with Milvus 2.1
Authors:
Summary
Deliver C++ SDK toolkit with full functionality for Milvus 2.0. Provide both static lib and dynamic lib for users.
Motivation
We've seen many users demands for C++ SDK, it is probably the most useful SDK which could be used in distributed systems.
Public Interfaces
Design Details
TODO lists
- API Design → Reference Java 1.1 SDK, Pymilvus SDK
- Initial version of the code, finish all the frameworks, including how the sdk communicate with milvus cluster, how we do unit test.
- Finish DDL, DML , Control API implementation
- Unit Test
- Usage examples
- API Document
- CI Test
Which C++ versions are we going to support?
Any C++ version above C++11. The Reason is that :
- Wider user range, as may organizations and devices support C++11.
- Easy to maintain as it will get a large group of developer support.
For the supported platform, need to be tested with mainstream distributions(e.g. Ubuntu 18.04+, CentOS 7+) using google tests. Milvus cpp SDK 1.1 using cmake, and only build a shared library as output. In this new SDK for milvus 2, the user can choose which version to be built by setting cmake options. Quality gates such as clang-format, clang-tidy, cpplint are needed.
Code Style
A basic rule of code style:
- Namespace should use
lower_case
- Class should use
CamelCase
Class member should use lower_case_ (with a underscore append)
- Enum member should use
UPPER_CASE
- Function should use
CamelCase
, and the private member Function usecamelBack
Test Plan
- Unit test
- C++ SDK will implement a mock milvus for basic testing, need to be tested with mainstream distributions(e.g. Ubuntu 18.04+, CentOS 7+)
- Start a standalone milvus complicated test.
- CI test
- Do we need to setup basic CI test for further improvement?
- Examples
- finish all the examples in user guide and make sure it works like https://milvus.io/docs/v2.0.0/example_code.md
References
Current state: Accepted
ISSUE: https://github.com/milvus-io/milvus/issues/7713
PRs:
Keywords: C++ SDK
Released: with Milvus 2.1
Authors: @matrixji @ArkaprabhaChakraborty @yhmo