- Fix parser: underscore for hexnum; semicolon at the EOF
- Fix semicolon in Rust binding
- Derive
Copy
,Eq
,Default
forReserved
- Bump
ic-types
to0.4
- Fetch did file from canister metadata
- Deprecate
localhost/_/candid
endpoint - Fetch name section from metadata (instrumented code)
- Bug fix for encoding
vec nat8
types - Disable profiler for query methods
- Update service methods in TS bindings to use ActorMethod, the type used by agent-js's Actor class
- Infer the type of
vec {}
tovec empty
to satisfy subtype checking - Expose more internal structures
- Bump ic-types to 0.3
candid::utils::service_compatible
to check for upgrade compatibility of two service types
- Generate Rust binding from Candid file (experimental)
- Ignore init args for subtype checking
- Pretty print text value with escape_debug
- More visitors for Nat and Int type
- Flamegraph when profiling feature is enabled
- Fix
subtype
function to take only one env. To check subtyping from two did files, useenv.merge_type(env2, ty2)
to merge the env and rename variable names.
- Release ARM binary for
didc
- Refine the spec for opt rules
- Support import when parsing did files with
check_file
function - Fix TypeScript binding for reference types
- Report profiling info when
__get_cycles
method is available - Add binding generation and subtype checking for Candid UI canister
- Update TypeScript binding to better integrate with dfx
- Set
is_human_readable
to false in Deserializer
- Update JS binding to use
Principal
from@dfinity/principal
- Add
#[candid_path("path_to_candid")]
helper attribute to the candid derive macro - Update
ic-types
to 0.2.0
- Update spec to introduce subtyping check in deserialization #168
- Coq proof for subtype check
- Update test suite to conform with the new spec
- Require full subtype checking in deserialization. This removes undefined behavior when trying to decode variant and empty vector at types that are not supertype of the wire type.
- Deserialization requires both
Deserialize
andCandidType
trait. de::ArgumentDecoder
,ser::ArgumentEncoder
moved toutils::{ArgumentDecoder, ArgumentEncoder}
.types::subtype
returnsResult<()>
instead ofbool
for better error message.- Disable subtyping conversion for opt rules in
IDLValue.annotate_type
. - Display type annotations for number types.
- Better error messages in deserialization
- Remove unnessary
reqwest
dependency - Implement CandidType for
str
didc bind
to support Motoko bindingsdidc hash
to compute hash of a field namedidc decode
can decode blob format- Candid UI canister
- Fix a bug for serializing recursive values in Rust CDK #210
- Use BigInt in JS/TS binding
- Fix TypeScript binding for tuple
- Rust support for Func and Service value
#[candid_method(init)]
to support init arguments in service actor- Subtyping check for Candid types
- Handle subtyping for
reserved
andint
in decoding
- Benchmark for Rust library with criterion
didc check
anddidc subtype
command to check for subtyping- Conditional running CI for Coq or Rust library
- Support
serde_bytes
for efficient handling of&[u8]
andVec<u8>
- Typescript binding for Candid
- Support more native Rust types: Path, PathBuf, VecDeque, LinkedList, BinaryHeap, Cow, Cell, RefCell
- Documentation for type mapping and howto section
didc bind
to generate typescript binding
- Generate random Candid values
- Sort method names lexicographically
- Candid user guide
- More Coq proof for MiniCandid
didc random
command and an experimental config file
- Better pretty printer for Candid value
- Support reference types
- Support more native Rust types: HashMap, HashSet, BTreeMap, BTreeSet, i128, u128
- Bug fix for empty record detection when deserializing to native Rust types
- Test suites for reference types
didc encode
supports outputing blob format
- Bug fix for opt subtyping
- Formalize definitions of IDL-soundness in Coq
- Support the opt subtyping rules
- Allow using Rust keyword as field label
- Add opt subtyping tests
- Rewrite description of deserialization #128
- Add result getter for serializer
- Implement CandidType for std::time::SystemTime and Duration
- Support service constructor
- Export
init
types in JS binding for service constructor - Improve pretty-printing for Candid values: underscore for numerals, blob shorthand for
vec nat8
. - Disable pretty-printing for large vectors.
- Add attribute
#[candid_method]
to derive Candid types for functions. - Add a feature flag
cdk
to generate candid path specifically for Rust CDK.
- Candid UI canister to render a web UI for all running canisters on the network.
- Fix a bug when decoding nested record values.
- Add
encode_args
anddecode_args
functions to encode/decode sequence of arguments.
- Use
ic-types
for Principal (breaking change) - Support type annotations in parsing Candid values
- Support float e notation
- Support nested comments
- Pretty print decoded candid values
- New lexer using the
logos
crate - Use
codespan-reporting
to report Rust-like parsing errors
- Fix deserialization to validate type table and detect infinite loop in
type T = record { T }
- Fix serialization for newtype struct
- Display trait for pretty printing
types::Type
- More test suites for prim and construct types
- Tools for emitting JavaScript tests from Candid test suites
- Publish
didc
andcandiff
binary in the release - Generate JS tests from the Candid test suites
- No longer requires the shortest LEB128 number in deserialization #79
- Parser improvements:
- Floats in fractional number, no e-notation yet
- Comments (no nested comments)
- Blob shorthand for
vec nat8
value - Fix text parser to valiate utf-8 encoding
- Bounds check for bool and text
- Type annotation for reserved
- Initial commit for didc and candiff tools
- Add Candid test suite