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

Release Candidate Final Rundown #2418

Open
6 of 12 tasks
lastmjs opened this issue Jan 2, 2025 · 10 comments · May be fixed by #2422
Open
6 of 12 tasks

Release Candidate Final Rundown #2418

lastmjs opened this issue Jan 2, 2025 · 10 comments · May be fixed by #2422
Assignees

Comments

@lastmjs
Copy link
Member

lastmjs commented Jan 2, 2025

Ben

  • Review all public Azle APIs (anything that can be imported from azle)
    • JSDocs amazing (compare with documentation in ic-cdk
    • Analyze the API to foresee ANY possible future breaking changes to the API
    • Scrutinize the TypeScript types, ensure they EXACTLY match the JavaScript and Rust runtime values
    • Document where all tests are for each API
    • Look through the ic-cdk and implement any missing APIs

Jordan

  • Review all public Azle APIs (anything that can be imported from azle)
    • JSDocs amazing (compare with documentation in ic-cdk
    • Analyze the API to foresee ANY possible future breaking changes to the API
    • Scrutinize the TypeScript types, ensure they EXACTLY match the JavaScript and Rust runtime values
    • Document where all tests are for each API
    • Look through the ic-cdk and implement any missing APIs
@lastmjs lastmjs added this to the Release Candidate milestone Jan 2, 2025
@lastmjs lastmjs assigned lastmjs and bdemann and unassigned lastmjs Jan 2, 2025
@lastmjs
Copy link
Member Author

lastmjs commented Jan 2, 2025

Possible APIs to implement:

@lastmjs
Copy link
Member Author

lastmjs commented Jan 2, 2025

  • Rip out the instruction_counter, we will rely only on the performanceCounter moving forward

@lastmjs
Copy link
Member Author

lastmjs commented Jan 2, 2025

Implement these simple APIs that return a bool:

@lastmjs
Copy link
Member Author

lastmjs commented Jan 2, 2025

  • Implement hidden similar to manual for query and update functions so that they will not be included in the exported Candid file?

@lastmjs
Copy link
Member Author

lastmjs commented Jan 2, 2025

  • Should we implement missing StableBTreeMap methods? Right now we have basic working functionality, but we could add some more missing methods. Also consider that once we have Wasm fully implemented in Azle we might be able to use wasm-bindgen

@bdemann bdemann linked a pull request Jan 8, 2025 that will close this issue
7 tasks
@bdemann
Copy link
Member

bdemann commented Jan 8, 2025

acceptMessage

  • end_to_end/candid_rpc/inspect_message/src/index.ts
  • property/candid_rpc/canister_methods/inspect_message/test/test.ts
  • property/ic_api/caller/src/index.ts
  • property/ic_api/canister_version/src/index.ts
  • property/ic_api/id/src/index.ts
  • property/ic_api/time/src/index.ts
  • property/ic_api/trap/src/index.ts

argDataRaw

  • end_to_end/candid_rpc/ic_api/src/index.ts
  • property/ic_api/arg_data_raw/test/generate_canister.ts
  • property/ic_api/trap/src/index.ts

call

  • end_to_end/candid_rpc/async_await/src/async_await.ts
  • end_to_end/candid_rpc/canister/src/index.ts
  • end_to_end/candid_rpc/composite_queries/src/canister1/index.ts
  • end_to_end/candid_rpc/composite_queries/src/canister2/index.ts
  • end_to_end/candid_rpc/cross_canister_calls/src/canister1/index.ts
  • end_to_end/candid_rpc/cycles/src/intermediary/index.ts
  • end_to_end/candid_rpc/func_types/canisters/func_types/index.ts
  • end_to_end/candid_rpc/heartbeat/src/heartbeat_async/index.ts
  • end_to_end/candid_rpc/icrc/canisters/proxy/index.ts
  • end_to_end/candid_rpc/ledger_canister/src/ledger_canister/index.ts
  • end_to_end/candid_rpc/motoko_examples/whoami/src/index.ts
  • end_to_end/candid_rpc/recursion/src/recursion/index.ts
  • end_to_end/candid_rpc/rejections/src/rejections/index.ts
  • end_to_end/candid_rpc/timers/src/timers.ts
  • property/ic_api/cycles/src/intermediary/index.ts
  • property/ic_api/reject_code/src/caller/index.ts
  • property/ic_api/reject_message/src/caller/index.ts

caller

  • end_to_end/candid_rpc/ic_api/src/index.ts
  • end_to_end/candid_rpc/motoko_examples/threshold_ecdsa/src/index.ts
  • end_to_end/candid_rpc/motoko_examples/whoami/src/index.ts
  • property/candid_rpc/canister_methods/inspect_message/test/test.ts
  • property/ic_api/caller/src/index.ts

candidDecode

  • end_to_end/candid_rpc/call_raw/src/index.ts
  • end_to_end/candid_rpc/candid_encoding/src/index.ts
  • property/ic_api/candid/src/index.ts

candidEncode

  • end_to_end/candid_rpc/call_raw/src/index.ts
  • end_to_end/candid_rpc/candid_encoding/src/index.ts
  • end_to_end/candid_rpc/manual_reply/src/index.ts
  • end_to_end/candid_rpc/notify_raw/src/canister1/index.ts
  • end_to_end/candid_rpc/outgoing_http_requests/src/index.ts
  • property/ic_api/arg_data_raw/test/generate_canister.ts
  • property/ic_api/arg_data_raw/test/tests.ts
  • property/ic_api/candid/src/index.ts

canisterBalance

  • end_to_end/candid_rpc/cycles/src/cycles/index.ts
  • end_to_end/candid_rpc/cycles/src/intermediary/index.ts
  • end_to_end/candid_rpc/ic_api/src/index.ts
  • property/ic_api/cycles/src/cycles/index.ts
  • property/ic_api/cycles/src/intermediary/index.ts
  • property/ic_api/cycles_burn/src/index.ts

canisterVersion

  • end_to_end/candid_rpc/ic_api/src/index.ts
  • property/ic_api/canister_version/src/index.ts

chunk

  • property/ic_api/chunk/src/index.ts
  • property/ic_api/performance_counter/src/index.ts

clearTimer

  • end_to_end/candid_rpc/timers/src/timers.ts

cyclesBurn

  • property/ic_api/cycles_burn/src/index.ts
  • property/ic_api/cycles_burn/test/tests.ts

dataCertificate

  • end_to_end/candid_rpc/ic_api/src/index.ts
  • end_to_end/candid_rpc/motoko_examples/cert-var/src/index.ts
  • property/ic_api/certified_data/src/index.ts

id

  • end_to_end/candid_rpc/composite_queries/src/canister1/index.ts
  • end_to_end/candid_rpc/ethereum_json_rpc/src/index.ts
  • end_to_end/candid_rpc/ic_api/src/index.ts
  • end_to_end/candid_rpc/motoko_examples/http_counter/src/index.ts
  • end_to_end/candid_rpc/motoko_examples/whoami/src/index.ts
  • end_to_end/candid_rpc/outgoing_http_requests/src/index.ts
  • property/ic_api/id/src/index.ts

isController

  • end_to_end/candid_rpc/ic_api/src/index.ts
  • property/ic_api/is_controller/src/index.ts

methodName

  • end_to_end/candid_rpc/inspect_message/src/index.ts
  • property/candid_rpc/canister_methods/inspect_message/test/test.ts
  • property/ic_api/caller/src/index.ts
  • property/ic_api/canister_version/src/index.ts
  • property/ic_api/id/src/index.ts
  • property/ic_api/time/src/index.ts
  • property/ic_api/trap/src/index.ts

msgCyclesAccept

  • end_to_end/candid_rpc/cycles/src/cycles/index.ts
  • property/ic_api/cycles/src/cycles/index.ts

msgCyclesAvailable

  • end_to_end/candid_rpc/cycles/src/cycles/index.ts
  • property/ic_api/cycles/src/cycles/index.ts

msgCyclesRefunded

  • property/ic_api/cycles/src/intermediary/index.ts

notify

  • end_to_end/candid_rpc/cross_canister_calls/src/canister1/index.ts
  • end_to_end/candid_rpc/cycles/src/intermediary/index.ts
  • end_to_end/candid_rpc/notify_raw/src/canister1/index.ts

performanceCounter

  • end_to_end/candid_rpc/ic_api/src/index.ts
  • property/ic_api/chunk/src/index.ts
  • property/ic_api/performance_counter/src/index.ts

print

  • end_to_end/candid_rpc/ic_api/src/index.ts
  • end_to_end/candid_rpc/null_example/src/index.ts

reject

  • end_to_end/candid_rpc/ic_api/src/index.ts
  • end_to_end/candid_rpc/manual_reply/src/index.ts
  • end_to_end/candid_rpc/rejections/src/some_canister/index.ts
  • property/ic_api/reject/src/index.ts
  • property/ic_api/reject_code/src/rejector/index.ts
  • property/ic_api/reject_message/src/rejector/index.ts

rejectCode

  • end_to_end/candid_rpc/rejections/src/rejections/index.ts
  • property/ic_api/reject_code/src/caller/index.ts

rejectMessage

  • end_to_end/candid_rpc/rejections/src/rejections/index.ts
  • property/ic_api/reject_message/src/caller/index.ts

reply

  • end_to_end/candid_rpc/composite_queries/src/canister1/index.ts
  • end_to_end/candid_rpc/composite_queries/src/canister2/index.ts
  • end_to_end/candid_rpc/manual_reply/src/index.ts
  • end_to_end/candid_rpc/outgoing_http_requests/src/index.ts
  • property/ic_api/reject/src/index.ts
  • property/ic_api/reply/test/generate_canister.ts

setCertifiedData

  • end_to_end/candid_rpc/ic_api/src/index.ts
  • end_to_end/candid_rpc/motoko_examples/cert-var/src/index.ts
  • property/ic_api/certified_data/src/index.ts

setTimer

  • end_to_end/candid_rpc/timers/src/timers.ts
  • property/ic_api/chunk/src/index.ts

setTimerInterval

  • end_to_end/candid_rpc/timers/src/timers.ts

time

  • end_to_end/candid_rpc/audio_recorder/src/index.ts
  • end_to_end/candid_rpc/ic_api/src/index.ts
  • property/ic_api/time/src/index.ts

trap

  • end_to_end/candid_rpc/cross_canister_calls/src/canister2/index.ts
  • end_to_end/candid_rpc/func_types/canisters/notifiers/index.ts
  • end_to_end/candid_rpc/ic_api/src/index.ts
  • end_to_end/candid_rpc/motoko_examples/http_counter/src/index.ts
  • end_to_end/candid_rpc/motoko_examples/persistent-storage/src/index.ts
  • end_to_end/candid_rpc/motoko_examples/threshold_ecdsa/src/index.ts
  • end_to_end/candid_rpc/notify_raw/src/canister1/index.ts
  • end_to_end/candid_rpc/recursion/src/recursion/index.ts
  • property/ic_api/time/src/index.ts
  • property/ic_api/trap/src/index.ts

@bdemann
Copy link
Member

bdemann commented Jan 8, 2025

Missing stuff

  • on_low_wasm_memory
  • export_candid
    • We already essentially have this automatically generated right?
  • setup?
    • What is this?
  • in_replicated_execution?
  • is_recovering_from_trap
    • We decided we don't need this right?

@bdemann
Copy link
Member

bdemann commented Jan 8, 2025

Needs extra type scrutiny

  • call
  • notify
  • reply
  • timers
    • TimerId
    • Duration

Pretty sure doesn't need extra type scrutiny

  • candidDecode
  • candidEncode
  • chunk

@bdemann
Copy link
Member

bdemann commented Jan 8, 2025

Possible breaking change to API

  • call
    • I think anything with an options object could get fuzzy
    • so also
      • notify
      • reply
  • clearTimer
    • What if the number for the timerId becomes insufficient? That seems unlikely, but what if you wanted to cancel timers differently? Or what if you lost access to the timerId?
  • performanceCounter
    • Using the number is not the greatest, a string union could be nice
  • print
    • I think it's fine, but it is very very bare bones. I know we have console.log for the preferred way to log. But there could be room to have print that had some more features while still being a bare bones function.
    • Alternatively, we could get rid of it, which is also a breaking change.
  • rejectMessage
    • The fact that it traps if there is no reject message seems a little weird... I understand that it is rather meaningless, what would we do? Undefined? Empty string? But something to think about.

@bdemann
Copy link
Member

bdemann commented Jan 9, 2025

I noticed that in rust their manual is actually manual_reply. I think I like our manual better, but it's technically a way that our api could change if we wanted to align ourselves more with the Rust cdk.

Also I second the addition of hidden, though adding hidden wouldn't constitute a breaking change, so I don't know that it is critical before release candidate

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

Successfully merging a pull request may close this issue.

2 participants