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. Experimental mode and stable 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)
Fuzz tests with cuzz
Beautiful errors for stable
cyclesBurn
Automatically-generated IDL and TypeScript types
Benchmarks
Tests for stable APIs in experimental mode
Various new property tests for ICP APIs
Massive improvements to testing framework/github actions
Dependabot automatic dependency updates
Nicer decorator syntax for empty signatures
Double canister method registration issues fixed
Major memory leak fix
Already borrowed fix
Breaking Changes
- payment is now called cycles
- management canister, icrc, icp have new IDL and TypeScript types
- dataCertificate return type changed
- StableBTreeMap is now a class and must be instantiated with
new
- candidCompiler has been entirely removed from stable
- empty toBytes and fromBytes have been removed
- You must now use .raw even locally for http server canisters as of dfx 0.24.1
- The only supported 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 exported class
- Some new fields have been added to the management canister ic.did, so some cross canister calls might fail without those updated properties being provided values at runtime
- instruction counter has been removed
What's Changed
- last minute updates to The Azle Book for Azle 0.24.x by @lastmjs in #2082
- Burn by @lastmjs in #2084
- attempt to use class variables in most places in the class api, remov… by @lastmjs in #2083
- Update GitHub workflows by @bdemann in #2031
- automatically generate the management canister idl objects and types … by @lastmjs in #2105
- Quick tests by @bdemann in #2081
- Install global dependencies by @bdemann in #2098
- Auto generate icrcs by @lastmjs in #2108
- Update release process by @bdemann in #2136
- Use reusable workflows to break up tests by @bdemann in #2152
- adding first MVP of benchmarks, they will run on tests now, but will … by @lastmjs in #2138
- Parallel release by @bdemann in #2161
- add delete branches workflow by @bdemann in #2250
- Parallel benchmarking by @bdemann in #2238
- Benchmark Results for benchmark--0.25.0-pre-bifurcation by @github-actions in #2259
- Initial benchmark run by @bdemann in #2256
- Rquickjs move crates by @lastmjs in #2193
- stable/experimental binary bifurcation (rquickjs) by @lastmjs in #2150
- Beautiful errors for Rust by @lastmjs in #2197
- Beautiful errors build by @lastmjs in #2247
- Remove unnecessary experimental by @lastmjs in #2249
- Dynamic main path by @lastmjs in #2251
- Progressive writing by @lastmjs in #2252
- Manual error testing by @lastmjs in #2253
- Rename payment to cycles by @lastmjs in #2254
- Make benchmarks work again by @lastmjs in #2257
- restore quite fail for commit by @bdemann in #2263
- Run stable on experimental by @bdemann in #2191
- Benchmark Results for benchmark--0.25.0-dev by @github-actions in #2264
- Canister version prop test by @bdemann in #2176
- Fix stable in experimental tests by @lastmjs in #2268
- Battle testing by @lastmjs in #2269
- Run tests manually by @bdemann in #2273
- update puppeteer to use new html by @bdemann in #2275
- Cycles prop tests by @bdemann in #2178
- Candid prop tests by @bdemann in #2179
- Arg data raw prop test by @bdemann in #2182
- Workflow updates by @bdemann in #2281
- add a custom fuzz testing workflow by @lastmjs in #2287
- remove all dev dependencies by @bdemann in #2278
- add responses prop test by @bdemann in #2180
- Read me prop tests by @bdemann in #2177
- remove fallback token by @bdemann in #2299
- filter any out of js name arb by @bdemann in #2302
- Remove timeout by @bdemann in #2298
- break up longer steps into smaller steps by @bdemann in #2301
- Release finishing touches by @bdemann in #2290
- Certified data prop test by @bdemann in #2181
- Workflow checks by @bdemann in #2296
- Fix PR checks by @bdemann in #2310
- Test workflow dispatch by @bdemann in #2297
- add error message to markdown if benchmarks failed by @bdemann in #2300
- refactored type tests to always be imported, fixed some type errors by @lastmjs in #2316
- ICP API prop test types by @bdemann in #2305
- don't run on drafts by @bdemann in #2318
- first attempt at fuzz testing by @lastmjs in #2274
- update versions by @bdemann in #2317
- Missing benchmarks by @bdemann in #2328
- Reorg examples by @bdemann in #2326
- Benchmark analysis by @bdemann in #2293
- try dependabot by @bdemann in #2334
- update workflow to build template on dependabot prs by @bdemann in #2347
- add tokens and signing keys to the env by @bdemann in #2356
- Dep bot troubleshooting by @bdemann in #2358
- remove print by @bdemann in #2359
- deps: bump chokidar from 4.0.1 to 4.0.3 by @dependabot in #2353
- Bump elliptic from 6.5.6 to 6.6.1 in /examples/stable/demo/hello_world by @dependabot in #2348
- Bump cross-spawn from 7.0.3 to 7.0.6 in /examples/experimental/test/end_to_end/http_server/http_outcall_fetch by @dependabot in #2349
- Prop_test_idl by @bdemann in #2369
- deps: bump the serde group with 2 updates by @dependabot in #2339
- deps: bump proptest from 1.5.0 to 1.6.0 by @dependabot in #2341
- deps: bump the ic-dependencies group with 6 updates by @dependabot in #2338
- deps: bump slotmap from 1.0.6 to 1.0.7 by @dependabot in #2345
- shorten main from feature pr merge tests by @bdemann in #2377
- deps(dev): bump puppeteer from 23.10.3 to 23.11.1 by @dependabot in #2362
- add ic by @bdemann in #2371
- add check for tasks in linked issues by @bdemann in #2373
- make stable b tree map a class by @bdemann in #2363
- All prop tests use getCanisterActor by @bdemann in #2361
- deps: bump the dfinity group with 3 updates by @dependabot in #2337
- deps: bump anyhow from 1.0.86 to 1.0.95 by @dependabot in #2385
- deps: bump serde_json from 1.0.133 to 1.0.134 in the serde group by @dependabot in #2383
- add maintenance workflow by @bdemann in #2386
- Example/test maintenance: update dependencies, formatting, and linting by @lastmjs in #2391
- Example/test maintenance: update dependencies, formatting, and linting by @lastmjs in #2388
- deps: bump the ic-dependencies group with 2 updates by @dependabot in #2382
- update cuzz and fix small issue by @lastmjs in #2323
- deps(dev): bump fast-check from 3.23.1 to 3.23.2 by @dependabot in #2343
- deps: bump esbuild from 0.24.0 to 0.24.2 by @dependabot in #2381
- deps(dev): bump lint-staged from 15.2.11 to 15.3.0 by @dependabot in #2392
- Bump vite from 4.4.10 to 4.5.5 in /examples/experimental/demo/ckbtc/wallet/frontend by @dependabot in #2395
- Bump rollup from 3.29.4 to 3.29.5 in /examples/experimental/demo/ckbtc/wallet/frontend by @dependabot in #2394
- deps(dev): bump the eslint group across 1 directory with 5 updates by @dependabot in #2399
- deps: bump serde from 1.0.216 to 1.0.217 in the serde group by @dependabot in #2393
- add requirement to link related issues to pr by @bdemann in #2405
- update rust by @bdemann in #2398
- Default decorators need not be invoked by @lastmjs in #2400
- Update dfx by @bdemann in #2407
- remove direct array accesses in experimental stable structures by @lastmjs in #2409
- deps: bump rquickjs from 0.6.2 to 0.8.1 by @dependabot in #2384
- deps: bump wasmi from 0.31.2 to 0.40.0 by @dependabot in #2340
- Example/test maintenance: update dependencies, formatting, and linting by @lastmjs in #2417
- Canister methods only from export by @lastmjs in #2415
- memory leak and already borrowed fixes are in experimental now by @lastmjs in #2424
- Update canister bindings by @lastmjs in #2425
- remove test dir by @bdemann in #2426
- deps: bump uuid from 11.0.3 to 11.0.4 by @dependabot in #2440
- deps: bump ethers from 6.13.4 to 6.13.5 by @dependabot in #2441
- Fix examples for release by @bdemann in #2443
- use npm exec --offline for tsc and cuzz to attempt a solution that wi… by @lastmjs in #2428
- Globals versioning by @lastmjs in #2444
- update new examples by @bdemann in #2456
- Revert "update unstable tests" by @bdemann in #2449
- remove instructionCounter and fix performanceCounter tests by @lastmjs in #2459
- completely remove the global index for the canister methods, combine … by @lastmjs in #2461
- move psbt to unstable by @bdemann in #2469
- Stable b tree map prop test fix by @lastmjs in #2472
- update the disclaimer, add sections on stable and experimental modes,… by @lastmjs in #2474
New Contributors
- @dependabot made their first contribution in #2353
Full Changelog: 0.24.1...0.25.0