C++ Canister Development Kit

icpp-pro is a CDK to develop C++ smart contracts for the Internet Computer.

"...needed to have more flexibility with using c++ code as backend server. With the introduction of icpp within icp, it is now possible to create something that crosses the borders of what is possible."
Ktimam Imam (ICSoccerWorld)


Download Statistics

Capabilities

Capability icpp-pro
Compile C++ Smart Contracts to WebAssembly for the IC
Seamless compilation with wasi-sdk and deployment of wasm to IC Canisters
Static libraries
Structure your project using one or more libraries
Modern C++
By default, using C++20, but C++17 also supported
Candid API
All candid types & forward compatibility are supported
Orthogonal Persistence
for all data: primitives, sequence containers & associative containers
(int, float,...) , (std::vec, std::list,...) & (std::map, std::unordered_map)
Stable Memory
Files written during an update call are stored instable memory and persist across canister upgrades
std::cout
All debug output is printed to local canister console
File io
All file io is supported (open/write/read/close/delete)
Canister Initialization
canister_init
Cross-platform development, deployment & testing experience
Windows, Linux, Mac
Fast compilation using concurrency
Multi-threaded compilation on Windows, Linux & Mac
Selective compilation
Speed up your builds by re-compiling only your own canister files
Interactive Debugging of C++ Smart Contract with VS Code
Debug your Smart Contract using a fast, native debug compile with Clang++
Unit test framework
Test your Smart Contract using a fast, native debug compile
Smoke test framework based on pytest
Test your Smart Contract after deployment to local or main IC network

C++ Community

Please join the C++ Community on OpenChat.