Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Azle 0.25.0 #2053

Open
24 of 70 tasks
lastmjs opened this issue Sep 1, 2024 · 0 comments
Open
24 of 70 tasks

Azle 0.25.0 #2053

lastmjs opened this issue Sep 1, 2024 · 0 comments

Comments

@lastmjs
Copy link
Member

lastmjs commented Sep 1, 2024

Completed

  • call payment should be called cycles #2104
  • should we test stable APIs with the experimental flag set now?
  • Failing benchmarks (PEM issue)
  • Benchmark PR should automatically run the tests on that branch
  • Test and think about adding more error explanation for Rust candid encode, decode, and compile
  • When we switch a draft PR to a feature PR, we should run the tests again since new examples/tests will should be included
  • Get all stable in experimental tests passing
  • turn off fuzzing on all examples that do outgoing http requests

Functionality

  • Make the Azle cargo target directory singular and global instead of one per test/example
  • Make the rust build environment universal across the entire repo
  • rearrange tests directory with experimental and stable at the highest level
  • tests need to be completely reorganized into stable vs experimental...this should show up in the dropdowns in GitHub Actions
  • Add the improved regex to all cuzz.json files
  • Use regex and update all tests to be better for expectedErrors
  • should we do multi-process fuzzing? Like 3, 5, 7, 10 terminals/processes all pointing at one canister? We have decided not to do this for now, here is an issue: Look into multi-process fuzz testing #2375
  • Completely clean up fuzz testing, make cuzz amazing
  • The fuzz tests will fail on a failed test or type check right? Make sure that happens (we're going to bail everywhere now)
  • Create cuzz documentation
  • call_raw has an unreachable after about 30 minutes (seems intermittent, do not ignore this)
  • 5 hour fuzz tests are hitting unreachable errors at least in call_raw and candid_encoding
  • Make sure that we can reproduce the horrible errors on experimental with the finished cuzz
  • in the class-based syntax, can you allow multiple classes in multiple files? Do we even need to export the class?
  • It turns out that right now if you use any of the canister method decorators, that will attach those to the current candid file and even create the methods...we need to deal with this, because what if you want to import another canister and use it as a type? Just importing it will register all of its methods.
  • Should we backport the already borrowed fix into experimental, the await point will also break there...what about the memory leak?
  • wasmedge-quickjs cross-canister call memory leaks should be fixed #2319
  • StableBTreeMap should be a class #2355
  • should we make params optional in the decorators? What if we allowed just @update() or even just @update? #2364
  • azle should work within npm workspaces...study workspaces deeply
  • fix all process.env.principal things, use a class instance variable instead of a function that throws

Review and Scrutiny

  • New release process, make sure to build the binaries and commit them as part of the release
  • main, release, etc all needs to be tested with the new tests workflows
  • stable b tree map threshold now flaky
  • Main merges not from release are trying to run the npm tests
  • Add explicit type tests for the IC APIs...we should explicitly test that the returned types are exactly what we think they are, since we could mess up the conversions
  • run the fuzz tests for 5-6 hours, check for any failing tests, manually inspect each test's last output to see if there are any memory leak concerns
  • In rust code (especially stable b tree map or any other mapping structure), we must use get instead of direct [] access, and make sure that options become errors when appropriate
    • Search for this and fix all instances: stable_b_tree_maps[
  • Automatically generating Azle-included canister definitions #2320
  • Once we merge 0.25.0 into main, ensure that the workflow triggered on main works correctly
  • sending a u64 for clearTimer, setTimer, and setTimerInterval did not work. Create a minimally reproducible example and open an issue with rquickjs...it kept trying to convert to an f64 for some reason...or maybe that's what bigints convert into to cover all cases?
  • Can we add Mac and WSL tests? We now have 500 concurrents...I say we should do that on release
  • all proptests should use getCanisterActor to ensure that fetch root key is called #2335
  • How are we dealing with the random seed now in rquickjs? And in wasmedge-quickjs? We have randomness tests right?
  • Promise.allSettled traps instead of resulting in rejected promises in wasmedge-quickjs...make sure to test this in rquickjs as well
  • Update dfx
  • Update node
  • All types in Azle stable ic APIs need to be manually checked to ensure the TypeScript type and value type actually match
  • Make sure that all rquickjs number conversions will be done accurately...we might want to go back to strings for all numbers if rquickjs won't correctly convert between number, bigint, and the Rust number types
  • Get conglomerate benchmarks, put them in the root directory of Azle
  • Open rquickjs issue about Context or Ctx
  • simple recursion in Rust seemed to take forever to reach the instruction limit for some reason...is this a DOS vector?
  • Check that all ic APIs return Uint8Arrays
  • Check that all IC APIs are perfect in their documentation, future-proofness, and type conversions and typescript types
  • Should we always run fuzz tests on release or pr or something?
  • we should build the wasm binaries whenever the dependebot updates dependencies
  • Update rquickjs to latest
  • Update all Rust dependencies

Features

Breaking Changes

  • payment is called cycles
  • Completely new IDLs and type objects and imports and import paths for:
    • management canister
    • icrc
    • ledger
  • dataCertificate return type changed
  • check all of the ic apis to see if we changed any of them
  • azle_main module is now called main, update documentation
  • StableBTreeMap is now a class, instantiated with new StableBTreeMap
  • candidCompiler has been entirely removed from stable
  • empty toBytes and fromBytes have been removed
  • stable_b_tree_map is now a class

Documentationn

  • Update documentation and especially links to the examples
@bdemann bdemann mentioned this issue Dec 20, 2024
6 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant