Struct deno_core::JsRuntime[][src]

pub struct JsRuntime { /* fields omitted */ }
Expand description

A single execution context of JavaScript. Corresponds roughly to the “Web Worker” concept in the DOM. A JsRuntime is a Future that can be used with an event loop (Tokio, async_std). The JsRuntime future completes when there is an error or when all pending ops have completed.

Pending ops are created in JavaScript by calling Deno.core.opAsync(), and in Rust by implementing an async function that takes a serde::Deserialize “control argument” and an optional zero copy buffer, each async Op is tied to a Promise in JavaScript.

Implementations

Only constructor, configuration is done through options.

Ensures core.js has the latest op-name to op-id mappings

Returns the runtime’s op state, which can be used to maintain ops and access resources between op calls.

Executes traditional JavaScript code (traditional = not ES modules)

The execution takes place on the current global context, so it is possible to maintain local JS state and invoke this method multiple times.

AnyError can be downcast to a type that exposes additional information about the V8 exception. By default this type is JsError, however it may be a different type if RuntimeOptions::js_error_create_fn has been set.

Takes a snapshot. The isolate should have been created with will_snapshot set to true.

AnyError can be downcast to a type that exposes additional information about the V8 exception. By default this type is JsError, however it may be a different type if RuntimeOptions::js_error_create_fn has been set.

Registers an op that can be called from JavaScript.

The op mechanism allows to expose Rust functions to the JS runtime, which can be called using the provided name.

This function provides byte-level bindings. To pass data via JSON, the following functions can be passed as an argument for op_fn:

Registers a callback on the isolate when the memory limits are approached. Use this to prevent V8 from crashing the process when reaching the limit.

Calls the closure with the current heap limit and the initial heap limit. The return value of the closure is set as the new limit.

Runs event loop to completion

This future resolves when:

  • there are no more pending dynamic imports
  • there are no more pending ops
  • there are no more active inspector sessions (only if wait_for_inspector is set to true)

Runs a single tick of event loop

If wait_for_inspector is set to true event loop will return Poll::Pending if there are active inspector sessions.

Evaluates an already instantiated ES module.

Returns a receiver handle that resolves when module promise resolves. Implementors must manually call run_event_loop() to drive module evaluation future.

AnyError can be downcast to a type that exposes additional information about the V8 exception. By default this type is JsError, however it may be a different type if RuntimeOptions::js_error_create_fn has been set.

This function panics if module has not been instantiated.

Asynchronously load specified module and all of its dependencies

User must call JsRuntime::mod_evaluate with returned ModuleId manually after load is finished.

Trait Implementations

Executes the destructor for this type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.