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 = std::pin::pin!(v8::HandleScope::new(isolate));
let scope = &mut scope.init();
let context = v8::Context::new(scope, Default::default());
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§
- V8
- cppgc
- fast_api 
- icu
- inspector
- 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.
- json
- A JSON Parser and Stringifier.
- script_compiler 
Macros§
- allow_javascript_ execution_ scope 
- callback_scope 
- disallow_javascript_ execution_ scope 
- escapable_handle_ scope 
- scope
- Creates a pinned HandleScopeand binds&mut PinScopeto$scope.
- scope_with_ context 
- tc_scope 
Structs§
- AccessorConfiguration 
- AccessorSignature 
- An AccessorSignature specifies which receivers are valid parameters to an accessor callback.
- Allocator
- 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.
- AllowJavascript Execution Scope 
- Array
- An instance of the built-in array constructor (ECMA-262, 15.4.2).
- ArrayBuffer 
- An instance of the built-in ArrayBuffer constructor (ES6 draft 15.13.5).
- ArrayBuffer View 
- A base class for an instance of one of “views” over ArrayBuffer, including TypedArrays and DataView (ES6 draft 15.13).
- BackingStore 
- 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.
- BigInt
- A JavaScript BigInt value (https://tc39.github.io/proposal-bigint)
- BigInt64Array 
- An instance of BigInt64Array constructor.
- BigIntObject 
- A BigInt object (https://tc39.github.io/proposal-bigint)
- BigUint64Array 
- An instance of BigUint64Array constructor.
- Boolean
- A primitive boolean value (ECMA-262, 4.3.14). Either the true or false value.
- BooleanObject 
- A Boolean object (ECMA-262, 4.3.15).
- CallbackScope 
- A CallbackScopecan be used to bootstrap aHandleScopeandContextScopeinside 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 reasonCallbackScope::new()is marked as being an unsafe function.
- CompiledWasm Module 
- Wrapper around a compiled WebAssembly module, which is potentially shared by different WasmModuleObjects.
- Context
- A sandboxed execution context with its own set of built-in objects and functions.
- ContextOptions 
- ContextScope 
- 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.
- CreateParams 
- Initial configuration parameters for a new Isolate.
- Data
- The superclass of objects that can reside on V8’s heap.
- DataView 
- An instance of DataView constructor (ES6 draft 15.13.7).
- Date
- An instance of the built-in Date constructor (ECMA-262, 15.9).
- DisallowJavascript Execution Scope 
- EscapableHandle Scope 
- A HandleScope which first allocates a handle in the current scope which will be later filled with the escape value.
- Eternal
- Eternal handles are set-once handles that live for the lifetime of the isolate.
- Exception
- Create new error objects by calling the corresponding error object constructor with the message.
- External
- A JavaScript value that wraps a C++ void*. This type of value is mainly used to associate C++ data structures with JavaScript objects.
- FixedArray 
- A fixed-sized array with elements of type Data.
- Float32Array 
- An instance of Float32Array constructor (ES6 draft 15.13.6).
- Float64Array 
- An instance of Float64Array constructor (ES6 draft 15.13.6).
- Function
- A JavaScript function object (ECMA-262, 15.3).
- FunctionBuilder 
- A builder to construct the properties of a Function or FunctionTemplate.
- FunctionCallback Arguments 
- FunctionCallback Info 
- 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.
- FunctionTemplate 
- 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.
- GCCallbackFlags 
- GCCallbackFlags is used to notify additional information about the GC callback.
- GCType
- Applications can register callback functions which will be called before and after certain garbage collection operations. Allocations are not allowed in the callback functions, you therefore cannot manipulate objects (set or delete properties for example) since it is possible such operations will result in the allocation of objects. TODO(v8:12612): Deprecate kGCTypeMinorMarkSweep after updating blink. Applications can register callback functions which will be called before and after certain garbage collection operations. Allocations are not allowed in the callback functions, you therefore cannot manipulate objects (set or delete properties for example) since it is possible such operations will result in the allocation of objects. TODO(v8:12612): Deprecate kGCTypeMinorMarkSweep after updating blink.
- GetPropertyNames Args 
- GetPropertyNames Args Builder 
- Global
- 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 dropped.
- HandleScope 
- 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.
- HeapSpace Statistics 
- HeapStatistics 
- Collection of V8 heap information.
- IndexedProperty Handler Configuration 
- Int8Array 
- An instance of Int8Array constructor (ES6 draft 15.13.6).
- Int32
- A JavaScript value representing a 32-bit signed integer.
- Int16Array 
- An instance of Int16Array constructor (ES6 draft 15.13.6).
- Int32Array 
- An instance of Int32Array constructor (ES6 draft 15.13.6).
- Integer
- A JavaScript value representing a signed integer.
- Isolate
- 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 
- IsolateHandle is a thread-safe reference to an Isolate. It’s main use is to terminate execution of a running isolate from another thread.
- Local
- An object reference managed by the v8 garbage collector.
- Location
- A location in JavaScript source.
- Map
- An instance of the built-in Map constructor (ECMA-262, 6th Edition, 23.1.1).
- Message
- An error message.
- MessageError Level 
- MicrotaskQueue 
- Represents the microtask queue, where microtasks are stored and processed. https://html.spec.whatwg.org/multipage/webappapis.html#microtask-queue https://html.spec.whatwg.org/multipage/webappapis.html#enqueuejob(queuename,-job,-arguments) https://html.spec.whatwg.org/multipage/webappapis.html#perform-a-microtask-checkpoint
- Module
- A compiled JavaScript module.
- ModuleRequest 
- Name
- A superclass for symbols and strings.
- NamedProperty Handler Configuration 
- Number
- A JavaScript number value (ECMA-262, 4.3.20)
- NumberObject 
- A Number object (ECMA-262, 4.3.21).
- Object
- A JavaScript object (ECMA-262, 4.3.3)
- ObjectTemplate 
- An ObjectTemplate is used to create objects at runtime.
- OneByteConst 
- A static ASCII string resource for usage in V8, created at build time.
- OomDetails
- OwnedIsolate 
- Same as Isolate but gets disposed when it goes out of scope.
- PinnedRef 
- Platform
- Primitive
- The superclass of primitive values. See ECMA-262 4.3.2.
- PrimitiveArray 
- An array to hold Primitive values. This is used by the embedder to pass host defined options to the ScriptOptions during compilation.
- Private
- A private symbol
- Promise
- An instance of the built-in Promise constructor (ES6 draft).
- PromiseReject Message 
- PromiseResolver 
- PropertyAttribute 
- PropertyCallback Arguments 
- PropertyCallback Info 
- The information passed to a property callback about the context of the property access.
- PropertyDescriptor 
- PropertyFilter 
- PropertyHandler Flags 
- Proxy
- An instance of the built-in Proxy constructor (ECMA-262, 6th Edition, 26.2.1).
- RealIsolate 
- RegExp
- An instance of the built-in RegExp constructor (ECMA-262, 15.10).
- RegExpCreation Flags 
- ResolveModule Callback Ret 
- Called during Module::instantiate_module. Provided with arguments: (context, specifier, import_attributes, referrer). Return None on error.
- ResolveSource Callback Ret 
- ReturnValue 
- RustAllocator Vtable 
- A wrapper around the V8 Allocator class.
- ScopeStorage 
- Storage for a scope.
- Script
- A compiled JavaScript script, tied to a Context which was active when the script was compiled.
- ScriptOrModule 
- A container type that holds relevant metadata for module loading.
- ScriptOrigin 
- The origin, within a file, of a script.
- SealedLocal 
- A Localpassed from V8 without an inherent scope. The value must be “unsealed” with Scope::unseal to bind it to a lifetime. 
- Set
- An instance of the built-in Set constructor (ECMA-262, 6th Edition, 23.2.1).
- SharedArray Buffer 
- An instance of the built-in SharedArrayBuffer constructor.
- SharedPtr 
- Wrapper around a C++ shared_ptr. A shared_ptr may be be null.
- SharedRef 
- Wrapper around a C++ shared_ptr. The shared_ptr is assumed to contain a value and may not be null.
- Signature
- A Signature specifies which receiver is valid for a function.
- StackFrame 
- A single JavaScript stack frame.
- StackTrace 
- Representation of a JavaScript stack trace. The information collected is a snapshot of the execution stack and the information remains valid after execution continues.
- StalledTopLevel Await Message 
- StartupData 
- String
- A JavaScript string value (ECMA-262, 4.3.17).
- StringObject 
- A String object (ECMA-262, 4.3.18).
- Symbol
- A JavaScript symbol (ECMA-262 edition 6)
- SymbolObject 
- A Symbol object (ECMA-262 edition 6).
- SyntheticModule Evaluation Steps Ret 
- Template
- The superclass of object and function templates.
- TracedReference 
- A traced handle without destructor that clears the handle. The embedder needs to ensure that the handle is not accessed once the V8 object has been reclaimed. For more details see BasicTracedReference.
- TryCatch
- An external exception handler.
- TypedArray 
- A base class for an instance of TypedArray series of constructors (ES6 draft 15.13.6).
- Uint8Array 
- An instance of Uint8Array constructor (ES6 draft 15.13.6).
- Uint8Clamped Array 
- An instance of Uint8ClampedArray constructor (ES6 draft 15.13.6).
- Uint32
- A JavaScript value representing a 32-bit unsigned integer.
- Uint16Array 
- An instance of Uint16Array constructor (ES6 draft 15.13.6).
- Uint32Array 
- An instance of Uint32Array constructor (ES6 draft 15.13.6).
- UnboundModule Script 
- A compiled JavaScript module, not yet tied to a Context.
- UnboundScript 
- A compiled JavaScript script, not yet tied to a Context.
- UniquePtr 
- Pointer to object allocated on the C++ heap. The pointer may be null.
- UniqueRef 
- Pointer to object allocated on the C++ heap. The pointer may not be null.
- UnsafeRawIsolate Ptr 
- Value
- The superclass of all JavaScript values and objects.
- ValueDeserializer 
- 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
- ValueSerializer 
- ValueView 
- Returns a view onto a string’s contents.
- WasmMemory Object 
- WasmModule Object 
- WasmStreaming 
- 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.
- Weak
- 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.
- WriteFlags 
- WriteOptions 
Enums§
- ConstructorBehavior 
- ConstructorBehavior::Allow creates a regular API function.
- DataError 
- Encoding
- FunctionCode Handling 
- GarbageCollection Type 
- Types of garbage collections that can be requested via
Isolate::request_garbage_collection_for_testing.
- IndexFilter 
- IntegrityLevel 
- Object integrity levels can be used to restrict what can be done to an object’s properties.
- Intercepted
- Interceptor callbacks use this value to indicate whether the request was intercepted or not.
- Intrinsic
- KeyCollectionMode 
- Keys/Properties filter enums:
- KeyConversionMode 
- MemoryPressure Level 
- Memory pressure level for the MemoryPressureNotification. None hints V8 that there is no memory pressure. Moderate hints V8 to speed up incremental garbage collection at the cost of higher latency due to garbage collection pauses. Critical hints V8 to free memory as soon as possible. Garbage collection pauses at this level will be large.
- MicrotasksPolicy 
- Policy for running microtasks:
- ModuleImport Phase 
- Import phases in import requests. Import phases in import requests.
- ModuleStatus 
- The different states a module can be in.
- NewStringType 
- OnFailure
- PromiseHook Type 
- 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.
- PromiseReject Event 
- PromiseState 
- SideEffect Type 
- 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.
- TimeZone Detection 
- Time zone redetection indicator for DateTimeConfigurationChangeNotification.
- ValueView Data 
- WasmAsync Success 
Constants§
- BUILD_NUMBER 
- https://v8.dev/docs/version-numbers
- MAJOR_VERSION 
- https://v8.dev/docs/version-numbers
- MINOR_VERSION 
- https://v8.dev/docs/version-numbers
- PATCH_LEVEL 
- https://v8.dev/docs/version-numbers
- TYPED_ARRAY_ MAX_ SIZE_ IN_ HEAP 
- VERSION_STRING 
- https://v8.dev/docs/version-numbers
Traits§
- Handle
- HostImport Module Dynamically Callback 
- HostImportModuleDynamicallyCallback is called when we require the embedder to load a module. This is used as part of the dynamic import syntax.
- HostImport Module With Phase Dynamically Callback 
- HostImportModuleWithPhaseDynamicallyCallback is called when we require the embedder to load a module with a specific phase. This is used as part of the dynamic import syntax.
- MapFnTo
- ValueDeserializer Helper 
- 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.
- ValueDeserializer Impl 
- The ValueDeserializerImpl trait allows for custom callback functions used by v8.
- ValueSerializer Helper 
- 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.
- ValueSerializer Impl 
- The ValueSerializerImpl trait allows for custom callback functions used by v8.
Functions§
- new_default_ allocator 
- malloc/free based convenience allocator.
- new_default_ platform 
- Returns a new instance of the default v8::Platform implementation.
- new_rust_ ⚠allocator 
- Creates an allocator managed by Rust code.
- new_single_ threaded_ default_ platform 
- The same as new_default_platform() but disables the worker thread pool. It must be used with the –single-threaded V8 flag.
- new_unprotected_ default_ platform 
- Creates a platform that is identical to the default platform, but does not
enforce thread-isolated allocations. This may reduce security in some cases,
so this method should be used with caution in cases where the threading
guarantees of new_default_platformcannot be upheld (generally for tests).
- null
- undefined
Type Aliases§
- AccessorName Getter Callback 
- AccessorName Setter Callback 
- Note: [ReturnValue] is ignored for accessors.
- BackingStore Deleter Callback 
- FunctionCallback 
- HostCreate Shadow Realm Context Callback 
- HostCreateShadowRealmContextCallbackis called each time a- ShadowRealmis being constructed. You can use [- HandleScope::get_current_context] to get the- Contextin which the constructor is being run.
- HostInitialize Import Meta Object Callback 
- HostInitializeImportMetaObjectCallback is called the first time import.meta is accessed for a module. Subsequent access will reuse the same value.
- IndexedProperty Definer Callback 
- See [GenericNamedPropertyDefinerCallback].
- IndexedProperty Deleter Callback 
- See [GenericNamedPropertyDeleterCallback].
- IndexedProperty Descriptor Callback 
- See [GenericNamedPropertyDescriptorCallback].
- IndexedProperty Enumerator Callback 
- See [GenericNamedPropertyEnumeratorCallback].
- IndexedProperty Getter Callback 
- See [GenericNamedPropertyGetterCallback].
- IndexedProperty Query Callback 
- See [GenericNamedPropertyQueryCallback].
- IndexedProperty Setter Callback 
- See [GenericNamedPropertySetterCallback].
- MessageCallback 
- NamedProperty Definer Callback 
- Interceptor for defineProperty requests on an object.
- NamedProperty Deleter Callback 
- Interceptor for delete requests on an object.
- NamedProperty Descriptor Callback 
- Interceptor for getOwnPropertyDescriptor requests on an object.
- NamedProperty Enumerator Callback 
- Returns an array containing the names of the properties the named property getter intercepts.
- NamedProperty Getter Callback 
- Interceptor for get requests on an object.
- NamedProperty Query Callback 
- Intercepts all requests that query the attributes of the property, e.g., getOwnPropertyDescriptor(), propertyIsEnumerable(), and defineProperty().
- NamedProperty Setter Callback 
- Interceptor for set requests on an object.
- NearHeap Limit Callback 
- OomErrorCallback 
- PinCallbackScope 
- PinScope
- PromiseHook 
- PromiseReject Callback 
- ResolveModule Callback 
- ResolveSource Callback 
- SyntheticModule Evaluation Steps 
- UseCounterCallback 
- UseCounterFeature