CoreRabbit
CoreRabbit
DDeno
Created by CoreRabbit on 4/16/2024 in #help
How do I see which ops are registered?
I am trying to understand how the deno_core::op2 macro works. I used deno_runtime back in September 2021 and I remember that I could console.log Deno[Deno.internal].core.ops to see which ops are registered. Back in 2021 I read the deno CLI code and in my own project copied the setup of MainWorker because I wanted setTimeout. Now in 2024 I tried to upgrade the versions of deno_runtime to 0.272 and ran into the limitations of my knowledge. Right now I see that Deno.core.ops exists if you construct a JsRuntime. And I can use Object.getOwnPropertyNames to print out a list of ops to verify that my rust function ended up inside Deno.core.ops And I also see that when I construct a MainWorker like in https://github.com/denoland/deno/blob/main/runtime/examples/extension/main.rs that Deno.core.ops does not exist. And instead it seems like rust function ends up inside the magic import 'ext:core/ops'. - Do I need to be constructing a MainWorker to have setTimeout working? Because when I try making a JsRuntime and load only my extension I see setTimeout is not defined - Is there an explanation of where the extension mechanism puts the javascript symbols? - Does the new way of using ops work by having a bootstrap js or esm that will import from the magic ext:core/ops and then make those rust functions available by assigning to globalThis? Should I be making a wrapper function like I seen in examples, or can I directly assign the op_hello symbol to globalThis?
5 replies