NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #4772 most downloaded on crates.io
Candid is an interface description language (IDL) for interacting with canisters running on the Internet Computer.
Last release 11 days ago
25 Sep 2026
Release timing varies
gaps range from 2 weeks to 4 months
Some releases are documented
notes for 32 of the last 60 stable releases
4 versions withdrawn
withdrawn after publishing
6 years old
121 releases · first in 2020
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Upgrade candid_parser dependency to v0.4.0.
curl --proto ' =https ' --tlsv1.2 -LsSf https://github.com/dfinity/candid/releases/download/didc-v0.6.2/didc-installer.sh | sh
didc check now reports all incompatible changes at once, grouped by method, instead of stopping at the first error
didc check now reports all incompatible changes at once, grouped by method, instead of stopping at the first errorNothing published for this version
Nothing published for this version
Nothing published for this version
fix: ignore inline comments or separated by newlines
Nothing published for this version
The didc test subcommand has been removed.
didc test subcommand has been removed.Nothing published for this version
Escape the method names of a service type in the Rust binding. A Candid method name is an arbitrary text value, but pp_ty_service emitted it raw betwe
pp_ty_service emitted it raw between the quotes of a Rust string literal inside candid::define_service!. A name containing " therefore closed the literal and the macro invocation, and the rest of the name was compiled as Rust — a .did file could inject arbitrary items into the bindings generated from it, and from there into the consumer's binary. Names are now escaped with escape_debug, as pp_function and the #[serde(rename)] attributes already were. The value seen by define_service! is unchanged, and names that are ordinary identifiers generate byte-identical output.Parse and preserve named function arguments and results. The AST now carries argument names so consumers (e.g. binding generators) can emit meaningful
syntax::IDLArgType { typ: IDLType, name: Option<String> } with IDLArgType::new / IDLArgType::new_with_name. Purely numeric names are normalized to None.syntax::FuncType::{args, rets}, syntax::IDLType::ClassT, syntax::IDLTypes::args, and syntax::IDLInitArgs::args now hold Vec<IDLArgType> instead of Vec<IDLType>.(from : principal)).candid::types::Function, so the candid crate is unaffected.Add service_compatibility_report() returning a full grouped compatibility report as a string
service_compatibility_report() returning a full grouped compatibility report as a stringChanged imports generated by candid_parser::typescript::compile from @dfinity/* to @icp-sdk/core/*
candid_parser::bindings::typescript::compile from @dfinity/* to @icp-sdk/core/*Nothing published for this version
Nothing published for this version
fix: escape */ to prevent premature JS doc comment termination
*/ to prevent premature JS doc comment terminationRust binding: Sets service_name based on top level name config
service_name based on top level name configdidc v0.5, some identifiers started to be renamed. E.g. struct field amount_e8s was renamed to amount_e_8_s.
Now, field name like amount_e8s won't be renamed.to_identifier_case() in rust/candid_parser/src/bindings/rust/identifier.rs for more details.fix: ignore inline comments or separated by newlines
The candid_parser::types module has been renamed to candid_parser::syntax.
Breaking changes:
candid_parser::types module has been renamed to candid_parser::syntax.Non-breaking changes:
Supports collecting line comments as doc comments in the following cases:
// This is a valid doc comment for the service
service : {
greet : (text) -> (text);
}
service : {
// This is a valid doc comment for greet
greet : (text) -> (text);
}
// This is a valid doc comment for type A
type A = record {
my_field : text;
};
type A = record {
// This is a valid doc comment for my_field
my_field : text;
};
type B = record {
// This is a valid doc comment for nat element
nat;
text;
}
type C = variant {
// This is a valid doc comment for my_variant_field
my_variant_field : nat;
};
Adds the IDLMergedProg struct, used to collect the syntax types when parsing Candid declarations.
Supports reflecting doc comments from Candid declarations to the generated bindings. To enable this feature, we had to change the following:
candid_parser::bindings::motoko::compile function now takes an additional &IDLMergedProg parameter.candid_parser::bindings::rust::compile function now takes an additional &IDLMergedProg parameter.candid_parser::bindings::typescript::compile function now takes an additional &IDLMergedProg parameter.candid::pretty::syntax module has been added. It exposes the pretty_print function, which is used to pretty print the IDLMergedProg struct. The behavior is similar to the already existing candid::pretty::candid::compile function, but uses the syntax types instead of the candid types.Supports reflecting doc comments from Rust canister methods to the Candid generated bindings. Example:
/// Doc comment for greet,
/// even on multiple lines
#[candid_method(query)]
fn greet(name: &str) -> String {
format!("Hello, {name}!")
}
The generated Candid bindings will then look like this:
service : {
// Doc comment for greet,
// even on multiple lines
greet : (text) -> (text);
}
To support this feature, hhe following have been added:
candid::pretty::candid::DocComments struct, which is used to collect doc comments from Rust canister methods, in the candid_derive::export_service macro.candid::pretty::candid::compile_with_docs function, which takes a &DocComments parameter.Nothing published for this version
Add import service in parser to allow merging services.
import service in parser to allow merging services.Your coding agent can read these notes before it upgrades. Set up the MCP server →