Skip to content

Releases: demergent-labs/azle

0.25.0

09 Jan 23:37
d23530a
Compare
Choose a tag to compare

This release focuses on many tasks in preparation for Azle's release candidate to 1.0. We expect version 0.25.0 to be the last before the release candidate.

Azle 0.25.0 greatly improves our confidence in the stability and security of Azle's stable mode. We have integrated rquickjs as our Rust bindings to QuickJS in stable mode. Stable mode and experimental mode are now two entirely separate binaries.

We have greatly improved our automated testing and dependency update processes. We have automatically generated the IDL and TypeScript types for Azle's automatically-included canisters, such as the management canister, ICP ledger, and ICRC canisters.

Benchmarks have been introduced to give developers a feel for Azle's instruction usage and cycle and USD costs.

Azle in stable mode has now been subjected to fuzz testing, uncovering a major memory leak and already borrowed error. These issues have been fixed in Azle stable and experimental modes.

Azle's stable mode is now more battle-tested than ever before, and we are becoming more and more confident in Azle's stability and security.

Features

stable/experimental binary bifurcation (rquickjs)

Azle now ships two pre-compiled Wasm binaries, one for the stable mode and one for the experimental mode. The stable mode Wasm binary uses rquickjs as the Rust bindings to QuickJS. We believe that rquickjs is much more stable and generally robust than wasmedge-quickjs. wasmedge-quickjs is still used in the experimental mode's Wasm binary.

Fuzz tests with cuzz

We have implemented a basic canister fuzz testing framework called cuzz. We uncovered a number of errors and fixed all of them in at least stable mode.

Beautiful errors for stable

We have greatly improved the error reporting for stable mode, from the build process to the canister runtime.

cyclesBurn

We have implemented the cyclesBurn System API.

Automatically-generated IDL and TypeScript types

We have begun to auto-generate the IDL and TypeScript types for the management canister, ICP ledger canister, and the standardized ICRC canisters. These automatically generated types can be imported from azle/canisters/[canister_name]. We are working on a PR to didc that will allow you to generate the IDL and TypeScript types for any arbitrary canister as long as you have access to its did file.

Benchmarks

The root of the repo now has a benchmarks.md file with aggregated information from many examples and tests. Many of the examples and tests now also have their own benchmarks.md file. These benchmarks are designed to give you a feel for instruction, cycle, and final USD usage costs for Azle canisters.

Tests for stable APIs in experimental mode

We now run an extensive test suite for the stable API running in experimental mode.

Various new property tests for ICP APIs

We have imporoved property testing for some of the ICP System APIs.

Massive improvements to testing framework/github actions

Our custom continuous integration framework has been overhauled and improved in many ways. This will mostly result in better core development of Azle.

Dependabot automatic dependency updates

Dependabot is now automatically updating most of Azle's JavaScript and Rust dependencies.

Nicer decorator syntax for empty signatures

When using the @query and @update decorators, you can now leave off any invocation or options object (@query([])) if your method takes no parameters and does not return a value.

Double canister method registration issues fixed

Previously Azle would register canister methods in any class in the import tree of the main Azle file. This behavior has been removed, and you can only register canister methods from the main default exported canister class in stable mode. This behavior has also been fixed for experimental mode.

Major memory leak fix

We found a major memory leak that occurs in certain inter-canister call failure cases. This memory leak has been fixed in both stable and experimental mode.

Already borrowed fix

We found a trapping error case that only occurs in certain inter-canister call failure cases. This has been fixed in both stable and experimental mode.

Breaking Changes

  • payment is now called cycles in the call options object
  • the management canister, ICP ledger, and ICRC canisters now use new auto-generated IDL and TypeScript types. The path is still azle/canisters, but the name of the canister may have changed slightly and the types now match more exactly the types in the did file
  • dataCertificate return type changed, it now returns a Uint8Array | undefined
  • StableBTreeMap is now a class and must be instantiated with new
  • candidCompiler has been entirely removed from stable azle
  • the toBytes and fromBytes methods on the empty Candid type have been removed from azle experimental mode
  • You must now use .raw in URLs even locally for HTTP server canisters as of dfx 0.24.1
  • The only supported incoming HTTP methods are POST, GET, HEAD, PUT, and DELETE
  • If you relied on decorators registering methods in multiple classes or files, that now doesn't work. You must only register methods in the default exported class
  • Some new fields have been added to azle's management canister ic.did file, so some cross canister calls might fail without those updated properties being provided values at runtime
  • instructionCounter has been removed in favor of performanceCounter

What's Changed

Read more

0.25.0-rc.15

09 Jan 22:03
d23530a
Compare
Choose a tag to compare
0.25.0-rc.15 Pre-release
Pre-release
Merge pull request #2474 from demergent-labs/remove_disclaimer_and_df…

0.25.0-rc.14

09 Jan 19:56
ad87115
Compare
Choose a tag to compare
0.25.0-rc.14 Pre-release
Pre-release
Merge pull request #2472 from demergent-labs/stable_b_tree_map_prop_t…

0.25.0-rc.13

09 Jan 18:04
94d6a87
Compare
Choose a tag to compare
0.25.0-rc.13 Pre-release
Pre-release
Merge pull request #2469 from demergent-labs/unstable_psbt

move psbt to unstable

0.25.0-rc.9

07 Jan 15:30
adcb856
Compare
Choose a tag to compare
0.25.0-rc.9 Pre-release
Pre-release
Merge pull request #2444 from demergent-labs/globals_versioning

Globals versioning

0.25.0-rc.12

07 Jan 23:59
05297e9
Compare
Choose a tag to compare
0.25.0-rc.12 Pre-release
Pre-release
Merge pull request #2461 from demergent-labs/experimental_globals

completely remove the global index for the canister methods, combine …

0.25.0-rc.11

07 Jan 22:16
32027e3
Compare
Choose a tag to compare
0.25.0-rc.11 Pre-release
Pre-release
Merge pull request #2459 from demergent-labs/fix_performance_counter

remove instructionCounter and fix performanceCounter tests

0.25.0-rc.10

07 Jan 18:18
67c1d31
Compare
Choose a tag to compare
0.25.0-rc.10 Pre-release
Pre-release
Merge pull request #2456 from demergent-labs/fix_examples_for_release

update new examples

0.25.0-rc.7

05 Jan 05:24
bf2d50a
Compare
Choose a tag to compare
0.25.0-rc.7 Pre-release
Pre-release
use ts-ignore

0.25.0-rc.6

05 Jan 05:02
3c2637c
Compare
Choose a tag to compare
0.25.0-rc.6 Pre-release
Pre-release
forgot to add modules.d.ts to the .npmignore