[−][src]Struct deno_core::JsRuntime
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.
Ops are created in JavaScript by calling Deno.core.dispatch(), and in Rust by implementing dispatcher function that takes control buffer and optional zero copy buffer as arguments. An async Op corresponds exactly to a Promise in JavaScript.
Implementations
impl JsRuntime
[src]
pub fn new(mut options: RuntimeOptions) -> Self
[src]
Only constructor, configuration is done through options
.
pub fn global_context(&mut self) -> Global<Context>
[src]
pub fn v8_isolate(&mut self) -> &mut OwnedIsolate
[src]
pub fn op_state(&mut self) -> Rc<RefCell<OpState>>
[src]
Returns the runtime's op state, which can be used to maintain ops and access resources between op calls.
pub fn execute(
&mut self,
js_filename: &str,
js_source: &str
) -> Result<(), AnyError>
[src]
&mut self,
js_filename: &str,
js_source: &str
) -> Result<(), AnyError>
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.
pub fn snapshot(&mut self) -> StartupData
[src]
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.
pub fn register_op<F>(&mut self, name: &str, op_fn: F) -> OpId where
F: Fn(Rc<RefCell<OpState>>, BufVec) -> Op + 'static,
[src]
F: Fn(Rc<RefCell<OpState>>, BufVec) -> Op + 'static,
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
:
pub fn add_near_heap_limit_callback<C>(&mut self, cb: C) where
C: FnMut(usize, usize) -> usize + 'static,
[src]
C: FnMut(usize, usize) -> usize + 'static,
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.
pub fn remove_near_heap_limit_callback(&mut self, heap_limit: usize)
[src]
pub async fn run_event_loop(&mut self) -> Result<(), AnyError>
[src]
Runs event loop to completion
This future resolves when:
- there are no more pending dynamic imports
- there are no more pending ops
pub fn poll_event_loop(
&mut self,
cx: &mut Context<'_>
) -> Poll<Result<(), AnyError>>
[src]
&mut self,
cx: &mut Context<'_>
) -> Poll<Result<(), AnyError>>
Runs a single tick of event loop
impl JsRuntime
[src]
pub fn dyn_mod_evaluate(
&mut self,
load_id: ModuleLoadId,
id: ModuleId
) -> Result<(), AnyError>
[src]
&mut self,
load_id: ModuleLoadId,
id: ModuleId
) -> Result<(), AnyError>
Evaluates an already instantiated ES module.
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.
pub async fn mod_evaluate(&mut self, id: ModuleId) -> Result<(), AnyError>
[src]
pub async fn load_module(
&mut self,
specifier: &ModuleSpecifier,
code: Option<String>
) -> Result<ModuleId, AnyError>
[src]
&mut self,
specifier: &ModuleSpecifier,
code: Option<String>
) -> Result<ModuleId, AnyError>
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
Auto Trait Implementations
impl !RefUnwindSafe for JsRuntime
[src]
impl !Send for JsRuntime
[src]
impl !Sync for JsRuntime
[src]
impl Unpin for JsRuntime
[src]
impl !UnwindSafe for JsRuntime
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,