Skip to content

Overview

ICP canisters compile to WebAssembly, so any language that targets Wasm can be used. These docs cover the two officially supported languages in depth, plus community CDKs for additional languages.

The most popular choice for ICP development. Use the ic-cdk canister development kit with the full Rust ecosystem — any crate that compiles to wasm32-unknown-unknown works. Best for: performance-critical canisters, leveraging existing Rust libraries, and teams with Rust experience.

A language designed specifically for the Internet Computer with built-in actor model, orthogonal persistence, and async/await for inter-canister calls. Best for: rapid prototyping, developers new to ICP, and projects that benefit from ICP-native language features.

These CDKs are built and maintained by the community. They enable ICP development in additional languages.

LanguageCDKRepository
TypeScriptAzledemergent-labs/azle
PythonKybrademergent-labs/kybra
C++icpp-proicppWorld/icpp-pro
MoonBitmoonbit-ic-cdkeliezhao/moonbit-ic-cdk