Expand description
Example
let platform = v8::new_default_platform(0, false).make_shared();
v8::V8::initialize_platform(platform);
v8::V8::initialize();
let isolate = &mut v8::Isolate::new(Default::default());
let scope = &mut v8::HandleScope::new(isolate);
let context = v8::Context::new(scope);
let scope = &mut v8::ContextScope::new(scope, context);
let code = v8::String::new(scope, "'Hello' + ' World!'").unwrap();
println!("javascript code: {}", code.to_rust_string_lossy(scope));
let script = v8::Script::compile(scope, code, None).unwrap();
let result = script.run(scope).unwrap();
let result = result.to_string(scope).unwrap();
println!("result: {}", result.to_rust_string_lossy(scope));
Re-exports
pub use script_compiler::CachedData;
Modules
Bindings to the V8 Inspector API. Documentation for the V8 inspector API is
very sparse, so here are a few references for the next sorry soul who has to
dig into it.
A JSON Parser and Stringifier.
Structs
An AccessorSignature specifies which receivers are valid parameters
to an accessor callback.
A thread-safe allocator that V8 uses to allocate |ArrayBuffer|’s memory.
The allocator is a global V8 setting. It has to be set via
Isolate::CreateParams.
An instance of the built-in array constructor (ECMA-262, 15.4.2).
An instance of the built-in ArrayBuffer constructor (ES6 draft 15.13.5).
A base class for an instance of one of “views” over ArrayBuffer,
including TypedArrays and DataView (ES6 draft 15.13).
A wrapper around the backing store (i.e. the raw memory) of an array buffer.
See a document linked in http://crbug.com/v8/9908 for more information.
A JavaScript BigInt value (https://tc39.github.io/proposal-bigint)
An instance of BigInt64Array constructor.
A BigInt object (https://tc39.github.io/proposal-bigint)
An instance of BigUint64Array constructor.
A primitive boolean value (ECMA-262, 4.3.14). Either the true
or false value.
A Boolean object (ECMA-262, 4.3.15).
A
CallbackScope
can be used to bootstrap a HandleScope
and
ContextScope
inside a callback function that gets called by V8.
Bootstrapping a scope inside a callback is the only valid use case of this
type; using it in other places leads to undefined behavior, which is also
the reason CallbackScope::new()
is marked as being an unsafe function.Wrapper around a compiled WebAssembly module, which is potentially shared by
different WasmModuleObjects.
A sandboxed execution context with its own set of built-in objects
and functions.
Stack-allocated class which sets the execution context for all operations
executed within a local scope. After entering a context, all code compiled
and run is compiled and run in this context.
Initial configuration parameters for a new Isolate.
The superclass of objects that can reside on V8’s heap.
An instance of DataView constructor (ES6 draft 15.13.7).
An instance of the built-in Date constructor (ECMA-262, 15.9).
A HandleScope which first allocates a handle in the current scope
which will be later filled with the escape value.
Create new error objects by calling the corresponding error object
constructor with the message.
A JavaScript value that wraps a C++ void*. This type of value is mainly used
to associate C++ data structures with JavaScript objects.
A fixed-sized array with elements of type Data.
An instance of Float32Array constructor (ES6 draft 15.13.6).
An instance of Float64Array constructor (ES6 draft 15.13.6).
A JavaScript function object (ECMA-262, 15.3).
A builder to construct the properties of a Function or FunctionTemplate.
The argument information given to function call callbacks. This
class provides access to information about the context of the call,
including the receiver, the number and values of arguments, and
the holder of the function.
A FunctionTemplate is used to create functions at runtime. There
can only be one function created from a FunctionTemplate in a
context. The lifetime of the created function is equal to the
lifetime of the context. So in case the embedder needs to create
temporary functions that can be collected using Scripts is
preferred.
An object reference that is independent of any handle scope. Where
a Local handle only lives as long as the HandleScope in which it was
allocated, a global handle remains valid until it is explicitly
disposed using reset().
A stack-allocated class that governs a number of local handles.
After a handle scope has been created, all local handles will be
allocated within that handle scope until either the handle scope is
deleted or another handle scope is created. If there is already a
handle scope and a new one is created, all allocations will take
place in the new handle scope until it is deleted. After that,
new handles will again be allocated in the original handle scope.
Collection of V8 heap information.
An instance of Int8Array constructor (ES6 draft 15.13.6).
An instance of Int16Array constructor (ES6 draft 15.13.6).
A JavaScript value representing a 32-bit signed integer.
An instance of Int32Array constructor (ES6 draft 15.13.6).
A JavaScript value representing a signed integer.
Isolate represents an isolated instance of the V8 engine. V8 isolates have
completely separate states. Objects from one isolate must not be used in
other isolates. The embedder can create multiple isolates and use them in
parallel in multiple threads. An isolate can be entered by at most one
thread at any given time. The Locker/Unlocker API must be used to
synchronize.
IsolateHandle is a thread-safe reference to an Isolate. It’s main use is to
terminate execution of a running isolate from another thread.
An object reference managed by the v8 garbage collector.
A location in JavaScript source.
An instance of the built-in Map constructor (ECMA-262, 6th Edition, 23.1.1).
An error message.
A compiled JavaScript module.
A superclass for symbols and strings.
A JavaScript number value (ECMA-262, 4.3.20)
A Number object (ECMA-262, 4.3.21).
A JavaScript object (ECMA-262, 4.3.3)
An ObjectTemplate is used to create objects at runtime.
Same as Isolate but gets disposed when it goes out of scope.
The superclass of primitive values. See ECMA-262 4.3.2.
An array to hold Primitive values. This is used by the embedder to
pass host defined options to the ScriptOptions during compilation.
A private symbol
An instance of the built-in Promise constructor (ES6 draft).
The information passed to a property callback about the context
of the property access.
An instance of the built-in Proxy constructor (ECMA-262, 6th Edition,
26.2.1).
An instance of the built-in RegExp constructor (ECMA-262, 15.10).
Called during Module::instantiate_module. Provided with arguments:
(context, specifier, import_assertions, referrer). Return None on error.
A wrapper around the V8 Allocator class.
A compiled JavaScript script, tied to a Context which was active when the
script was compiled.
A container type that holds relevant metadata for module loading.
The origin, within a file, of a script.
An instance of the built-in Set constructor (ECMA-262, 6th Edition, 23.2.1).
An instance of the built-in SharedArrayBuffer constructor.
Wrapper around a C++ shared_ptr. A shared_ptr may be be null.
Wrapper around a C++ shared_ptr. The shared_ptr is assumed to contain a
value and may not be null.
A Signature specifies which receiver is valid for a function.
A single JavaScript stack frame.
Representation of a JavaScript stack trace. The information collected is a
snapshot of the execution stack and the information remains valid after
execution continues.
A JavaScript string value (ECMA-262, 4.3.17).
A String object (ECMA-262, 4.3.18).
A JavaScript symbol (ECMA-262 edition 6)
A Symbol object (ECMA-262 edition 6).
The superclass of object and function templates.
An external exception handler.
A base class for an instance of TypedArray series of constructors
(ES6 draft 15.13.6).
An instance of Uint8Array constructor (ES6 draft 15.13.6).
An instance of Uint8ClampedArray constructor (ES6 draft 15.13.6).
An instance of Uint16Array constructor (ES6 draft 15.13.6).
A JavaScript value representing a 32-bit unsigned integer.
An instance of Uint32Array constructor (ES6 draft 15.13.6).
A compiled JavaScript module, not yet tied to a Context.
A compiled JavaScript script, not yet tied to a Context.
Pointer to object allocated on the C++ heap. The pointer may be null.
Pointer to object allocated on the C++ heap. The pointer may not be null.
The superclass of all JavaScript values and objects.
ValueDeserializer is a stack object used as entry-point for an owned and
pinned heap object ValueDeserializerHeap.
The ’a lifetime is the lifetime of the ValueDeserializerImpl implementation.
The ’s lifetime is the lifetime of the HandleScope which is used to retrieve
a Local<’s, Context> for the CallbackScopes
The V8 interface for WebAssembly streaming compilation.
When streaming compilation is initiated, V8 passes a Self
object to the embedder such that the embedder can pass the
input bytes for streaming compilation to V8.
An object reference that does not prevent garbage collection for the object,
and which allows installing finalization callbacks which will be called
after the object has been GC’d.
Enums
ConstructorBehavior::Allow creates a regular API function.
Object integrity levels can be used to restrict what can be done to an
object’s properties.
Keys/Properties filter enums:
Policy for running microtasks:
The different states a module can be in.
PromiseHook with type Init is called when a new promise is
created. When a new promise is created as part of the chain in the
case of Promise.then or in the intermediate promises created by
Promise.{race, all}/AsyncFunctionAwait, we pass the parent promise
otherwise we pass undefined.
Options for marking whether callbacks may trigger JS-observable side
effects. Side-effect-free callbacks are allowlisted during debug evaluation
with throwOnSideEffect. It applies when calling a Function,
FunctionTemplate, or an Accessor callback. For Interceptors, please see
PropertyHandlerFlags’s kHasNoSideEffect.
Callbacks that only cause side effects to the receiver are allowlisted if
invoked on receiver objects that are created within the same debug-evaluate
call, as these objects are temporary and the side effect does not escape.
Constants
Not configurable. Corresponds to
Object.defineProperty(o, "p", { configurable: false })
.Not enumerable. Corresponds to
Object.defineProperty(o, "p", { enumerable: false })
.No property attributes.
Not writable. Corresponds to
Object.defineProperty(o, "p", { writable: false })
.Traits
HostImportModuleDynamicallyCallback is called when we require the embedder
to load a module. This is used as part of the dynamic import syntax.
Trait used for direct read from the deserialization buffer.
Mostly used by the read_host_object callback function in the
ValueDeserializerImpl trait to create custom deserialization logic.
The ValueDeserializerImpl trait allows for
custom callback functions used by v8.
Trait used for direct write to the serialization buffer.
Mostly used by the write_host_object callback function in the
ValueSerializerImpl trait to create custom serialization logic.
The ValueSerializerImpl trait allows for
custom callback functions used by v8.
Functions
malloc/free based convenience allocator.
Returns a new instance of the default v8::Platform implementation.
Creates an allocator managed by Rust code.
The same as new_default_platform() but disables the worker thread pool.
It must be used with the –single-threaded V8 flag.
Type Definitions
AccessorNameGetterCallback is used as callback functions when getting a
particular property. See Object and ObjectTemplate’s method SetAccessor.
HostCreateShadowRealmContextCallback
is called each time a ShadowRealm
is being constructed. You can use HandleScope::get_current_context
to
get the Context
in which the constructor is being run.HostInitializeImportMetaObjectCallback is called the first time import.meta
is accessed for a module. Subsequent access will reuse the same value.
IndexedPropertyGetterCallback is used as callback functions when registering a named handler
particular property. See Object and ObjectTemplate’s method SetHandler.