Skip to main content

CDKs

Intermediate
CDK

Overview

Canister development kits (CDKs) are used to interface with the IC SDK and provide different programming languages with the necessary functionalities to develop canisters. These functionalities include the ability to create, deploy, call, and manage canisters, both locally deployed and deployed to the mainnet.

The IC SDK includes a CDK for the Rust programming language, which is developed and maintained by DFINITY. This Rust CDK is installed automatically when the IC SDK is installed, and can be used through the dfx CLI tool.

CDKs for other languages, however, are currently community-contributed and maintained.

Azle

Azle is a CDK developed by Demergent Labs that supports TypeScript and JavaScript canister development. Azle provides a fully-comprehensive environment for TypeScript and JavaScript canisters by supporting as many relevant APIs as possible.

Resources

Kybra

Kybra is a CDK developed by Demergent Labs that supports canister development in Python. Kybra provides a fully-comprehensive environment for Python canisters by also supporting as many relevant APIs as possible in the same manner that Azle does.

Resources

Bitfinity EVM

The Bitfinity EVM is an experimental EVM implementation that provides an RPC interface compatible with the Ethereum JSON-RPC API. While this is not a traditional CDK, it does provide the ability for existing Ethereum tools and libraries to be used to develop Solidity canisters on ICP.

The Bitfinity EVM is in the early stages of development and should not be used for production development.

Resources

Rustic

Rustic is an extension to ic-cdk, offering additional primitives and functionalities familiar to Solidity developers, such as AccessControl and ReentrancyGuard. It also embeds best practices on canister development, and adds syntactic sugar. Stable memory, HTTPS metrics, and canister lifecycle management are all available out of the box.

Resources

C++ CDK

The C++ CDK known as icpp-pro is a canister development kit for the C++ programming language.

Resources