From 28f9bb8e966e77544f1d932dd9962e631bbdddeb Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Fri, 24 Nov 2023 10:17:01 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=A5=97=20Javet=20v3.0.2=20(#288)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Upgraded V8 to `v12.0.267.8` (2023-11-21) * Upgraded Node.js to `v20.10.0` ([2023-11-22](https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md#20.10.0)) * Fixed Linux arm64 build addressing the changes in V8 v12 --- .github/workflows/android_build.yml | 8 +- .github/workflows/linux_build_artifact.yml | 6 +- .../workflows/linux_build_node_v8_image.yml | 6 +- .github/workflows/linux_x86_64_build.yml | 8 +- .github/workflows/macos_arm64_build.yml | 4 +- .github/workflows/macos_x86_64_build.yml | 8 +- README.rst | 27 +- android/javet-android/build.gradle.kts | 2 +- .../src/main/AndroidManifest.xml | 2 +- android/pom.xml | 4 +- build.gradle.kts | 2 +- cpp/build-android.sh | 2 +- cpp/build-linux-arm64.sh | 2 +- cpp/build-linux-x86_64.sh | 2 +- cpp/build-macos.sh | 2 +- cpp/build-windows.cmd | 2 +- cpp/jni/javet_resource_node.rc | 12 +- cpp/jni/javet_resource_v8.rc | 12 +- docker/android/base.Dockerfile | 4 +- docker/android/build.Dockerfile | 2 +- docker/linux-arm64/base_all_in_one.Dockerfile | 4 +- docker/linux-arm64/base_gradle.Dockerfile | 2 +- docker/linux-arm64/base_v8.Dockerfile | 6 +- docker/linux-arm64/build_artifact.Dockerfile | 4 +- .../linux-x86_64/base_all_in_one.Dockerfile | 6 +- docker/linux-x86_64/base_gradle.Dockerfile | 2 +- docker/linux-x86_64/base_node.Dockerfile | 6 +- docker/linux-x86_64/base_v8.Dockerfile | 6 +- .../linux-x86_64/build_all_in_one.Dockerfile | 2 +- docker/linux-x86_64/build_artifact.Dockerfile | 4 +- docker/windows-x86_64/base.Dockerfile | 6 +- docker/windows-x86_64/build.Dockerfile | 2 +- docs/_static/documentation_options.js | 2 +- docs/conf.py | 2 +- docs/development/build.html | 17 +- docs/development/build.rst | 8 +- .../development/build_javet_from_scratch.html | 9 +- docs/development/build_javet_with_docker.html | 14 +- docs/development/build_javet_with_docker.rst | 5 + .../debug_with_chrome_developer_tools.html | 9 +- docs/development/design.html | 9 +- docs/development/index.html | 16 +- docs/development/performance.html | 208 +++++++- docs/development/performance.rst | 75 ++- docs/development/test.html | 9 +- docs/development/tools.html | 9 +- docs/faq/background/history_with_j2v8.html | 9 +- docs/faq/background/index.html | 9 +- .../background/what_is_the_motivation.html | 9 +- .../development/how_to_think_in_javet.html | 9 +- docs/faq/development/index.html | 9 +- .../where_are_es6_api_in_v8_mode.html | 9 +- .../development/where_are_the_examples.html | 9 +- ...he_inspector_disabled_in_node_js_mode.html | 9 +- .../can_javet_support_legacy_linux.html | 9 +- docs/faq/environment/index.html | 9 +- docs/faq/index.html | 9 +- ...ary_dll_initialization_routine_failed.html | 9 +- .../can_i18n_be_supported.html | 9 +- ...can_i_debug_javet_in_chrome_dev_tools.html | 9 +- docs/faq/troubleshooting/index.html | 9 +- ...why_node_js_crashes_when_being_closed.html | 9 +- docs/genindex.html | 9 +- docs/index.html | 36 +- docs/index.rst | 2 +- .../converters/bridge_converter.html | 9 +- .../converters/custom_converter.html | 9 +- docs/reference/converters/index.html | 9 +- .../converters/object_converter.html | 9 +- .../converters/primitive_converter.html | 9 +- .../reference/converters/proxy_converter.html | 9 +- docs/reference/index.html | 9 +- docs/reference/javadoc/allclasses-frame.html | 2 +- .../reference/javadoc/allclasses-noframe.html | 2 +- .../javet/annotations/CheckReturnValue.html | 4 +- .../caoccao/javet/annotations/NodeModule.html | 4 +- .../caoccao/javet/annotations/V8Allow.html | 4 +- .../javet/annotations/V8BindingEnabler.html | 4 +- .../caoccao/javet/annotations/V8Block.html | 4 +- .../caoccao/javet/annotations/V8Convert.html | 4 +- .../caoccao/javet/annotations/V8Function.html | 4 +- .../caoccao/javet/annotations/V8Getter.html | 4 +- .../caoccao/javet/annotations/V8Property.html | 4 +- .../annotations/V8ProxyFunctionApply.html | 4 +- .../javet/annotations/V8RuntimeSetter.html | 4 +- .../caoccao/javet/annotations/V8Setter.html | 4 +- .../javet/annotations/package-frame.html | 2 +- .../javet/annotations/package-summary.html | 4 +- .../javet/annotations/package-tree.html | 4 +- .../javet/entities/JavetEntityFunction.html | 4 +- .../javet/entities/JavetEntityMap.html | 4 +- .../javet/entities/JavetEntitySymbol.html | 4 +- .../caoccao/javet/entities/package-frame.html | 2 +- .../javet/entities/package-summary.html | 4 +- .../caoccao/javet/entities/package-tree.html | 4 +- .../caoccao/javet/enums/JSFunctionType.html | 4 +- .../caoccao/javet/enums/JSRuntimeType.html | 4 +- .../com/caoccao/javet/enums/JSScopeType.html | 4 +- .../caoccao/javet/enums/JavetErrorType.html | 4 +- .../javet/enums/JavetPromiseRejectEvent.html | 4 +- .../javet/enums/V8AllocationSpace.html | 4 +- .../com/caoccao/javet/enums/V8AwaitMode.html | 4 +- .../caoccao/javet/enums/V8ContextType.html | 4 +- .../caoccao/javet/enums/V8ConversionMode.html | 4 +- .../javet/enums/V8GCCallbackFlags.html | 4 +- .../com/caoccao/javet/enums/V8GCType.html | 4 +- .../com/caoccao/javet/enums/V8ProxyMode.html | 4 +- .../com/caoccao/javet/enums/V8ScopeType.html | 4 +- .../javet/enums/V8ValueInternalType.html | 4 +- .../javet/enums/V8ValueReferenceType.html | 4 +- .../javet/enums/V8ValueSymbolType.html | 4 +- .../caoccao/javet/enums/package-frame.html | 2 +- .../caoccao/javet/enums/package-summary.html | 4 +- .../com/caoccao/javet/enums/package-tree.html | 4 +- .../BaseJavetScriptingException.html | 4 +- .../exceptions/JavetCompilationException.html | 4 +- .../exceptions/JavetConverterException.html | 4 +- .../caoccao/javet/exceptions/JavetError.html | 4 +- .../javet/exceptions/JavetException.html | 4 +- .../exceptions/JavetExecutionException.html | 4 +- .../exceptions/JavetOutOfMemoryException.html | 4 +- .../javet/exceptions/JavetScriptingError.html | 4 +- .../exceptions/JavetTerminatedException.html | 4 +- .../javet/exceptions/package-frame.html | 2 +- .../javet/exceptions/package-summary.html | 4 +- .../javet/exceptions/package-tree.html | 4 +- .../interception/BaseJavetInterceptor.html | 4 +- .../logging/BaseJavetConsoleInterceptor.html | 4 +- .../JavetStandardConsoleInterceptor.html | 4 +- .../interception/logging/package-frame.html | 2 +- .../interception/logging/package-summary.html | 4 +- .../interception/logging/package-tree.html | 4 +- .../javet/interception/package-frame.html | 2 +- .../javet/interception/package-summary.html | 4 +- .../javet/interception/package-tree.html | 4 +- .../caoccao/javet/interfaces/IEnumBitset.html | 4 +- .../javet/interfaces/IJavaFunction.html | 4 +- .../javet/interfaces/IJavaSupplier.html | 4 +- .../javet/interfaces/IJavetAnonymous.html | 4 +- .../javet/interfaces/IJavetBiConsumer.html | 4 +- .../javet/interfaces/IJavetBiFunction.html | 4 +- .../interfaces/IJavetBiIndexedConsumer.html | 4 +- .../javet/interfaces/IJavetClosable.html | 4 +- .../interfaces/IJavetEntityFunction.html | 4 +- .../javet/interfaces/IJavetEntityMap.html | 4 +- .../javet/interfaces/IJavetInterceptor.html | 4 +- .../javet/interfaces/IJavetLogger.html | 4 +- .../javet/interfaces/IJavetMappable.html | 4 +- .../javet/interfaces/IJavetResettable.html | 4 +- .../javet/interfaces/IJavetSupplier.html | 4 +- .../javet/interfaces/IJavetUniConsumer.html | 4 +- .../javet/interfaces/IJavetUniFunction.html | 4 +- .../interfaces/IJavetUniIndexedConsumer.html | 4 +- .../javet/interfaces/package-frame.html | 2 +- .../javet/interfaces/package-summary.html | 4 +- .../javet/interfaces/package-tree.html | 4 +- .../caoccao/javet/interop/INodeNative.html | 4 +- .../caoccao/javet/interop/IV8Cloneable.html | 4 +- .../caoccao/javet/interop/IV8Convertible.html | 4 +- .../caoccao/javet/interop/IV8Creatable.html | 4 +- .../caoccao/javet/interop/IV8Executable.html | 4 +- .../javet/interop/IV8InspectorListener.html | 4 +- .../com/caoccao/javet/interop/IV8Native.html | 4 +- .../caoccao/javet/interop/NodeRuntime.html | 4 +- .../com/caoccao/javet/interop/V8Host.html | 4 +- .../caoccao/javet/interop/V8Inspector.html | 4 +- .../com/caoccao/javet/interop/V8Internal.html | 4 +- .../com/caoccao/javet/interop/V8Locker.html | 4 +- .../com/caoccao/javet/interop/V8Notifier.html | 4 +- .../com/caoccao/javet/interop/V8Runtime.html | 4 +- .../com/caoccao/javet/interop/V8Scope.html | 4 +- .../caoccao/javet/interop/V8ScriptOrigin.html | 4 +- .../javet/interop/binding/BindingContext.html | 4 +- .../interop/binding/ClassDescriptor.html | 4 +- .../interop/binding/MethodDescriptor.html | 4 +- .../javet/interop/binding/package-frame.html | 2 +- .../interop/binding/package-summary.html | 4 +- .../javet/interop/binding/package-tree.html | 4 +- .../IJavetDirectCallable.DirectCall.html | 4 +- .../IJavetDirectCallable.GetterAndNoThis.html | 4 +- .../IJavetDirectCallable.GetterAndThis.html | 4 +- ...JavetDirectCallable.NoThisAndNoResult.html | 4 +- .../IJavetDirectCallable.NoThisAndResult.html | 4 +- .../IJavetDirectCallable.SetterAndNoThis.html | 4 +- .../IJavetDirectCallable.SetterAndThis.html | 4 +- .../IJavetDirectCallable.ThisAndNoResult.html | 4 +- .../IJavetDirectCallable.ThisAndResult.html | 4 +- .../callback/IJavetDirectCallable.html | 4 +- .../interop/callback/IJavetGCCallback.html | 4 +- .../callback/IJavetPromiseRejectCallback.html | 4 +- .../interop/callback/IV8ModuleResolver.html | 4 +- .../callback/JavetBuiltInModuleResolver.html | 4 +- .../callback/JavetCallbackContext.html | 4 +- .../interop/callback/JavetCallbackType.html | 4 +- .../interop/callback/JavetGCCallback.html | 4 +- .../callback/JavetPromiseRejectCallback.html | 4 +- .../interop/callback/V8FunctionCallback.html | 4 +- .../javet/interop/callback/package-frame.html | 2 +- .../interop/callback/package-summary.html | 4 +- .../javet/interop/callback/package-tree.html | 4 +- .../converters/BaseJavetConverter.html | 4 +- .../interop/converters/IJavetConverter.html | 4 +- .../converters/JavetBridgeConverter.html | 4 +- .../converters/JavetConverterConfig.html | 4 +- .../converters/JavetObjectConverter.html | 4 +- .../converters/JavetPrimitiveConverter.html | 4 +- .../converters/JavetProxyConverter.html | 4 +- .../interop/converters/package-frame.html | 2 +- .../interop/converters/package-summary.html | 4 +- .../interop/converters/package-tree.html | 4 +- .../javet/interop/engine/IJavetEngine.html | 4 +- .../interop/engine/IJavetEngineGuard.html | 4 +- .../interop/engine/IJavetEnginePool.html | 4 +- .../javet/interop/engine/JavetEngine.html | 4 +- .../interop/engine/JavetEngineConfig.html | 4 +- .../interop/engine/JavetEngineGuard.html | 4 +- .../javet/interop/engine/JavetEnginePool.html | 4 +- .../interop/engine/JavetEngineUsage.html | 4 +- .../engine/observers/IV8RuntimeObserver.html | 4 +- ...meObserverAverageCallbackContextCount.html | 4 +- ...8RuntimeObserverAverageReferenceCount.html | 4 +- ...eObserverAverageV8HeapSpaceStatistics.html | 4 +- ...untimeObserverAverageV8HeapStatistics.html | 4 +- ...V8RuntimeObserverAverageV8ModuleCount.html | 4 +- .../engine/observers/package-frame.html | 2 +- .../engine/observers/package-summary.html | 4 +- .../engine/observers/package-tree.html | 4 +- .../javet/interop/engine/package-frame.html | 2 +- .../javet/interop/engine/package-summary.html | 4 +- .../javet/interop/engine/package-tree.html | 4 +- .../interop/executors/BaseV8Executor.html | 4 +- .../javet/interop/executors/IV8Executor.html | 4 +- .../interop/executors/V8FileExecutor.html | 4 +- .../interop/executors/V8PathExecutor.html | 4 +- .../interop/executors/V8StringExecutor.html | 4 +- .../interop/executors/package-frame.html | 2 +- .../interop/executors/package-summary.html | 4 +- .../javet/interop/executors/package-tree.html | 4 +- .../loader/IJavetLibLoadingListener.html | 4 +- .../javet/interop/loader/JavetLibLoader.html | 4 +- .../loader/JavetLibLoadingListener.html | 4 +- .../javet/interop/loader/package-frame.html | 2 +- .../javet/interop/loader/package-summary.html | 4 +- .../javet/interop/loader/package-tree.html | 4 +- .../monitoring/V8HeapSpaceStatistics.html | 4 +- .../interop/monitoring/V8HeapStatistics.html | 4 +- .../monitoring/V8SharedMemoryStatistics.html | 4 +- .../interop/monitoring/package-frame.html | 2 +- .../interop/monitoring/package-summary.html | 4 +- .../interop/monitoring/package-tree.html | 4 +- .../interop/options/NodeRuntimeOptions.html | 4 +- .../javet/interop/options/RuntimeOptions.html | 4 +- .../javet/interop/options/V8Flags.html | 4 +- .../interop/options/V8RuntimeOptions.html | 4 +- .../javet/interop/options/package-frame.html | 2 +- .../interop/options/package-summary.html | 4 +- .../javet/interop/options/package-tree.html | 4 +- .../caoccao/javet/interop/package-frame.html | 2 +- .../javet/interop/package-summary.html | 4 +- .../caoccao/javet/interop/package-tree.html | 4 +- .../proxy/BaseJavetDirectProxyHandler.html | 4 +- .../interop/proxy/BaseJavetProxyHandler.html | 4 +- .../proxy/BaseJavetProxySymbolConverter.html | 4 +- .../BaseJavetReflectionProxyHandler.html | 4 +- .../proxy/IJavetDirectProxyHandler.html | 4 +- .../interop/proxy/IJavetProxyHandler.html | 4 +- .../proxy/IJavetProxySymbolConverter.html | 4 +- .../proxy/IJavetReflectionObjectFactory.html | 4 +- .../JavetDirectProxyFunctionHandler.html | 4 +- .../proxy/JavetDirectProxyObjectHandler.html | 4 +- .../JavetProxySymbolIterableConverter.html | 4 +- .../JavetProxySymbolToPrimitiveConverter.html | 4 +- .../JavetReflectionProxyClassHandler.html | 4 +- .../proxy/JavetReflectionProxyFactory.html | 4 +- .../JavetReflectionProxyFunctionHandler.html | 4 +- .../JavetReflectionProxyObjectHandler.html | 4 +- ...ProxyV8ValueFunctionInvocationHandler.html | 4 +- ...onProxyV8ValueObjectInvocationHandler.html | 4 +- .../javet/interop/proxy/package-frame.html | 2 +- .../javet/interop/proxy/package-summary.html | 4 +- .../javet/interop/proxy/package-tree.html | 4 +- .../javet/node/modules/BaseNodeModule.html | 4 +- .../javet/node/modules/INodeModule.html | 4 +- .../javet/node/modules/NodeModuleAny.html | 4 +- .../javet/node/modules/NodeModuleModule.html | 4 +- .../javet/node/modules/NodeModuleProcess.html | 4 +- .../javet/node/modules/package-frame.html | 2 +- .../javet/node/modules/package-summary.html | 4 +- .../javet/node/modules/package-tree.html | 4 +- .../javet/utils/JavetDateTimeUtils.html | 4 +- .../javet/utils/JavetDefaultLogger.html | 4 +- .../com/caoccao/javet/utils/JavetOSUtils.html | 4 +- .../javet/utils/JavetReflectionUtils.html | 4 +- .../javet/utils/JavetResourceUtils.html | 4 +- .../caoccao/javet/utils/JavetStringUtils.html | 4 +- .../caoccao/javet/utils/JavetTypeUtils.html | 4 +- .../javet/utils/JavetVirtualObject.html | 4 +- .../javet/utils/SimpleFreeMarkerFormat.html | 4 +- .../com/caoccao/javet/utils/SimpleMap.html | 4 +- .../javet/utils/ThreadSafeMap.Type.html | 4 +- .../caoccao/javet/utils/ThreadSafeMap.html | 4 +- .../com/caoccao/javet/utils/V8ValueUtils.html | 4 +- .../caoccao/javet/utils/package-frame.html | 2 +- .../caoccao/javet/utils/package-summary.html | 4 +- .../com/caoccao/javet/utils/package-tree.html | 4 +- .../receivers/IJavetCallbackReceiver.html | 4 +- .../receivers/JavetCallbackReceiver.html | 4 +- .../javet/utils/receivers/package-frame.html | 2 +- .../utils/receivers/package-summary.html | 4 +- .../javet/utils/receivers/package-tree.html | 4 +- .../com/caoccao/javet/values/IV8Value.html | 4 +- .../com/caoccao/javet/values/V8Data.html | 4 +- .../com/caoccao/javet/values/V8Value.html | 4 +- .../caoccao/javet/values/package-frame.html | 2 +- .../caoccao/javet/values/package-summary.html | 4 +- .../caoccao/javet/values/package-tree.html | 4 +- .../values/primitive/V8ValueBigInteger.html | 4 +- .../values/primitive/V8ValueBoolean.html | 4 +- .../javet/values/primitive/V8ValueDouble.html | 4 +- .../values/primitive/V8ValueInteger.html | 4 +- .../javet/values/primitive/V8ValueLong.html | 4 +- .../javet/values/primitive/V8ValueNull.html | 4 +- .../values/primitive/V8ValuePrimitive.html | 4 +- .../javet/values/primitive/V8ValueString.html | 4 +- .../values/primitive/V8ValueUndefined.html | 4 +- .../values/primitive/V8ValueUnknown.html | 4 +- .../primitive/V8ValueZonedDateTime.html | 4 +- .../javet/values/primitive/package-frame.html | 2 +- .../values/primitive/package-summary.html | 4 +- .../javet/values/primitive/package-tree.html | 4 +- .../javet/values/reference/IV8Cacheable.html | 4 +- .../javet/values/reference/IV8Context.html | 4 +- .../javet/values/reference/IV8Module.html | 4 +- .../javet/values/reference/IV8Script.html | 4 +- .../javet/values/reference/IV8ValueArray.html | 4 +- ...IV8ValueFunction.GetScopeInfosOptions.html | 4 +- .../reference/IV8ValueFunction.ScopeInfo.html | 4 +- .../IV8ValueFunction.ScopeInfos.html | 4 +- .../IV8ValueFunction.ScriptSource.html | 4 +- ...IV8ValueFunction.SetSourceCodeOptions.html | 4 +- .../values/reference/IV8ValueFunction.html | 4 +- .../values/reference/IV8ValueIterator.html | 4 +- .../reference/IV8ValueKeyContainer.html | 4 +- .../javet/values/reference/IV8ValueMap.html | 4 +- .../values/reference/IV8ValueObject.html | 4 +- .../reference/IV8ValuePromise.IListener.html | 4 +- .../values/reference/IV8ValuePromise.html | 4 +- .../javet/values/reference/IV8ValueProxy.html | 4 +- .../values/reference/IV8ValueReference.html | 4 +- .../javet/values/reference/IV8ValueSet.html | 4 +- .../values/reference/IV8ValueTypedArray.html | 4 +- .../javet/values/reference/V8Context.html | 4 +- .../javet/values/reference/V8Module.html | 4 +- .../javet/values/reference/V8Script.html | 4 +- .../values/reference/V8ValueArguments.html | 4 +- .../javet/values/reference/V8ValueArray.html | 4 +- .../values/reference/V8ValueArrayBuffer.html | 4 +- .../values/reference/V8ValueDataView.html | 4 +- .../javet/values/reference/V8ValueError.html | 4 +- .../values/reference/V8ValueFunction.html | 4 +- .../values/reference/V8ValueGlobalObject.html | 4 +- .../values/reference/V8ValueIterator.html | 4 +- .../javet/values/reference/V8ValueMap.html | 4 +- .../javet/values/reference/V8ValueObject.html | 4 +- .../values/reference/V8ValuePromise.html | 4 +- .../javet/values/reference/V8ValueProxy.html | 4 +- .../values/reference/V8ValueReference.html | 4 +- .../javet/values/reference/V8ValueRegExp.html | 4 +- .../javet/values/reference/V8ValueSet.html | 4 +- .../reference/V8ValueSharedArrayBuffer.html | 4 +- .../javet/values/reference/V8ValueSymbol.html | 4 +- .../values/reference/V8ValueSymbolObject.html | 4 +- .../values/reference/V8ValueTypedArray.html | 4 +- .../values/reference/V8ValueWeakMap.html | 4 +- .../values/reference/V8ValueWeakSet.html | 4 +- .../reference/builtin/V8ValueBuiltInJson.html | 4 +- .../builtin/V8ValueBuiltInObject.html | 4 +- .../builtin/V8ValueBuiltInPromise.html | 4 +- .../builtin/V8ValueBuiltInSymbol.html | 4 +- .../reference/builtin/package-frame.html | 2 +- .../reference/builtin/package-summary.html | 4 +- .../reference/builtin/package-tree.html | 4 +- .../javet/values/reference/package-frame.html | 2 +- .../values/reference/package-summary.html | 4 +- .../javet/values/reference/package-tree.html | 4 +- .../values/virtual/V8VirtualIterator.html | 4 +- .../javet/values/virtual/V8VirtualValue.html | 4 +- .../values/virtual/V8VirtualValueList.html | 4 +- .../javet/values/virtual/package-frame.html | 2 +- .../javet/values/virtual/package-summary.html | 4 +- .../javet/values/virtual/package-tree.html | 4 +- docs/reference/javadoc/constant-values.html | 6 +- docs/reference/javadoc/deprecated-list.html | 4 +- docs/reference/javadoc/help-doc.html | 4 +- docs/reference/javadoc/index-all.html | 4 +- docs/reference/javadoc/index.html | 2 +- docs/reference/javadoc/overview-frame.html | 2 +- docs/reference/javadoc/overview-summary.html | 6 +- docs/reference/javadoc/overview-tree.html | 4 +- docs/reference/javadoc/serialized-form.html | 4 +- docs/reference/resource_management/index.html | 10 +- .../resource_management/load_and_unload.html | 9 +- docs/reference/resource_management/lock.html | 9 +- .../memory_management.html | 9 +- .../resource_management/modularization.html | 15 +- .../resource_management/performance.html | 456 ------------------ .../resource_management/performance.rst | 39 -- docs/reference/tips/best_practices.html | 9 +- docs/reference/tips/index.html | 9 +- docs/reference/todo_list.html | 9 +- .../troubleshooting/error_codes.html | 9 +- docs/reference/troubleshooting/index.html | 15 +- docs/reference/troubleshooting/logging.html | 9 +- .../troubleshooting/termination.html | 9 +- docs/reference/v8_values/index.html | 9 +- docs/reference/v8_values/v8_collection.html | 9 +- docs/reference/v8_values/v8_function.html | 9 +- docs/reference/v8_values/v8_promise.html | 9 +- docs/release_notes/index.html | 9 +- docs/release_notes/release_notes_0_7.html | 9 +- docs/release_notes/release_notes_0_8.html | 9 +- docs/release_notes/release_notes_0_9.html | 9 +- docs/release_notes/release_notes_1_0.html | 9 +- docs/release_notes/release_notes_1_1.html | 9 +- docs/release_notes/release_notes_2_0.html | 9 +- docs/release_notes/release_notes_2_1.html | 9 +- docs/release_notes/release_notes_2_2.html | 9 +- docs/release_notes/release_notes_3_0.html | 18 +- docs/release_notes/release_notes_3_0.rst | 7 + docs/search.html | 9 +- docs/searchindex.js | 2 +- .../advanced/expose_json_node_in_v8.html | 9 +- docs/tutorial/advanced/index.html | 9 +- .../advanced/interact_with_node_js.html | 9 +- .../advanced/java_and_javascript_interop.html | 9 +- docs/tutorial/advanced/object_converter.html | 9 +- docs/tutorial/basic/engine_pool.html | 9 +- docs/tutorial/basic/hello_javet.html | 9 +- docs/tutorial/basic/index.html | 9 +- docs/tutorial/basic/installation.html | 150 +++--- docs/tutorial/basic/installation.rst | 141 +++--- docs/tutorial/basic/interception.html | 9 +- docs/tutorial/basic/javet_shell.html | 9 +- .../basic/node_js_mode_and_v8_mode.html | 9 +- docs/tutorial/basic/polyfill.html | 9 +- docs/tutorial/basic/spring_integration.html | 9 +- docs/tutorial/index.html | 9 +- docs/tutorial/migration_guides/index.html | 9 +- .../migration_guides/migrate_from_j2v8.html | 9 +- gradle/wrapper/gradle-wrapper.properties | 2 +- pom.xml | 4 +- scripts/node/javet-rebuild/rebuild.cmd | 2 +- scripts/node/javet-rebuild/rebuild.sh | 2 +- scripts/python/change_javet_version.py | 4 +- scripts/python/change_node_v8_version.py | 4 +- .../caoccao/javet/enums/JSRuntimeType.java | 4 +- .../javet/interop/executors/IV8Executor.java | 2 +- .../javet/interop/loader/JavetLibLoader.java | 2 +- .../javet/node/modules/NodeModuleModule.java | 2 +- .../javet/interop/TestNodeRuntime.java | 2 +- .../callback/TestV8FunctionCallback.java | 101 +++- 461 files changed, 1630 insertions(+), 1774 deletions(-) delete mode 100644 docs/reference/resource_management/performance.html delete mode 100644 docs/reference/resource_management/performance.rst diff --git a/.github/workflows/android_build.yml b/.github/workflows/android_build.yml index 639739b0c..d058fad20 100644 --- a/.github/workflows/android_build.yml +++ b/.github/workflows/android_build.yml @@ -8,9 +8,9 @@ on: workflow_dispatch: env: - JAVET_NODE_VERSION: 20.9.0 - JAVET_V8_VERSION: 11.9.169.6 - JAVET_VERSION: 3.0.1 + JAVET_NODE_VERSION: 20.10.0 + JAVET_V8_VERSION: 12.0.267.8 + JAVET_VERSION: 3.0.2 ROOT: /home/runner/work/Javet jobs: @@ -326,7 +326,7 @@ jobs: - name: Setup Gradle uses: gradle/gradle-build-action@v2 with: - gradle-version: 8.1 + gradle-version: 8.2 - name: Prepare JNI Libs run: | diff --git a/.github/workflows/linux_build_artifact.yml b/.github/workflows/linux_build_artifact.yml index 033ddefbb..dbfba65fd 100644 --- a/.github/workflows/linux_build_artifact.yml +++ b/.github/workflows/linux_build_artifact.yml @@ -17,9 +17,9 @@ on: env: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_REPO_JAVET: ${{ secrets.DOCKERHUB_REPO_JAVET }} - JAVET_NODE_VERSION: 20.9.0 - JAVET_V8_VERSION: 11.9.169.6 - JAVET_VERSION: 3.0.1 + JAVET_NODE_VERSION: 20.10.0 + JAVET_V8_VERSION: 12.0.267.8 + JAVET_VERSION: 3.0.2 jobs: javet_linux_x86_64: diff --git a/.github/workflows/linux_build_node_v8_image.yml b/.github/workflows/linux_build_node_v8_image.yml index 7c24f8152..a96709b29 100644 --- a/.github/workflows/linux_build_node_v8_image.yml +++ b/.github/workflows/linux_build_node_v8_image.yml @@ -21,9 +21,9 @@ on: env: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_REPO_JAVET: ${{ secrets.DOCKERHUB_REPO_JAVET }} - JAVET_NODE_VERSION: 20.9.0 - JAVET_V8_VERSION: 11.9.169.6 - JAVET_VERSION: 3.0.1 + JAVET_NODE_VERSION: 20.10.0 + JAVET_V8_VERSION: 12.0.267.8 + JAVET_VERSION: 3.0.2 # if we skip a job using a job level `if` condition, then any dependent jobs also don't run. # we can skip a step of the job, using a step level `if` condition. diff --git a/.github/workflows/linux_x86_64_build.yml b/.github/workflows/linux_x86_64_build.yml index 97dda9993..cb1b50802 100644 --- a/.github/workflows/linux_x86_64_build.yml +++ b/.github/workflows/linux_x86_64_build.yml @@ -7,9 +7,9 @@ on: workflow_dispatch: env: - JAVET_NODE_VERSION: 20.9.0 - JAVET_V8_VERSION: 11.9.169.6 - JAVET_VERSION: 3.0.1 + JAVET_NODE_VERSION: 20.10.0 + JAVET_V8_VERSION: 12.0.267.8 + JAVET_VERSION: 3.0.2 ROOT: /home/runner/work/Javet jobs: @@ -147,7 +147,7 @@ jobs: - name: Setup Gradle uses: gradle/gradle-build-action@v2 with: - gradle-version: 8.1 + gradle-version: 8.2 - name: Download Javet V8 uses: actions/download-artifact@v3 diff --git a/.github/workflows/macos_arm64_build.yml b/.github/workflows/macos_arm64_build.yml index efb2bfcd3..0b4ac4a8f 100644 --- a/.github/workflows/macos_arm64_build.yml +++ b/.github/workflows/macos_arm64_build.yml @@ -9,7 +9,7 @@ on: env: JAVET_NODE_VERSION: 11.8.172.15 JAVET_V8_VERSION: 11.8.172.15 - JAVET_VERSION: 3.0.1 + JAVET_VERSION: 3.0.2 ROOT: /Users/runner/work/Javet jobs: @@ -142,7 +142,7 @@ jobs: - name: Setup Gradle uses: gradle/gradle-build-action@v2 with: - gradle-version: 8.1 + gradle-version: 8.2 - name: Download Javet V8 uses: actions/download-artifact@v3 diff --git a/.github/workflows/macos_x86_64_build.yml b/.github/workflows/macos_x86_64_build.yml index 26a566d8d..ef4d35f40 100644 --- a/.github/workflows/macos_x86_64_build.yml +++ b/.github/workflows/macos_x86_64_build.yml @@ -7,9 +7,9 @@ on: workflow_dispatch: env: - JAVET_NODE_VERSION: 20.9.0 - JAVET_V8_VERSION: 11.9.169.6 - JAVET_VERSION: 3.0.1 + JAVET_NODE_VERSION: 20.10.0 + JAVET_V8_VERSION: 12.0.267.8 + JAVET_VERSION: 3.0.2 ROOT: /Users/runner/work/Javet jobs: @@ -142,7 +142,7 @@ jobs: - name: Setup Gradle uses: gradle/gradle-build-action@v2 with: - gradle-version: 8.1 + gradle-version: 8.2 - name: Download Javet V8 uses: actions/download-artifact@v3 diff --git a/README.rst b/README.rst index 3c37fe7d9..51f213c29 100644 --- a/README.rst +++ b/README.rst @@ -41,7 +41,7 @@ arm ✔️ ❌ ❌ ❌ arm64 ✔️ ✔️ ✔️ ❌ =========== ======= ======= ======= ======= -* Node.js ``v20.9.0`` + V8 ``v11.9.169.6`` +* Node.js ``v20.10.0`` + V8 ``v12.0.267.8`` * Dynamic switch between Node.js and V8 mode (`Which mode do you prefer? `_) * Polyfill V8 mode with `Javenode `_ * V8 API exposure in JVM @@ -67,21 +67,21 @@ Maven com.caoccao.javet javet - 3.0.1 + 3.0.2 com.caoccao.javet javet-linux-arm64 - 3.0.1 + 3.0.2 com.caoccao.javet javet-macos - 3.0.1 + 3.0.2 Gradle Kotlin DSL @@ -89,20 +89,20 @@ Gradle Kotlin DSL .. code-block:: kotlin - implementation("com.caoccao.javet:javet:3.0.1") // Linux and Windows (x86_64) - implementation("com.caoccao.javet:javet-linux-arm64:3.0.1") // Linux (arm64) - implementation("com.caoccao.javet:javet-macos:3.0.1") // Mac OS (x86_64 and arm64) - implementation("com.caoccao.javet:javet-android:3.0.1") // Android (arm, arm64, x86 and x86_64) + implementation("com.caoccao.javet:javet:3.0.2") // Linux and Windows (x86_64) + implementation("com.caoccao.javet:javet-linux-arm64:3.0.2") // Linux (arm64) + implementation("com.caoccao.javet:javet-macos:3.0.2") // Mac OS (x86_64 and arm64) + implementation("com.caoccao.javet:javet-android:3.0.2") // Android (arm, arm64, x86 and x86_64) Gradle Groovy DSL ^^^^^^^^^^^^^^^^^ .. code-block:: groovy - implementation 'com.caoccao.javet:javet:3.0.1' // Linux and Windows (x86_64) - implementation 'com.caoccao.javet:javet-linux-arm64:3.0.1' // Linux (arm64) - implementation 'com.caoccao.javet:javet-macos:3.0.1' // Mac OS (x86_64 and arm64) - implementation 'com.caoccao.javet:javet-android:3.0.1' // Android (arm, arm64, x86 and x86_64) + implementation 'com.caoccao.javet:javet:3.0.2' // Linux and Windows (x86_64) + implementation 'com.caoccao.javet:javet-linux-arm64:3.0.2' // Linux (arm64) + implementation 'com.caoccao.javet:javet-macos:3.0.2' // Mac OS (x86_64 and arm64) + implementation 'com.caoccao.javet:javet-android:3.0.2' // Android (arm, arm64, x86 and x86_64) Hello Javet ----------- @@ -127,7 +127,7 @@ Sponsors License ======= -`APACHE LICENSE, VERSION 2.0 `_ +`APACHE LICENSE, VERSION 2.0 `_ Blog ==== @@ -135,6 +135,7 @@ Blog * `Performance Comparison of GraalJS, Javet and Nashorn `_ * `How to Elegantly Expose JsonNode in V8 `_ * `How to Compromise V8 on JVM `_ +* `Is TypeScript a Good Choice for a Script Engine? `_ Documents ========= diff --git a/android/javet-android/build.gradle.kts b/android/javet-android/build.gradle.kts index d01c76f80..54680df69 100644 --- a/android/javet-android/build.gradle.kts +++ b/android/javet-android/build.gradle.kts @@ -21,7 +21,7 @@ plugins { id("com.android.library") } -version = "3.0.1" +version = "3.0.2" android { compileSdk = 30 diff --git a/android/javet-android/src/main/AndroidManifest.xml b/android/javet-android/src/main/AndroidManifest.xml index 7fc157416..540cbd958 100644 --- a/android/javet-android/src/main/AndroidManifest.xml +++ b/android/javet-android/src/main/AndroidManifest.xml @@ -2,7 +2,7 @@ \ No newline at end of file diff --git a/android/pom.xml b/android/pom.xml index ca3f00ee0..0b26e0648 100644 --- a/android/pom.xml +++ b/android/pom.xml @@ -3,7 +3,7 @@ com.caoccao.javet javet-android - 3.0.1 + 3.0.2 javet aar Javet is Java + V8 (JAVa + V + EighT). It is an awesome way of embedding V8 in Java. @@ -29,7 +29,7 @@ scm:git:git://github.com/caoccao/Javet.git scm:git:git@github.com:caoccao/caoccao.git https://github.com/caoccao/Javet - 3.0.1 + 3.0.2 diff --git a/build.gradle.kts b/build.gradle.kts index a60c44c6e..57963576f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,7 +25,7 @@ repositories { } group = "com.caoccao.javet" -version = "3.0.1" +version = "3.0.2" dependencies { testImplementation("org.eclipse.jetty.websocket:websocket-server:9.4.51.v20230217") diff --git a/cpp/build-android.sh b/cpp/build-android.sh index 8208724e1..ba32b7372 100755 --- a/cpp/build-android.sh +++ b/cpp/build-android.sh @@ -2,7 +2,7 @@ # Usage for V8: sh build-android.sh -DV8_DIR=${HOME}/v8 -DCMAKE_ANDROID_NDK=${HOME}/android -DCMAKE_ANDROID_ARCH=arm64 # Usage for Node: sh build-android.sh -DNODE_DIR=${HOME}/node -DCMAKE_ANDROID_NDK=${HOME}/android -DCMAKE_ANDROID_ARCH=arm64 -JAVET_VERSION=3.0.1 +JAVET_VERSION=3.0.2 rm -rf build_android mkdir build_android cd build_android diff --git a/cpp/build-linux-arm64.sh b/cpp/build-linux-arm64.sh index bc3f164ef..db6f3f3d1 100644 --- a/cpp/build-linux-arm64.sh +++ b/cpp/build-linux-arm64.sh @@ -2,7 +2,7 @@ # Usage for V8: sh build-linux-arm64.sh -DV8_DIR=${HOME}/v8 # Usage for Node: sh build-linux-arm64.sh -DNODE_DIR=${HOME}/node -JAVET_VERSION=3.0.1 +JAVET_VERSION=3.0.2 rm -rf build_linux_arm64 mkdir build_linux_arm64 cd build_linux_arm64 diff --git a/cpp/build-linux-x86_64.sh b/cpp/build-linux-x86_64.sh index 2cf3ca7da..ed4050162 100644 --- a/cpp/build-linux-x86_64.sh +++ b/cpp/build-linux-x86_64.sh @@ -2,7 +2,7 @@ # Usage for V8: sh build-linux-x86_64.sh -DV8_DIR=${HOME}/v8 # Usage for Node: sh build-linux-x86_64.sh -DNODE_DIR=${HOME}/node -JAVET_VERSION=3.0.1 +JAVET_VERSION=3.0.2 rm -rf build_linux_x86_64 mkdir build_linux_x86_64 cd build_linux_x86_64 diff --git a/cpp/build-macos.sh b/cpp/build-macos.sh index 644babed3..fcd081958 100755 --- a/cpp/build-macos.sh +++ b/cpp/build-macos.sh @@ -2,7 +2,7 @@ # Usage for V8: sh build-macos.sh -DV8_DIR=${HOME}/v8 # Usage for Node: sh build-macos.sh -DNODE_DIR=${HOME}/node -JAVET_VERSION=3.0.1 +JAVET_VERSION=3.0.2 rm -rf build_macos mkdir build_macos cd build_macos diff --git a/cpp/build-windows.cmd b/cpp/build-windows.cmd index 7c3bf8de6..c06f70fd7 100644 --- a/cpp/build-windows.cmd +++ b/cpp/build-windows.cmd @@ -1,7 +1,7 @@ @echo off REM Usage for V8: build -DV8_DIR=C:\v8 REM Usage for Node: build -DNODE_DIR=C:\node -SET JAVET_VERSION=3.0.1 +SET JAVET_VERSION=3.0.2 rd /s/q build_windows mkdir build_windows cd build_windows diff --git a/cpp/jni/javet_resource_node.rc b/cpp/jni/javet_resource_node.rc index ff5eb5eb9..1639b2871 100644 --- a/cpp/jni/javet_resource_node.rc +++ b/cpp/jni/javet_resource_node.rc @@ -61,8 +61,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,0,1,0 - PRODUCTVERSION 3,0,1,0 + FILEVERSION 3,0,2,0 + PRODUCTVERSION 3,0,2,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -79,12 +79,12 @@ BEGIN BEGIN VALUE "CompanyName", "caoccao.com" VALUE "FileDescription", "caoccao.com" - VALUE "FileVersion", "3.0.1.0" - VALUE "InternalName", "libjavet-node-windows-x86_64.v.3.0.1.dll" + VALUE "FileVersion", "3.0.2.0" + VALUE "InternalName", "libjavet-node-windows-x86_64.v.3.0.2.dll" VALUE "LegalCopyright", "Copyright (C) 2021-2023" - VALUE "OriginalFilename", "libjavet-node-windows-x86_64.v.3.0.1.dll" + VALUE "OriginalFilename", "libjavet-node-windows-x86_64.v.3.0.2.dll" VALUE "ProductName", "Javet Windows" - VALUE "ProductVersion", "3.0.1.0" + VALUE "ProductVersion", "3.0.2.0" END END BLOCK "VarFileInfo" diff --git a/cpp/jni/javet_resource_v8.rc b/cpp/jni/javet_resource_v8.rc index b3e7f7953..27cb1742a 100644 --- a/cpp/jni/javet_resource_v8.rc +++ b/cpp/jni/javet_resource_v8.rc @@ -61,8 +61,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US // VS_VERSION_INFO VERSIONINFO - FILEVERSION 3,0,1,0 - PRODUCTVERSION 3,0,1,0 + FILEVERSION 3,0,2,0 + PRODUCTVERSION 3,0,2,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -79,12 +79,12 @@ BEGIN BEGIN VALUE "CompanyName", "caoccao.com" VALUE "FileDescription", "caoccao.com" - VALUE "FileVersion", "3.0.1.0" - VALUE "InternalName", "libjavet-v8-windows-x86_64.v.3.0.1.dll" + VALUE "FileVersion", "3.0.2.0" + VALUE "InternalName", "libjavet-v8-windows-x86_64.v.3.0.2.dll" VALUE "LegalCopyright", "Copyright (C) 2021-2023" - VALUE "OriginalFilename", "libjavet-v8-windows-x86_64.v.3.0.1.dll" + VALUE "OriginalFilename", "libjavet-v8-windows-x86_64.v.3.0.2.dll" VALUE "ProductName", "Javet Windows" - VALUE "ProductVersion", "3.0.1.0" + VALUE "ProductVersion", "3.0.2.0" END END BLOCK "VarFileInfo" diff --git a/docker/android/base.Dockerfile b/docker/android/base.Dockerfile index b3d1a0f65..205f599e3 100644 --- a/docker/android/base.Dockerfile +++ b/docker/android/base.Dockerfile @@ -13,9 +13,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Usage: docker build -t sjtucaocao/javet-android:3.0.1 -f docker/android/base.Dockerfile . +# Usage: docker build -t sjtucaocao/javet-android:3.0.2 -f docker/android/base.Dockerfile . -ARG JAVET_V8_VERSION=11.9.169.6 +ARG JAVET_V8_VERSION=12.0.267.8 FROM ubuntu:20.04 WORKDIR / diff --git a/docker/android/build.Dockerfile b/docker/android/build.Dockerfile index cf2198364..c91ff2595 100644 --- a/docker/android/build.Dockerfile +++ b/docker/android/build.Dockerfile @@ -15,7 +15,7 @@ # Usage: docker build -t javet-android:local -f docker/android/build.Dockerfile . -FROM sjtucaocao/javet-android:3.0.1 +FROM sjtucaocao/javet-android:3.0.2 WORKDIR / # Copy Javet diff --git a/docker/linux-arm64/base_all_in_one.Dockerfile b/docker/linux-arm64/base_all_in_one.Dockerfile index f7268c35d..0d1c1021e 100644 --- a/docker/linux-arm64/base_all_in_one.Dockerfile +++ b/docker/linux-arm64/base_all_in_one.Dockerfile @@ -13,10 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Usage: docker build -t sjtucaocao/javet-arm64:3.0.1 -f docker/linux-arm64/base_all_in_one.Dockerfile . +# Usage: docker build -t sjtucaocao/javet-arm64:3.0.2 -f docker/linux-arm64/base_all_in_one.Dockerfile . ARG JAVET_NODE_VERSION=18.15.0 -ARG JAVET_V8_VERSION=11.9.169.6 +ARG JAVET_V8_VERSION=12.0.267.8 FROM ubuntu:20.04 WORKDIR / diff --git a/docker/linux-arm64/base_gradle.Dockerfile b/docker/linux-arm64/base_gradle.Dockerfile index 19c444910..0a5584155 100644 --- a/docker/linux-arm64/base_gradle.Dockerfile +++ b/docker/linux-arm64/base_gradle.Dockerfile @@ -14,7 +14,7 @@ # limitations under the License. # Usage: docker build \ -# -t sjtucaocao/javet:arm64-3.0.1 \ +# -t sjtucaocao/javet:arm64-3.0.2 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ # -f docker/linux-arm64/base_gradle.Dockerfile . diff --git a/docker/linux-arm64/base_v8.Dockerfile b/docker/linux-arm64/base_v8.Dockerfile index fc10bcf09..d05e52a44 100644 --- a/docker/linux-arm64/base_v8.Dockerfile +++ b/docker/linux-arm64/base_v8.Dockerfile @@ -14,13 +14,13 @@ # limitations under the License. # Usage: docker build \ -# -t sjtucaocao/javet:arm64-base-v8_11.9.169.6 \ +# -t sjtucaocao/javet:arm64-base-v8_12.0.267.8 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ -# --build-arg JAVET_V8_VERSION=11.9.169.6 \ +# --build-arg JAVET_V8_VERSION=12.0.267.8 \ # -f docker/linux-arm64/base_v8.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet -ARG JAVET_V8_VERSION=11.9.169.6 +ARG JAVET_V8_VERSION=12.0.267.8 FROM ${JAVET_REPO}:arm64-base-jvm diff --git a/docker/linux-arm64/build_artifact.Dockerfile b/docker/linux-arm64/build_artifact.Dockerfile index 168ec9a77..eab701780 100644 --- a/docker/linux-arm64/build_artifact.Dockerfile +++ b/docker/linux-arm64/build_artifact.Dockerfile @@ -18,13 +18,13 @@ # --build-arg JAVET_REPO=sjtucaocao/javet \ # --build-arg JAVET_NODE_VERSION=18.12.1 \ # --build-arg JAVET_V8_VERSION=10.8.168.20 \ -# --build-arg JAVET_VERSION=3.0.1 \ +# --build-arg JAVET_VERSION=3.0.2 \ # -f docker/linux-arm64/build_artifact.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet ARG JAVET_NODE_VERSION=18.12.1 ARG JAVET_V8_VERSION=10.8.168.20 -ARG JAVET_VERSION=3.0.1 +ARG JAVET_VERSION=3.0.2 FROM ${JAVET_REPO}:arm64-base-node_${JAVET_NODE_VERSION} as base-node diff --git a/docker/linux-x86_64/base_all_in_one.Dockerfile b/docker/linux-x86_64/base_all_in_one.Dockerfile index 2596e6dac..748d22871 100644 --- a/docker/linux-x86_64/base_all_in_one.Dockerfile +++ b/docker/linux-x86_64/base_all_in_one.Dockerfile @@ -13,10 +13,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Usage: docker build -t sjtucaocao/javet:3.0.1 -f docker/linux-x86_64/base_all_in_one.Dockerfile . +# Usage: docker build -t sjtucaocao/javet:3.0.2 -f docker/linux-x86_64/base_all_in_one.Dockerfile . -ARG JAVET_NODE_VERSION=20.9.0 -ARG JAVET_V8_VERSION=11.9.169.6 +ARG JAVET_NODE_VERSION=20.10.0 +ARG JAVET_V8_VERSION=12.0.267.8 FROM ubuntu:20.04 WORKDIR / diff --git a/docker/linux-x86_64/base_gradle.Dockerfile b/docker/linux-x86_64/base_gradle.Dockerfile index 97adbf122..c7fb3bb76 100644 --- a/docker/linux-x86_64/base_gradle.Dockerfile +++ b/docker/linux-x86_64/base_gradle.Dockerfile @@ -14,7 +14,7 @@ # limitations under the License. # Usage: docker build \ -# -t sjtucaocao/javet:x86_64-3.0.1 \ +# -t sjtucaocao/javet:x86_64-3.0.2 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ # -f docker/linux-x86_64/base_gradle.Dockerfile . diff --git a/docker/linux-x86_64/base_node.Dockerfile b/docker/linux-x86_64/base_node.Dockerfile index 4e3e66dab..f00dd65da 100644 --- a/docker/linux-x86_64/base_node.Dockerfile +++ b/docker/linux-x86_64/base_node.Dockerfile @@ -14,13 +14,13 @@ # limitations under the License. # Usage: docker build \ -# -t sjtucaocao/javet:x86_64-base-node_20.9.0 \ +# -t sjtucaocao/javet:x86_64-base-node_20.10.0 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ -# --build-arg JAVET_NODE_VERSION=20.9.0 \ +# --build-arg JAVET_NODE_VERSION=20.10.0 \ # -f docker/linux-x86_64/base_node.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet -ARG JAVET_NODE_VERSION=20.9.0 +ARG JAVET_NODE_VERSION=20.10.0 FROM ${JAVET_REPO}:x86_64-base-jvm diff --git a/docker/linux-x86_64/base_v8.Dockerfile b/docker/linux-x86_64/base_v8.Dockerfile index 685dee5ae..e60f1f33d 100644 --- a/docker/linux-x86_64/base_v8.Dockerfile +++ b/docker/linux-x86_64/base_v8.Dockerfile @@ -14,13 +14,13 @@ # limitations under the License. # Usage: docker build \ -# -t sjtucaocao/javet:x86_64-base-v8_11.9.169.6 \ +# -t sjtucaocao/javet:x86_64-base-v8_12.0.267.8 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ -# --build-arg JAVET_V8_VERSION=11.9.169.6 \ +# --build-arg JAVET_V8_VERSION=12.0.267.8 \ # -f docker/linux-x86_64/base_v8.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet -ARG JAVET_V8_VERSION=11.9.169.6 +ARG JAVET_V8_VERSION=12.0.267.8 FROM ${JAVET_REPO}:x86_64-base-jvm diff --git a/docker/linux-x86_64/build_all_in_one.Dockerfile b/docker/linux-x86_64/build_all_in_one.Dockerfile index 706534272..f5c5757ed 100644 --- a/docker/linux-x86_64/build_all_in_one.Dockerfile +++ b/docker/linux-x86_64/build_all_in_one.Dockerfile @@ -15,7 +15,7 @@ # Usage: docker build -t javet:local -f docker/linux-x86_64/build_all_in_one.Dockerfile . -FROM sjtucaocao/javet:3.0.1 +FROM sjtucaocao/javet:3.0.2 WORKDIR / # Copy Javet diff --git a/docker/linux-x86_64/build_artifact.Dockerfile b/docker/linux-x86_64/build_artifact.Dockerfile index f459c6e82..5b312acc0 100644 --- a/docker/linux-x86_64/build_artifact.Dockerfile +++ b/docker/linux-x86_64/build_artifact.Dockerfile @@ -18,13 +18,13 @@ # --build-arg JAVET_REPO=sjtucaocao/javet \ # --build-arg JAVET_NODE_VERSION=18.12.1 \ # --build-arg JAVET_V8_VERSION=10.8.168.20 \ -# --build-arg JAVET_VERSION=3.0.1 \ +# --build-arg JAVET_VERSION=3.0.2 \ # -f docker/linux-x86_64/build_artifact.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet ARG JAVET_NODE_VERSION=18.12.1 ARG JAVET_V8_VERSION=10.8.168.20 -ARG JAVET_VERSION=3.0.1 +ARG JAVET_VERSION=3.0.2 FROM ${JAVET_REPO}:x86_64-base-node_${JAVET_NODE_VERSION} as base-v8 diff --git a/docker/windows-x86_64/base.Dockerfile b/docker/windows-x86_64/base.Dockerfile index 04a33901d..d8b8b9e18 100644 --- a/docker/windows-x86_64/base.Dockerfile +++ b/docker/windows-x86_64/base.Dockerfile @@ -29,10 +29,10 @@ # The following dockerfile has been out of date because it still uses # Visual Studio 2019 Community. Please contact the maintainer if you want an upgrade. -# Usage: docker build -t sjtucaocao/javet-windows:3.0.1 -m 4G -f docker/windows-x86_64/base.Dockerfile . +# Usage: docker build -t sjtucaocao/javet-windows:3.0.2 -m 4G -f docker/windows-x86_64/base.Dockerfile . -ARG JAVET_NODE_VERSION=20.9.0 -ARG JAVET_V8_VERSION=11.9.169.6 +ARG JAVET_NODE_VERSION=20.10.0 +ARG JAVET_V8_VERSION=12.0.267.8 # https://hub.docker.com/_/microsoft-windows FROM mcr.microsoft.com/windows:20H2-amd64 diff --git a/docker/windows-x86_64/build.Dockerfile b/docker/windows-x86_64/build.Dockerfile index 124bab59c..b2b10339c 100644 --- a/docker/windows-x86_64/build.Dockerfile +++ b/docker/windows-x86_64/build.Dockerfile @@ -15,7 +15,7 @@ # Usage: docker build -t javet:local -f docker/windows-x86_64/build.Dockerfile . -FROM sjtucaocao/javet-windows:3.0.1 +FROM sjtucaocao/javet-windows:3.0.2 SHELL ["cmd", "/S", "/C"] WORKDIR / diff --git a/docs/_static/documentation_options.js b/docs/_static/documentation_options.js index fd5ac10f0..4e63c50e6 100644 --- a/docs/_static/documentation_options.js +++ b/docs/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '3.0.1', + VERSION: '3.0.2', LANGUAGE: 'en, zh-CN', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/docs/conf.py b/docs/conf.py index 8fefa731a..294e652f9 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -22,7 +22,7 @@ author = 'Sam Cao' # The full version, including alpha/beta/rc tags -release = '3.0.1' +release = '3.0.2' # -- General configuration --------------------------------------------------- diff --git a/docs/development/build.html b/docs/development/build.html index d4ea415ae..acacb1a47 100644 --- a/docs/development/build.html +++ b/docs/development/build.html @@ -6,7 +6,7 @@ - Build Javet - Javet 3.0.1 documentation + Build Javet - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
@@ -151,7 +151,7 @@
- Javet 3.0.1 documentation + Javet 3.0.2 documentation
diff --git a/docs/development/build.rst b/docs/development/build.rst index 14ff8e317..98f2b1ad2 100644 --- a/docs/development/build.rst +++ b/docs/development/build.rst @@ -27,7 +27,7 @@ Linux Environment * Ubuntu 22.04+ * CMake 3.25.1+ * JDK 8 -* Gradle 8.1+ +* Gradle 8.2+ * GCC 11+ * Python 3.9+ @@ -39,7 +39,7 @@ MacOS Environment * Xcode 11.4.1+ * Cmake 3.16+ * JDK 8 -* Gradle 8.1+ +* Gradle 8.2+ * Python 3.9+ Windows Environment @@ -50,7 +50,7 @@ Windows Environment * CMake 3.24+ (comes with Visual Studio 2022) * Latest Windows 10 SDK with WinDbg * JDK 8 -* Gradle 8.1+ +* Gradle 8.2+ * Python 3.9+ Android Environment @@ -59,7 +59,7 @@ Android Environment * Ubuntu 22.04+ or Ubuntu 22.04+ in the WSL2 on the Latest Windows 10 * CMake 3.25.1+ * JDK 8 -* Gradle 8.1+ +* Gradle 8.2+ * Python 3.9+ * Latest Android Studio (Optional) * Android NDK r25b diff --git a/docs/development/build_javet_from_scratch.html b/docs/development/build_javet_from_scratch.html index d52039b11..43eb9219d 100644 --- a/docs/development/build_javet_from_scratch.html +++ b/docs/development/build_javet_from_scratch.html @@ -6,7 +6,7 @@ - Build Javet from Scratch - Javet 3.0.1 documentation + Build Javet from Scratch - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
@@ -151,7 +151,7 @@
- Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
  • Know the Lock
  • Memory Management
  • Modularization
  • -
  • Javet Performance
  • Troubleshooting
      @@ -716,7 +715,7 @@

      Build Javet for Android

  • - + diff --git a/docs/development/build_javet_with_docker.html b/docs/development/build_javet_with_docker.html index f0de98787..b2eb5b779 100644 --- a/docs/development/build_javet_with_docker.html +++ b/docs/development/build_javet_with_docker.html @@ -6,7 +6,7 @@ - Build Javet with Docker - Javet 3.0.1 documentation + Build Javet with Docker - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
  • Know the Lock
  • Memory Management
  • Modularization
  • -
  • Javet Performance
  • Troubleshooting
  • @@ -490,7 +494,7 @@

    Build Javet for Android on Linux or Windows +

    diff --git a/docs/development/build_javet_with_docker.rst b/docs/development/build_javet_with_docker.rst index ca38b0e51..e1c52aea1 100644 --- a/docs/development/build_javet_with_docker.rst +++ b/docs/development/build_javet_with_docker.rst @@ -105,3 +105,8 @@ Build Javet for Android on Linux or Windows * Docker will pull the corresponding image (~11GB) from Docker Hub. * The actual build takes few minutes including pulling dependent libraries from Maven Central, building and testing. + +Linux arm64 Docker Files Deprecated +=================================== + +The V8 build process has been significantly changed since v12. That results in the deprecation of the corresponding docker files. diff --git a/docs/development/debug_with_chrome_developer_tools.html b/docs/development/debug_with_chrome_developer_tools.html index 0fe082b3c..7156438d4 100644 --- a/docs/development/debug_with_chrome_developer_tools.html +++ b/docs/development/debug_with_chrome_developer_tools.html @@ -6,7 +6,7 @@ - Debug with Chrome Developer Tools - Javet 3.0.1 documentation + Debug with Chrome Developer Tools - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
  • Know the Lock
  • Memory Management
  • Modularization
  • -
  • Javet Performance
  • Troubleshooting
      @@ -458,7 +457,7 @@

      Customization +

  • diff --git a/docs/development/design.html b/docs/development/design.html index 44f50c506..cce1359e0 100644 --- a/docs/development/design.html +++ b/docs/development/design.html @@ -6,7 +6,7 @@ - Javet Design - Javet 3.0.1 documentation + Javet Design - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
  • Know the Lock
  • Memory Management
  • Modularization
  • -
  • Javet Performance
  • Troubleshooting
      @@ -577,7 +576,7 @@

      Memory Leak Detection

  • - + diff --git a/docs/development/index.html b/docs/development/index.html index 5bafe1a64..dd92e315f 100644 --- a/docs/development/index.html +++ b/docs/development/index.html @@ -6,7 +6,7 @@ - Development - Javet 3.0.1 documentation + Development - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
  • Know the Lock
  • Memory Management
  • Modularization
  • -
  • Javet Performance
  • Troubleshooting
  • -
  • Javet Performance
  • +
  • Javet Performance +
  • Debug with Chrome Developer Tools
  • diff --git a/docs/development/performance.html b/docs/development/performance.html index c604022f9..5d9c5e9f5 100644 --- a/docs/development/performance.html +++ b/docs/development/performance.html @@ -6,7 +6,7 @@ - Javet Performance - Javet 3.0.1 documentation + Javet Performance - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
    @@ -136,7 +136,7 @@
    -
    - Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
  • Know the Lock
  • Memory Management
  • Modularization
  • -
  • Javet Performance
  • Troubleshooting
      @@ -293,7 +292,7 @@ -
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
      @@ -378,7 +377,7 @@

      FAQ#

      - + diff --git a/docs/faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed.html b/docs/faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed.html index 0e0a7b559..55ec35a70 100644 --- a/docs/faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed.html +++ b/docs/faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed.html @@ -6,7 +6,7 @@ - A dynamic link library (DLL) initialization routine failed - Javet 3.0.1 documentation + A dynamic link library (DLL) initialization routine failed - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
      @@ -151,7 +151,7 @@
      - Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
    • Know the Lock
    • Memory Management
    • Modularization
    • -
    • Javet Performance
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
      @@ -348,7 +347,7 @@

      Major Features -
    • Node.js v20.9.0 + V8 v11.9.169.6

    • +
    • Node.js v20.10.0 + V8 v12.0.267.8

    • Dynamic switch between Node.js and V8 mode (Which mode do you prefer?)

    • Polyfill V8 mode with Javenode

    • V8 API exposure in JVM

    • @@ -370,40 +369,40 @@

      Maven#< <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet</artifactId> - <version>3.0.1</version> + <version>3.0.2</version> </dependency> <!-- Linux (arm64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-linux-arm64</artifactId> - <version>3.0.1</version> + <version>3.0.2</version> </dependency> <!-- Mac OS (x86_64 and arm64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-macos</artifactId> - <version>3.0.1</version> + <version>3.0.2</version> </dependency>

      Gradle Kotlin DSL#

      -
      implementation("com.caoccao.javet:javet:3.0.1") // Linux and Windows (x86_64)
      -implementation("com.caoccao.javet:javet-linux-arm64:3.0.1") // Linux (arm64)
      -implementation("com.caoccao.javet:javet-macos:3.0.1") // Mac OS (x86_64 and arm64)
      -implementation("com.caoccao.javet:javet-android:3.0.1") // Android (arm, arm64, x86 and x86_64)
      +
      implementation("com.caoccao.javet:javet:3.0.2") // Linux and Windows (x86_64)
      +implementation("com.caoccao.javet:javet-linux-arm64:3.0.2") // Linux (arm64)
      +implementation("com.caoccao.javet:javet-macos:3.0.2") // Mac OS (x86_64 and arm64)
      +implementation("com.caoccao.javet:javet-android:3.0.2") // Android (arm, arm64, x86 and x86_64)
       

      Gradle Groovy DSL#

      -
      implementation 'com.caoccao.javet:javet:3.0.1' // Linux and Windows (x86_64)
      -implementation 'com.caoccao.javet:javet-linux-arm64:3.0.1' // Linux (arm64)
      -implementation 'com.caoccao.javet:javet-macos:3.0.1' // Mac OS (x86_64 and arm64)
      -implementation 'com.caoccao.javet:javet-android:3.0.1' // Android (arm, arm64, x86 and x86_64)
      +
      implementation 'com.caoccao.javet:javet:3.0.2' // Linux and Windows (x86_64)
      +implementation 'com.caoccao.javet:javet-linux-arm64:3.0.2' // Linux (arm64)
      +implementation 'com.caoccao.javet:javet-macos:3.0.2' // Mac OS (x86_64 and arm64)
      +implementation 'com.caoccao.javet:javet-android:3.0.2' // Android (arm, arm64, x86 and x86_64)
       
      @@ -429,7 +428,7 @@

      Sponsors

      License#

      -

      APACHE LICENSE, VERSION 2.0

      +

      APACHE LICENSE, VERSION 2.0

      Blog#

      @@ -437,6 +436,7 @@

      Blog#

      Performance Comparison of GraalJS, Javet and Nashorn

    • How to Elegantly Expose JsonNode in V8

    • How to Compromise V8 on JVM

    • +
    • Is TypeScript a Good Choice for a Script Engine?

    @@ -524,7 +524,7 @@

    Documents + diff --git a/docs/index.rst b/docs/index.rst index 063dcd8b5..edea2b0b4 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,6 +1,6 @@ .. include:: ../README.rst :start-line: 0 - :end-line: 142 + :end-line: 143 .. toctree:: :maxdepth: 2 diff --git a/docs/reference/converters/bridge_converter.html b/docs/reference/converters/bridge_converter.html index a34023963..09e0bfa1f 100644 --- a/docs/reference/converters/bridge_converter.html +++ b/docs/reference/converters/bridge_converter.html @@ -6,7 +6,7 @@ - Bridge Converter - Javet 3.0.1 documentation + Bridge Converter - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
    @@ -151,7 +151,7 @@
    - Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
  • Know the Lock
  • Memory Management
  • Modularization
  • -
  • Javet Performance
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
      @@ -301,6 +300,14 @@

      Release Notes 3.0.x#

      +
      +

      3.0.2 V8 v12.0#

      +
        +
      • Upgraded V8 to v12.0.267.8 (2023-11-21)

      • +
      • Upgraded Node.js to v20.10.0 (2023-11-22)

      • +
      • Fixed Linux arm64 build addressing the changes in V8 v12

      • +
      +

      3.0.1 V8 v11.9#

        @@ -382,6 +389,7 @@

        3.0.0 V8 v11.8
      • Troubleshooting
          @@ -337,7 +336,7 @@ - + diff --git a/docs/searchindex.js b/docs/searchindex.js index a99f22b17..0edefca2e 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["development/build", "development/build_javet_from_scratch", "development/build_javet_with_docker", "development/debug_with_chrome_developer_tools", "development/design", "development/index", "development/performance", "development/test", "development/tools", "faq/background/history_with_j2v8", "faq/background/index", "faq/background/what_is_the_motivation", "faq/development/how_to_think_in_javet", "faq/development/index", "faq/development/where_are_es6_api_in_v8_mode", "faq/development/where_are_the_examples", "faq/development/why_is_the_inspector_disabled_in_node_js_mode", "faq/environment/can_javet_support_legacy_linux", "faq/environment/index", "faq/index", "faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed", "faq/troubleshooting/can_i18n_be_supported", "faq/troubleshooting/can_i_debug_javet_in_chrome_dev_tools", "faq/troubleshooting/index", "faq/troubleshooting/why_node_js_crashes_when_being_closed", "index", "reference/converters/bridge_converter", "reference/converters/custom_converter", "reference/converters/index", "reference/converters/object_converter", "reference/converters/primitive_converter", "reference/converters/proxy_converter", "reference/index", "reference/javadoc/index", "reference/resource_management/index", "reference/resource_management/load_and_unload", "reference/resource_management/lock", "reference/resource_management/memory_management", "reference/resource_management/modularization", "reference/resource_management/performance", "reference/tips/best_practices", "reference/tips/index", "reference/todo_list", "reference/troubleshooting/error_codes", "reference/troubleshooting/index", "reference/troubleshooting/logging", "reference/troubleshooting/termination", "reference/v8_values/index", "reference/v8_values/v8_collection", "reference/v8_values/v8_function", "reference/v8_values/v8_promise", "release_notes/index", "release_notes/release_notes_0_7", "release_notes/release_notes_0_8", "release_notes/release_notes_0_9", "release_notes/release_notes_1_0", "release_notes/release_notes_1_1", "release_notes/release_notes_2_0", "release_notes/release_notes_2_1", "release_notes/release_notes_2_2", "release_notes/release_notes_3_0", "tutorial/advanced/expose_json_node_in_v8", "tutorial/advanced/index", "tutorial/advanced/interact_with_node_js", "tutorial/advanced/java_and_javascript_interop", "tutorial/advanced/object_converter", "tutorial/basic/engine_pool", "tutorial/basic/hello_javet", "tutorial/basic/index", "tutorial/basic/installation", "tutorial/basic/interception", "tutorial/basic/javet_shell", "tutorial/basic/node_js_mode_and_v8_mode", "tutorial/basic/polyfill", "tutorial/basic/spring_integration", "tutorial/index", "tutorial/migration_guides/index", "tutorial/migration_guides/migrate_from_j2v8"], "filenames": ["development/build.rst", "development/build_javet_from_scratch.rst", "development/build_javet_with_docker.rst", "development/debug_with_chrome_developer_tools.rst", "development/design.rst", "development/index.rst", "development/performance.rst", "development/test.rst", "development/tools.rst", "faq/background/history_with_j2v8.rst", "faq/background/index.rst", "faq/background/what_is_the_motivation.rst", "faq/development/how_to_think_in_javet.rst", "faq/development/index.rst", "faq/development/where_are_es6_api_in_v8_mode.rst", "faq/development/where_are_the_examples.rst", "faq/development/why_is_the_inspector_disabled_in_node_js_mode.rst", "faq/environment/can_javet_support_legacy_linux.rst", "faq/environment/index.rst", "faq/index.rst", "faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed.rst", "faq/troubleshooting/can_i18n_be_supported.rst", "faq/troubleshooting/can_i_debug_javet_in_chrome_dev_tools.rst", "faq/troubleshooting/index.rst", "faq/troubleshooting/why_node_js_crashes_when_being_closed.rst", "index.rst", "reference/converters/bridge_converter.rst", "reference/converters/custom_converter.rst", "reference/converters/index.rst", "reference/converters/object_converter.rst", "reference/converters/primitive_converter.rst", "reference/converters/proxy_converter.rst", "reference/index.rst", "reference/javadoc/index.rst", "reference/resource_management/index.rst", "reference/resource_management/load_and_unload.rst", "reference/resource_management/lock.rst", "reference/resource_management/memory_management.rst", "reference/resource_management/modularization.rst", "reference/resource_management/performance.rst", "reference/tips/best_practices.rst", "reference/tips/index.rst", "reference/todo_list.rst", "reference/troubleshooting/error_codes.rst", "reference/troubleshooting/index.rst", "reference/troubleshooting/logging.rst", "reference/troubleshooting/termination.rst", "reference/v8_values/index.rst", "reference/v8_values/v8_collection.rst", "reference/v8_values/v8_function.rst", "reference/v8_values/v8_promise.rst", "release_notes/index.rst", "release_notes/release_notes_0_7.rst", "release_notes/release_notes_0_8.rst", "release_notes/release_notes_0_9.rst", "release_notes/release_notes_1_0.rst", "release_notes/release_notes_1_1.rst", "release_notes/release_notes_2_0.rst", "release_notes/release_notes_2_1.rst", "release_notes/release_notes_2_2.rst", "release_notes/release_notes_3_0.rst", "tutorial/advanced/expose_json_node_in_v8.rst", "tutorial/advanced/index.rst", "tutorial/advanced/interact_with_node_js.rst", "tutorial/advanced/java_and_javascript_interop.rst", "tutorial/advanced/object_converter.rst", "tutorial/basic/engine_pool.rst", "tutorial/basic/hello_javet.rst", "tutorial/basic/index.rst", "tutorial/basic/installation.rst", "tutorial/basic/interception.rst", "tutorial/basic/javet_shell.rst", "tutorial/basic/node_js_mode_and_v8_mode.rst", "tutorial/basic/polyfill.rst", "tutorial/basic/spring_integration.rst", "tutorial/index.rst", "tutorial/migration_guides/index.rst", "tutorial/migration_guides/migrate_from_j2v8.rst"], "titles": ["Build Javet", "Build Javet from Scratch", "Build Javet with Docker", "Debug with Chrome Developer Tools", "Javet Design", "Development", "Javet Performance", "Test Javet", "Development Tools", "History with J2V8", "Background", "What is the Motivation?", "How to Think in Javet?", "Development", "Where are ES6 API in V8 Mode?", "Where are the Examples?", "Why is the Inspector Disabled in Node.js Mode?", "Can Javet Support Legacy Linux?", "Environment", "FAQ", "A dynamic link library (DLL) initialization routine failed", "Can i18n be Supported?", "Can I Debug Javet in Chrome DevTools?", "Troubleshooting", "Why Node.js Crashes When being Closed?", "Javet", "Bridge Converter", "Custom Converter", "Converters", "Object Converter", "Primitive Converter", "Proxy Converter", "Reference", "API Reference", "Resource Management", "Load and Unload", "Know the Lock", "Memory Management", "Modularization", "Javet Performance", "Best Practices", "Tips", "TODO List", "Error Codes", "Troubleshooting", "Logging", "Termination", "V8 Values", "V8 Collection", "V8 Function", "V8 Promise", "Release Notes", "Release Notes 0.7.x", "Release Notes 0.8.x", "Release Notes 0.9.x", "Release Notes 1.0.x", "Release Notes 1.1.x", "Release Notes 2.0.x", "Release Notes 2.1.x", "Release Notes 2.2.x", "Release Notes 3.0.x", "Expose JsonNode in V8", "Advanced", "Interact with Node.js", "Java and JavaScript Interop", "Object Converter", "Javet Engine Pool", "Hello Javet", "Basic", "Installation", "Interception", "Javet Shell", "Node.js Mode and V8 Mode", "Polyfill", "Spring Integration", "Tutorial", "Migration Guides", "Migrate from J2V8"], "terms": {"It": [0, 2, 4, 9, 12, 16, 21, 25, 27, 28, 31, 36, 37, 38, 39, 40, 49, 66, 71, 72, 77], "": [0, 2, 4, 9, 11, 24, 27, 31, 36, 37, 38, 39, 40, 43, 49, 50, 61, 63, 65, 72, 77], "quit": [0, 4, 11, 12, 28, 31, 37, 45, 46, 49, 61, 63, 66, 77], "hard": [0, 9, 50, 77], "develop": [0, 19, 22, 25, 43, 50, 52, 61, 77], "successfulli": [0, 2, 3], "variou": [0, 59, 77], "reason": [0, 4, 9, 21, 24, 43, 50, 63, 77], "node": [0, 2, 3, 5, 7, 9, 13, 14, 19, 20, 21, 23, 25, 35, 36, 37, 39, 42, 43, 49, 50, 51, 54, 56, 58, 59, 60, 61, 62, 66, 68, 69, 71, 74, 75], "j": [0, 2, 5, 7, 9, 13, 14, 19, 20, 21, 23, 25, 35, 36, 37, 39, 42, 43, 49, 50, 51, 52, 54, 56, 58, 59, 60, 62, 66, 68, 69, 75], "need": [0, 3, 9, 27, 28, 29, 31, 36, 37, 38, 49, 50, 61, 64, 69, 77], "built": [0, 2, 3, 7, 26, 29, 37, 39, 43, 46, 49, 50, 53, 54, 58, 61, 77], "static": [0, 1, 16, 27, 49, 54, 56, 63], "librari": [0, 2, 3, 4, 7, 12, 19, 21, 23, 38, 43, 45, 49, 54], "monolith": 0, "everi": [0, 4, 12, 28, 36, 37, 49], "o": [0, 2, 4, 25, 36, 43, 49, 61, 77], "platform": [0, 5], "ha": [0, 4, 8, 9, 12, 16, 27, 29, 31, 35, 37, 38, 45, 48, 49, 50, 53, 61, 77], "its": [0, 4, 9, 31, 36, 37, 38, 49, 50], "own": [0, 4, 9, 27, 29, 31, 35, 37, 38, 49, 50], "pitfal": 0, "which": [0, 3, 4, 7, 9, 12, 15, 17, 24, 25, 28, 29, 31, 35, 37, 38, 39, 46, 49, 61, 64, 70, 72, 73, 77], "usual": [0, 27, 31, 38, 46, 49, 50, 63], "make": [0, 1, 2, 16, 28, 29, 37, 38, 50, 63, 73, 77], "frustrat": [0, 9], "even": [0, 9, 77], "desper": 0, "here": [0, 3, 4, 9, 11, 27, 31, 35, 37, 38, 39, 49, 50, 63, 64, 65], "ar": [0, 1, 2, 3, 4, 8, 9, 12, 13, 17, 19, 24, 25, 26, 27, 28, 29, 30, 31, 35, 36, 37, 38, 40, 43, 46, 49, 50, 52, 53, 54, 61, 63, 64, 65, 69, 70, 72, 77], "3": [0, 1, 5, 9, 17, 24, 25, 26, 31, 35, 38, 39, 48, 49, 51, 67, 69, 70, 71], "wai": [0, 4, 12, 24, 25, 26, 27, 35, 37, 38, 40, 46, 49, 50, 54, 61, 63, 66, 70, 74], "docker": [0, 5, 9], "from": [0, 2, 4, 5, 9, 11, 15, 16, 17, 24, 28, 31, 36, 38, 39, 40, 43, 46, 49, 50, 53, 54, 55, 56, 61, 63, 64, 66, 67, 70, 71, 75, 76], "scratch": [0, 5, 11], "all": [0, 1, 3, 4, 9, 24, 26, 27, 29, 31, 35, 37, 38, 49, 53, 55, 61, 63, 65, 77], "them": [0, 3, 31, 37, 38, 49, 61], "share": [0, 1, 4, 36, 38, 49, 50, 63, 77], "same": [0, 4, 16, 36, 37, 38, 40, 49, 50, 61, 77], "next": [0, 28, 49], "section": [0, 38, 49], "ubuntu": [0, 2, 17, 38, 53, 56, 60, 69], "22": [0, 55, 60, 69], "04": [0, 2, 17, 52, 53, 56, 58, 60, 69], "cmake": [0, 1, 9], "25": [0, 55, 57, 60], "1": [0, 4, 9, 12, 17, 25, 26, 27, 29, 31, 35, 38, 39, 40, 46, 48, 49, 51, 61, 64, 65, 69, 70, 71, 72, 73, 77], "jdk": [0, 5, 27, 45, 61], "8": [0, 3, 5, 9, 17, 27, 37, 39, 51, 55, 58, 61, 63, 69], "gradl": [0, 1, 2, 5, 9, 31], "gcc": [0, 17, 53, 60], "11": [0, 27, 55, 56, 57], "python": [0, 1, 5], "9": [0, 9, 17, 25, 51, 63], "catalina": [0, 69], "latest": [0, 2, 72], "brew": 0, "xcode": 0, "4": [0, 9, 31, 35, 37, 38, 39, 48, 49, 51, 63, 70, 71], "16": [0, 17, 37, 39, 53, 54, 56, 57, 58, 59, 69], "10": [0, 2, 37, 39, 46, 55, 60, 61, 69], "visual": [0, 5, 57, 58], "studio": [0, 5, 57, 58], "2022": [0, 5, 56, 57, 58], "commun": [0, 3, 5, 9, 16, 25], "24": [0, 53, 58, 60, 69], "come": [0, 4, 36, 38, 39], "sdk": [0, 45, 74], "windbg": 0, "wsl2": [0, 2], "option": [0, 5, 16, 30, 38, 40, 49, 54, 56, 60, 61, 70, 72], "ndk": [0, 56], "r25b": 0, "30": [0, 57], "javet_hom": [0, 1], "i": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 17, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 35, 36, 37, 38, 39, 40, 43, 45, 46, 48, 50, 53, 54, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 74, 77], "home": 0, "directori": [0, 4, 38, 73], "node_hom": [0, 1], "v8_home": [0, 1], "depot_tools_hom": [0, 1], "googl": [0, 3], "depot": 0, "tool": [0, 1, 2, 5, 17, 22, 25, 52], "android_ndk_hom": [0, 1], "android_sdk_hom": 0, "descript": [0, 31, 37], "custom": [0, 4, 5, 28, 38, 40, 49, 53, 54, 56], "libcxx": 0, "off": [0, 1, 3, 4, 37], "The": [0, 1, 2, 3, 4, 7, 9, 12, 15, 16, 20, 24, 26, 27, 28, 31, 35, 36, 37, 38, 43, 46, 49, 50, 61, 63, 64, 69, 70, 71, 72, 77], "offici": [0, 1, 9, 15, 17, 25], "releas": [0, 1, 4, 9, 25, 37, 43, 77], "doesn": [0, 3, 4, 9, 29, 31, 35, 36, 37, 38, 43, 45, 46, 49, 74, 77], "t": [0, 3, 4, 9, 16, 24, 25, 27, 28, 29, 31, 35, 36, 37, 38, 43, 45, 46, 49, 71, 72, 74, 77], "support": [0, 1, 2, 4, 8, 9, 16, 18, 19, 23, 25, 29, 30, 31, 35, 37, 38, 43, 46, 48, 49, 53, 54, 55, 56, 57, 59, 60, 69, 72, 77], "debug": [0, 4, 5, 16, 19, 23, 25, 45, 49], "extern": [0, 37], "startup": 0, "data": [0, 4, 28, 37, 38, 49, 52, 57], "i18n": [0, 1, 19, 23, 43, 56], "pleas": [0, 1, 2, 3, 4, 11, 16, 17, 21, 22, 25, 28, 31, 35, 36, 37, 38, 40, 46, 49, 50, 51, 61, 64, 65, 66, 67, 69, 70, 71, 73, 77], "contact": [0, 1, 9, 16, 17, 21, 51, 69, 77], "maintain": [0, 16, 17, 21, 51, 69, 77], "privat": [0, 16, 17, 21, 27, 29, 31, 49, 61, 69, 70], "thi": [0, 3, 4, 9, 11, 12, 17, 20, 24, 25, 27, 28, 29, 31, 35, 36, 37, 38, 50, 56, 61, 63, 64, 70, 72, 77], "pointer": [0, 37, 49], "compress": 0, "sandbox": 0, "snapshot": [0, 17, 57], "follow": [1, 2, 3, 4, 15, 17, 21, 24, 25, 27, 29, 37, 38, 40, 43, 45, 48, 49, 50, 61, 63, 70, 72], "guid": [1, 25, 75], "If": [1, 2, 12, 24, 25, 28, 29, 30, 31, 37, 38, 40, 46, 49, 69, 70, 71, 77], "you": [1, 2, 3, 8, 9, 12, 15, 22, 24, 25, 27, 31, 36, 37, 45, 49, 50, 51, 69, 73, 74, 77], "face": [1, 4], "ani": [1, 9, 28, 29, 30, 31, 38, 43, 45, 46, 49, 77], "issu": [1, 4, 11, 24, 36, 37, 38, 40, 53, 54, 55, 58, 60], "mai": [1, 2, 3, 4, 9, 12, 15, 24, 25, 26, 28, 31, 35, 36, 37, 38, 40, 45, 46, 49, 74], "sjtucaocao": [1, 2, 25], "clone": [1, 2, 57], "sourc": [1, 3, 16, 28, 36, 38, 43, 46, 61, 64, 65, 66, 67, 70, 71, 73, 77], "code": [1, 3, 4, 9, 12, 16, 27, 28, 29, 36, 37, 38, 39, 40, 44, 46, 50, 54, 55, 59, 61, 64, 65, 66, 67, 70, 71, 73, 77], "checkout": 1, "proper": 1, "version": [1, 3, 4, 8, 11, 25, 31, 38, 51, 69, 72], "also": [1, 2, 4, 9, 11, 12, 28, 30, 31, 35, 36, 37, 38, 45, 49, 50, 63, 77], "sure": [1, 2, 9, 16, 28, 37, 38, 63, 73], "arg": [1, 27, 49, 63], "gn": 1, "file": [1, 4, 9, 21, 37, 38, 50, 63, 73], "look": [1, 4, 9, 11, 38, 54], "like": [1, 3, 9, 11, 12, 25, 38, 40, 43, 49, 56, 71], "is_debug": 1, "fals": [1, 16, 26, 28, 31, 35, 37, 38, 49, 63, 64], "target_cpu": 1, "v8_monolith": 1, "true": [1, 11, 16, 26, 28, 31, 35, 37, 38, 46, 49, 61, 63, 64, 65, 71], "v8_use_external_startup_data": 1, "is_component_build": 1, "v8_enable_i18n_support": 1, "v8_enable_pointer_compress": 1, "v8_static_librari": 1, "symbol_level": 1, "0": [1, 3, 9, 17, 25, 26, 27, 29, 31, 37, 38, 40, 46, 48, 49, 51, 61, 63, 65, 69, 70, 73, 77], "use_custom_libcxx": 1, "v8_enable_sandbox": 1, "x64": [1, 38], "To": [1, 3, 9, 21, 28, 35, 42, 64], "enabl": [1, 2, 3, 12, 16, 21, 31, 37, 49, 50, 53, 54, 64], "set": [1, 3, 4, 7, 9, 12, 26, 27, 28, 29, 31, 35, 37, 38, 45, 48, 50, 53, 59, 61, 63, 64, 65, 70], "export": [1, 38], "path": [1, 17, 35, 38, 43, 59, 63], "cd": [1, 2, 38], "ninja": 1, "c": [1, 31, 38, 49, 56, 57, 58, 61, 65], "out": [1, 25, 37, 38, 43, 46, 61, 63, 64, 65, 67, 70, 71, 77], "python3": [1, 9], "script": [1, 4, 9, 12, 38, 40, 46, 49, 53, 57, 66, 71, 73], "patch_v8_build": 1, "py": 1, "p": [1, 31], "requir": [1, 8, 12, 35, 38, 39, 40, 46, 49, 50, 63], "depot_tools_win_toolchain": 1, "gen": 1, "id": [1, 3, 4, 43, 49, 69], "v": [1, 5, 9, 25, 38], "solut": [1, 11, 29, 49], "dev": [1, 39], "v8gen": 1, "arm": [1, 25, 55, 69], "target_o": 1, "v8_target_cpu": 1, "ia32": 1, "x86": [1, 25, 54, 55, 69], "A": [1, 4, 19, 23, 27, 38, 49], "few": [1, 2, 3, 8, 9, 11, 12, 27, 28, 31, 37, 49, 52, 53, 60, 64, 65, 71], "certain": [1, 3, 4, 12, 49, 50, 54], "warn": [1, 45, 53], "error": [1, 9, 35, 38, 44, 45, 49, 50, 54, 55, 56, 59], "so": [1, 2, 4, 7, 9, 12, 14, 16, 17, 24, 26, 27, 28, 29, 31, 35, 36, 37, 38, 40, 45, 49, 50, 57, 61, 63, 65, 69, 73, 74, 77], "msvc": [1, 38], "stop": [1, 9, 58], "compil": [1, 4, 31, 38, 43, 49, 60, 64, 77], "turn": [1, 3, 4, 37, 53, 60], "those": [1, 3, 4, 12, 24, 37, 38, 49], "lt": 1, "patch_node_build": 1, "configur": 1, "without": [1, 2, 3, 4, 24, 29, 31, 35, 36, 49, 55, 59, 61, 77], "intl": 1, "j4": 1, "first": [1, 3, 35, 38, 49, 52, 77], "thin": 1, "disabl": [1, 12, 13, 19, 31, 37, 40, 46, 50, 57], "second": [1, 3, 15, 21, 38, 46, 49], "mani": [1, 9, 11, 37, 49, 77], "posit": [1, 39, 49], "independ": [1, 39], "link": [1, 19, 23, 37, 38], "phase": 1, "broken": [1, 9, 37, 49], "fpic": 1, "usr": [1, 17], "bin": [1, 17], "ld": 1, "libnod": 1, "node_bind": 1, "reloc": 1, "r_x86_64_tpoff32": 1, "against": [1, 49], "_zn4nodel23thread_local_modpending": 1, "can": [1, 2, 3, 4, 12, 18, 19, 23, 24, 29, 31, 37, 38, 40, 50, 63, 64, 72, 73, 74, 77], "us": [1, 3, 4, 8, 11, 24, 28, 30, 35, 37, 38, 39, 40, 45, 49, 66, 77], "when": [1, 4, 9, 19, 20, 23, 31, 37, 38, 40, 46, 49, 50, 56, 58, 77], "object": [1, 4, 12, 24, 37, 40, 48, 53, 54, 55, 56, 61, 62, 64, 66, 70, 75, 77], "recompil": 1, "vcbuild": 1, "bat": 1, "vs2022": 1, "onc": [1, 27, 28, 37, 38, 43, 63], "readi": 1, "navig": [1, 38], "cpp": 1, "access": [1, 12, 31, 35, 37, 43, 49], "execut": [1, 3, 4, 31, 38, 39, 40, 43, 46, 48, 49, 50, 61, 66, 67, 71], "correspond": [1, 2, 4, 24, 37, 38, 40, 49], "command": [1, 71], "sh": [1, 38], "dnode_dir": 1, "dv8_dir": 1, "maco": [1, 9, 25, 35, 69], "cmd": [1, 38], "after": [1, 3, 9, 29, 31, 35, 38, 40, 46, 49, 50, 61, 77], "while": [1, 2, 31, 46, 63, 71], "place": [1, 4, 9, 24, 28, 37, 77], "folder": [1, 40, 63], "src": 1, "main": [1, 27, 31, 64], "resourc": [1, 4, 12, 15, 25, 28, 32, 36, 38, 43, 46, 50, 61, 67, 70, 71, 74], "libjavet": [1, 35, 38], "dylib": 1, "dll": [1, 19, 23, 38], "arch": [1, 25, 55, 69], "dcmake_android_ndk": 1, "dcmake_android_arch": 1, "jnilib": 1, "armeabi": 1, "v7a": 1, "v8a": 1, "mode": [1, 5, 7, 13, 17, 19, 20, 21, 24, 25, 35, 37, 39, 40, 49, 50, 53, 54, 56, 59, 66, 68, 69, 75, 77], "append": [1, 31, 64], "denable_i18n": 1, "test": [1, 2, 4, 5, 9, 15, 16, 17, 25, 31, 36, 38, 39, 49, 50, 52, 63, 69, 73], "jar": [1, 4, 9], "lib": [1, 38, 55], "aar": 1, "output": [1, 27, 49, 61, 63, 64, 65], "As": [2, 3, 4, 12, 26, 29, 31, 35, 37, 45, 49, 74], "regard": [2, 3], "mac": [2, 9, 25, 77], "contributor": 2, "welcom": [2, 71], "interest": [2, 9], "Or": [2, 16], "have": [2, 9, 16, 25, 27, 29, 31, 37, 38, 49, 50, 73, 77], "wait": [2, 3, 55, 63], "long": [2, 29, 30, 31, 36, 49, 61], "20": [2, 24, 53, 55, 56, 57, 58, 59, 69], "git": 2, "network": 2, "connect": [2, 3, 4, 66], "up": [2, 3, 4, 12, 31, 36, 37, 38, 54, 55, 63], "run": [2, 4, 27, 31, 36, 37, 38, 39, 46, 73], "repositori": [2, 17], "imag": [2, 9], "avail": [2, 3, 4, 20, 35, 43, 49, 72], "http": [2, 3, 4, 6, 25, 39, 63], "com": [2, 6, 25, 37, 38, 45, 69], "r": [2, 17, 64], "caoccao": [2, 6, 25, 37, 38, 45, 69], "f": [2, 4, 38], "x86_64": [2, 25, 38, 55, 69], "build_artifact": 2, "dockerfil": [2, 54, 58], "pull": 2, "5gb": 2, "actual": [2, 3, 4, 9, 12, 28, 36, 37, 38, 43, 49, 61, 63], "take": [2, 4, 9, 11, 24, 30, 31, 37, 38, 49, 53, 55, 61, 63, 66, 71, 77], "minut": [2, 4, 28], "includ": [2, 9, 26, 35, 49, 77], "depend": [2, 4, 9, 31, 38, 45, 49, 74], "maven": [2, 5, 31], "central": [2, 8], "instruct": [2, 37], "insid": [2, 3, 4, 31, 37, 50], "perform": [2, 3, 4, 5, 9, 24, 25, 26, 28, 29, 34, 35, 37, 38, 40, 49, 52, 55, 59, 60, 61, 63, 66, 70, 77], "base_jvm": 2, "base": [2, 7, 31, 37, 49, 54, 56, 57, 61, 77], "jvm": [2, 4, 21, 25, 28, 31, 35, 36, 52, 63, 65, 66, 72, 77], "base_nod": 2, "base_v8": 2, "v8": [2, 3, 5, 7, 9, 11, 12, 13, 19, 21, 24, 25, 28, 29, 31, 32, 35, 36, 39, 40, 42, 43, 46, 51, 62, 63, 64, 65, 66, 68, 69, 70, 71, 74, 75], "base_gradl": 2, "final": [2, 27, 28, 29, 31, 37, 38, 43, 46, 49, 50, 61], "artifact": 2, "base_all_in_on": 2, "build_all_in_on": 2, "updat": [2, 17, 35, 49, 53, 54, 55, 56, 58], "daemon": [2, 37, 46], "json": [2, 3, 26, 38, 61, 65], "storag": 2, "opt": 2, "dm": 2, "bases": 2, "120gb": 2, "size": [2, 4, 21, 26, 29, 35, 37, 43], "restart": [2, 77], "m": [2, 61], "4g": 2, "roughli": 2, "5": [2, 3, 24, 37, 38, 51, 63, 69, 70, 71], "hour": [2, 9], "internet": 2, "stabl": 2, "dai": [2, 40], "just": [2, 3, 9, 12, 27, 29, 35, 36, 37, 38, 39, 49, 64, 77], "fail": [2, 19, 23, 38, 43, 46, 49, 56], "forev": [2, 37], "larg": [2, 16], "60": 2, "gb": 2, "effici": [2, 15, 54], "push": [2, 48, 49, 50, 59], "Of": [2, 37, 38, 49, 77], "cours": [2, 37, 38, 49, 77], "wise": [2, 17, 49, 61, 69], "workflow": 2, "11gb": 2, "devtool": [3, 19, 23, 25], "aka": 3, "web": [3, 37, 40], "directli": [3, 31, 35, 37, 49, 61, 64, 77], "browser": [3, 40], "help": [3, 40], "edit": [3, 49], "page": 3, "fly": 3, "diagnos": 3, "problem": [3, 9, 27, 49], "quickli": 3, "ultim": 3, "build": [3, 4, 5, 8, 11, 16, 17, 21, 25, 38, 49, 53, 54, 58, 69], "better": [3, 4, 35, 36, 39, 49, 61], "websit": 3, "faster": 3, "javet": [3, 5, 8, 9, 13, 14, 15, 16, 18, 19, 20, 23, 24, 26, 27, 28, 29, 31, 34, 37, 40, 42, 43, 45, 46, 48, 49, 50, 52, 54, 59, 63, 64, 65, 68, 69, 70, 72, 73, 74, 75], "ship": 3, "demo": 3, "applic": [3, 4, 12, 16, 24, 27, 28, 29, 31, 35, 36, 37, 38, 39, 46, 49, 50, 63, 64, 66, 70, 71, 77], "demonstr": 3, "how": [3, 4, 7, 11, 13, 15, 19, 24, 25, 27, 35, 36, 38, 54, 61, 77], "work": [3, 4, 9, 12, 24, 25, 35, 36, 37, 38, 49, 50, 61, 63, 69, 77], "live": [3, 25, 36, 37, 49], "normal": [3, 37, 46, 63], "java": [3, 4, 9, 14, 25, 27, 28, 31, 35, 36, 37, 38, 50, 55, 62, 63, 65, 70, 73, 75, 77], "consol": [3, 4, 27, 49, 50, 61, 63, 66, 67, 70, 71], "an": [3, 4, 9, 11, 12, 14, 25, 26, 28, 31, 35, 36, 37, 38, 39, 40, 45, 46, 49, 50, 65, 70, 71, 72], "interact": [3, 4, 27, 53, 62, 71, 75], "appear": [3, 49], "doe": [3, 4, 16, 24, 35, 37, 46, 49, 77], "arbitrari": [3, 4, 12, 28, 29, 31, 64, 77], "what": [3, 9, 10, 15, 19, 28, 37, 38, 61, 77], "done": [3, 77], "let": [3, 9, 24, 27, 31, 38, 61, 63, 71], "undefin": [3, 28, 31, 38, 49, 61, 71], "b": [3, 26, 28, 31, 38, 49, 61, 64, 65, 71, 73], "7": [3, 17, 37, 51, 63, 69, 70, 71, 77], "inspect": [3, 16, 49], "remot": 3, "target": [3, 7, 28, 29, 61, 77], "click": 3, "voil\u00e0": [3, 31, 63], "screenshot": 3, "show": [3, 4, 31, 37, 38, 49, 50], "evalu": [3, 4, 38, 56, 77], "auto": [3, 17, 35, 53], "complet": [3, 4, 7, 29, 31, 37, 38, 40, 46, 49, 54, 55, 63, 64, 69, 77], "enjoi": 3, "listen": [3, 24, 37, 50, 63], "port": [3, 51, 63], "9229": 3, "default": [3, 4, 21, 28, 29, 31, 35, 37, 38, 46, 49, 64, 70, 72], "becaus": [3, 4, 8, 9, 16, 24, 25, 26, 27, 28, 29, 31, 35, 36, 37, 39, 40, 43, 49, 50, 61, 66, 72, 73, 77], "constantli": 3, "queri": 3, "127": [3, 37], "tell": [3, 24, 31, 35, 37, 38, 63, 70], "flavor": [3, 15, 49, 71], "via": [3, 4, 31, 37, 38, 40, 46, 49, 50, 63, 70], "websocket": 3, "address": [3, 24, 37, 38, 40, 49, 63], "protocol": 3, "current": [3, 4, 9, 43, 49, 69], "v1": [3, 51, 55, 69], "api": [3, 4, 9, 11, 12, 13, 19, 25, 27, 28, 31, 32, 35, 36, 37, 38, 45, 49, 50, 52, 53, 55, 59, 61, 63, 65, 73, 77], "doc": [3, 39, 53, 55], "chromedevtool": 3, "github": 3, "io": [3, 16], "upgrad": [3, 8, 9, 11, 17, 42, 53, 54, 55, 56, 57, 58, 59, 60], "request": 3, "respons": [3, 35, 38, 49], "accept": [3, 16, 28, 45, 49, 50, 54], "switch": [3, 25, 35, 36, 40, 53], "w": 3, "send": [3, 28, 37, 63], "messag": [3, 37, 43, 45], "method": [3, 12, 27, 29, 31, 43, 49, 61], "runtim": [3, 4, 17, 21, 31, 35, 36, 38, 40, 43, 46, 49, 54, 55, 56, 58, 61, 63, 66, 67, 70, 71, 72, 77], "param": 3, "notif": [3, 37], "executioncontextcr": 3, "context": [3, 12, 24, 36, 37, 38, 39, 40, 58], "origin": [3, 4, 49], "name": [3, 4, 12, 27, 29, 35, 38, 43, 45, 49, 55, 58, 61, 70, 73, 74], "inspector": [3, 13, 19], "00000000": 3, "uniqueid": 3, "result": [3, 4, 28, 36, 40, 50, 67, 71], "debugg": [3, 49], "maxscriptscaches": 3, "100000000": 3, "debuggerid": 3, "setpauseonexcept": 3, "state": [3, 49], "none": [3, 49], "setasynccallstackdepth": 3, "maxdepth": [3, 43], "32": [3, 37], "profil": [3, 69], "6": [3, 8, 9, 25, 38, 51, 57, 60, 63, 69, 70, 71], "getisolateid": 3, "setblackboxpattern": 3, "pattern": [3, 12, 15, 29, 46], "runifwaitingfordebugg": 3, "pars": 3, "expos": [3, 4, 25, 28, 29, 31, 37, 38, 42, 49, 50, 55, 62, 75, 77], "callback": [3, 24, 37, 38, 43, 49, 53, 54, 55, 56, 58, 59, 63], "iv8inspectorlisten": 3, "rest": [3, 38], "refer": [3, 11, 24, 25, 31, 35, 36, 38, 39, 40, 46, 49, 50, 58, 60, 61, 64, 65, 66, 67, 69, 70, 71, 73, 77], "detail": [3, 4, 11, 21, 22, 36, 46, 49, 50, 61, 64, 65, 66, 67, 69, 70, 71, 72, 73, 77], "ye": [3, 4, 17, 22, 24, 28, 29, 31, 35, 36, 38, 48, 49, 69, 73], "feel": [3, 38, 49], "free": [3, 4, 12, 29, 36, 37, 38, 49, 53, 66, 77], "server": [3, 28, 69], "your": [3, 9, 17, 31, 35, 40, 45, 74, 77], "environ": [3, 4, 5, 17, 19, 25, 36, 38, 39, 53, 55, 66], "creat": [3, 16, 21, 26, 29, 31, 36, 37, 38, 45, 46, 49, 50, 54, 59, 61, 63, 64, 65, 66, 67, 70, 71, 74, 77], "showcas": 3, "further": 3, "some": [3, 4, 9, 12, 14, 17, 20, 24, 28, 35, 37, 39, 49, 50, 55, 59, 61, 66, 73, 77], "tip": [3, 25, 32], "integr": [3, 9, 25, 45, 52, 68, 75], "embed": [3, 4, 9, 21, 25, 39, 40], "jetti": 3, "Be": [3, 31, 37, 40, 50], "care": [3, 30, 31, 36, 37, 38, 40, 50], "host": [3, 4, 21, 35, 38, 61, 63, 67, 70, 71], "togeth": [3, 63], "otherwis": [3, 29, 30, 35, 36, 49], "refus": 3, "add": [3, 17, 26, 27, 29, 31, 37, 38, 48, 49, 50, 65, 70, 73, 77], "intercept": [3, 5, 31, 37, 38, 52, 54, 68, 75], "event": [3, 40, 50, 63, 77], "In": [3, 4, 12, 16, 24, 26, 28, 31, 35, 36, 37, 38, 39, 40, 46, 49, 50, 61, 63, 77], "practic": [3, 4, 12, 41], "decent": [3, 9, 48, 50], "jackson": [3, 61], "gson": [3, 61], "interpret": [3, 4], "process": [3, 24, 27, 50], "why": [3, 12, 13, 19, 23, 35, 37, 73], "breakpoint": 3, "befor": [3, 12, 24, 28, 35, 37, 38, 63], "right": [3, 35], "featur": [3, 4, 5, 8, 9, 12, 29, 35, 37, 38, 43, 48, 49, 50, 51, 64, 69, 72, 73, 77], "enforc": 3, "authent": 3, "author": 3, "chang": [3, 16, 28, 29, 36, 38, 43, 54, 55, 59, 64, 70], "There": [4, 9, 12, 17, 26, 27, 28, 35, 37, 38, 43, 49, 61, 72], "vagu": 4, "boundari": 4, "between": [4, 9, 25, 28, 29, 37, 40, 49, 53, 61, 64], "definit": 4, "mixtur": 4, "both": [4, 28, 35, 37, 43, 50, 54, 72, 77], "trade": 4, "No": [4, 9, 27, 28, 35, 38, 46, 48, 49, 63], "copi": [4, 31, 35, 37], "valu": [4, 25, 27, 28, 29, 30, 32, 35, 37, 38, 43, 48, 52, 53, 54, 55, 61, 70], "Not": [4, 49, 69], "possibl": [4, 29, 36, 40, 61], "weak": 4, "keep": [4, 28, 31, 36, 37, 40, 61], "footprint": 4, "jni": [4, 8, 35, 37, 49, 55, 56, 58], "recycl": [4, 24, 28, 31, 37, 39, 40, 67], "close": [4, 9, 12, 16, 19, 23, 31, 35, 37, 38, 40, 43, 46, 49, 53, 54, 58, 60, 65, 66], "call": [4, 9, 12, 16, 24, 27, 28, 31, 35, 36, 37, 38, 40, 46, 50, 53, 61, 63, 64, 70, 77], "That": [4, 9, 24, 28, 35, 37, 38, 45, 46, 49, 77], "old": [4, 9, 40, 50], "school": 4, "manag": [4, 9, 12, 15, 25, 32, 38, 53], "tri": [4, 9, 20], "hide": [4, 9], "kind": [4, 9, 27, 36, 49, 77], "tediou": [4, 12, 77], "try": [4, 9, 11, 25, 27, 31, 36, 38, 40, 46, 48, 49, 50, 61, 63, 66, 67, 70, 71, 72, 73], "best": [4, 15, 41], "co": 4, "exist": [4, 11, 31, 38, 61, 73], "one": [4, 7, 9, 11, 12, 16, 21, 26, 31, 35, 37, 38, 49, 61, 64, 70, 71, 72, 77], "other": [4, 12, 28, 35, 36, 37, 40, 45, 49, 50, 53, 63, 65, 69, 72, 77], "word": [4, 37, 63], "thei": [4, 9, 29, 35, 38, 40, 43, 50, 61, 72], "side": [4, 16, 37], "don": [4, 9, 16, 25, 31, 38, 45, 72, 74, 77], "interfer": 4, "each": [4, 37, 49, 72, 77], "diagram": [4, 49], "lazi": 4, "load": [4, 12, 20, 34, 43, 73, 77], "dedic": [4, 37, 40, 63, 77], "classload": [4, 77], "comparison": [4, 9, 25], "loadabl": 4, "high": [4, 28, 37], "ecosystem": [4, 72], "secur": [4, 12, 38, 73, 77], "low": 4, "unload": [4, 34, 38, 77], "One": [4, 28], "beauti": [4, 28, 49], "appli": [4, 28, 31, 35, 38, 40, 46, 49, 56, 63], "exampl": [4, 13, 19, 27, 64, 65], "e": [4, 12, 14, 24, 26, 27, 28, 35, 37, 38, 46, 49, 50, 61, 63, 70, 72, 73, 77], "g": [4, 12, 14, 17, 24, 26, 28, 35, 37, 38, 49, 50, 61, 63, 64, 70, 72, 73, 77], "net": [4, 31], "etc": [4, 11, 12, 14, 26, 28, 35, 37, 49, 63, 73], "zero": [4, 37], "byte": [4, 29, 30, 31, 37, 49], "buffer": [4, 37], "achiev": [4, 9, 31, 36, 37, 49], "thread": [4, 9, 16, 37, 39, 43, 46, 50, 53, 54, 66, 77], "multipl": [4, 16, 21, 36, 38, 40, 54, 77], "instanc": [4, 12, 16, 26, 37, 38, 39, 40, 45, 49, 64, 70], "onli": [4, 12, 14, 16, 21, 28, 30, 31, 35, 38, 40, 45, 49, 51, 61, 69, 77], "visibl": [4, 49], "beyond": 4, "allow": [4, 9, 21, 26, 27, 28, 29, 31, 35, 38, 39, 45, 49, 50, 53, 54, 55, 59, 63, 64, 65, 66, 70, 77], "explicit": [4, 26, 77], "await": [4, 40, 49, 50, 53, 57, 63], "more": [4, 9, 17, 29, 35, 37, 38, 42, 43, 46, 49, 50, 54, 55, 66, 67, 70, 71, 72, 73, 77], "control": [4, 24, 28, 38, 46, 49], "over": [4, 24, 28, 38, 49, 77], "async": [4, 24, 50], "global": [4, 12, 38, 49, 58, 66, 77], "recommend": [4, 8, 31, 39, 40, 49, 50, 61, 66], "project": [4, 9, 11, 12, 14, 15, 25, 31, 38, 50, 69, 73, 77], "increas": [4, 28, 43, 77], "provid": [4, 17, 24, 26, 27, 28, 29, 31, 38, 48, 49, 66, 70, 77], "align": 4, "chrome": [4, 5, 19, 23, 25, 52], "bring": [4, 28, 35], "system": [4, 8, 11, 25, 35, 38, 43, 45, 61, 63, 64, 65, 67, 69, 70, 71], "unfortun": [4, 9], "veri": [4, 31, 38, 40, 49, 71, 72], "limit": [4, 12], "howev": [4, 9, 11, 12, 24, 28, 29, 35, 37, 49, 61, 77], "bad": [4, 9], "leav": [4, 11, 29, 38], "typic": [4, 38, 46, 49], "challeng": [4, 9, 12, 28], "sync": 4, "locat": [4, 38, 77], "interceptor": [4, 24, 49, 50, 66, 70], "partial": 4, "know": [4, 7, 9, 24, 34, 38, 49, 77], "want": [4, 8, 9, 12, 24, 28, 35, 36, 37, 43, 49, 50, 51], "defin": [4, 28, 31], "es6": [4, 9, 13, 19, 38], "repres": [4, 12, 28, 37, 49, 77], "string": [4, 27, 29, 30, 31, 38, 45, 50, 52, 61, 63, 65, 67, 70, 71, 73], "dure": [4, 24, 28, 35, 38, 49, 53, 77], "url": 4, "whatev": [4, 24, 36, 37, 49, 50], "store": [4, 37, 38, 49, 58], "map": [4, 26, 28, 29, 38, 48], "kei": [4, 38, 48, 61], "feed": [4, 38], "get": [4, 9, 12, 24, 26, 27, 29, 31, 35, 37, 38, 40, 45, 46, 48, 49, 50, 55, 56, 61, 63, 65, 66, 72, 73, 74, 77], "start": [4, 11, 16, 28, 46, 49, 55, 63, 77], "excel": [4, 9], "articl": 4, "explain": 4, "concept": [4, 12, 50], "insight": 4, "summari": 4, "vm": [4, 40], "heap": [4, 37], "separ": [4, 12, 31, 39], "unrel": [4, 39], "javascript": [4, 16, 24, 25, 28, 31, 36, 38, 39, 50, 55, 62, 65, 67, 70, 75, 77], "singl": [4, 9, 36, 39, 49, 63], "model": [4, 36], "simplifi": [4, 49], "v8runtim": [4, 25, 26, 27, 29, 31, 36, 38, 40, 46, 48, 49, 50, 52, 53, 54, 55, 57, 60, 61, 64, 65, 66, 67, 70, 71, 72, 73], "resetisol": [4, 36, 53], "resetcontext": [4, 36, 40, 53], "alwai": [4, 27, 40, 49], "brand": 4, "new": [4, 7, 9, 11, 26, 27, 29, 31, 35, 36, 37, 38, 39, 45, 46, 48, 49, 50, 51, 61, 63, 64, 65, 66, 70, 71, 72, 73, 74], "much": [4, 9, 31, 37, 39, 40, 49, 61, 71, 73, 77], "cheaper": 4, "oper": [4, 28], "good": [4, 37, 70], "enough": [4, 27, 31], "term": [4, 46, 49, 61], "almost": [4, 9, 31, 49, 63], "db": 4, "safe": [4, 24, 28, 36, 49], "NOT": [4, 36, 49], "lock": [4, 34, 37, 43, 46, 53, 77], "violat": 4, "core": [4, 35, 36, 38, 40, 54], "dump": [4, 36, 40, 54, 55], "immedi": [4, 16, 21, 36, 37, 40, 46], "valid": [4, 37, 49], "minim": [4, 29, 40, 66], "overhead": [4, 12, 28, 29, 36, 37, 39, 46, 66], "behind": [4, 11, 12, 24, 65], "scene": [4, 12, 24, 65], "sampl": [4, 27, 31, 35, 37, 38, 49, 63], "function": [4, 14, 16, 29, 35, 37, 38, 47, 52, 55, 56, 57, 61, 63, 64, 70, 77], "packag": [4, 8, 9], "automat": [4, 7, 28, 31, 35, 36, 38, 43, 58, 67, 70, 77], "per": [4, 31, 35, 36, 37, 38], "calcul": [4, 49], "unpack": 4, "system_temporary_directori": 4, "pid": 4, "either": [4, 7, 49], "deploi": [4, 54], "avoid": [4, 12, 21, 28, 35, 40], "race": [4, 36], "condit": [4, 29, 36], "initi": [4, 19, 23, 38, 56, 63, 66, 70], "purg": [4, 63], "legaci": [4, 9, 18, 19, 56], "least": [4, 9], "begin": 4, "nativ": [4, 20, 25, 26, 29, 36, 37, 40, 49, 52, 63, 77], "track": [4, 37, 59], "delet": [4, 26, 31, 48, 49, 64, 70], "javetnativemonitor": 4, "unit": [4, 15], "case": [4, 7, 9, 15, 28, 30, 35, 36, 37, 38, 39, 49, 50, 52, 77], "fetch": [4, 50], "compar": [4, 7, 36], "count": [4, 43, 46, 48, 63], "verifi": [4, 38, 49], "unmanag": [4, 37], "properli": 4, "alloc": [4, 36, 49, 55], "freed": 4, "intellij": [5, 9], "flag": [5, 37, 54, 56], "design": [5, 7, 15, 16, 25, 29, 31, 35, 36, 38, 49, 63, 72, 77], "architectur": [5, 9], "modul": [5, 20, 24, 40, 42, 43, 49, 57, 58, 73], "engin": [5, 25, 26, 37, 38, 43, 55, 68, 74, 75], "pool": [5, 25, 37, 45, 52, 55, 68, 74, 75], "cross": [5, 77], "memori": [5, 9, 11, 15, 24, 28, 34, 35, 40, 43, 49, 53, 55, 61, 77], "leak": [5, 9, 11, 28, 37, 40, 53, 55], "detect": [5, 27, 28, 43, 49, 54, 55], "cdt": [5, 71], "shell": [5, 68, 75], "intern": [5, 31, 35, 36, 37, 49, 55, 56, 59, 69], "present": 6, "www": 6, "javetperf": [6, 59], "reus": [7, 12], "do": [7, 9, 12, 22, 24, 25, 36, 37, 38, 40, 49, 50, 65], "suit": 7, "timestamp": 7, "newer": 7, "instal": [8, 9, 17, 35, 38, 63, 68, 73, 75], "though": [8, 43, 49, 66, 77], "been": [8, 9, 24, 35, 49, 77], "drop": [8, 9, 38, 49], "heavili": [8, 27, 49, 77], "person": 8, "idea": [8, 9, 11, 37], "For": [8, 12, 31, 38, 49], "now": [8, 9, 27, 31, 38, 45, 49, 70], "v7": 8, "2": [8, 9, 12, 17, 25, 26, 29, 31, 35, 38, 39, 40, 46, 48, 51, 64, 67, 69, 70, 71, 72, 73, 77], "kotlin": [8, 31, 36], "dsl": [8, 31], "construct": [8, 49, 54], "14": [8, 9, 55, 56, 57, 58, 59], "17": [8, 31, 54, 56, 59], "v3": [8, 38, 51], "bundl": 8, "hasn": [9, 24, 49], "activ": [9, 24, 35, 38, 69], "sinc": [9, 69], "2017": 9, "last": 9, "wa": [9, 77], "2016": 9, "v4": 9, "fulli": [9, 27], "were": 9, "around": [9, 38], "android": [9, 25, 35, 56, 57, 58], "serious": [9, 39], "year": [9, 77], "nearli": 9, "seriou": [9, 11], "fix": [9, 11, 20, 26, 37, 38, 51, 53, 54, 55, 56, 57, 58, 59, 60], "under": [9, 37, 40, 49], "Its": [9, 37, 77], "evolv": 9, "expect": [9, 37, 43, 49], "chanc": 9, "implement": [9, 25, 29, 31, 35, 37, 38, 49, 50, 61, 69], "obvious": [9, 38, 49, 61], "couldn": [9, 77], "easili": [9, 28, 37, 46, 74], "would": [9, 11, 16], "contribut": 9, "me": [9, 25], "had": [9, 11], "admit": 9, "think": [9, 11, 13, 15, 16, 19], "mere": 9, "meanwhil": [9, 63], "ecmascript": 9, "move": [9, 53, 54], "forward": [9, 38], "rapidli": 9, "caus": [9, 20, 21, 35, 46, 49, 55, 77], "unexpect": [9, 28, 49], "someon": [9, 38], "team": 9, "time": [9, 16, 29, 31, 35, 38, 61, 66], "realiti": 9, "cruel": 9, "unoffici": 9, "v6": 9, "110": 9, "2020": [9, 11], "temporarili": 9, "ve": [9, 11], "j2v8_win32_x86_64": 9, "machin": 9, "cpu": [9, 25, 61], "i7": [9, 39], "10700k": [9, 39], "tp": [9, 39], "session": 9, "003": 9, "009": 9, "338": 9, "688": 9, "ad": [9, 31, 36, 39, 52, 53, 54, 55, 56, 57, 58, 59, 60], "hoc": [9, 36, 39, 54], "35": 9, "299": 9, "274": 9, "019": 9, "571": 9, "428": 9, "With": [9, 12, 38, 61], "improv": [9, 36, 37, 55, 59], "stick": 9, "devic": [9, 25], "precis": [9, 28, 49], "mini": 9, "macbook": 9, "air": 9, "too": [9, 16, 38], "And": [9, 25, 63], "plan": 9, "bui": 9, "futur": 9, "donat": [9, 25], "joke": 9, "intend": [9, 12], "tl": 9, "dr": 9, "rel": 9, "easi": [9, 12, 25, 27, 49, 52, 61, 66, 71], "master": [9, 50], "didn": 9, "well": [9, 24, 31, 37, 77], "213": 9, "differ": [9, 12, 29, 38, 40, 49, 50, 61], "solvabl": 9, "revisit": 9, "remov": [9, 53, 54, 55, 56], "earli": [9, 40], "haven": 9, "got": [9, 11], "reviv": 9, "v2": [9, 51, 69], "far": 9, "lowest": [9, 69], "my": [9, 25], "eclips": 9, "plai": [9, 36, 38, 50, 61, 63], "hei": 9, "satisfi": 9, "luck": 9, "understand": 9, "suffer": 9, "nowadai": 9, "2019": [9, 58], "cmakelist": 9, "txt": 9, "still": [9, 46, 49, 77], "2015": 9, "ag": 9, "surpris": 9, "deepli": 9, "gone": [9, 24], "step": [9, 12, 24, 26, 29, 31, 35, 37, 38, 49, 64, 67, 70, 71], "sit": 9, "watch": 9, "break": [9, 28, 38, 49, 50, 61, 71], "made": [9, 11], "full": [9, 40, 49], "thought": [9, 11], "month": [9, 11], "pai": [9, 77], "python2": 9, "form": [9, 49], "outer": 9, "layer": [9, 77], "logic": [9, 28, 49, 50, 63, 77], "who": [9, 38], "spend": 9, "preciou": 9, "wish": [9, 77], "hair": 9, "could": 9, "guido": 9, "van": 9, "rossum": 9, "am": [9, 31, 49], "problemat": 9, "At": [9, 11, 49], "hack": [9, 12, 24], "pom": [9, 56], "xml": [9, 56], "uncertainti": 9, "someth": [9, 49], "roi": 9, "suppos": [9, 30, 35, 50], "particular": [9, 35, 38, 39], "sai": [9, 27], "x": [9, 25, 26, 29, 31, 38, 49, 51, 65], "later": [9, 11, 38], "255": [9, 37, 52, 64], "permiss": 9, "realli": [9, 50], "local": [9, 27, 37, 49], "histori": [10, 11, 19, 77], "j2v8": [10, 11, 12, 19, 75, 76], "motiv": [10, 19, 77], "find": [11, 49], "compel": 11, "slowli": 11, "dy": 11, "sometim": [11, 26, 27, 28, 31, 37, 49, 50], "impli": [11, 16, 17, 24, 69, 77], "lower": 11, "cost": 11, "than": [11, 28, 39, 46, 49, 73, 77], "might": [11, 35], "learn": [11, 15], "lot": [11, 66], "manual": [11, 17], "window": [11, 12, 20, 25, 39, 52, 61, 77], "linux": [11, 18, 19, 25, 39, 52, 53, 54, 56, 58, 60, 77], "end": [11, 31, 37, 40, 49, 67], "abl": [11, 12, 21, 24, 28, 38, 46, 49, 63, 77], "write": [11, 27, 28, 37, 77], "inde": [11, 40], "folk": [12, 38], "migrat": [12, 25, 75], "experienc": 12, "perspect": [12, 37], "isol": [12, 36, 37, 38, 39, 40, 77], "noth": 12, "globalthi": [12, 38, 77], "mix": 12, "longer": [12, 28, 31, 37, 40, 77], "getglobalobject": [12, 26, 27, 29, 31, 38, 46, 49, 50, 61, 63, 64, 65, 66, 70, 73, 77], "top": [12, 38, 49, 77], "level": [12, 28, 36, 49], "globalobject": [12, 49], "invok": [12, 27, 53], "involv": 12, "common": [12, 17], "where": [12, 13, 19, 35, 38, 61, 77], "thing": [12, 28, 29, 37, 38], "offer": [12, 14, 37], "builder": 12, "check": [12, 36, 38, 49, 54, 77], "ast": [12, 25], "scope": [12, 16, 37, 57], "duplic": 12, "regist": [12, 24, 38, 40, 43, 49, 57, 59, 66, 70, 77], "decor": [12, 49, 54, 70, 77], "v8function": [12, 49, 50, 54, 55], "v8properti": [12, 49, 53, 54, 55, 77], "back": [12, 28, 31, 37, 38, 49, 51], "leakag": [12, 43], "lifecycl": [12, 37, 40, 49], "type": [12, 26, 27, 28, 29, 31, 35, 36, 37, 38, 39, 43, 52, 53, 55, 56, 61], "convers": [12, 26, 28, 57, 65], "handl": [12, 24, 27, 31, 36, 38, 50, 54, 56, 66], "everyth": 12, "goe": [12, 49], "smoothli": [12, 28], "experi": [12, 24, 31, 35, 38, 65, 66, 71], "littl": [12, 29], "bit": [12, 29, 37, 38], "spring": [12, 25, 52, 68, 75], "framework": [12, 74], "most": [12, 36, 38, 40, 49], "cover": [12, 27, 29, 37, 77], "express": [12, 31, 63, 69], "effect": [12, 35, 37, 38, 63], "basic": [14, 25, 30, 49, 66, 73, 75, 77], "absent": [14, 36, 49], "settimeout": [14, 63, 73, 77], "setinterv": [14, 63, 73], "javenod": [14, 15, 25, 50, 69, 73, 77], "extens": [14, 49, 66], "aim": [14, 73, 77], "simul": [14, 38, 49, 73, 77], "singleton": 16, "fine": [16, 25, 28], "noderuntim": [16, 38, 53, 56, 63, 67, 72], "But": [16, 35, 36, 37, 38, 49, 50, 74], "crash": [16, 19, 21, 23, 35, 36, 49, 55, 58], "serv": 16, "agent": 16, "check_eq": 16, "start_io_thread_async_initi": 16, "exchang": 16, "std": 16, "atomic_bool": 16, "flip": 16, "again": [16, 31, 35], "trigger": [16, 36, 37, 49], "workaround": [16, 38], "inevit": 16, "hacki": 16, "fundament": [16, 45, 74], "distribut": [17, 56, 69], "eg": 17, "18": [17, 55, 59, 69], "reli": [17, 37, 45, 61, 74], "advanc": [17, 25, 50, 75], "chain": [17, 37], "download": [17, 38], "drive": [17, 38], "prepar": [17, 35, 38, 49, 66], "sudo": [17, 38], "apt": [17, 38], "y": [17, 26, 29, 31, 65], "essenti": 17, "softwar": 17, "properti": [17, 28, 29, 31, 61, 69, 70, 74], "ppa": 17, "toolchain": 17, "altern": [17, 29], "90": 17, "slave": 17, "gcov": 17, "80": 17, "70": 17, "config": [17, 31, 45], "choic": 17, "select": [17, 37, 49], "prioriti": [17, 55], "statu": [17, 46, 51], "consider": [17, 28, 46, 69], "addit": [17, 29, 36, 39, 49, 69, 77], "effort": [17, 46, 69], "commit": [17, 69], "background": [19, 25, 50], "troubleshoot": [19, 25, 32], "dynam": [19, 23, 25, 35, 49, 53], "routin": [19, 23, 38], "being": [19, 23, 31, 37, 38, 46, 49], "failur": [20, 55], "happen": [20, 24, 28, 37, 50], "root": [20, 27, 37, 38], "napi": [20, 38], "symbol": [20, 26, 29, 38, 43, 54, 56, 59], "cannot": [20, 28, 36, 37, 38], "found": [20, 38, 43, 73], "modular": [20, 34, 40, 77], "By": [21, 35, 37, 70], "reduc": 21, "huge": [21, 39, 69], "amount": [21, 69, 77], "relat": [21, 49], "attempt": 21, "visit": [22, 25, 73], "user": [24, 28, 31, 38, 45, 66, 71, 74], "segfault": [24, 77], "occur": [24, 28, 31, 37], "82": 24, "loop": [24, 46, 50, 63, 71], "exit": [24, 71], "see": [24, 36, 38, 61, 72], "hand": 24, "yet": 24, "resolv": [24, 31, 38, 63, 77], "reject": [24, 40, 54], "land": 24, "lead": [24, 40], "corrupt": 24, "peopl": [24, 77], "choos": [24, 49], "mostli": 24, "genuin": 24, "prevent": [24, 35, 37, 40], "fact": [24, 50], "won": [24, 28, 35], "standard": [24, 58], "hit": [24, 46], "import": [24, 45, 46, 50, 69, 77], "promis": [24, 40, 47, 63], "explicitli": [24, 31, 35, 37, 40, 66], "forc": [24, 31, 40, 66], "garbag": [24, 35], "collect": [24, 26, 29, 35, 47, 52], "eight": 25, "awesom": [25, 72], "star": 25, "medium": 25, "blogspot": 25, "channel": 25, "discord": [25, 77], "retir": 25, "mail": 25, "great": 25, "thank": 25, "arm64": [25, 58, 60, 69], "v20": [25, 51, 60], "v11": [25, 51, 69], "169": [25, 60], "prefer": 25, "polyfil": [25, 68, 75, 77], "exposur": [25, 52], "interop": [25, 62, 75], "bigint": [25, 30, 37, 52], "date": [25, 30, 38, 52], "analysi": [25, 38], "javetsanit": 25, "groupid": [25, 31, 69], "artifactid": [25, 31, 69], "v8host": [25, 27, 35, 37, 38, 46, 53, 54, 55, 61, 63, 67, 70, 71], "getnodeinst": [25, 27, 37, 63, 67, 72], "createv8runtim": [25, 27, 38, 46, 61, 63, 67, 70, 71, 72], "println": [25, 38, 61, 63, 64, 65, 67, 70, 71], "getexecutor": [25, 26, 27, 29, 31, 38, 46, 48, 49, 50, 61, 63, 64, 65, 66, 67, 70, 71, 73], "executestr": [25, 26, 29, 31, 38, 49, 64, 65, 67, 73], "getv8inst": [25, 37, 38, 46, 61, 67, 70, 71, 72], "hivemq": 25, "apach": 25, "graalj": [25, 31], "nashorn": 25, "elegantli": [25, 61], "jsonnod": [25, 62, 75], "compromis": 25, "intro": 25, "tutori": 25, "convert": [25, 32, 43, 49, 53, 55, 56, 61, 62, 64, 75, 77], "todo": [25, 32], "list": [25, 28, 29, 31, 32, 49], "note": [25, 31, 37, 38, 49], "faq": 25, "javetproxyconvert": [26, 28, 54, 55, 61, 64, 77], "skip": [26, 28, 31, 54], "proxi": [26, 29, 55, 56, 61], "primit": [26, 27, 28, 29, 31, 40, 49, 52, 55, 56], "annoi": 26, "variabl": [26, 36, 38, 49, 55, 64, 65, 70], "accid": 26, "javetbridgeconvert": [26, 55], "ident": [26, 38, 49, 70], "setconvert": [26, 27, 31, 61, 64], "btrue": 26, "bfals": 26, "asserttru": [26, 31, 38, 46, 48, 49, 50], "executeobject": [26, 31, 64, 65], "assertfals": [26, 31, 38, 46, 48, 49], "assertequ": [26, 29, 31, 38, 46, 48, 49], "tov8valu": [26, 27, 61], "executeinteg": [26, 29, 31, 38, 46, 49, 67], "toprimit": 26, "12345": 26, "12346": 26, "intarrai": 26, "length": [26, 27, 29, 37], "assertarrayequ": [26, 31], "iter": [26, 59], "integerlist": 26, "arraylist": [26, 29, 65], "executevoid": [26, 27, 31, 38, 46, 49, 61, 63, 64, 65, 66, 70, 73], "longlist": 26, "unmodifiablelist": 26, "aslist": [26, 49], "1l": 26, "2l": 26, "stringifi": [26, 65], "implicit": [26, 77], "given": [26, 37], "give": [26, 28, 37, 46, 49], "ab": 26, "implicitli": [26, 55], "besid": [26, 49], "power": 27, "simpl": [27, 31, 35, 37, 38, 45, 49, 61, 63, 72], "about": [27, 36], "deal": [27, 29, 37, 49], "reflect": [27, 29, 31, 40, 49, 59], "tweak": 27, "pair": [27, 49], "public": [27, 29, 31, 35, 45, 49, 50, 56, 61, 63, 70, 73, 74], "class": [27, 29, 38, 45, 49, 61, 63, 70, 74], "null": [27, 29, 31, 38, 49, 50, 63, 70, 71], "getnam": [27, 29, 70, 74], "return": [27, 28, 29, 31, 35, 37, 38, 40, 46, 49, 50, 53, 61, 63, 64, 65, 70, 74], "void": [27, 29, 31, 45, 49, 50, 61, 63, 70, 73], "setnam": [27, 29, 70], "getvalu": [27, 29, 48, 49, 61, 70], "setvalu": [27, 29, 49, 70], "Then": 27, "gener": [27, 31, 37, 43, 49, 54, 61], "recurs": [27, 28, 54], "parent": [27, 40], "overrid": [27, 31, 35, 45, 49, 50, 61], "depth": [27, 28, 43, 54], "argument": [27, 29, 77], "circular": [27, 43, 54], "structur": [27, 43, 54, 61], "increment": [27, 61], "suppresswarn": 27, "uncheck": 27, "extend": [27, 31, 38, 49], "javetobjectconvert": [27, 28, 29, 54, 77], "method_prefix_get": 27, "method_prefix_i": 27, "protect": [27, 36, 45, 46, 74], "excluded_method": 27, "hashset": [27, 29, 49], "getmethod": [27, 49], "getparametercount": 27, "methodnam": [27, 43, 49], "startswith": 27, "v8valu": [27, 28, 50, 53, 54, 56, 61, 65, 71, 77], "int": [27, 29, 30, 31, 46, 49, 61, 63, 70], "throw": [27, 28, 31, 38, 46, 49, 50, 61, 63, 73], "javetexcept": [27, 49, 50, 61, 63, 73], "super": [27, 61], "isundefin": 27, "objectclass": 27, "getclass": 27, "v8valueobject": [27, 31, 37, 38, 49, 54, 56, 70, 73, 77], "createv8valueobject": [27, 37, 38, 49, 70], "canaccess": 27, "propertynam": 27, "contain": [27, 38, 40, 49], "substr": 27, "tolowercas": 27, "els": [27, 38, 49, 50, 61, 63, 69, 73, 77], "v8valuetemp": 27, "catch": [27, 46, 49, 50, 63, 71], "except": [27, 31, 36, 37, 38, 40, 45, 46, 49, 53, 55, 56, 61, 77], "printstacktrac": [27, 46, 63], "line": [27, 36, 49, 71], "testpojo": 27, "pojoarrai": 27, "tom": 27, "ceo": 27, "jerri": 27, "cfo": 27, "log": [27, 37, 40, 44, 49, 50, 63, 66, 70], "transpar": [27, 31, 49, 77], "autom": [27, 37], "bridg": [28, 55], "arrai": [28, 29, 31, 37, 48, 49, 52], "meet": [28, 38], "famou": 28, "topic": [28, 50], "lang": [28, 35], "nullpointerexcept": 28, "luckili": [28, 38], "inject": [28, 31, 35, 43, 49, 50, 54, 61, 77], "javetconverterconfig": [28, 54], "overridden": [28, 35], "differenti": 28, "introduc": [28, 37, 55, 77], "ijavetentityfunct": [28, 29], "ijavetentitymap": [28, 29], "setskipfunctioninobject": 28, "boolean": [28, 29, 30, 35], "setextractfunctionsourcecod": 28, "opportun": 28, "extract": 28, "ineffici": 28, "inconveni": [28, 35], "substanti": 28, "instead": [28, 36, 37, 38, 53, 58, 65, 77], "javetconverterexcept": 28, "maximum": 28, "reach": [28, 43], "cheap": 28, "unrealist": 28, "number": [28, 30, 37, 38], "stackoverflowerror": 28, "wors": 28, "written": 28, "block": [28, 36, 37, 49, 67], "stack": [28, 49], "overflow": 28, "attack": [28, 46], "drain": [28, 37], "tini": 28, "behavior": [28, 31, 37, 40, 49], "fanci": 28, "read": [28, 37, 43, 50], "setproxymapen": [28, 31], "wherea": [28, 37], "conveni": 28, "bi": [28, 65], "direction": [28, 65], "grain": 28, "worri": [28, 35, 38, 46, 63], "vice": 28, "versa": 28, "open": [29, 31, 40], "subclass": [29, 31, 40, 50], "int8arrai": [29, 37], "char": [29, 30, 49], "doubl": [29, 30, 37, 49], "float64arrai": [29, 37], "float": [29, 30, 37, 49], "float32arrai": [29, 37], "int32arrai": [29, 37], "int64arrai": 29, "short": [29, 30, 37, 49], "int16arrai": [29, 37], "stream": [29, 49, 54, 56], "javetentitysymbol": 29, "ijavetmapp": [29, 54], "hashmap": [29, 31, 65], "uint8arrai": [29, 37], "uint8clampedarrai": [29, 37], "uint16arrai": [29, 37], "uint32arrai": [29, 37], "bigint32arrai": 29, "bigint64arrai": [29, 37], "pojo": 29, "slow": [29, 39], "registercustomobject": [29, 54], "alien": 29, "match": [29, 31, 38, 64], "constructor": [29, 31, 55, 73], "signatur": [29, 43, 49], "frommap": 29, "tomap": 29, "touchabl": 29, "easier": 29, "customobject": 29, "integ": [29, 30, 31, 37, 48, 49, 63], "put": [29, 31, 40, 61, 65], "getter": [29, 31, 49, 54, 55, 70, 77], "setter": [29, 31, 49, 54, 70, 77], "snippet": [29, 37, 38], "below": [29, 49], "getconvert": 29, "ones": 29, "upon": 29, "registr": [29, 43, 77], "customfrommap": 29, "customtomap": 29, "regular": [29, 36], "v8customobject": 29, "getobject": [29, 31], "assertnotnul": [29, 31, 48], "pro": 29, "con": 29, "intrus": [29, 61], "carri": [29, 77], "inform": 29, "memor": 29, "complic": [29, 38], "relationship": 29, "javetprimitiveconvert": [30, 54, 56], "charact": 30, "biginteg": 30, "zoneddatetim": [30, 56, 57], "optionalint": 30, "optionaldoubl": 30, "optionallong": 30, "fall": 30, "rang": [30, 37], "whole": 31, "danger": 31, "touch": [31, 36], "tmp": 31, "executeboolean": 31, "isfil": 31, "isdirectori": 31, "canread": [31, 73], "canwrit": 31, "canexecut": 31, "lowmemorynotif": [31, 49, 50, 53, 61, 66, 70, 77], "getconfig": [31, 38, 72], "z": 31, "topath": 31, "tostr": [31, 38, 48, 49, 61, 64, 71, 73], "newpath": 31, "toobject": 31, "abc": [31, 35, 49, 64], "def": [31, 49, 63], "n": [31, 38, 49, 64], "d": [31, 38, 64], "instanceof": [31, 49, 50, 61], "matcher": [31, 64], "123": [31, 49, 64, 70, 73], "a123": 31, "smart": [31, 37], "javeterrortyp": 31, "assertthrow": 31, "javetexecutionexcept": [31, 38, 55], "field": 31, "should": [31, 46], "writabl": 31, "annot": [31, 49, 54], "autoclos": 31, "ijavetclos": [31, 54], "isassignablefrom": 31, "special": [31, 38, 49], "known": [31, 37], "lambda": [31, 49], "istringjoin": 31, "join": 31, "two": [31, 37], "stringjoin": 31, "hold": [31, 37, 50], "joiner": 31, "getjoin": 31, "setjoin": 31, "v8valuefunct": [31, 38, 49, 53, 54, 63, 73], "orphan": 31, "callabl": 31, "outofmemoryerror": 31, "similar": [31, 40, 66], "enhanc": [31, 49, 53, 54, 55, 56, 59], "istringutil": 31, "hello": [31, 63, 64, 66, 68, 75], "split": 31, "stringutil": 31, "util": 31, "getutil": 31, "setutil": 31, "str": [31, 49], "toarrai": [31, 65], "aussi": 31, "non": [31, 40, 49], "bytebuddi": [31, 57], "alreadi": [31, 43, 50], "referenc": [31, 37, 38], "buddi": 31, "12": [31, 55, 57, 58, 59], "groovi": 31, "javetreflectionobjectfactori": 31, "stai": [31, 35, 63, 77], "dynamicclass": 31, "ijavetanonym": [31, 49, 54], "setreflectionobjectfactori": 31, "getinst": [31, 35], "codestr": [31, 38, 52], "smartli": 31, "overload": 31, "vararg": [31, 49, 53, 56], "identifi": 31, "alter": 31, "v8allow": [31, 55], "bind": [31, 38, 50, 53, 65, 70, 77], "v8block": [31, 55], "ignor": [31, 37, 49, 53], "v8getter": [31, 55], "v8setter": [31, 55], "treat": [31, 35, 37], "allowonli": 31, "blockonli": 31, "alia": 31, "virtual": [31, 38, 56], "document": [35, 49, 54], "assum": [35, 38, 49], "reload": 35, "setlibraryreload": 35, "jsruntimetyp": [35, 38, 72, 74], "unloadlibrari": [35, 54], "restor": [35, 49], "gc": [35, 61, 66, 70], "prior": 35, "loadlibrari": [35, 54], "unstabl": 35, "risk": [35, 40], "temp": 35, "javetlibload": 35, "setlibloadinglisten": 35, "ijavetlibloadinglisten": [35, 55], "getlibpath": 35, "anywher": 35, "bypass": [35, 49], "mean": [35, 38, 45, 49], "isdeploi": 35, "must": [35, 49, 73], "less": 35, "islibinsystempath": 35, "mavin": 35, "plug": 35, "osgi": 35, "repeatedli": 35, "regardless": [35, 36, 40], "unsatisfiedlinkerror": 35, "issuppressingerror": [35, 55], "javetlibloadinglisten": [35, 55], "mechan": [35, 36, 77], "djavet": 35, "among": [36, 49, 59, 77], "unlock": [36, 61], "surround": 36, "v8locker": [36, 40, 52], "locker": 36, "getv8lock": 36, "nest": 36, "thrown": [36, 37, 40, 46, 49], "report": 36, "conflict": [36, 43], "slight": 36, "sensit": [36, 37, 40, 52, 77], "extrem": [36, 49], "50": 36, "granular": [36, 38], "concurr": 36, "scenario": [36, 37, 40, 52, 77], "maxim": [36, 40], "21": [36, 54, 69], "incompat": 36, "chao": 36, "sequenc": 36, "synchron": [36, 77], "newglobalref": 37, "javaobject": [37, 77], "until": 37, "deleteglobalref": 37, "across": 37, "raw": 37, "unless": [37, 39, 40, 77], "categor": 37, "within": 37, "persist": 37, "aw": 37, "borrow": [37, 49], "rule": [37, 49], "wrap": 37, "outsid": 37, "setweak": [37, 40], "determin": [37, 49, 54], "javetstandardconsoleinterceptor": [37, 66, 70], "creation": [37, 39, 66], "v8scope": [37, 40, 54], "setescap": 37, "getv8scop": 37, "binari": [37, 43, 58], "often": 37, "languag": [37, 49], "manipul": [37, 48], "content": [37, 50, 60], "dataview": 37, "specif": [37, 50], "format": [37, 43, 49], "nio": 37, "bytebuff": [37, 56], "consid": [37, 49, 61], "idl": 37, "equival": [37, 49], "128": 37, "complement": 37, "sign": 37, "int8_t": 37, "unsign": 37, "octet": 37, "uint8_t": 37, "clamp": 37, "32768": 37, "32767": 37, "int16_t": 37, "65535": 37, "uint16_t": 37, "2147483648": 37, "2147483647": 37, "int32_t": 37, "4294967295": 37, "uint32_t": 37, "38": 37, "1038": 37, "ieee": 37, "point": [37, 38], "signific": 37, "digit": 37, "234567": 37, "unrestrict": 37, "324": 37, "10308": 37, "64": [37, 54], "23456789012345": 37, "263": [37, 39], "int64_t": 37, "biguint64arrai": 37, "264": 37, "uint64_t": 37, "testv8valuetypedarrai": 37, "testv8valuedataview": 37, "frequenc": 37, "area": 37, "pace": 37, "zombi": 37, "cycl": 37, "notifi": [37, 61, 70], "space": 37, "v8notifi": 37, "setmemoryusagethresholdratio": [37, 53], "threshold": 37, "ratio": 37, "enablegcnotif": [37, 53], "ration": 37, "xms64m": 37, "xmx64m": 37, "pressur": [37, 77], "destroi": 37, "curv": 37, "smoother": 37, "exce": 37, "broadcast": 37, "schedul": [37, 55], "affect": 37, "worker": 37, "javetengineconfig": [37, 45, 53, 56, 74], "setautosendgcnotif": [37, 74], "light": 37, "weight": 37, "hint": [37, 49], "task": [37, 50, 53], "queue": [37, 50], "decis": 37, "millisecond": [37, 46, 63], "disregard": 37, "aforement": 37, "analyz": [37, 38], "getv8heapspacestatist": [37, 55], "getv8heapstatist": [37, 55], "getv8sharedmemorystatist": [37, 55], "javetenginepool": [38, 45, 53, 55, 66, 72, 74], "setjsruntimetyp": [38, 72, 74], "ijavetengin": [38, 46, 66, 72, 73], "getengin": [38, 46, 66, 72], "getv8runtim": [38, 46, 61, 66, 73], "workingdirectori": 38, "javetosutil": [38, 63, 73], "working_directori": [38, 63, 73], "node_modul": [38, 40, 63, 73], "getnodemodul": 38, "nodemodulemodul": 38, "setrequirerootdirectori": 38, "getlogg": [38, 45, 73], "loginfo": [38, 73], "23": [38, 53, 56, 57, 59, 69, 73], "34": [38, 73], "const": [38, 48, 49, 61, 63, 64, 65, 73], "decim": 38, "__dirnam": 38, "__filenam": 38, "scriptfil": 38, "scriptpath": 38, "scriptstr": 38, "iv8executor": [38, 57], "setresourcenam": 38, "resourcenam": 38, "setmodul": 38, "excit": 38, "potenti": [38, 54, 55], "piec": 38, "sqlite3": 38, "bother": 38, "electron": 38, "approach": [38, 49], "simpler": 38, "node_sqlite3": 38, "napi_create_error": 38, "patchelf": 38, "npm": [38, 63, 73], "node_module_fil": 38, "loadlibraryexw": 38, "unzip": 38, "somewher": 38, "replac": [38, 61], "voluntarili": 38, "compat": [38, 55], "major": [38, 52, 77], "go": [38, 51], "through": [38, 49], "pretti": 38, "backup": 38, "rebuilt": [38, 53], "dumpbin": 38, "win32": 38, "delai": 38, "ex": 38, "00000001": 38, "characterist": 38, "0000000180154a40": 38, "hmodul": 38, "0000000180154818": 38, "tabl": [38, 58], "000000018014f248": 38, "000000018014fa68": 38, "bound": 38, "0000000000000000": 38, "stamp": 38, "0000000180108724": 38, "424b": 38, "napi_create_funct": 38, "0000000180108ab5": 38, "4243": 38, "napi_create_buffer_copi": 38, "1801363d8": 38, "180166610": 38, "index": 38, "6096": 38, "napi_open_escapable_handle_scop": 38, "6072": 38, "napi_get_undefin": 38, "apart": 38, "swc": 38, "gyp": 38, "ppee": 38, "puppi": 38, "profession": 38, "pe": 38, "explor": 38, "cli": 38, "drag": 38, "directory_entry_delay_import": 38, "save": [38, 63], "resolut": [38, 59], "embedd": 38, "relai": [38, 55], "reachabl": 38, "javetbuiltinmoduleresolv": [38, 60], "setv8moduleresolv": 38, "existssync": 38, "getboolean": 38, "capabl": [38, 49, 61], "gain": 38, "box": 38, "order": [38, 48], "launch": [38, 40], "testfrommodul": 38, "assign": [38, 49, 54, 64], "v8modul": [38, 53, 57, 60], "compilemodul": 38, "containsmodul": 38, "getinteg": [38, 46], "heavi": 38, "v8modulereferr": 38, "equal": [38, 49, 52, 65, 71, 73], "compilev8modul": [38, 77], "cach": [38, 52, 56, 57], "propos": 38, "advantag": 38, "tradit": 38, "flexibl": 38, "record": 38, "createv8valuefunct": [38, 49], "createv8modul": [38, 60], "issourcetextmodul": [38, 60], "issyntheticmodul": [38, 60], "invokeinteg": 38, "reset": [39, 40], "751": 39, "032": 39, "65": 39, "410": 39, "143": 39, "363": 39, "51": 39, "647": 39, "458": 39, "846": 39, "968": 39, "253": 39, "508": 39, "748": 39, "660": 39, "slightli": 39, "mainli": 39, "older": 39, "dramat": [39, 49], "outperform": 39, "down": [39, 77], "emb": 39, "obtain": 40, "pass": [40, 54], "dangl": [40, 58], "ey": 40, "stage": 40, "prohibit": 40, "uncertain": 40, "acquir": [40, 43, 77], "malici": [40, 46], "eval": [40, 49], "vulner": 40, "impact": [40, 49], "unhandl": 40, "whose": 40, "awar": 40, "period": 42, "style": 42, "statist": [42, 55], "significantli": 43, "101": 43, "osnotsupport": 43, "102": 43, "librarynotfound": 43, "103": 43, "librarynotload": 43, "104": 43, "notsupport": 43, "105": 43, "failedtoreadpath": 43, "201": 43, "compilationfailur": 43, "301": 43, "executionfailur": 43, "302": 43, "executiontermin": 43, "termin": [43, 44], "continu": 43, "401": 43, "callbacksignatureparametersizemismatch": 43, "mismatch": 43, "paramet": [43, 49], "expectedparameters": 43, "actualparameters": 43, "402": 43, "callbacksignatureparametertypemismatch": 43, "expectedparametertyp": 43, "actualparametertyp": 43, "403": 43, "callbackinjectionfailur": 43, "404": 43, "callbackregistrationfailur": 43, "405": 43, "callbackmethodfailur": 43, "406": 43, "callbackunknownfailur": 43, "unknown": 43, "407": [43, 54], "callbackunregistrationfailur": 43, "unregistr": 43, "408": [43, 59], "callbacktypenotsupport": [43, 59], "callbacktyp": 43, "501": 43, "converterfailur": 43, "502": 43, "convertercircularstructur": 43, "max": 43, "503": [43, 54], "convertersymbolnotbuiltin": 43, "601": 43, "modulenameempti": 43, "empti": 43, "602": [43, 54], "modulenotfound": 43, "modulenam": 43, "603": [43, 54], "modulepermissiondeni": 43, "deni": 43, "701": 43, "lockacquisitionfailur": 43, "702": 43, "lockreleasefailur": 43, "703": 43, "lockconflictthreadidmismatch": 43, "lockedthreadid": 43, "currentthreadid": 43, "801": 43, "runtimealreadyclos": 43, "802": 43, "runtimealreadyregist": 43, "803": 43, "runtimenotregist": 43, "804": 43, "runtimeleakagedetect": 43, "805": [43, 54], "runtimeclosefailur": 43, "806": [43, 55], "runtimeoutofmemori": 43, "heapstatist": 43, "901": [43, 56], "enginenotavail": [43, 56], "hell": [45, 74], "3rd": [45, 49], "parti": [45, 49], "interfac": [45, 50, 77], "slf4j": 45, "org": [45, 69], "loggerfactori": 45, "myjavetlogg": [45, 74], "isdebugen": 45, "throwabl": [45, 71], "info": [45, 57], "isinfoen": 45, "iswarnen": 45, "javetlogg": 45, "testlogg": 45, "setjavetlogg": [45, 74], "ijavetengineguard": [46, 52], "ijavetenginepool": [46, 66, 74], "guard": 46, "getguard": 46, "10000": 46, "infinit": [46, 71], "javetterminatedexcept": 46, "mark": 46, "iscontinu": 46, "dead": 46, "afterward": [46, 50], "hang": 46, "till": 46, "timeout": [46, 50], "cancel": 46, "monitor": 46, "daemonthread": 46, "isinus": [46, 52], "timeunit": [46, 63], "sleep": [46, 63], "interruptedexcept": [46, 63], "terminateexecut": [46, 52, 77], "var": [46, 49, 63], "greater": 46, "javetengineguard": [46, 53], "interrupt": 46, "disableindebugmod": [46, 53], "enableindebugmod": [46, 53], "getlength": 48, "getsiz": 48, "getkei": 48, "getownpropertynam": 48, "getentri": 48, "foreach": [48, 52, 59], "consum": 48, "biconsum": 48, "weakmap": 48, "weakset": 48, "atomicinteg": 48, "v8valueinteg": [48, 49, 61], "getandincr": 48, "popinteg": 48, "preserv": 48, "v8valuestr": [48, 61], "getjsfunctiontyp": [49, 53], "invis": 49, "stori": 49, "closur": 49, "goal": 49, "iv8valueobject": [49, 52, 53, 54, 57, 59], "caller": [49, 50], "scan": 49, "input": [49, 61, 65, 71], "receiv": [49, 50, 54, 61], "functioncallbackreceiv": 49, "tricki": 49, "charm": 49, "generatearraywithconvert": 49, "intrud": 49, "untouch": 49, "situat": 49, "v8runtimesett": 49, "generatearraywithoutconvert": 49, "declar": [49, 74, 77], "annotationbasedcallbackreceiv": 49, "stringvalu": 49, "getstringvalu": 49, "setstringvalu": 49, "echo": 49, "mathadd": 49, "recogn": [49, 61], "v8valuearrai": 49, "createv8valuearrai": 49, "staticecho": 49, "setv8runtim": 49, "tojsonstr": 49, "testopt": 49, "optionalstr": 49, "teststream": 49, "filter": 49, "thisobjectrequir": [49, 54], "specifi": [49, 77], "thisobject": 49, "bodi": [49, 61, 63], "especi": [49, 66, 77], "simpli": [49, 61], "symboltyp": 49, "v8valuesymboltyp": 49, "v8bindingenabl": [49, 54], "disabledfunct": 49, "disabledproperti": 49, "isv8bindingen": 49, "arbitrarymethod": 49, "whether": [49, 54], "refactor": [49, 53, 54, 55, 56], "friendli": [49, 77], "javetreflectionutil": [49, 54], "getmethodnamefromlambda": [49, 54], "getmethodnamesetfromlambda": [49, 54], "firstli": 49, "disabledfunctionset": 49, "supplier": 49, "serializ": 49, "secondli": 49, "est": 49, "tr\u00e8": 49, "bien": 49, "unbind": [49, 54, 77], "unbindproperti": [49, 54, 59], "unbindfunct": [49, 54, 59], "ijavetanonymous1": 49, "testfunct": 49, "testproperti": 49, "ijavetanonymous2": 49, "javetentityfunct": [49, 54], "jsfunctiontyp": 49, "userdefin": 49, "semi": 49, "mockcallbackreceiv": 49, "blank": 49, "iscal": 49, "happi": 49, "mirror": 49, "anonym": 49, "getsourcecod": [49, 53], "setsourcecod": [49, 53], "sourcecod": 49, "existingsourcecod": 49, "startposit": 49, "endposit": 49, "getposit": 49, "newsourcecod": 49, "setposit": 49, "len": 49, "radic": 49, "rough": 49, "layout": 49, "remain": 49, "accordingli": 49, "invoc": 49, "pseudo": [49, 50, 63], "originalsourcecod": 49, "getjsscopetyp": 49, "isclass": 49, "indic": 49, "callvoid": [49, 63], "isfunct": 49, "incorrect": 49, "malform": 49, "technic": [49, 72], "keyword": 49, "discard": 49, "createv8valuestr": [49, 53], "toclon": [49, 57], "abov": 49, "intvalu": 49, "valueof": 49, "createv8valueinteg": [49, 61], "safeti": 49, "sentenc": [49, 77], "belong": 49, "prototyp": 49, "combin": 49, "func": 49, "callobject": 49, "callprimit": 49, "callasconstructor": [49, 52, 73], "itself": 49, "invokevoid": [49, 61], "invokeobject": [49, 64], "invokeprimit": 49, "despit": 49, "deficit": 49, "quot": 49, "getcontext": [49, 55], "setcontext": 49, "copyscopeinfofrom": [49, 57], "anoth": [49, 73], "setscriptsourc": [49, 57], "lexic": 49, "jsfunction": 49, "ecma": 49, "262": 49, "speak": 49, "parallel": 49, "slot": 49, "scope_info": 49, "describ": 49, "lookup": 49, "presenc": 49, "previou": 49, "scopeinfo": [49, 57], "hascontextextensionslot": 49, "search": 49, "purpos": 49, "henc": 49, "sloppi": 49, "inner": [49, 55], "fast": 49, "harmoni": 49, "scriptcontext": 49, "rather": 49, "functioncontext": 49, "gather": 49, "scriptcontextt": 49, "toler": 49, "natur": [49, 50], "strongli": [49, 61], "conform": 49, "throughout": 49, "samplewithoutthi": 49, "samplewiththi": 49, "excess": 49, "behav": 49, "redund": 49, "fill": 49, "review": [49, 50], "due": 50, "multi": [50, 66, 77], "friend": 50, "iv8valuepromis": [50, 57], "ownership": 50, "chart": 50, "v8valuepromis": [50, 53, 54], "icallback": 50, "oncatch": 50, "v8valueerror": 50, "onfulfil": 50, "fulfil": 50, "onreject": 50, "manner": [50, 77], "filecont": 50, "filepath": 50, "v8valuepromiseresolv": 50, "createv8valuepromis": 50, "getpromis": 50, "getfilecont": 50, "getfilepath": 50, "createv8valueundefin": 50, "print": [50, 65, 71], "rais": 50, "setpromiserejectcallback": 50, "ijavetpromiserejectcallback": 50, "unhandledreject": 50, "handi": 50, "mainstream": 51, "mainten": [51, 54], "v18": [51, 58, 59], "v10": [51, 60], "v16": [51, 56], "v9": [51, 69], "v0": [51, 52, 53, 54, 77], "v14": [51, 53, 54], "critic": 51, "bug": [51, 53, 55, 56, 57, 58, 59, 77], "patch": 51, "deprec": [52, 53], "v8valueweakmap": 52, "v8valueweakset": 52, "setfunct": [52, 53], "functionnam": 52, "strictequ": 52, "samevalu": 52, "iv8valu": [52, 53, 57], "getidentityhash": 52, "iv8valuerefer": 52, "isdead": 52, "view": 52, "2021": [52, 53, 54, 55, 77], "02": [52, 53, 56, 57], "renam": [53, 54, 57, 59], "ijavetconsum": 53, "ijavetuniconsum": 53, "ijavetuniindexedconsum": 53, "ijavetbiindexedconsum": 53, "v8functioncallback": [53, 59], "bindfunct": [53, 59], "bindproperti": [53, 59], "checkreturnvalu": 53, "re": [53, 63], "organ": 53, "iv8valuefunct": [53, 54, 57], "emit": 53, "univers": 53, "createv8valuedoubl": 53, "createv8valuezoneddatetim": 53, "javeterror": [53, 56], "gcbeforeengineclos": 53, "javetcallbackexcept": 53, "isnullorundefin": 53, "06": [53, 54, 56, 59], "257": 53, "idlenotificationdeadlin": 53, "disablegcnotif": 53, "autosendgcnotif": 53, "javetcallbackcontext": [53, 59], "javetpromiserejectcallback": 53, "allowev": 53, "v8script": [53, 57], "v8bindenabl": 54, "v8virtualescapablevalu": 54, "146": [54, 55], "09": [54, 55, 57, 59, 60], "hasinternaltyp": 54, "isgeneratorobject": 54, "isgeneratorfunct": 54, "isasyncfunct": 54, "v8flag": 54, "v8valuesharedarraybuff": 54, "unregistercustomobject": 54, "javadoc": 54, "08": [54, 56, 59], "31": 54, "345": 54, "v8valuebuiltinsymbol": 54, "getownpropertysymbol": 54, "v8valuebuiltinobject": [54, 60], "createv8valuesymbol": 54, "javetvirtualobject": 54, "javetuniversalproxyhandl": 54, "isclos": 54, "07": [54, 56, 58, 59], "29": 54, "staticclassen": 54, "ownkei": 54, "iv8valueproxi": 54, "v8valueproxi": 54, "gettarget": 54, "gethandl": 54, "isrevok": 54, "revok": 54, "createv8valueproxi": 54, "230": 54, "19": [54, 55], "getprototyp": 54, "setprototyp": 54, "01": [54, 55, 56, 57], "iv8moduleresolv": 54, "nodemoduleprocess": 54, "getvers": 54, "15": [54, 56, 57, 58, 60], "05": [54, 56, 59], "269": 54, "28": [54, 57, 60], "13": [55, 57, 58], "106": 55, "javetcompilationexcept": 55, "convent": 55, "agnost": 55, "getdetailedmessag": 55, "getstack": 55, "javetscriptingerror": 55, "adjust": 55, "capac": 55, "observ": 55, "v8runtimeobserveraveragecallbackcontextcount": 55, "v8runtimeobserveraveragereferencecount": 55, "v8runtimeobserveraveragev8modulecount": 55, "v8convert": 55, "algorithm": 55, "26": [55, 56], "180": 55, "javetoutofmemoryexcept": 55, "awai": 55, "busi": [55, 77], "haspendingexcept": 55, "haspendingmessag": 55, "hasscheduledexcept": 55, "promotescheduledexcept": 55, "reportpendingmessag": 55, "addgcepiloguecallback": 55, "addgcprologuecallback": 55, "removegcepiloguecallback": 55, "removegcprologuecallback": 55, "172": [55, 60], "v8intern": 55, "clean": 55, "methodhandl": 55, "cast": 55, "mistakenli": 55, "v8runtimeopt": 55, "noderuntimeopt": 55, "218": 56, "handler": [56, 63], "132": 56, "improp": 56, "waitforenginemaxretrycount": 56, "174": 56, "pend": [56, 63], "andoird": 56, "v8valuebiginteg": 56, "154": 56, "ispurgeeventloopbeforeclos": 56, "setpurgeeventloopbeforeclos": [56, 63], "124": [56, 70], "03": [56, 57, 58], "139": 56, "115": 56, "createv8valuearraybuff": 56, "177": 56, "r23b": 56, "abi": [56, 58, 69], "libgcc": 56, "libstdc": 56, "cento": 56, "2023": [57, 58, 59, 60], "226": 57, "verifynostrongbaseobject": 57, "ilisten": 57, "v8awaitmod": 57, "194": 57, "compilev8valuefunct": 57, "getcacheddata": 57, "iswrap": 57, "getargu": 57, "cacheddata": 57, "v8stringexecutor": 57, "168": 57, "revis": 57, "getscopeinfo": 57, "getownpropertynamestr": 57, "referencecopi": 57, "193": 57, "javetuniversalproxi": 57, "javetdynamicproxi": [57, 59], "javetdynamicobjectfactori": 57, "copycontextfrom": 57, "getscriptsourc": 57, "setsourcecodeopt": 57, "iscompil": 57, "candiscardcompil": 57, "discardcompil": 57, "244": 58, "214": 58, "277": 58, "439": 59, "189": 59, "executor": 59, "nativecontext": 59, "150": 59, "ijavetdirectproxyhandl": [59, 61], "v8virtualiter": 59, "javetproxysymboliterableconvert": 59, "183": 59, "receivecallback": 59, "iv8valuemap": 59, "iv8valuearrai": 59, "batchget": 59, "javetcallbacktyp": 59, "ijavetdirectcal": 59, "redesign": 59, "javetreflectionproxi": 59, "freez": 60, "leaf": 61, "measur": 61, "elaps": 61, "leverag": 61, "verbos": [61, 77], "testjavaflavor": 61, "round": 61, "isobject": 61, "isint": 61, "asint": 61, "wrapper": 61, "neat": 61, "pure": 61, "testjsflavor": 61, "redirect": [61, 66], "proxyget": 61, "proxyset": 61, "jsonnodewrapp": 61, "requirenonnul": 61, "getjsonnod": 61, "childjsonnod": 61, "v8valueboolean": 61, "propertykei": 61, "propertyvalu": 61, "objectnod": 61, "createv8valueboolean": 61, "testnam": 61, "starttim": 61, "currenttimemilli": 61, "stoptim": 61, "100_000": 61, "interoper": 61, "testscriptjavaflavor": 61, "testscriptjsflavor": 61, "objectmapp": 61, "readtre": 61, "jsonstr": 61, "amd": 61, "5950x": 61, "128gb": 61, "22h2": 61, "corretto": 61, "0_282": 61, "19464m": 61, "100000": 61, "5214m": 61, "370": 61, "underli": 61, "drawback": 61, "spent": 61, "door": 63, "hijack": 63, "seamlessli": 63, "parser": 63, "cooki": 63, "multer": 63, "app": 63, "req": 63, "8991": 63, "testexpress": 63, "codefil": 63, "tofil": 63, "atomicboolean": 63, "serverup": 63, "500": 63, "max_valu": 63, "1000": 63, "trick": 63, "awaitmod": 63, "drain_the_task_queu": 63, "pause_the_event_loop": 63, "there_are_more_tasks_in_task_queu": 63, "sleep_a_whil": 63, "resume_the_event_loop": 63, "runonc": 63, "there_are_no_more_task": 63, "timer": 63, "gracefulli": 63, "color": 64, "pink": 64, "awt": 64, "175": 64, "stringarrai": 65, "represent": 65, "stringlist": 65, "assert": 65, "mapx": 65, "mapi": 65, "spawn": 66, "databas": 66, "javetengin": [66, 72], "javetconsoleinterceptor": 66, "unregist": [66, 70], "necessari": 66, "famili": 69, "unix": 69, "operatingsystem": 69, "val": 69, "cpuarch": 69, "getproperti": 69, "ismacosx": 69, "islinux": 69, "aarch64": 69, "cent": 69, "mission": 69, "imposs": 69, "guess": 70, "increaseandget": 70, "suitabl": 70, "testintercept": 70, "delta": 70, "testinterceptor": 70, "76": 70, "200": 70, "scanner": 71, "nextlin": 71, "captur": 71, "err": 71, "getmessag": 71, "highlight": 72, "javetenginepoo": 72, "l": 72, "loadj": 73, "decimaljsfil": 73, "getabsolutepath": 73, "logerror": 73, "v8valuefunctiondecim": 73, "v8valueobjectdecim": 73, "45": 73, "hasownproperti": 73, "getstr": 73, "bigdecim": 73, "lack": [73, 77], "bean": 74, "propertysourc": 74, "classpath": 74, "configurationproperti": 74, "prefix": 74, "myjavetengineconfig": 74, "javetenginepoolnod": 74, "getjavetenginepoolnod": 74, "javetengineconfignod": 74, "setallowev": 74, "setdefaultengineguardtimeoutmilli": 74, "setengineguardcheckintervalmilli": 74, "setpooldaemoncheckintervalmilli": 74, "setpoolidletimeoutsecond": 74, "setpoolmins": 74, "setpoolmaxs": 74, "setpoolshutdowntimeoutsecond": 74, "setresetenginetimeoutsecond": 74, "javetenginepoolv8": 74, "getjavetenginepoolv8": 74, "javetengineconfigv8": 74, "frequent": 77, "ask": 77, "question": 77, "jan": 77, "publish": 77, "smooth": 77, "took": 77, "week": 77, "abandon": 77, "hierarchi": 77, "inconsist": 77, "repeat": 77, "attent": 77, "mental": 77, "role": 77, "inherit": 77, "liter": 77, "richer": 77, "v8valueprimit": 77, "v8data": 77, "consist": 77, "rich": 77, "pain": 77, "imper": 77, "never": 77, "deliv": 77, "elimin": 77, "rid": 77, "everywher": 77, "hotfix": 77, "usag": 77, "extra": 77, "shut": 77, "success": 77}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"build": [0, 1, 2, 9], "javet": [0, 1, 2, 4, 6, 7, 12, 17, 22, 25, 35, 36, 38, 39, 55, 66, 67, 71, 77], "environ": [0, 2, 18, 35], "linux": [0, 1, 2, 9, 17, 38, 69], "maco": 0, "window": [0, 1, 2, 9, 38, 69], "android": [0, 1, 2, 55, 69], "variabl": [0, 35], "v8": [0, 1, 4, 14, 37, 38, 47, 48, 49, 50, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 67, 72, 73, 77], "featur": [0, 25, 31], "flag": 0, "from": [1, 12, 29, 30, 35, 37, 77], "scratch": 1, "prepar": [1, 26, 31, 64], "arm64": [1, 55], "x86_64": [1, 54], "mac": [1, 54, 55, 69], "o": [1, 54, 55, 69], "why": [1, 9, 16, 24, 43, 49, 77], "patch": [1, 38], "node": [1, 4, 8, 16, 24, 38, 40, 53, 55, 57, 63, 67, 72, 73, 77], "j": [1, 4, 8, 16, 24, 38, 40, 53, 55, 57, 61, 63, 67, 72, 73, 77], "jni": 1, "librari": [1, 20, 35, 55], "docker": 2, "hub": 2, "github": 2, "express": 2, "full": 2, "multi": [2, 4, 54], "stage": 2, "all": 2, "one": 2, "debug": [3, 22, 46, 52], "chrome": [3, 22], "develop": [3, 5, 8, 13], "tool": [3, 8], "cdt": 3, "shell": [3, 71], "1": [3, 36, 37, 45, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63, 67], "run": 3, "2": [3, 36, 37, 45, 49, 52, 53, 54, 55, 56, 57, 58, 59, 61, 63], "script": 3, "3": [3, 8, 37, 52, 53, 54, 55, 56, 57, 58, 59, 60, 63], "open": 3, "4": [3, 52, 53, 54, 55, 56, 57, 59], "usual": 3, "intern": [3, 38], "handshak": 3, "custom": [3, 27, 29, 31, 35, 55], "design": [4, 27], "architectur": 4, "primit": [4, 30, 53, 77], "refer": [4, 32, 33, 37], "type": [4, 49, 77], "mode": [4, 14, 16, 31, 36, 38, 46, 67, 72, 73], "v": [4, 49], "modul": [4, 38, 53, 54, 77], "requir": 4, "import": [4, 38, 49], "virtual": [4, 36], "engin": [4, 40, 46, 52, 66], "pool": [4, 40, 46, 66, 72], "isol": 4, "context": [4, 49], "intercept": [4, 12, 49, 53, 70], "cross": 4, "platform": 4, "process": [4, 54], "safeti": [4, 28, 36], "memori": [4, 37], "leak": 4, "detect": 4, "perform": [6, 36, 39], "test": [7, 12, 61, 70], "jdk": 8, "intellij": 8, "gradl": [8, 25, 69], "maven": [8, 9, 25, 69], "option": [8, 37], "visual": 8, "studio": 8, "commun": 8, "2022": 8, "python": 8, "8": [8, 53, 54, 56, 57, 60], "histori": 9, "j2v8": [9, 77], "issu": 9, "latest": 9, "version": 9, "onli": 9, "autom": 9, "system": 9, "deploi": [9, 35], "repositori": 9, "background": [10, 24], "what": [11, 36, 49, 63], "i": [11, 16, 22, 49, 63], "motiv": [11, 66], "how": [12, 26, 29, 31, 37, 46, 49, 63], "think": 12, "v8runtim": [12, 37, 77], "v8valueglobalobject": 12, "executor": 12, "execut": 12, "declar": [12, 53], "function": [12, 28, 31, 49, 53, 54], "properti": [12, 49, 53, 54], "learn": 12, "unit": 12, "where": [14, 15], "ar": [14, 15], "es6": [14, 77], "api": [14, 33], "exampl": [15, 38, 50], "inspector": 16, "disabl": [16, 49], "can": [17, 21, 22, 28, 35, 49], "support": [17, 21], "legaci": 17, "faq": 19, "A": 20, "dynam": [20, 31, 38], "link": 20, "dll": 20, "initi": 20, "routin": 20, "fail": 20, "i18n": 21, "devtool": 22, "troubleshoot": [23, 44], "crash": 24, "when": [24, 28], "being": 24, "close": [24, 63], "root": 24, "caus": 24, "solut": 24, "event": [24, 53], "unhandledreject": 24, "noderuntim": 24, "await": [24, 37], "lowmemorynotif": [24, 37], "major": 25, "quick": 25, "start": 25, "depend": [25, 69], "kotlin": [25, 69], "dsl": [25, 69], "groovi": [25, 69], "hello": [25, 67], "sponsor": 25, "licens": 25, "blog": 25, "document": 25, "bridg": 26, "convert": [26, 27, 28, 29, 30, 31, 54, 65], "usag": [26, 29, 31, 37, 48, 66, 72], "boolean": [26, 49], "int": 26, "arrai": [26, 65], "integ": 26, "list": [26, 42, 65], "long": [26, 37], "unmodifi": 26, "string": [26, 49], "cast": 26, "java": [26, 29, 30, 49, 54, 61, 64], "object": [26, 27, 28, 29, 31, 49, 65], "javascript": [26, 29, 30, 49, 63, 64], "pojo": 27, "defin": [27, 49], "creat": 27, "pojoconvert": 27, "readi": 27, "go": 27, "comparison": [28, 36, 49], "insid": 28, "bind": [28, 49], "via": 28, "nativ": [28, 35, 38, 53], "proxi": [28, 31, 54], "null": 28, "circular": 28, "structur": 28, "doe": [28, 29, 31, 36], "config": 28, "take": [28, 35], "effect": 28, "built": [28, 38], "ignor": 28, "regist": [29, 50], "enhanc": 29, "highlight": [29, 39], "It": 29, "work": [29, 31], "instanc": 31, "file": [31, 35], "map": [31, 49, 65], "path": 31, "static": [31, 64], "stringbuild": [31, 64], "pattern": [31, 64], "enum": [31, 64], "interfac": [31, 54], "anonym": [31, 54], "class": [31, 64], "v8convert": 31, "v8properti": [31, 70], "name": 31, "v8function": [31, 70, 77], "javetproxyconvert": 31, "resourc": [34, 37, 40, 49], "manag": [34, 37, 40, 49], "load": [35, 38, 55], "unload": 35, "On": [35, 38], "demand": [35, 38], "locat": 35, "deploy": 35, "skip": 35, "alreadi": 35, "anoth": 35, "classload": [35, 54], "suppress": 35, "lib": 35, "listen": 35, "remov": 35, "jar": 35, "know": 36, "lock": 36, "mean": 36, "implicit": 36, "explicit": 36, "thread": [36, 40, 63], "coroutin": 36, "challeng": 37, "jvm": 37, "gc": [37, 53], "c": 37, "runtim": 37, "recommend": 37, "automat": [37, 46, 49], "try": 37, "weak": 37, "escap": 37, "without": 37, "altern": 37, "arraybuff": 37, "passiv": 37, "aggress": 37, "manual": [37, 38, 46, 49], "idlenotificationdeadlin": 37, "deadlineinmilli": 37, "statist": 37, "modular": 38, "gap": 38, "between": 38, "deal": 38, "elf": 38, "rebuild": 38, "pre": 38, "synthet": 38, "result": 39, "best": 40, "practic": 40, "secur": 40, "tip": [41, 49], "todo": 42, "error": [43, 53], "code": [43, 49, 53], "backward": 43, "compat": [43, 69], "log": 45, "step": [45, 63], "implement": 45, "ijavetlogg": 45, "inject": [45, 64, 74], "logger": 45, "termin": 46, "about": [46, 49], "valu": [47, 49], "collect": 48, "v8valuearrai": 48, "v8valueset": 48, "v8valuemap": 48, "registr": 49, "convers": [49, 53, 77], "thi": 49, "pass": 49, "symbol": 49, "unregist": 49, "both": 49, "One": 49, "bindfunct": 49, "functionnam": 49, "javetcallbackcontext": 49, "set": 49, "kei": 49, "v8valu": 49, "codestr": 49, "mismatch": 49, "summari": 49, "chang": 49, "user": 49, "fly": 49, "sourc": [49, 53], "call": 49, "invok": 49, "scope": [49, 54], "info": 49, "avoid": 49, "argument": 49, "handl": 49, "count": 49, "promis": [50, 54], "resolv": [50, 54], "lifecycl": 50, "callback": 50, "f": 50, "readfileasync": 50, "unhandl": 50, "reject": 50, "releas": [51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "note": [51, 52, 53, 54, 55, 56, 57, 58, 59, 60], "0": [52, 53, 54, 55, 56, 57, 58, 59, 60], "7": [52, 53, 54, 55, 56, 57, 59], "x": [52, 53, 54, 55, 56, 57, 58, 59, 60], "live": 52, "locker": 52, "guard": 52, "bug": 52, "fix": 52, "birth": 52, "9": [52, 53, 54, 55, 56, 57, 60], "10": [53, 54, 57], "index": 53, "foreach": 53, "hotfix": 53, "6": [53, 54, 55, 56, 59], "loop": 53, "5": [53, 54, 55, 56, 59], "v9": [53, 54, 55, 56], "first": [53, 55], "time": [53, 55], "14": 54, "13": 54, "12": 54, "privat": 54, "11": 54, "polyfil": [54, 73], "empow": 54, "v2": 54, "v1": 54, "safe": 54, "core": 55, "abi": 55, "21": 55, "v16": 55, "v10": [56, 57], "v11": [57, 58, 59, 60], "v18": 57, "expos": 61, "jsonnod": 61, "approach": 61, "flavor": 61, "direct": 61, "exposur": 61, "wrap": 61, "conclus": 61, "advanc": 62, "interact": 63, "That": 63, "possibl": 63, "server": 63, "worker": 63, "main": 63, "If": 63, "hang": 63, "dure": 63, "interop": 64, "an": 64, "goal": 66, "print": 67, "basic": 68, "instal": 69, "sampl": 70, "co": 72, "exist": 72, "v8host": 72, "decim": 73, "spring": 74, "integr": 74, "configur": 74, "tutori": 75, "migrat": [76, 77], "guid": [76, 77], "registerjavamethod": 77, "v8locker": 77, "bless": 77}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"Build Javet": [[0, "build-javet"], [1, "build-javet"], [1, "id1"]], "Build Environment": [[0, "build-environment"], [2, "build-environment"]], "Linux Environment": [[0, "linux-environment"], [2, "linux-environment"]], "MacOS Environment": [[0, "macos-environment"]], "Windows Environment": [[0, "windows-environment"], [2, "windows-environment"]], "Android Environment": [[0, "android-environment"]], "Environment Variables": [[0, "environment-variables"]], "V8 Feature Flags": [[0, "v8-feature-flags"]], "Build Javet from Scratch": [[1, "build-javet-from-scratch"]], "Build V8": [[1, "build-v8"]], "Prepare V8": [[1, "prepare-v8"]], "Build V8 for Linux arm64": [[1, "build-v8-for-linux-arm64"]], "Build V8 for Linux x86_64": [[1, "build-v8-for-linux-x86-64"]], "Build V8 for Mac OS arm64": [[1, "build-v8-for-mac-os-arm64"]], "Build V8 for Mac OS x86_64": [[1, "build-v8-for-mac-os-x86-64"]], "Build V8 for Windows": [[1, "build-v8-for-windows"]], "Build V8 for Android": [[1, "build-v8-for-android"]], "Why Patching V8?": [[1, "why-patching-v8"]], "Build Node.js": [[1, "build-node-js"]], "Prepare Node.js": [[1, "prepare-node-js"]], "Build Node.js on Linux": [[1, "build-node-js-on-linux"]], "Why Patching Node.js?": [[1, "why-patching-node-js"]], "Build Node.js on Mac OS": [[1, "build-node-js-on-mac-os"]], "Build Node.js on Windows": [[1, "build-node-js-on-windows"]], "Build Javet JNI Library for Android": [[1, "build-javet-jni-library-for-android"]], "Build Javet for Linux, Mac OS and Windows": [[1, "build-javet-for-linux-mac-os-and-windows"]], "Build Javet for Android": [[1, "build-javet-for-android"]], "Build Javet with Docker": [[2, "build-javet-with-docker"]], "Docker Hub and Github": [[2, "docker-hub-and-github"]], "Build Javet for Linux on Linux or Windows": [[2, "build-javet-for-linux-on-linux-or-windows"]], "Express Build": [[2, "express-build"]], "Full Build - Multi-staged": [[2, "full-build-multi-staged"]], "Full Build - All-in-one": [[2, "full-build-all-in-one"]], "Build Javet for Windows on Windows": [[2, "build-javet-for-windows-on-windows"]], "Build Javet for Android on Linux or Windows": [[2, "build-javet-for-android-on-linux-or-windows"]], "Debug with Chrome Developer Tools": [[3, "debug-with-chrome-developer-tools"]], "CDT Shell": [[3, "cdt-shell"]], "1. Run CDT Shell": [[3, "run-cdt-shell"]], "2. Run Script in CDT Shell": [[3, "run-script-in-cdt-shell"]], "3. Open CDT": [[3, "open-cdt"]], "4. Debug as Usual": [[3, "debug-as-usual"]], "Chrome Developer Tools Internals": [[3, "chrome-developer-tools-internals"]], "Handshake": [[3, "handshake"]], "Customization": [[3, "customization"]], "Javet Design": [[4, "javet-design"]], "Architecture": [[4, "architecture"]], "Primitive and Reference Types in Javet": [[4, "primitive-and-reference-types-in-javet"]], "Node.js Mode vs. V8 Mode": [[4, "node-js-mode-vs-v8-mode"]], "Module": [[4, "module"]], "require() vs. import()": [[4, "require-vs-import"]], "Module Virtualization": [[4, "module-virtualization"]], "Engine Pool": [[4, "engine-pool"]], "V8 Isolate and Context in Javet": [[4, "v8-isolate-and-context-in-javet"]], "Javet Engine Pool": [[4, "javet-engine-pool"], [66, "javet-engine-pool"]], "Interception": [[4, "interception"], [70, "interception"]], "Cross-platform": [[4, "cross-platform"]], "Multi-process Safety": [[4, "multi-process-safety"]], "Memory Leak Detection": [[4, "memory-leak-detection"]], "Development": [[5, "development"], [13, "development"]], "Javet Performance": [[6, "javet-performance"], [39, "javet-performance"]], "Test Javet": [[7, "test-javet"]], "Development Tools": [[8, "development-tools"]], "JDK": [[8, "jdk"]], "IntelliJ": [[8, "intellij"]], "Gradle": [[8, "gradle"]], "Node.js": [[8, "node-js"], [40, "node-js"]], "Maven (Optional)": [[8, "maven-optional"]], "Visual Studio Community 2022 (Optional)": [[8, "visual-studio-community-2022-optional"]], "Python 3.8+ (Optional)": [[8, "python-3-8-optional"]], "History with J2V8": [[9, "history-with-j2v8"]], "J2V8 Issues": [[9, "j2v8-issues"]], "J2V8 Latest Version": [[9, "j2v8-latest-version"]], "Why Windows and Linux only?": [[9, "why-windows-and-linux-only"]], "Why not Automate the J2V8 Build System?": [[9, "why-not-automate-the-j2v8-build-system"]], "Why not Deploy J2V8 to Maven Repository?": [[9, "why-not-deploy-j2v8-to-maven-repository"]], "Background": [[10, "background"], [24, "background"]], "What is the Motivation?": [[11, "what-is-the-motivation"]], "How to Think in Javet?": [[12, "how-to-think-in-javet"]], "V8Runtime and V8ValueGlobalObject": [[12, "v8runtime-and-v8valueglobalobject"]], "V8Runtime": [[12, "v8runtime"]], "V8ValueGlobalObject": [[12, "v8valueglobalobject"]], "Executor and Execute": [[12, "executor-and-execute"]], "Declarative Function and Property Interception": [[12, "declarative-function-and-property-interception"]], "Learn from Unit Test": [[12, "learn-from-unit-test"]], "Where are ES6 API in V8 Mode?": [[14, "where-are-es6-api-in-v8-mode"]], "Where are the Examples?": [[15, "where-are-the-examples"]], "Why is the Inspector Disabled in Node.js Mode?": [[16, "why-is-the-inspector-disabled-in-node-js-mode"]], "Can Javet Support Legacy Linux?": [[17, "can-javet-support-legacy-linux"]], "Environment": [[18, "environment"]], "FAQ": [[19, "faq"]], "A dynamic link library (DLL) initialization routine failed": [[20, "a-dynamic-link-library-dll-initialization-routine-failed"]], "Can i18n be Supported?": [[21, "can-i18n-be-supported"]], "Can I Debug Javet in Chrome DevTools?": [[22, "can-i-debug-javet-in-chrome-devtools"]], "Troubleshooting": [[23, "troubleshooting"], [44, "troubleshooting"]], "Why Node.js Crashes When being Closed?": [[24, "why-node-js-crashes-when-being-closed"]], "Root Cause": [[24, "root-cause"]], "Solution": [[24, "solution"]], "Event unhandledRejection": [[24, "event-unhandledrejection"]], "NodeRuntime.await()": [[24, "noderuntime-await"]], "NodeRuntime.lowMemoryNotification()": [[24, "noderuntime-lowmemorynotification"]], "Javet": [[25, "javet"]], "Major Features": [[25, "major-features"]], "Quick Start": [[25, "quick-start"]], "Dependency": [[25, "dependency"], [69, "dependency"]], "Maven": [[25, "maven"], [69, "maven"]], "Gradle Kotlin DSL": [[25, "gradle-kotlin-dsl"], [69, "gradle-kotlin-dsl"]], "Gradle Groovy DSL": [[25, "gradle-groovy-dsl"], [69, "gradle-groovy-dsl"]], "Hello Javet": [[25, "hello-javet"], [67, "hello-javet"]], "Sponsors": [[25, "sponsors"]], "License": [[25, "license"]], "Blog": [[25, "blog"]], "Documents": [[25, "documents"]], "Bridge Converter": [[26, "bridge-converter"]], "Usage": [[26, "usage"], [29, "usage"], [31, "usage"], [48, "usage"], [66, "usage"], [72, "usage"]], "Preparation": [[26, "preparation"], [31, "preparation"], [64, "preparation"]], "Boolean": [[26, "boolean"]], "int": [[26, "int"]], "int Array": [[26, "int-array"]], "Integer List": [[26, "integer-list"]], "Long Unmodifiable List": [[26, "long-unmodifiable-list"]], "String Array": [[26, "string-array"]], "How to Cast Java Objects to JavaScript Objects?": [[26, "how-to-cast-java-objects-to-javascript-objects"]], "Custom Converter": [[27, "custom-converter"]], "Design a POJO Converter": [[27, "design-a-pojo-converter"]], "Define POJO Object": [[27, "define-pojo-object"]], "Create PojoConverter": [[27, "create-pojoconverter"]], "Ready! Go!": [[27, "ready-go"]], "Converters": [[28, "converters"]], "Comparisons": [[28, "comparisons"], [36, "comparisons"], [49, "comparisons"]], "Inside Converters": [[28, "inside-converters"]], "Binding via Native": [[28, "binding-via-native"]], "Binding via Proxy": [[28, "binding-via-proxy"]], "Null Safety": [[28, "null-safety"]], "Functions and Objects": [[28, "functions-and-objects"]], "Circular Structure": [[28, "circular-structure"]], "When does the Config Take Effect?": [[28, "when-does-the-config-take-effect"]], "Can Built-in Converter be Ignored?": [[28, "can-built-in-converter-be-ignored"]], "Object Converter": [[29, "object-converter"], [65, "object-converter"]], "From Java to JavaScript": [[29, "from-java-to-javascript"], [30, "from-java-to-javascript"]], "From JavaScript to Java": [[29, "from-javascript-to-java"], [30, "from-javascript-to-java"]], "Register Custom Objects": [[29, "register-custom-objects"]], "Enhance the Custom Object": [[29, "enhance-the-custom-object"]], "Register the Custom Object": [[29, "register-the-custom-object"]], "Highlights": [[29, "highlights"], [39, "highlights"]], "How does It Work?": [[29, "how-does-it-work"]], "Primitive Converter": [[30, "primitive-converter"]], "Proxy Converter": [[31, "proxy-converter"]], "Instance: File": [[31, "instance-file"]], "Instance: Map": [[31, "instance-map"]], "Instance: Path": [[31, "instance-path"]], "Static: StringBuilder": [[31, "static-stringbuilder"]], "Static: Pattern": [[31, "static-pattern"]], "Static: Enum": [[31, "static-enum"]], "Static: Interface": [[31, "static-interface"]], "Dynamic: Anonymous Function": [[31, "dynamic-anonymous-function"]], "Dynamic: Anonymous Object for Interface": [[31, "dynamic-anonymous-object-for-interface"]], "Dynamic: Anonymous Object for Class": [[31, "dynamic-anonymous-object-for-class"]], "Features": [[31, "features"]], "@V8Convert::mode": [[31, "v8convert-mode"]], "@V8Property::name": [[31, "v8property-name"]], "@V8Function::name": [[31, "v8function-name"]], "How does JavetProxyConverter Work?": [[31, "how-does-javetproxyconverter-work"]], "How to Customize JavetProxyConverter?": [[31, "how-to-customize-javetproxyconverter"]], "Reference": [[32, "reference"]], "API Reference": [[33, "api-reference"]], "Resource Management": [[34, "resource-management"], [40, "resource-management"], [49, "resource-management"]], "Load and Unload": [[35, "load-and-unload"]], "Can Javet Native Library be Loaded or Unloaded On-demand?": [[35, "can-javet-native-library-be-loaded-or-unloaded-on-demand"]], "Unload": [[35, "unload"]], "Load": [[35, "load"]], "Can Javet Native Library be Deployed to a Custom Location?": [[35, "can-javet-native-library-be-deployed-to-a-custom-location"]], "Can Javet Native Library Deployment be Skipped?": [[35, "can-javet-native-library-deployment-be-skipped"]], "Can already loaded in another classloader be Suppressed?": [[35, "can-already-loaded-in-another-classloader-be-suppressed"]], "Can Javet Lib Loading Listener Take Environment Variables?": [[35, "can-javet-lib-loading-listener-take-environment-variables"]], "Can Javet Libraries be Removed from the Jar File?": [[35, "can-javet-libraries-be-removed-from-the-jar-file"]], "Know the Lock": [[36, "know-the-lock"]], "What does Lock Mean in Javet?": [[36, "what-does-lock-mean-in-javet"]], "1. Implicit Mode": [[36, "implicit-mode"]], "2. Explicit Mode": [[36, "explicit-mode"]], "Performance": [[36, "performance"]], "Thread-safety": [[36, "thread-safety"]], "Coroutines or Virtual Threads": [[36, "coroutines-or-virtual-threads"]], "Memory Management": [[37, "memory-management"]], "3 Challenges in Memory Management": [[37, "challenges-in-memory-management"]], "JVM GC": [[37, "jvm-gc"]], "C++ Runtime": [[37, "c-runtime"]], "V8 GC": [[37, "v8-gc"]], "Recommended Options": [[37, "recommended-options"]], "Automatic Management with try-with-resource": [[37, "automatic-management-with-try-with-resource"]], "Automatically Manage with Weak Reference": [[37, "automatically-manage-with-weak-reference"]], "How to Escape from try-with-resource?": [[37, "how-to-escape-from-try-with-resource"]], "Usage 1 without V8 Runtime": [[37, "usage-1-without-v8-runtime"]], "Usage 2 with V8 Runtime": [[37, "usage-2-with-v8-runtime"]], "Alternative Option: ArrayBuffer": [[37, "alternative-option-arraybuffer"]], "GC": [[37, "gc"]], "Automatic GC": [[37, "automatic-gc"]], "Passive GC": [[37, "passive-gc"]], "Aggressive GC": [[37, "aggressive-gc"]], "Manual GC": [[37, "manual-gc"]], "V8Runtime.await()": [[37, "v8runtime-await"]], "V8Runtime.idleNotificationDeadline(long deadlineInMillis)": [[37, "v8runtime-idlenotificationdeadline-long-deadlineinmillis"]], "V8Runtime.lowMemoryNotification()": [[37, "v8runtime-lowmemorynotification"]], "Statistics": [[37, "statistics"]], "Modularization": [[38, "modularization"]], "Node.js Mode": [[38, "node-js-mode"], [73, "node-js-mode"]], "Example": [[38, "example"]], "Gaps between Javet Node.js Mode and Native Node.js": [[38, "gaps-between-javet-node-js-mode-and-native-node-js"]], "Deal with Native Modules": [[38, "deal-with-native-modules"]], "Patch ELF Native Modules on Linux": [[38, "patch-elf-native-modules-on-linux"]], "Rebuild Native Modules on Windows": [[38, "rebuild-native-modules-on-windows"]], "Manual Patch Native Modules on Windows": [[38, "manual-patch-native-modules-on-windows"]], "Dynamically Import Built-in Modules": [[38, "dynamically-import-built-in-modules"]], "V8 Mode": [[38, "v8-mode"], [73, "v8-mode"]], "Pre-load": [[38, "pre-load"]], "On-demand": [[38, "on-demand"]], "Synthetic Module": [[38, "synthetic-module"]], "Internals": [[38, "internals"]], "Result": [[39, "result"]], "Best Practices": [[40, "best-practices"]], "Thread, Engine and Pool": [[40, "thread-engine-and-pool"]], "Security": [[40, "security"]], "Tips": [[41, "tips"], [49, "tips"]], "TODO List": [[42, "todo-list"]], "Error Codes": [[43, "error-codes"]], "Why Error Codes?": [[43, "why-error-codes"]], "Backward Compatibility": [[43, "backward-compatibility"]], "Logging": [[45, "logging"]], "Step 1: Implement IJavetLogger": [[45, "step-1-implement-ijavetlogger"]], "Step 2: Inject the Logger": [[45, "step-2-inject-the-logger"]], "Termination": [[46, "termination"]], "Automatic Termination with Pool and Engine": [[46, "automatic-termination-with-pool-and-engine"]], "Manual Termination": [[46, "manual-termination"]], "How about Debug Mode?": [[46, "how-about-debug-mode"]], "V8 Values": [[47, "v8-values"]], "V8 Collection": [[48, "v8-collection"]], "Collection in V8": [[48, "collection-in-v8"]], "V8ValueArray": [[48, "v8valuearray"]], "V8ValueSet": [[48, "v8valueset"]], "V8ValueMap": [[48, "v8valuemap"]], "V8 Function": [[49, "v8-function"]], "Function Types": [[49, "function-types"]], "Function Interception": [[49, "function-interception"]], "Automatic Registration": [[49, "automatic-registration"]], "bind()": [[49, "bind"]], "How about Object Type Conversion?": [[49, "how-about-object-type-conversion"]], "Can this be Passed in?": [[49, "can-this-be-passed-in"]], "Can Symbol Properties be Intercepted?": [[49, "can-symbol-properties-be-intercepted"]], "How to Disable Properties or Functions?": [[49, "how-to-disable-properties-or-functions"]], "How to Unregister Properties or Functions?": [[49, "how-to-unregister-properties-or-functions"]], "Can Both JavaScript Function and Property Map to One Java Function?": [[49, "can-both-javascript-function-and-property-map-to-one-java-function"]], "Can 2 Java Functions Map to One JavaScript Function and Property?": [[49, "can-2-java-functions-map-to-one-javascript-function-and-property"]], "Manual Registration": [[49, "manual-registration"]], "boolean bindFunction(String functionName, JavetCallbackContext javetCallbackContext)": [[49, "boolean-bindfunction-string-functionname-javetcallbackcontext-javetcallbackcontext"]], "boolean set(String key, V8Value value)": [[49, "boolean-set-string-key-v8value-value"]], "boolean bindFunction(String functionName, String codeString)": [[49, "boolean-bindfunction-string-functionname-string-codestring"]], "Type Mismatch": [[49, "type-mismatch"]], "Summary": [[49, "summary"]], "Change a User Defined JavaScript Function on the Fly": [[49, "change-a-user-defined-javascript-function-on-the-fly"]], "Why is Changing a User Defined JavaScript Function Important?": [[49, "why-is-changing-a-user-defined-javascript-function-important"]], "How to Change a User Defined JavaScript Function on the Fly?": [[49, "how-to-change-a-user-defined-javascript-function-on-the-fly"]], "What is the Source Code of a Function in V8?": [[49, "what-is-the-source-code-of-a-function-in-v8"]], "Automatic Type Conversion": [[49, "automatic-type-conversion"]], "Call vs. Invoke": [[49, "call-vs-invoke"]], "Call": [[49, "call"]], "Invoke": [[49, "invoke"]], "How about Bind?": [[49, "how-about-bind"]], "Context and Scope Info": [[49, "context-and-scope-info"]], "How to Avoid Argument Type Mismatches?": [[49, "how-to-avoid-argument-type-mismatches"]], "How to Handle Argument Count Mismatches?": [[49, "how-to-handle-argument-count-mismatches"]], "V8 Promise": [[50, "v8-promise"]], "Promise and Resolver": [[50, "promise-and-resolver"]], "Lifecycle": [[50, "lifecycle"]], "Register a Callback": [[50, "register-a-callback"]], "Example fs.readFileAsync()": [[50, "example-fs-readfileasync"]], "Unhandled Rejection": [[50, "unhandled-rejection"]], "Release Notes": [[51, "release-notes"]], "Release Notes 0.7.x": [[52, "release-notes-0-7-x"]], "0.7.4 Live Debug": [[52, "live-debug"]], "0.7.3 Locker": [[52, "locker"]], "0.7.2 Engine Guard": [[52, "engine-guard"]], "0.7.1 Bug Fixes": [[52, "bug-fixes"]], "0.7.0 Birth with V8 v8.9": [[52, "birth-with-v8-v8-9"]], "Release Notes 0.8.x": [[53, "release-notes-0-8-x"]], "0.8.10 Index in forEach": [[53, "index-in-foreach"]], "0.8.9 Declarative Property Interception": [[53, "declarative-property-interception"]], "0.8.8 Hotfix the Source Code": [[53, "hotfix-the-source-code"]], "0.8.7 Native Modules for Node.js": [[53, "native-modules-for-node-js"]], "0.8.6 Event Loop for Node.js": [[53, "event-loop-for-node-js"]], "0.8.5 Error Codes": [[53, "error-codes"]], "0.8.4 V8 v9.0": [[53, "v8-v9-0"]], "0.8.3 GC": [[53, "gc"]], "0.8.2 Conversion for Primitive": [[53, "conversion-for-primitive"]], "0.8.1 Declarative Function Interception": [[53, "declarative-function-interception"]], "0.8.0 First Time with Node.js": [[53, "first-time-with-node-js"]], "Release Notes 0.9.x": [[54, "release-notes-0-9-x"]], "0.9.14 V8 Scope": [[54, "v8-scope"]], "0.9.13 V8 v9.4": [[54, "v8-v9-4"]], "0.9.12 Private Properties": [[54, "private-properties"]], "0.9.11 V8 v9.3": [[54, "v8-v9-3"]], "0.9.10 Polyfill Java Interfaces": [[54, "polyfill-java-interfaces"]], "0.9.9 Mac OS x86_64": [[54, "mac-os-x86-64"]], "0.9.8 Empower the Promise": [[54, "empower-the-promise"]], "0.9.7 Proxy Converter v2": [[54, "proxy-converter-v2"]], "0.9.6 Proxy Converter v1": [[54, "proxy-converter-v1"]], "0.9.5 V8 v9.2": [[54, "v8-v9-2"]], "0.9.4 Multi-process Safe": [[54, "multi-process-safe"]], "0.9.3 Module Resolver": [[54, "module-resolver"]], "0.9.2 Anonymous Functions in Converter": [[54, "anonymous-functions-in-converter"]], "0.9.1 V8 in Classloader": [[54, "v8-in-classloader"]], "0.9.0 V8 v9.1": [[54, "v8-v9-1"]], "Release Notes 1.0.x": [[55, "release-notes-1-0-x"]], "1.0.7 V8 v9.7": [[55, "v8-v9-7"]], "1.0.6 Mac OS (arm64)": [[55, "mac-os-arm64"]], "1.0.5 Javet Core": [[55, "javet-core"]], "1.0.4 V8 9.6": [[55, "v8-9-6"]], "1.0.3 Android ABI 21": [[55, "android-abi-21"]], "1.0.2 First Time with Android": [[55, "first-time-with-android"]], "1.0.1 Custom Library Loading": [[55, "custom-library-loading"]], "1.0.0 First Time with Node.js v16": [[55, "first-time-with-node-js-v16"]], "Release Notes 1.1.x": [[56, "release-notes-1-1-x"]], "1.1.7 V8 v10.5": [[56, "v8-v10-5"]], "1.1.6 V8 v10.4": [[56, "v8-v10-4"]], "1.1.5 V8 v10.3": [[56, "v8-v10-3"]], "1.1.4 V8 v10.2": [[56, "v8-v10-2"]], "1.1.3 V8 v10.1": [[56, "v8-v10-1"]], "1.1.2 V8 v10.0": [[56, "v8-v10-0"]], "1.1.1 V8 v9.9": [[56, "v8-v9-9"]], "1.1.0 V8 v9.8": [[56, "v8-v9-8"]], "Release Notes 2.0.x": [[57, "release-notes-2-0-x"]], "2.0.4 V8 v11.0": [[57, "v8-v11-0"]], "2.0.3 V8 v10.9": [[57, "v8-v10-9"]], "2.0.2 V8 v10.8": [[57, "v8-v10-8"]], "2.0.1 V8 v10.7": [[57, "v8-v10-7"]], "2.0.0 Node.js v18.10": [[57, "node-js-v18-10"]], "Release Notes 2.1.x": [[58, "release-notes-2-1-x"]], "2.1.2 V8 v11.3": [[58, "v8-v11-3"]], "2.1.1 V8 v11.2": [[58, "v8-v11-2"]], "2.1.0 V8 v11.1": [[58, "v8-v11-1"]], "Release Notes 2.2.x": [[59, "release-notes-2-2-x"]], "2.2.3 V8 v11.7": [[59, "v8-v11-7"]], "2.2.2 V8 v11.6": [[59, "v8-v11-6"]], "2.2.1 V8 v11.5": [[59, "v8-v11-5"]], "2.2.0 V8 v11.4": [[59, "v8-v11-4"]], "Release Notes 3.0.x": [[60, "release-notes-3-0-x"]], "3.0.1 V8 v11.9": [[60, "v8-v11-9"]], "3.0.0 V8 v11.8": [[60, "v8-v11-8"]], "Expose JsonNode in V8": [[61, "expose-jsonnode-in-v8"]], "2 Approaches": [[61, "approaches"]], "Java Flavor (Direct Exposure)": [[61, "java-flavor-direct-exposure"]], "JS Flavor (Wrapped Exposure)": [[61, "js-flavor-wrapped-exposure"]], "Test": [[61, "test"], [70, "test"]], "Conclusion": [[61, "conclusion"]], "Advanced": [[62, "advanced"]], "Interact with Node.js": [[63, "interact-with-node-js"]], "Is That Possible?": [[63, "is-that-possible"]], "How?": [[63, "how"]], "Step 1: JavaScript Server": [[63, "step-1-javascript-server"]], "Step 2: Worker Thread for the JavaScript Server": [[63, "step-2-worker-thread-for-the-javascript-server"]], "Step 3: Main Thread for the Interaction": [[63, "step-3-main-thread-for-the-interaction"]], "What If Node.js Hangs during Close()?": [[63, "what-if-node-js-hangs-during-close"]], "Java and JavaScript Interop": [[64, "java-and-javascript-interop"]], "Inject a Static Class": [[64, "inject-a-static-class"]], "Inject an Enum": [[64, "inject-an-enum"]], "Inject a Pattern": [[64, "inject-a-pattern"]], "Inject a StringBuilder": [[64, "inject-a-stringbuilder"]], "Array": [[65, "array"]], "List": [[65, "list"]], "Map": [[65, "map"]], "Motivation": [[66, "motivation"]], "Goals": [[66, "goals"]], "Print Hello Javet in V8 Mode": [[67, "print-hello-javet-in-v8-mode"]], "Print 1 + 1 in Node.js Mode": [[67, "print-1-1-in-node-js-mode"]], "Basic": [[68, "basic"]], "Installation": [[69, "installation"]], "OS Compatibility": [[69, "os-compatibility"]], "Windows": [[69, "windows"]], "Linux": [[69, "linux"]], "Mac OS": [[69, "mac-os"]], "Android": [[69, "android"]], "Sample": [[70, "sample"]], "@V8Property and @V8Function": [[70, "v8property-and-v8function"]], "Javet Shell": [[71, "javet-shell"]], "Node.js Mode and V8 Mode": [[72, "node-js-mode-and-v8-mode"]], "Co-existence": [[72, "co-existence"]], "V8Host": [[72, "v8host"]], "Pool": [[72, "pool"]], "Polyfill": [[73, "polyfill"]], "decimal.js": [[73, "decimal-js"]], "Spring Integration": [[74, "spring-integration"]], "Configuration": [[74, "configuration"]], "Injection": [[74, "injection"]], "Tutorial": [[75, "tutorial"]], "Migration Guides": [[76, "migration-guides"], [77, "migration-guides"]], "Migrate from J2V8": [[77, "migrate-from-j2v8"]], "Why Migrate from J2V8 to Javet?": [[77, "why-migrate-from-j2v8-to-javet"]], "V8 \u27f6 V8Runtime": [[77, "v8-v8runtime"]], "Primitive Types": [[77, "primitive-types"]], "registerJavaMethod() \u27f6 @V8Function": [[77, "registerjavamethod-v8function"]], "V8Locker": [[77, "v8locker"]], "Type Conversion": [[77, "type-conversion"]], "Node.js and V8": [[77, "node-js-and-v8"]], "ES6 Module": [[77, "es6-module"]], "Blessing": [[77, "blessing"]]}, "indexentries": {}}) \ No newline at end of file +Search.setIndex({"docnames": ["development/build", "development/build_javet_from_scratch", "development/build_javet_with_docker", "development/debug_with_chrome_developer_tools", "development/design", "development/index", "development/performance", "development/test", "development/tools", "faq/background/history_with_j2v8", "faq/background/index", "faq/background/what_is_the_motivation", "faq/development/how_to_think_in_javet", "faq/development/index", "faq/development/where_are_es6_api_in_v8_mode", "faq/development/where_are_the_examples", "faq/development/why_is_the_inspector_disabled_in_node_js_mode", "faq/environment/can_javet_support_legacy_linux", "faq/environment/index", "faq/index", "faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed", "faq/troubleshooting/can_i18n_be_supported", "faq/troubleshooting/can_i_debug_javet_in_chrome_dev_tools", "faq/troubleshooting/index", "faq/troubleshooting/why_node_js_crashes_when_being_closed", "index", "reference/converters/bridge_converter", "reference/converters/custom_converter", "reference/converters/index", "reference/converters/object_converter", "reference/converters/primitive_converter", "reference/converters/proxy_converter", "reference/index", "reference/javadoc/index", "reference/resource_management/index", "reference/resource_management/load_and_unload", "reference/resource_management/lock", "reference/resource_management/memory_management", "reference/resource_management/modularization", "reference/tips/best_practices", "reference/tips/index", "reference/todo_list", "reference/troubleshooting/error_codes", "reference/troubleshooting/index", "reference/troubleshooting/logging", "reference/troubleshooting/termination", "reference/v8_values/index", "reference/v8_values/v8_collection", "reference/v8_values/v8_function", "reference/v8_values/v8_promise", "release_notes/index", "release_notes/release_notes_0_7", "release_notes/release_notes_0_8", "release_notes/release_notes_0_9", "release_notes/release_notes_1_0", "release_notes/release_notes_1_1", "release_notes/release_notes_2_0", "release_notes/release_notes_2_1", "release_notes/release_notes_2_2", "release_notes/release_notes_3_0", "tutorial/advanced/expose_json_node_in_v8", "tutorial/advanced/index", "tutorial/advanced/interact_with_node_js", "tutorial/advanced/java_and_javascript_interop", "tutorial/advanced/object_converter", "tutorial/basic/engine_pool", "tutorial/basic/hello_javet", "tutorial/basic/index", "tutorial/basic/installation", "tutorial/basic/interception", "tutorial/basic/javet_shell", "tutorial/basic/node_js_mode_and_v8_mode", "tutorial/basic/polyfill", "tutorial/basic/spring_integration", "tutorial/index", "tutorial/migration_guides/index", "tutorial/migration_guides/migrate_from_j2v8"], "filenames": ["development/build.rst", "development/build_javet_from_scratch.rst", "development/build_javet_with_docker.rst", "development/debug_with_chrome_developer_tools.rst", "development/design.rst", "development/index.rst", "development/performance.rst", "development/test.rst", "development/tools.rst", "faq/background/history_with_j2v8.rst", "faq/background/index.rst", "faq/background/what_is_the_motivation.rst", "faq/development/how_to_think_in_javet.rst", "faq/development/index.rst", "faq/development/where_are_es6_api_in_v8_mode.rst", "faq/development/where_are_the_examples.rst", "faq/development/why_is_the_inspector_disabled_in_node_js_mode.rst", "faq/environment/can_javet_support_legacy_linux.rst", "faq/environment/index.rst", "faq/index.rst", "faq/troubleshooting/a_dynamic_link_library_dll_initialization_routine_failed.rst", "faq/troubleshooting/can_i18n_be_supported.rst", "faq/troubleshooting/can_i_debug_javet_in_chrome_dev_tools.rst", "faq/troubleshooting/index.rst", "faq/troubleshooting/why_node_js_crashes_when_being_closed.rst", "index.rst", "reference/converters/bridge_converter.rst", "reference/converters/custom_converter.rst", "reference/converters/index.rst", "reference/converters/object_converter.rst", "reference/converters/primitive_converter.rst", "reference/converters/proxy_converter.rst", "reference/index.rst", "reference/javadoc/index.rst", "reference/resource_management/index.rst", "reference/resource_management/load_and_unload.rst", "reference/resource_management/lock.rst", "reference/resource_management/memory_management.rst", "reference/resource_management/modularization.rst", "reference/tips/best_practices.rst", "reference/tips/index.rst", "reference/todo_list.rst", "reference/troubleshooting/error_codes.rst", "reference/troubleshooting/index.rst", "reference/troubleshooting/logging.rst", "reference/troubleshooting/termination.rst", "reference/v8_values/index.rst", "reference/v8_values/v8_collection.rst", "reference/v8_values/v8_function.rst", "reference/v8_values/v8_promise.rst", "release_notes/index.rst", "release_notes/release_notes_0_7.rst", "release_notes/release_notes_0_8.rst", "release_notes/release_notes_0_9.rst", "release_notes/release_notes_1_0.rst", "release_notes/release_notes_1_1.rst", "release_notes/release_notes_2_0.rst", "release_notes/release_notes_2_1.rst", "release_notes/release_notes_2_2.rst", "release_notes/release_notes_3_0.rst", "tutorial/advanced/expose_json_node_in_v8.rst", "tutorial/advanced/index.rst", "tutorial/advanced/interact_with_node_js.rst", "tutorial/advanced/java_and_javascript_interop.rst", "tutorial/advanced/object_converter.rst", "tutorial/basic/engine_pool.rst", "tutorial/basic/hello_javet.rst", "tutorial/basic/index.rst", "tutorial/basic/installation.rst", "tutorial/basic/interception.rst", "tutorial/basic/javet_shell.rst", "tutorial/basic/node_js_mode_and_v8_mode.rst", "tutorial/basic/polyfill.rst", "tutorial/basic/spring_integration.rst", "tutorial/index.rst", "tutorial/migration_guides/index.rst", "tutorial/migration_guides/migrate_from_j2v8.rst"], "titles": ["Build Javet", "Build Javet from Scratch", "Build Javet with Docker", "Debug with Chrome Developer Tools", "Javet Design", "Development", "Javet Performance", "Test Javet", "Development Tools", "History with J2V8", "Background", "What is the Motivation?", "How to Think in Javet?", "Development", "Where are ES6 API in V8 Mode?", "Where are the Examples?", "Why is the Inspector Disabled in Node.js Mode?", "Can Javet Support Legacy Linux?", "Environment", "FAQ", "A dynamic link library (DLL) initialization routine failed", "Can i18n be Supported?", "Can I Debug Javet in Chrome DevTools?", "Troubleshooting", "Why Node.js Crashes When being Closed?", "Javet", "Bridge Converter", "Custom Converter", "Converters", "Object Converter", "Primitive Converter", "Proxy Converter", "Reference", "API Reference", "Resource Management", "Load and Unload", "Know the Lock", "Memory Management", "Modularization", "Best Practices", "Tips", "TODO List", "Error Codes", "Troubleshooting", "Logging", "Termination", "V8 Values", "V8 Collection", "V8 Function", "V8 Promise", "Release Notes", "Release Notes 0.7.x", "Release Notes 0.8.x", "Release Notes 0.9.x", "Release Notes 1.0.x", "Release Notes 1.1.x", "Release Notes 2.0.x", "Release Notes 2.1.x", "Release Notes 2.2.x", "Release Notes 3.0.x", "Expose JsonNode in V8", "Advanced", "Interact with Node.js", "Java and JavaScript Interop", "Object Converter", "Javet Engine Pool", "Hello Javet", "Basic", "Installation", "Interception", "Javet Shell", "Node.js Mode and V8 Mode", "Polyfill", "Spring Integration", "Tutorial", "Migration Guides", "Migrate from J2V8"], "terms": {"It": [0, 2, 4, 6, 9, 12, 16, 21, 25, 27, 28, 31, 36, 37, 38, 39, 48, 65, 70, 71, 76], "": [0, 2, 4, 6, 9, 11, 24, 27, 31, 36, 37, 38, 39, 42, 48, 49, 60, 62, 64, 71, 76], "quit": [0, 4, 6, 11, 12, 28, 31, 37, 44, 45, 48, 60, 62, 65, 76], "hard": [0, 9, 49, 76], "develop": [0, 19, 22, 25, 42, 49, 51, 60, 76], "successfulli": [0, 2, 3], "variou": [0, 58, 76], "reason": [0, 4, 9, 21, 24, 42, 49, 62, 76], "node": [0, 2, 3, 5, 7, 9, 13, 14, 19, 20, 21, 23, 25, 35, 36, 37, 41, 42, 48, 49, 50, 53, 55, 57, 58, 59, 60, 61, 65, 67, 68, 70, 73, 74], "j": [0, 2, 5, 7, 9, 13, 14, 19, 20, 21, 23, 25, 35, 36, 37, 41, 42, 48, 49, 50, 51, 53, 55, 57, 58, 59, 61, 65, 67, 68, 74], "need": [0, 3, 6, 9, 27, 28, 29, 31, 36, 37, 38, 48, 49, 60, 63, 68, 76], "built": [0, 2, 3, 6, 7, 26, 29, 37, 42, 45, 48, 49, 52, 53, 57, 60, 76], "static": [0, 1, 16, 27, 48, 53, 55, 62], "librari": [0, 2, 3, 4, 7, 12, 19, 21, 23, 38, 42, 44, 48, 53], "monolith": 0, "everi": [0, 4, 12, 28, 36, 37, 48], "o": [0, 2, 4, 25, 36, 42, 48, 60, 76], "platform": [0, 5], "ha": [0, 2, 4, 6, 8, 9, 12, 16, 27, 29, 31, 35, 37, 38, 44, 47, 48, 49, 52, 60, 76], "its": [0, 4, 9, 31, 36, 37, 38, 48, 49], "own": [0, 4, 9, 27, 29, 31, 35, 37, 38, 48, 49], "pitfal": 0, "which": [0, 3, 4, 6, 7, 9, 12, 15, 17, 24, 25, 28, 29, 31, 35, 37, 38, 45, 48, 60, 63, 69, 71, 72, 76], "usual": [0, 27, 31, 38, 45, 48, 49, 62], "make": [0, 1, 2, 16, 28, 29, 37, 38, 49, 62, 72, 76], "frustrat": [0, 9], "even": [0, 9, 76], "desper": 0, "here": [0, 3, 4, 6, 9, 11, 27, 31, 35, 37, 38, 48, 49, 62, 63, 64], "ar": [0, 1, 2, 3, 4, 6, 8, 9, 12, 13, 17, 19, 24, 25, 26, 27, 28, 29, 30, 31, 35, 36, 37, 38, 39, 42, 45, 48, 49, 51, 52, 53, 60, 62, 63, 64, 68, 69, 71, 76], "3": [0, 1, 5, 6, 9, 17, 24, 25, 26, 31, 35, 38, 47, 48, 50, 66, 68, 69, 70], "wai": [0, 4, 12, 24, 25, 26, 27, 35, 37, 38, 39, 45, 48, 49, 53, 60, 62, 65, 69, 73], "docker": [0, 5, 9], "from": [0, 2, 4, 5, 6, 9, 11, 15, 16, 17, 24, 28, 31, 36, 38, 39, 42, 45, 48, 49, 52, 53, 54, 55, 60, 62, 63, 65, 66, 69, 70, 74, 75], "scratch": [0, 5, 11], "all": [0, 1, 3, 4, 9, 24, 26, 27, 29, 31, 35, 37, 38, 48, 52, 54, 60, 62, 64, 76], "them": [0, 3, 31, 37, 38, 48, 60], "share": [0, 1, 4, 36, 38, 48, 49, 62, 76], "same": [0, 4, 16, 36, 37, 38, 39, 48, 49, 60, 76], "next": [0, 28, 48], "section": [0, 38, 48], "ubuntu": [0, 2, 17, 38, 52, 55, 59, 68], "22": [0, 54, 59, 68], "04": [0, 2, 17, 51, 52, 55, 57, 59, 68], "cmake": [0, 1, 9], "25": [0, 54, 56, 59], "1": [0, 4, 6, 9, 12, 17, 26, 27, 29, 31, 35, 38, 39, 45, 47, 48, 50, 60, 63, 64, 68, 69, 70, 71, 72, 76], "jdk": [0, 5, 27, 44, 60], "8": [0, 3, 5, 6, 9, 17, 25, 27, 37, 50, 54, 57, 60, 62, 68], "gradl": [0, 1, 2, 5, 9, 31], "2": [0, 6, 8, 9, 12, 17, 25, 26, 29, 31, 35, 38, 39, 45, 47, 50, 63, 66, 68, 69, 70, 71, 72, 76], "gcc": [0, 17, 52, 59], "11": [0, 27, 54, 55, 56, 59], "python": [0, 1, 5], "9": [0, 9, 17, 50, 62], "catalina": [0, 68], "latest": [0, 2, 71], "brew": 0, "xcode": 0, "4": [0, 6, 9, 31, 35, 37, 38, 47, 48, 50, 62, 69, 70], "16": [0, 6, 17, 37, 52, 53, 55, 56, 57, 58, 68], "10": [0, 2, 6, 25, 37, 45, 54, 59, 60, 68], "visual": [0, 5, 56, 57], "studio": [0, 5, 56, 57], "2022": [0, 5, 55, 56, 57], "commun": [0, 3, 5, 9, 16, 25], "24": [0, 52, 57, 59, 68], "come": [0, 4, 6, 36, 38], "sdk": [0, 44, 73], "windbg": 0, "wsl2": [0, 2], "option": [0, 5, 16, 30, 38, 39, 48, 53, 55, 59, 60, 69, 71], "ndk": [0, 55], "r25b": 0, "30": [0, 56], "javet_hom": [0, 1], "i": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 17, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 35, 36, 37, 38, 39, 42, 44, 45, 47, 49, 52, 53, 60, 63, 64, 65, 66, 68, 69, 70, 71, 72, 73, 76], "home": 0, "directori": [0, 4, 38, 72], "node_hom": [0, 1], "v8_home": [0, 1], "depot_tools_hom": [0, 1], "googl": [0, 3], "depot": 0, "tool": [0, 1, 2, 5, 17, 22, 25, 51], "android_ndk_hom": [0, 1], "android_sdk_hom": 0, "descript": [0, 31, 37], "custom": [0, 4, 5, 28, 38, 39, 48, 52, 53, 55], "libcxx": 0, "off": [0, 1, 3, 4, 37], "The": [0, 1, 2, 3, 4, 6, 7, 9, 12, 15, 16, 20, 24, 26, 27, 28, 31, 35, 36, 37, 38, 42, 45, 48, 49, 60, 62, 63, 68, 69, 70, 71, 76], "offici": [0, 1, 9, 15, 17, 25], "releas": [0, 1, 4, 6, 9, 25, 37, 42, 76], "doesn": [0, 3, 4, 9, 29, 31, 35, 36, 37, 38, 42, 44, 45, 48, 73, 76], "t": [0, 3, 4, 9, 16, 24, 25, 27, 28, 29, 31, 35, 36, 37, 38, 42, 44, 45, 48, 70, 71, 73, 76], "support": [0, 1, 2, 4, 8, 9, 16, 18, 19, 23, 25, 29, 30, 31, 35, 37, 38, 42, 45, 47, 48, 52, 53, 54, 55, 56, 58, 59, 68, 71, 76], "debug": [0, 4, 5, 16, 19, 23, 25, 44, 48], "extern": [0, 6, 37], "startup": 0, "data": [0, 4, 28, 37, 38, 48, 51, 56], "i18n": [0, 1, 19, 23, 42, 55], "pleas": [0, 1, 2, 3, 4, 6, 11, 16, 17, 21, 22, 25, 28, 31, 35, 36, 37, 38, 39, 45, 48, 49, 50, 60, 63, 64, 65, 66, 68, 69, 70, 72, 76], "contact": [0, 1, 9, 16, 17, 21, 50, 68, 76], "maintain": [0, 16, 17, 21, 50, 68, 76], "privat": [0, 16, 17, 21, 27, 29, 31, 48, 60, 68, 69], "thi": [0, 3, 4, 9, 11, 12, 17, 20, 24, 25, 27, 28, 29, 31, 35, 36, 37, 38, 49, 55, 60, 62, 63, 69, 71, 76], "pointer": [0, 37, 48], "compress": 0, "sandbox": 0, "snapshot": [0, 17, 56], "follow": [1, 2, 3, 4, 15, 17, 21, 24, 25, 27, 29, 37, 38, 39, 42, 44, 47, 48, 49, 60, 62, 69, 71], "guid": [1, 25, 74], "If": [1, 2, 12, 24, 25, 28, 29, 30, 31, 37, 38, 39, 45, 48, 68, 69, 70, 76], "you": [1, 2, 3, 8, 9, 12, 15, 22, 24, 25, 27, 31, 36, 37, 44, 48, 49, 50, 68, 72, 73, 76], "face": [1, 4], "ani": [1, 9, 28, 29, 30, 31, 38, 42, 44, 45, 48, 76], "issu": [1, 4, 11, 24, 36, 37, 38, 39, 52, 53, 54, 57, 59], "mai": [1, 2, 3, 4, 6, 9, 12, 15, 24, 25, 26, 28, 31, 35, 36, 37, 38, 39, 44, 45, 48, 73], "sjtucaocao": [1, 2, 25], "clone": [1, 2, 56], "sourc": [1, 3, 16, 28, 36, 38, 42, 45, 60, 63, 64, 65, 66, 69, 70, 72, 76], "code": [1, 3, 4, 6, 9, 12, 16, 27, 28, 29, 36, 37, 38, 39, 43, 45, 49, 53, 54, 58, 60, 63, 64, 65, 66, 69, 70, 72, 76], "checkout": 1, "proper": 1, "version": [1, 3, 4, 8, 11, 25, 31, 38, 50, 68, 71], "also": [1, 2, 4, 6, 9, 11, 12, 28, 30, 31, 35, 36, 37, 38, 44, 48, 49, 62, 76], "sure": [1, 2, 9, 16, 28, 37, 38, 62, 72], "arg": [1, 27, 48, 62], "gn": 1, "file": [1, 4, 6, 9, 21, 37, 38, 49, 62, 72], "look": [1, 4, 9, 11, 38, 53], "like": [1, 3, 6, 9, 11, 12, 25, 38, 39, 42, 48, 55, 70], "is_debug": 1, "fals": [1, 16, 26, 28, 31, 35, 37, 38, 48, 62, 63], "target_cpu": 1, "v8_monolith": 1, "true": [1, 11, 16, 26, 28, 31, 35, 37, 38, 45, 48, 60, 62, 63, 64, 68, 70], "v8_use_external_startup_data": 1, "is_component_build": 1, "v8_enable_i18n_support": 1, "v8_enable_pointer_compress": 1, "v8_static_librari": 1, "symbol_level": 1, "0": [1, 3, 9, 17, 25, 26, 27, 29, 31, 37, 38, 39, 45, 47, 48, 50, 60, 62, 64, 68, 69, 72, 76], "use_custom_libcxx": 1, "v8_enable_sandbox": 1, "x64": [1, 38], "To": [1, 3, 9, 21, 28, 35, 41, 63], "enabl": [1, 2, 3, 6, 12, 16, 21, 31, 37, 48, 49, 52, 53, 63], "set": [1, 3, 4, 7, 9, 12, 26, 27, 28, 29, 31, 35, 37, 38, 44, 47, 49, 52, 58, 60, 62, 63, 64, 69], "export": [1, 38], "path": [1, 17, 35, 38, 42, 58, 62], "cd": [1, 2, 38], "ninja": 1, "c": [1, 31, 38, 48, 55, 56, 57, 60, 64], "out": [1, 25, 37, 38, 42, 45, 60, 62, 63, 64, 66, 69, 70, 76], "python3": [1, 9], "script": [1, 4, 9, 12, 25, 38, 39, 45, 48, 52, 56, 65, 70, 72], "patch_v8_build": 1, "py": 1, "p": [1, 31], "requir": [1, 6, 8, 12, 35, 38, 39, 45, 48, 49, 62], "depot_tools_win_toolchain": 1, "gen": 1, "id": [1, 3, 4, 42, 48, 68], "v": [1, 5, 9, 25, 38], "solut": [1, 11, 29, 48], "dev": [1, 6], "v8gen": 1, "arm": [1, 25, 54, 68], "target_o": 1, "v8_target_cpu": 1, "ia32": 1, "x86": [1, 25, 53, 54, 68], "A": [1, 4, 19, 23, 27, 38, 48], "few": [1, 2, 3, 8, 9, 11, 12, 27, 28, 31, 37, 48, 51, 52, 59, 63, 64, 70], "certain": [1, 3, 4, 12, 48, 49, 53], "warn": [1, 44, 52], "error": [1, 9, 35, 38, 43, 44, 48, 49, 53, 54, 55, 58], "so": [1, 2, 4, 6, 7, 9, 12, 14, 16, 17, 24, 26, 27, 28, 29, 31, 35, 36, 37, 38, 39, 44, 48, 49, 56, 60, 62, 64, 68, 72, 73, 76], "msvc": [1, 38], "stop": [1, 9, 57], "compil": [1, 4, 6, 31, 38, 42, 48, 59, 63, 76], "turn": [1, 3, 4, 37, 52, 59], "those": [1, 3, 4, 12, 24, 37, 38, 48], "lt": 1, "patch_node_build": 1, "configur": 1, "without": [1, 2, 3, 4, 24, 29, 31, 35, 36, 48, 54, 58, 60, 76], "intl": 1, "j4": 1, "first": [1, 3, 35, 38, 48, 51, 76], "thin": 1, "disabl": [1, 12, 13, 19, 31, 37, 39, 45, 49, 56], "second": [1, 3, 15, 21, 38, 45, 48], "mani": [1, 9, 11, 37, 48, 76], "posit": [1, 6, 48], "independ": [1, 6], "link": [1, 19, 23, 37, 38], "phase": 1, "broken": [1, 9, 37, 48], "fpic": 1, "usr": [1, 17], "bin": [1, 17], "ld": 1, "libnod": 1, "node_bind": 1, "reloc": 1, "r_x86_64_tpoff32": 1, "against": [1, 48], "_zn4nodel23thread_local_modpending": 1, "can": [1, 2, 3, 4, 6, 12, 18, 19, 23, 24, 29, 31, 37, 38, 39, 49, 62, 63, 71, 72, 73, 76], "us": [1, 3, 4, 6, 8, 11, 24, 28, 30, 35, 37, 38, 39, 44, 48, 65, 76], "when": [1, 4, 6, 9, 19, 20, 23, 31, 37, 38, 39, 45, 48, 49, 55, 57, 76], "object": [1, 4, 12, 24, 37, 39, 47, 52, 53, 54, 55, 60, 61, 63, 65, 69, 74, 76], "recompil": 1, "vcbuild": 1, "bat": 1, "vs2022": 1, "onc": [1, 27, 28, 37, 38, 42, 62], "readi": 1, "navig": [1, 38], "cpp": 1, "access": [1, 12, 31, 35, 37, 42, 48], "execut": [1, 3, 4, 6, 31, 38, 39, 42, 45, 47, 48, 49, 60, 65, 66, 70], "correspond": [1, 2, 4, 24, 37, 38, 39, 48], "command": [1, 70], "sh": [1, 38], "dnode_dir": 1, "dv8_dir": 1, "maco": [1, 9, 25, 35, 68], "cmd": [1, 38], "after": [1, 3, 9, 29, 31, 35, 38, 39, 45, 48, 49, 60, 76], "while": [1, 2, 31, 45, 62, 70], "place": [1, 4, 9, 24, 28, 37, 76], "folder": [1, 39, 62], "src": 1, "main": [1, 27, 31, 63], "resourc": [1, 4, 12, 15, 25, 28, 32, 36, 38, 42, 45, 49, 60, 66, 69, 70, 73], "libjavet": [1, 35, 38], "dylib": 1, "dll": [1, 19, 23, 38], "arch": [1, 25, 54, 68], "dcmake_android_ndk": 1, "dcmake_android_arch": 1, "jnilib": 1, "armeabi": 1, "v7a": 1, "v8a": 1, "mode": [1, 5, 7, 13, 17, 19, 20, 21, 24, 25, 35, 37, 39, 48, 49, 52, 53, 55, 58, 65, 67, 68, 74, 76], "append": [1, 31, 63], "denable_i18n": 1, "test": [1, 2, 4, 5, 6, 9, 15, 16, 17, 25, 31, 36, 38, 48, 49, 51, 62, 68, 72], "jar": [1, 4, 9], "lib": [1, 38, 54], "aar": 1, "output": [1, 27, 48, 60, 62, 63, 64], "As": [2, 3, 4, 12, 26, 29, 31, 35, 37, 44, 48, 73], "regard": [2, 3], "mac": [2, 9, 25, 76], "contributor": 2, "welcom": [2, 70], "interest": [2, 9], "Or": [2, 16], "have": [2, 9, 16, 25, 27, 29, 31, 37, 38, 48, 49, 72, 76], "wait": [2, 3, 54, 62], "long": [2, 29, 30, 31, 36, 48, 60], "20": [2, 24, 52, 54, 55, 56, 57, 58, 68], "git": 2, "network": 2, "connect": [2, 3, 4, 65], "up": [2, 3, 4, 6, 12, 31, 36, 37, 38, 53, 54, 62], "run": [2, 4, 6, 27, 31, 36, 37, 38, 45, 72], "repositori": [2, 17], "imag": [2, 9], "avail": [2, 3, 4, 20, 35, 42, 48, 71], "http": [2, 3, 4, 6, 25, 62], "com": [2, 6, 25, 37, 38, 44, 68], "r": [2, 17, 63], "caoccao": [2, 6, 25, 37, 38, 44, 68], "f": [2, 4, 38], "x86_64": [2, 25, 38, 54, 68], "build_artifact": 2, "dockerfil": [2, 53, 57], "pull": 2, "5gb": 2, "actual": [2, 3, 4, 6, 9, 12, 28, 36, 37, 38, 42, 48, 60, 62], "take": [2, 4, 6, 9, 11, 24, 30, 31, 37, 38, 48, 52, 54, 60, 62, 65, 70, 76], "minut": [2, 4, 28], "includ": [2, 9, 26, 35, 48, 76], "depend": [2, 4, 6, 9, 31, 38, 44, 48, 73], "maven": [2, 5, 31], "central": [2, 8], "instruct": [2, 37], "insid": [2, 3, 4, 31, 37, 49], "perform": [2, 3, 4, 5, 9, 24, 25, 26, 28, 29, 35, 37, 38, 39, 48, 51, 54, 58, 59, 60, 62, 65, 69, 76], "base_jvm": 2, "base": [2, 6, 7, 31, 37, 48, 53, 55, 56, 60, 76], "jvm": [2, 4, 21, 25, 28, 31, 35, 36, 51, 62, 64, 65, 71, 76], "base_nod": 2, "base_v8": 2, "v8": [2, 3, 5, 7, 9, 11, 12, 13, 19, 21, 24, 25, 28, 29, 31, 32, 35, 36, 39, 41, 42, 45, 50, 61, 62, 63, 64, 65, 67, 68, 69, 70, 73, 74], "base_gradl": 2, "final": [2, 27, 28, 29, 31, 37, 38, 42, 45, 48, 49, 60], "artifact": 2, "base_all_in_on": 2, "build_all_in_on": 2, "updat": [2, 17, 35, 48, 52, 53, 54, 55, 57], "daemon": [2, 37, 45], "json": [2, 3, 26, 38, 60, 64], "storag": [2, 6], "opt": 2, "dm": 2, "bases": 2, "120gb": 2, "size": [2, 4, 6, 21, 26, 29, 35, 37, 42], "restart": [2, 76], "m": [2, 6, 60], "4g": 2, "roughli": 2, "5": [2, 3, 24, 37, 38, 50, 62, 68, 69, 70], "hour": [2, 9], "internet": 2, "stabl": 2, "dai": [2, 39], "just": [2, 3, 6, 9, 12, 27, 29, 35, 36, 37, 38, 48, 63, 76], "fail": [2, 19, 23, 38, 42, 45, 48, 55], "forev": [2, 37], "larg": [2, 16], "60": 2, "gb": 2, "effici": [2, 15, 53], "push": [2, 47, 48, 49, 58], "Of": [2, 37, 38, 48, 76], "cours": [2, 37, 38, 48, 76], "wise": [2, 17, 48, 60, 68], "workflow": 2, "11gb": 2, "process": [2, 3, 24, 27, 49], "been": [2, 8, 9, 24, 35, 48, 76], "significantli": [2, 42], "chang": [2, 3, 16, 28, 29, 36, 38, 42, 53, 54, 58, 59, 63, 69], "sinc": [2, 9, 68], "v12": [2, 25], "That": [2, 4, 6, 9, 24, 28, 35, 37, 38, 44, 45, 48, 76], "result": [2, 3, 4, 6, 28, 36, 39, 49, 66, 70], "devtool": [3, 19, 23, 25], "aka": 3, "web": [3, 37, 39], "directli": [3, 31, 35, 37, 48, 60, 63, 76], "browser": [3, 39], "help": [3, 39], "edit": [3, 48], "page": 3, "fly": 3, "diagnos": 3, "problem": [3, 6, 9, 27, 48], "quickli": 3, "ultim": 3, "build": [3, 4, 5, 8, 11, 16, 17, 21, 25, 38, 48, 52, 53, 57, 59, 68], "better": [3, 4, 6, 35, 36, 48, 60], "websit": 3, "faster": 3, "javet": [3, 5, 8, 9, 13, 14, 15, 16, 18, 19, 20, 23, 24, 26, 27, 28, 29, 31, 37, 39, 41, 42, 44, 45, 47, 48, 49, 51, 53, 58, 62, 63, 64, 67, 68, 69, 71, 72, 73, 74], "ship": 3, "demo": 3, "applic": [3, 4, 6, 12, 16, 24, 27, 28, 29, 31, 35, 36, 37, 38, 45, 48, 49, 62, 63, 65, 69, 70, 76], "demonstr": 3, "how": [3, 4, 7, 11, 13, 15, 19, 24, 25, 27, 35, 36, 38, 53, 60, 76], "work": [3, 4, 9, 12, 24, 25, 35, 36, 37, 38, 48, 49, 60, 62, 68, 76], "live": [3, 25, 36, 37, 48], "normal": [3, 37, 45, 62], "java": [3, 4, 5, 9, 14, 25, 27, 28, 31, 35, 36, 37, 38, 49, 54, 61, 62, 64, 69, 72, 74, 76], "consol": [3, 4, 27, 48, 49, 60, 62, 65, 66, 69, 70], "an": [3, 4, 6, 9, 11, 12, 14, 25, 26, 28, 31, 35, 36, 37, 38, 39, 44, 45, 48, 49, 64, 69, 70, 71], "interact": [3, 4, 27, 52, 61, 70, 74], "appear": [3, 48], "doe": [3, 4, 16, 24, 35, 37, 45, 48, 76], "arbitrari": [3, 4, 12, 28, 29, 31, 63, 76], "what": [3, 9, 10, 15, 19, 28, 37, 38, 60, 76], "done": [3, 76], "let": [3, 9, 24, 27, 31, 38, 60, 62, 70], "undefin": [3, 28, 31, 38, 48, 60, 70], "b": [3, 26, 28, 31, 38, 48, 60, 63, 64, 70, 72], "7": [3, 6, 17, 37, 50, 62, 68, 69, 70, 76], "inspect": [3, 16, 48], "remot": 3, "target": [3, 7, 28, 29, 60, 76], "click": 3, "voil\u00e0": [3, 31, 62], "screenshot": 3, "show": [3, 4, 31, 37, 38, 48, 49], "evalu": [3, 4, 38, 55, 76], "auto": [3, 17, 35, 52], "complet": [3, 4, 7, 29, 31, 37, 38, 39, 45, 48, 53, 54, 62, 63, 68, 76], "enjoi": 3, "listen": [3, 24, 37, 49, 62], "port": [3, 50, 62], "9229": 3, "default": [3, 4, 21, 28, 29, 31, 35, 37, 38, 45, 48, 63, 69, 71], "becaus": [3, 4, 6, 8, 9, 16, 24, 25, 26, 27, 28, 29, 31, 35, 36, 37, 39, 42, 48, 49, 60, 65, 71, 72, 76], "constantli": 3, "queri": 3, "127": [3, 37], "tell": [3, 24, 31, 35, 37, 38, 62, 69], "flavor": [3, 15, 48, 70], "via": [3, 4, 31, 37, 38, 39, 45, 48, 49, 62, 69], "websocket": 3, "address": [3, 24, 37, 38, 39, 48, 59, 62], "protocol": 3, "current": [3, 4, 9, 42, 48, 68], "v1": [3, 50, 54, 68], "api": [3, 4, 9, 11, 12, 13, 19, 25, 27, 28, 31, 32, 35, 36, 37, 38, 44, 48, 49, 51, 52, 54, 58, 60, 62, 64, 72, 76], "doc": [3, 6, 52, 54], "chromedevtool": 3, "github": [3, 6], "io": [3, 16], "upgrad": [3, 8, 9, 11, 17, 41, 52, 53, 54, 55, 56, 57, 58, 59], "request": 3, "respons": [3, 35, 38, 48], "accept": [3, 16, 28, 44, 48, 49, 53], "switch": [3, 25, 35, 36, 39, 52], "w": 3, "send": [3, 28, 37, 62], "messag": [3, 37, 42, 44], "method": [3, 12, 27, 29, 31, 42, 48, 60], "runtim": [3, 4, 17, 21, 31, 35, 36, 38, 39, 42, 45, 48, 53, 54, 55, 57, 60, 62, 65, 66, 69, 70, 71, 76], "param": 3, "notif": [3, 37], "executioncontextcr": 3, "context": [3, 6, 12, 24, 36, 37, 38, 39, 57], "origin": [3, 4, 48], "name": [3, 4, 12, 27, 29, 35, 38, 42, 44, 48, 54, 57, 60, 69, 72, 73], "inspector": [3, 13, 19], "00000000": 3, "uniqueid": 3, "debugg": [3, 48], "maxscriptscaches": 3, "100000000": 3, "debuggerid": 3, "setpauseonexcept": 3, "state": [3, 48], "none": [3, 48], "setasynccallstackdepth": 3, "maxdepth": [3, 42], "32": [3, 37], "profil": [3, 68], "6": [3, 8, 9, 38, 50, 56, 59, 62, 68, 69, 70], "getisolateid": 3, "setblackboxpattern": 3, "pattern": [3, 12, 15, 29, 45], "runifwaitingfordebugg": 3, "pars": [3, 6], "expos": [3, 4, 25, 28, 29, 31, 37, 38, 41, 48, 49, 54, 61, 74, 76], "callback": [3, 24, 37, 38, 42, 48, 52, 53, 54, 55, 57, 58, 62], "iv8inspectorlisten": 3, "rest": [3, 38], "refer": [3, 6, 11, 24, 25, 31, 35, 36, 38, 39, 45, 48, 49, 57, 59, 60, 63, 64, 65, 66, 68, 69, 70, 72, 76], "detail": [3, 4, 11, 21, 22, 36, 45, 48, 49, 60, 63, 64, 65, 66, 68, 69, 70, 71, 72, 76], "ye": [3, 4, 17, 22, 24, 28, 29, 31, 35, 36, 38, 47, 48, 68, 72], "feel": [3, 38, 48], "free": [3, 4, 12, 29, 36, 37, 38, 48, 52, 65, 76], "server": [3, 6, 28, 68], "your": [3, 9, 17, 31, 35, 39, 44, 73, 76], "environ": [3, 4, 5, 6, 17, 19, 25, 36, 38, 52, 54, 65], "creat": [3, 16, 21, 26, 29, 31, 36, 37, 38, 44, 45, 48, 49, 53, 58, 60, 62, 63, 64, 65, 66, 69, 70, 73, 76], "showcas": 3, "further": [3, 6], "some": [3, 4, 6, 9, 12, 14, 17, 20, 24, 28, 35, 37, 48, 49, 54, 58, 60, 65, 72, 76], "tip": [3, 25, 32], "integr": [3, 9, 25, 44, 51, 67, 74], "embed": [3, 4, 6, 9, 21, 25, 39], "jetti": 3, "Be": [3, 31, 37, 39, 49], "care": [3, 30, 31, 36, 37, 38, 39, 49], "host": [3, 4, 21, 35, 38, 60, 62, 66, 69, 70], "togeth": [3, 62], "otherwis": [3, 29, 30, 35, 36, 48], "refus": 3, "add": [3, 17, 26, 27, 29, 31, 37, 38, 47, 48, 49, 64, 69, 72, 76], "intercept": [3, 5, 31, 37, 38, 51, 53, 67, 74], "event": [3, 39, 49, 62, 76], "In": [3, 4, 6, 12, 16, 24, 26, 28, 31, 35, 36, 37, 38, 39, 45, 48, 49, 60, 62, 76], "practic": [3, 4, 12, 40], "decent": [3, 6, 9, 47, 49], "jackson": [3, 60], "gson": [3, 60], "interpret": [3, 4], "why": [3, 12, 13, 19, 23, 35, 37, 72], "breakpoint": 3, "befor": [3, 12, 24, 28, 35, 37, 38, 62], "right": [3, 35], "featur": [3, 4, 5, 8, 9, 12, 29, 35, 37, 38, 42, 47, 48, 49, 50, 63, 68, 71, 72, 76], "enforc": 3, "authent": 3, "author": 3, "There": [4, 9, 12, 17, 26, 27, 28, 35, 37, 38, 42, 48, 60, 71], "vagu": 4, "boundari": 4, "between": [4, 6, 9, 25, 28, 29, 37, 39, 48, 52, 60, 63], "definit": 4, "mixtur": 4, "both": [4, 6, 28, 35, 37, 42, 49, 53, 71, 76], "trade": 4, "No": [4, 9, 27, 28, 35, 38, 45, 47, 48, 62], "copi": [4, 31, 35, 37], "valu": [4, 25, 27, 28, 29, 30, 32, 35, 37, 38, 42, 47, 51, 52, 53, 54, 60, 69], "Not": [4, 48, 68], "possibl": [4, 29, 36, 39, 60], "weak": 4, "keep": [4, 28, 31, 36, 37, 39, 60], "footprint": 4, "jni": [4, 8, 35, 37, 48, 54, 55, 57], "recycl": [4, 6, 24, 28, 31, 37, 39, 66], "close": [4, 9, 12, 16, 19, 23, 31, 35, 37, 38, 39, 42, 45, 48, 52, 53, 57, 59, 64, 65], "call": [4, 6, 9, 12, 16, 24, 27, 28, 31, 35, 36, 37, 38, 39, 45, 49, 52, 60, 62, 63, 69, 76], "old": [4, 9, 39, 49], "school": 4, "manag": [4, 9, 12, 15, 25, 32, 38, 52], "tri": [4, 9, 20], "hide": [4, 9], "kind": [4, 9, 27, 36, 48, 76], "tediou": [4, 12, 76], "try": [4, 9, 11, 25, 27, 31, 36, 38, 39, 45, 47, 48, 49, 60, 62, 65, 66, 69, 70, 71, 72], "best": [4, 15, 40], "co": 4, "exist": [4, 11, 31, 38, 60, 72], "one": [4, 7, 9, 11, 12, 16, 21, 26, 31, 35, 37, 38, 48, 60, 63, 69, 70, 71, 76], "other": [4, 12, 28, 35, 36, 37, 39, 44, 48, 49, 52, 62, 64, 68, 71, 76], "word": [4, 37, 62], "thei": [4, 9, 29, 35, 38, 39, 42, 49, 60, 71], "side": [4, 6, 16, 37], "don": [4, 9, 16, 25, 31, 38, 44, 71, 73, 76], "interfer": 4, "each": [4, 37, 48, 71, 76], "diagram": [4, 48], "lazi": 4, "load": [4, 12, 20, 34, 42, 72, 76], "dedic": [4, 37, 39, 62, 76], "classload": [4, 76], "comparison": [4, 5, 9, 25], "loadabl": 4, "high": [4, 28, 37], "ecosystem": [4, 71], "secur": [4, 6, 12, 38, 72, 76], "low": 4, "unload": [4, 34, 38, 76], "One": [4, 28], "beauti": [4, 28, 48], "appli": [4, 28, 31, 35, 38, 39, 45, 48, 55, 62], "exampl": [4, 13, 19, 27, 63, 64], "e": [4, 6, 12, 14, 24, 26, 27, 28, 35, 37, 38, 45, 48, 49, 60, 62, 69, 71, 72, 76], "g": [4, 6, 12, 14, 17, 24, 26, 28, 35, 37, 38, 48, 49, 60, 62, 63, 69, 71, 72, 76], "net": [4, 31], "etc": [4, 11, 12, 14, 26, 28, 35, 37, 48, 62, 72], "zero": [4, 37], "byte": [4, 29, 30, 31, 37, 48], "buffer": [4, 37], "achiev": [4, 9, 31, 36, 37, 48], "thread": [4, 6, 9, 16, 37, 42, 45, 49, 52, 53, 65, 76], "multipl": [4, 16, 21, 36, 38, 39, 53, 76], "instanc": [4, 6, 12, 16, 26, 37, 38, 39, 44, 48, 63, 69], "onli": [4, 12, 14, 16, 21, 28, 30, 31, 35, 38, 39, 44, 48, 50, 60, 68, 76], "visibl": [4, 48], "beyond": 4, "allow": [4, 6, 9, 21, 26, 27, 28, 29, 31, 35, 38, 44, 48, 49, 52, 53, 54, 58, 62, 63, 64, 65, 69, 76], "explicit": [4, 26, 76], "await": [4, 6, 39, 48, 49, 52, 56, 62], "more": [4, 6, 9, 17, 29, 35, 37, 38, 41, 42, 45, 48, 49, 53, 54, 65, 66, 69, 70, 71, 72, 76], "control": [4, 24, 28, 38, 45, 48], "over": [4, 24, 28, 38, 48, 76], "async": [4, 6, 24, 49], "global": [4, 12, 38, 48, 57, 65, 76], "recommend": [4, 6, 8, 31, 39, 48, 49, 60, 65], "project": [4, 9, 11, 12, 14, 15, 25, 31, 38, 49, 68, 72, 76], "increas": [4, 28, 42, 76], "provid": [4, 6, 17, 24, 26, 27, 28, 29, 31, 38, 47, 48, 65, 69, 76], "align": 4, "chrome": [4, 5, 19, 23, 25, 51], "bring": [4, 28, 35], "system": [4, 8, 11, 25, 35, 38, 42, 44, 60, 62, 63, 64, 66, 68, 69, 70], "unfortun": [4, 9], "veri": [4, 31, 38, 39, 48, 70, 71], "limit": [4, 12], "howev": [4, 6, 9, 11, 12, 24, 28, 29, 35, 37, 48, 60, 76], "bad": [4, 9], "leav": [4, 11, 29, 38], "typic": [4, 38, 45, 48], "challeng": [4, 9, 12, 28], "sync": 4, "locat": [4, 38, 76], "interceptor": [4, 24, 48, 49, 65, 69], "partial": 4, "know": [4, 7, 9, 24, 34, 38, 48, 76], "want": [4, 8, 9, 12, 24, 28, 35, 36, 37, 42, 48, 49, 50], "defin": [4, 28, 31], "es6": [4, 9, 13, 19, 38], "repres": [4, 12, 28, 37, 48, 76], "string": [4, 27, 29, 30, 31, 38, 44, 49, 51, 60, 62, 64, 66, 69, 70, 72], "dure": [4, 24, 28, 35, 38, 48, 52, 76], "url": 4, "whatev": [4, 24, 36, 37, 48, 49], "store": [4, 37, 38, 48, 57], "map": [4, 26, 28, 29, 38, 47], "kei": [4, 38, 47, 60], "feed": [4, 38], "get": [4, 9, 12, 24, 26, 27, 29, 31, 35, 37, 38, 39, 44, 45, 47, 48, 49, 54, 55, 60, 62, 64, 65, 71, 72, 73, 76], "start": [4, 11, 16, 28, 45, 48, 54, 62, 76], "excel": [4, 9], "articl": 4, "explain": 4, "concept": [4, 12, 49], "insight": 4, "summari": [4, 6], "vm": [4, 39], "heap": [4, 37], "separ": [4, 6, 12, 31], "unrel": [4, 6], "javascript": [4, 6, 16, 24, 25, 28, 31, 36, 38, 49, 54, 61, 64, 66, 69, 74, 76], "singl": [4, 6, 9, 36, 48, 62], "model": [4, 36], "simplifi": [4, 48], "v8runtim": [4, 6, 25, 26, 27, 29, 31, 36, 38, 39, 45, 47, 48, 49, 51, 52, 53, 54, 56, 59, 60, 63, 64, 65, 66, 69, 70, 71, 72], "resetisol": [4, 36, 52], "resetcontext": [4, 36, 39, 52], "alwai": [4, 27, 39, 48], "brand": 4, "new": [4, 6, 7, 9, 11, 26, 27, 29, 31, 35, 36, 37, 38, 44, 45, 47, 48, 49, 50, 60, 62, 63, 64, 65, 69, 70, 71, 72, 73], "much": [4, 6, 9, 31, 37, 39, 48, 60, 70, 72, 76], "cheaper": 4, "oper": [4, 28], "good": [4, 25, 37, 69], "enough": [4, 27, 31], "term": [4, 45, 48, 60], "almost": [4, 9, 31, 48, 62], "db": 4, "safe": [4, 24, 28, 36, 48], "NOT": [4, 36, 48], "lock": [4, 34, 37, 42, 45, 52, 76], "violat": 4, "core": [4, 35, 36, 38, 39, 53], "dump": [4, 36, 39, 53, 54], "immedi": [4, 16, 21, 36, 37, 39, 45], "valid": [4, 37, 48], "minim": [4, 29, 39, 65], "overhead": [4, 6, 12, 28, 29, 36, 37, 45, 65], "behind": [4, 6, 11, 12, 24, 64], "scene": [4, 12, 24, 64], "sampl": [4, 27, 31, 35, 37, 38, 48, 62], "function": [4, 14, 16, 29, 35, 37, 38, 46, 51, 54, 55, 56, 60, 62, 63, 69, 76], "packag": [4, 6, 8, 9], "automat": [4, 7, 28, 31, 35, 36, 38, 42, 57, 66, 69, 76], "per": [4, 31, 35, 36, 37, 38], "calcul": [4, 48], "unpack": 4, "system_temporary_directori": 4, "pid": 4, "either": [4, 6, 7, 48], "deploi": [4, 53], "avoid": [4, 12, 21, 28, 35, 39], "race": [4, 36], "condit": [4, 29, 36], "initi": [4, 6, 19, 23, 38, 55, 62, 65, 69], "purg": [4, 62], "legaci": [4, 9, 18, 19, 55], "least": [4, 9], "begin": 4, "nativ": [4, 20, 25, 26, 29, 36, 37, 39, 48, 51, 62, 76], "track": [4, 37, 58], "delet": [4, 26, 31, 47, 48, 63, 69], "javetnativemonitor": 4, "unit": [4, 15], "case": [4, 6, 7, 9, 15, 28, 30, 35, 36, 37, 38, 48, 49, 51, 76], "fetch": [4, 6, 49], "compar": [4, 7, 36], "count": [4, 42, 45, 47, 62], "verifi": [4, 38, 48], "unmanag": [4, 37], "properli": 4, "alloc": [4, 36, 48, 54], "freed": 4, "intellij": [5, 9], "flag": [5, 37, 53, 55], "design": [5, 7, 15, 16, 25, 29, 31, 35, 36, 38, 48, 62, 71, 76], "architectur": [5, 9], "modul": [5, 20, 24, 39, 41, 42, 48, 56, 57, 72], "engin": [5, 25, 26, 37, 38, 42, 54, 67, 73, 74], "pool": [5, 25, 37, 44, 51, 54, 67, 73, 74], "cross": [5, 76], "memori": [5, 9, 11, 15, 24, 28, 34, 35, 39, 42, 48, 52, 54, 60, 76], "leak": [5, 9, 11, 28, 37, 39, 52, 54], "detect": [5, 27, 28, 42, 48, 53, 54], "wasm": 5, "benchmark": 5, "improv": [5, 9, 36, 37, 54, 58], "cdt": [5, 70], "shell": [5, 67, 74], "intern": [5, 31, 35, 36, 37, 48, 54, 55, 58, 68], "reset": [6, 39], "i7": [6, 9], "10700k": [6, 9], "window": [6, 11, 12, 20, 25, 51, 60, 76], "type": [6, 12, 26, 27, 28, 29, 31, 35, 36, 37, 38, 42, 51, 52, 54, 55, 60], "tp": [6, 9], "751": 6, "032": 6, "ad": [6, 9, 31, 36, 51, 52, 53, 54, 55, 56, 57, 58, 59], "hoc": [6, 9, 36, 53], "65": 6, "410": 6, "143": 6, "363": 6, "isol": [6, 12, 36, 37, 38, 39, 76], "51": 6, "263": [6, 37], "647": 6, "458": 6, "846": 6, "968": 6, "253": 6, "508": 6, "748": 6, "660": 6, "slightli": 6, "mainli": 6, "older": 6, "than": [6, 11, 28, 45, 48, 72, 76], "dramat": [6, 48], "outperform": 6, "huge": [6, 21, 68], "serious": [6, 9], "slow": [6, 29], "down": [6, 76], "creation": [6, 37, 65], "unless": [6, 37, 39, 76], "particular": [6, 9, 35, 38], "linux": [6, 11, 18, 19, 25, 51, 52, 53, 55, 57, 59, 76], "addit": [6, 17, 29, 36, 48, 68, 76], "emb": 6, "bind": [6, 31, 38, 49, 52, 64, 69, 76], "webassembli": 6, "concern": 6, "program": 6, "languag": [6, 37, 48], "gener": [6, 27, 31, 37, 42, 48, 53, 60], "jul": 6, "13": [6, 54, 56, 57], "2023": [6, 56, 57, 58, 59], "binarytre": 6, "672": 6, "2048": 6, "305": 6, "edigit": 6, "814": 6, "484": 6, "59": 6, "fannkuch": 6, "redux": 6, "1660": 6, "4639": 6, "279": 6, "fasta": 6, "512": 6, "367": 6, "72": 6, "helloworld": 6, "mandelbrot": 6, "1411": 6, "1095": 6, "78": 6, "merkletre": 6, "1134": 6, "221": 6, "nbodi": 6, "546": 6, "472": 6, "86": 6, "nsiev": 6, "694": 6, "586": 6, "84": 6, "pidigit": 6, "4975": 6, "2761": 6, "55": 6, "spectral": 6, "norm": 6, "4198": 6, "4128": 6, "98": 6, "coro": 6, "prime": 6, "siev": 6, "796": 6, "105": [6, 42], "jit": 6, "optim": 6, "warm": 6, "could": [6, 9], "higher": 6, "And": [6, 9, 25, 62], "measur": [6, 60], "choos": [6, 24, 48], "technologi": 6, "accord": 6, "differ": [6, 9, 12, 29, 38, 39, 48, 49, 60], "signific": [6, 37], "algorithm": [6, 54], "awar": [6, 39], "drawback": [6, 60], "consider": [6, 17, 28, 45, 68], "written": [6, 28], "rust": 6, "21": [6, 36, 53, 59, 68], "kb": 6, "amount": [6, 21, 68, 76], "time": [6, 9, 16, 29, 31, 35, 38, 60, 65], "eventu": 6, "whole": [6, 31], "asynchron": 6, "mean": [6, 35, 38, 44, 48], "busi": [6, 54, 76], "logic": [6, 9, 28, 48, 49, 62, 76], "deal": [6, 27, 29, 37, 48], "promis": [6, 24, 39, 46, 62], "synchron": [6, 36, 76], "flexibl": [6, 38], "black": 6, "box": [6, 38], "impli": [6, 11, 16, 17, 24, 68, 76], "vulner": [6, 39], "among": [6, 36, 48, 58, 76], "major": [6, 38, 51, 76], "list": [6, 25, 28, 29, 31, 32, 48], "javetperf": [6, 58], "reus": [7, 12], "do": [7, 9, 12, 22, 24, 25, 36, 37, 38, 39, 48, 49, 64], "suit": 7, "timestamp": 7, "newer": 7, "instal": [8, 9, 17, 35, 38, 62, 67, 72, 74], "though": [8, 42, 48, 65, 76], "drop": [8, 9, 38, 48], "heavili": [8, 27, 48, 76], "person": 8, "idea": [8, 9, 11, 37], "For": [8, 12, 31, 38, 48], "now": [8, 9, 27, 31, 38, 44, 48, 69], "v7": 8, "kotlin": [8, 31, 36], "dsl": [8, 31], "construct": [8, 48, 53], "14": [8, 9, 54, 55, 56, 57, 58], "17": [8, 31, 53, 55, 58], "v3": [8, 38, 50], "bundl": 8, "hasn": [9, 24, 48], "activ": [9, 24, 35, 38, 68], "2017": 9, "last": 9, "wa": [9, 76], "2016": 9, "v4": 9, "fulli": [9, 27], "were": 9, "around": [9, 38], "android": [9, 25, 35, 55, 56, 57], "year": [9, 76], "nearli": 9, "seriou": [9, 11], "fix": [9, 11, 20, 26, 37, 38, 50, 52, 53, 54, 55, 56, 57, 58, 59], "under": [9, 37, 39, 48], "Its": [9, 37, 76], "evolv": 9, "expect": [9, 37, 42, 48], "chanc": 9, "implement": [9, 25, 29, 31, 35, 37, 38, 48, 49, 60, 68], "obvious": [9, 38, 48, 60], "couldn": [9, 76], "easili": [9, 28, 37, 45, 73], "would": [9, 11, 16], "contribut": 9, "me": [9, 25], "had": [9, 11], "admit": 9, "think": [9, 11, 13, 15, 16, 19], "mere": 9, "meanwhil": [9, 62], "ecmascript": 9, "move": [9, 52, 53], "forward": [9, 38], "rapidli": 9, "caus": [9, 20, 21, 35, 45, 48, 54, 76], "unexpect": [9, 28, 48], "someon": [9, 38], "team": 9, "realiti": 9, "cruel": 9, "unoffici": 9, "v6": 9, "110": 9, "2020": [9, 11], "temporarili": 9, "ve": [9, 11], "j2v8_win32_x86_64": 9, "machin": 9, "cpu": [9, 25, 60], "session": 9, "003": 9, "009": 9, "338": 9, "688": 9, "35": 9, "299": 9, "274": 9, "019": 9, "571": 9, "428": 9, "With": [9, 12, 38, 60], "stick": 9, "devic": [9, 25], "precis": [9, 28, 48], "mini": 9, "macbook": 9, "air": 9, "too": [9, 16, 38], "plan": 9, "bui": 9, "futur": 9, "donat": [9, 25], "joke": 9, "intend": [9, 12], "tl": 9, "dr": 9, "rel": 9, "easi": [9, 12, 25, 27, 48, 51, 60, 65, 70], "master": [9, 49], "didn": 9, "well": [9, 24, 31, 37, 76], "213": 9, "solvabl": 9, "revisit": 9, "remov": [9, 52, 53, 54, 55], "earli": [9, 39], "haven": 9, "got": [9, 11], "reviv": 9, "v2": [9, 50, 68], "far": 9, "lowest": [9, 68], "my": [9, 25], "eclips": 9, "plai": [9, 36, 38, 49, 60, 62], "hei": 9, "satisfi": 9, "luck": 9, "understand": 9, "suffer": 9, "nowadai": 9, "2019": [9, 57], "cmakelist": 9, "txt": 9, "still": [9, 45, 48, 76], "2015": 9, "ag": 9, "surpris": 9, "deepli": 9, "gone": [9, 24], "step": [9, 12, 24, 26, 29, 31, 35, 37, 38, 48, 63, 66, 69, 70], "sit": 9, "watch": 9, "break": [9, 28, 38, 48, 49, 60, 70], "made": [9, 11], "full": [9, 39, 48], "thought": [9, 11], "month": [9, 11], "pai": [9, 76], "python2": 9, "form": [9, 48], "outer": 9, "layer": [9, 76], "who": [9, 38], "spend": 9, "preciou": 9, "wish": [9, 76], "hair": 9, "guido": 9, "van": 9, "rossum": 9, "am": [9, 31, 48], "problemat": 9, "At": [9, 11, 48], "hack": [9, 12, 24], "pom": [9, 55], "xml": [9, 55], "uncertainti": 9, "someth": [9, 48], "roi": 9, "suppos": [9, 30, 35, 49], "sai": [9, 27], "x": [9, 25, 26, 29, 31, 38, 48, 50, 64], "later": [9, 11, 38], "255": [9, 37, 51, 63], "permiss": 9, "realli": [9, 49], "local": [9, 27, 37, 48], "histori": [10, 11, 19, 76], "j2v8": [10, 11, 12, 19, 74, 75], "motiv": [10, 19, 76], "find": [11, 48], "compel": 11, "slowli": 11, "dy": 11, "sometim": [11, 26, 27, 28, 31, 37, 48, 49], "lower": 11, "cost": 11, "might": [11, 35], "learn": [11, 15], "lot": [11, 65], "manual": [11, 17], "end": [11, 31, 37, 39, 48, 66], "abl": [11, 12, 21, 24, 28, 38, 45, 48, 62, 76], "write": [11, 27, 28, 37, 76], "inde": [11, 39], "folk": [12, 38], "migrat": [12, 25, 74], "experienc": 12, "perspect": [12, 37], "noth": 12, "globalthi": [12, 38, 76], "mix": 12, "longer": [12, 28, 31, 37, 39, 76], "getglobalobject": [12, 26, 27, 29, 31, 38, 45, 48, 49, 60, 62, 63, 64, 65, 69, 72, 76], "top": [12, 38, 48, 76], "level": [12, 28, 36, 48], "globalobject": [12, 48], "invok": [12, 27, 52], "involv": 12, "common": [12, 17], "where": [12, 13, 19, 35, 38, 60, 76], "thing": [12, 28, 29, 37, 38], "offer": [12, 14, 37], "builder": 12, "check": [12, 36, 38, 48, 53, 76], "ast": [12, 25], "scope": [12, 16, 37, 56], "duplic": 12, "regist": [12, 24, 38, 39, 42, 48, 56, 58, 65, 69, 76], "decor": [12, 48, 53, 69, 76], "v8function": [12, 48, 49, 53, 54], "v8properti": [12, 48, 52, 53, 54, 76], "back": [12, 28, 31, 37, 38, 48, 50], "leakag": [12, 42], "lifecycl": [12, 37, 39, 48], "convers": [12, 26, 28, 56, 64], "handl": [12, 24, 27, 31, 36, 38, 49, 53, 55, 65], "everyth": 12, "goe": [12, 48], "smoothli": [12, 28], "experi": [12, 24, 31, 35, 38, 64, 65, 70], "littl": [12, 29], "bit": [12, 29, 37, 38], "spring": [12, 25, 51, 67, 74], "framework": [12, 73], "most": [12, 36, 38, 39, 48], "cover": [12, 27, 29, 37, 76], "express": [12, 31, 62, 68], "effect": [12, 35, 37, 38, 62], "basic": [14, 25, 30, 48, 65, 72, 74, 76], "absent": [14, 36, 48], "settimeout": [14, 62, 72, 76], "setinterv": [14, 62, 72], "javenod": [14, 15, 25, 49, 68, 72, 76], "extens": [14, 48, 65], "aim": [14, 72, 76], "simul": [14, 38, 48, 72, 76], "singleton": 16, "fine": [16, 25, 28], "noderuntim": [16, 38, 52, 55, 62, 66, 71], "But": [16, 35, 36, 37, 38, 48, 49, 73], "crash": [16, 19, 21, 23, 35, 36, 48, 54, 57], "serv": 16, "agent": 16, "check_eq": 16, "start_io_thread_async_initi": 16, "exchang": 16, "std": 16, "atomic_bool": 16, "flip": 16, "again": [16, 31, 35], "trigger": [16, 36, 37, 48], "workaround": [16, 38], "inevit": 16, "hacki": 16, "fundament": [16, 44, 73], "distribut": [17, 55, 68], "eg": 17, "18": [17, 54, 58, 68], "reli": [17, 37, 44, 60, 73], "advanc": [17, 25, 49, 74], "chain": [17, 37], "download": [17, 38], "drive": [17, 38], "prepar": [17, 35, 38, 48, 65], "sudo": [17, 38], "apt": [17, 38], "y": [17, 26, 29, 31, 64], "essenti": 17, "softwar": 17, "properti": [17, 28, 29, 31, 60, 68, 69, 73], "ppa": 17, "toolchain": 17, "altern": [17, 29], "90": 17, "slave": 17, "gcov": 17, "80": 17, "70": 17, "config": [17, 31, 44], "choic": [17, 25], "select": [17, 37, 48], "prioriti": [17, 54], "statu": [17, 45, 50], "effort": [17, 45, 68], "commit": [17, 68], "background": [19, 25, 49], "troubleshoot": [19, 25, 32], "dynam": [19, 23, 25, 35, 48, 52], "routin": [19, 23, 38], "being": [19, 23, 31, 37, 38, 45, 48], "failur": [20, 54], "happen": [20, 24, 28, 37, 49], "root": [20, 27, 37, 38], "napi": [20, 38], "symbol": [20, 26, 29, 38, 42, 53, 55, 58], "cannot": [20, 28, 36, 37, 38], "found": [20, 38, 42, 72], "modular": [20, 34, 39, 76], "By": [21, 35, 37, 69], "reduc": 21, "relat": [21, 48], "attempt": 21, "visit": [22, 25, 72], "user": [24, 28, 31, 38, 44, 65, 70, 73], "segfault": [24, 76], "occur": [24, 28, 31, 37], "82": 24, "loop": [24, 45, 49, 62, 70], "exit": [24, 70], "see": [24, 36, 38, 60, 71], "hand": 24, "yet": 24, "resolv": [24, 31, 38, 62, 76], "reject": [24, 39, 53], "land": 24, "lead": [24, 39], "corrupt": 24, "peopl": [24, 76], "mostli": 24, "genuin": 24, "prevent": [24, 35, 37, 39], "fact": [24, 49], "won": [24, 28, 35], "standard": [24, 57], "hit": [24, 45], "import": [24, 44, 45, 49, 68, 76], "explicitli": [24, 31, 35, 37, 39, 65], "forc": [24, 31, 39, 65], "garbag": [24, 35], "collect": [24, 26, 29, 35, 46, 51], "eight": 25, "awesom": [25, 71], "star": 25, "medium": 25, "blogspot": 25, "channel": 25, "discord": [25, 76], "retir": 25, "mail": 25, "great": 25, "thank": 25, "arm64": [25, 57, 59, 68], "v20": [25, 50, 59], "267": [25, 59], "prefer": 25, "polyfil": [25, 67, 74, 76], "exposur": [25, 51], "interop": [25, 61, 74], "bigint": [25, 30, 37, 51], "date": [25, 30, 38, 51], "analysi": [25, 38], "javetsanit": 25, "groupid": [25, 31, 68], "artifactid": [25, 31, 68], "v8host": [25, 27, 35, 37, 38, 45, 52, 53, 54, 60, 62, 66, 69, 70], "getnodeinst": [25, 27, 37, 62, 66, 71], "createv8runtim": [25, 27, 38, 45, 60, 62, 66, 69, 70, 71], "println": [25, 38, 60, 62, 63, 64, 66, 69, 70], "getexecutor": [25, 26, 27, 29, 31, 38, 45, 47, 48, 49, 60, 62, 63, 64, 65, 66, 69, 70, 72], "executestr": [25, 26, 29, 31, 38, 48, 63, 64, 66, 72], "getv8inst": [25, 37, 38, 45, 60, 66, 69, 70, 71], "hivemq": 25, "apach": 25, "graalj": [25, 31], "nashorn": 25, "elegantli": [25, 60], "jsonnod": [25, 61, 74], "compromis": 25, "typescript": 25, "intro": 25, "tutori": 25, "convert": [25, 32, 42, 48, 52, 54, 55, 60, 61, 63, 74, 76], "todo": [25, 32], "note": [25, 31, 37, 38, 48], "faq": 25, "javetproxyconvert": [26, 28, 53, 54, 60, 63, 76], "skip": [26, 28, 31, 53], "proxi": [26, 29, 54, 55, 60], "primit": [26, 27, 28, 29, 31, 39, 48, 51, 54, 55], "annoi": 26, "variabl": [26, 36, 38, 48, 54, 63, 64, 69], "accid": 26, "javetbridgeconvert": [26, 54], "ident": [26, 38, 48, 69], "setconvert": [26, 27, 31, 60, 63], "btrue": 26, "bfals": 26, "asserttru": [26, 31, 38, 45, 47, 48, 49], "executeobject": [26, 31, 63, 64], "assertfals": [26, 31, 38, 45, 47, 48], "assertequ": [26, 29, 31, 38, 45, 47, 48], "tov8valu": [26, 27, 60], "executeinteg": [26, 29, 31, 38, 45, 48, 66], "toprimit": 26, "12345": 26, "12346": 26, "intarrai": 26, "length": [26, 27, 29, 37], "assertarrayequ": [26, 31], "iter": [26, 58], "integerlist": 26, "arraylist": [26, 29, 64], "executevoid": [26, 27, 31, 38, 45, 48, 60, 62, 63, 64, 65, 69, 72], "longlist": 26, "unmodifiablelist": 26, "aslist": [26, 48], "1l": 26, "2l": 26, "stringifi": [26, 64], "implicit": [26, 76], "given": [26, 37], "give": [26, 28, 37, 45, 48], "ab": 26, "implicitli": [26, 54], "besid": [26, 48], "power": 27, "simpl": [27, 31, 35, 37, 38, 44, 48, 60, 62, 71], "about": [27, 36], "reflect": [27, 29, 31, 39, 48, 58], "tweak": 27, "pair": [27, 48], "public": [27, 29, 31, 35, 44, 48, 49, 55, 60, 62, 69, 72, 73], "class": [27, 29, 38, 44, 48, 60, 62, 69, 73], "null": [27, 29, 31, 38, 48, 49, 62, 69, 70], "getnam": [27, 29, 69, 73], "return": [27, 28, 29, 31, 35, 37, 38, 39, 45, 48, 49, 52, 60, 62, 63, 64, 69, 73], "void": [27, 29, 31, 44, 48, 49, 60, 62, 69, 72], "setnam": [27, 29, 69], "getvalu": [27, 29, 47, 48, 60, 69], "setvalu": [27, 29, 48, 69], "Then": 27, "recurs": [27, 28, 53], "parent": [27, 39], "overrid": [27, 31, 35, 44, 48, 49, 60], "depth": [27, 28, 42, 53], "argument": [27, 29, 76], "circular": [27, 42, 53], "structur": [27, 42, 53, 60], "increment": [27, 60], "suppresswarn": 27, "uncheck": 27, "extend": [27, 31, 38, 48], "javetobjectconvert": [27, 28, 29, 53, 76], "method_prefix_get": 27, "method_prefix_i": 27, "protect": [27, 36, 44, 45, 73], "excluded_method": 27, "hashset": [27, 29, 48], "getmethod": [27, 48], "getparametercount": 27, "methodnam": [27, 42, 48], "startswith": 27, "v8valu": [27, 28, 49, 52, 53, 55, 60, 64, 70, 76], "int": [27, 29, 30, 31, 45, 48, 60, 62, 69], "throw": [27, 28, 31, 38, 45, 48, 49, 60, 62, 72], "javetexcept": [27, 48, 49, 60, 62, 72], "super": [27, 60], "isundefin": 27, "objectclass": 27, "getclass": 27, "v8valueobject": [27, 31, 37, 38, 48, 53, 55, 69, 72, 76], "createv8valueobject": [27, 37, 38, 48, 69], "canaccess": 27, "propertynam": 27, "contain": [27, 38, 39, 48], "substr": 27, "tolowercas": 27, "els": [27, 38, 48, 49, 60, 62, 68, 72, 76], "v8valuetemp": 27, "catch": [27, 45, 48, 49, 62, 70], "except": [27, 31, 36, 37, 38, 39, 44, 45, 48, 52, 54, 55, 60, 76], "printstacktrac": [27, 45, 62], "line": [27, 36, 48, 70], "testpojo": 27, "pojoarrai": 27, "tom": 27, "ceo": 27, "jerri": 27, "cfo": 27, "log": [27, 37, 39, 43, 48, 49, 62, 65, 69], "transpar": [27, 31, 48, 76], "autom": [27, 37], "bridg": [28, 54], "arrai": [28, 29, 31, 37, 47, 48, 51], "meet": [28, 38], "famou": 28, "topic": [28, 49], "lang": [28, 35], "nullpointerexcept": 28, "luckili": [28, 38], "inject": [28, 31, 35, 42, 48, 49, 53, 60, 76], "javetconverterconfig": [28, 53], "overridden": [28, 35], "differenti": 28, "introduc": [28, 37, 54, 76], "ijavetentityfunct": [28, 29], "ijavetentitymap": [28, 29], "setskipfunctioninobject": 28, "boolean": [28, 29, 30, 35], "setextractfunctionsourcecod": 28, "opportun": 28, "extract": 28, "ineffici": 28, "inconveni": [28, 35], "substanti": 28, "instead": [28, 36, 37, 38, 52, 57, 64, 76], "javetconverterexcept": 28, "maximum": 28, "reach": [28, 42], "cheap": 28, "unrealist": 28, "number": [28, 30, 37, 38], "stackoverflowerror": 28, "wors": 28, "block": [28, 36, 37, 48, 66], "stack": [28, 48], "overflow": 28, "attack": [28, 45], "drain": [28, 37], "tini": 28, "behavior": [28, 31, 37, 39, 48], "fanci": 28, "read": [28, 37, 42, 49], "setproxymapen": [28, 31], "wherea": [28, 37], "conveni": 28, "bi": [28, 64], "direction": [28, 64], "grain": 28, "worri": [28, 35, 38, 45, 62], "vice": 28, "versa": 28, "open": [29, 31, 39], "subclass": [29, 31, 39, 49], "int8arrai": [29, 37], "char": [29, 30, 48], "doubl": [29, 30, 37, 48], "float64arrai": [29, 37], "float": [29, 30, 37, 48], "float32arrai": [29, 37], "int32arrai": [29, 37], "int64arrai": 29, "short": [29, 30, 37, 48], "int16arrai": [29, 37], "stream": [29, 48, 53, 55], "javetentitysymbol": 29, "ijavetmapp": [29, 53], "hashmap": [29, 31, 64], "uint8arrai": [29, 37], "uint8clampedarrai": [29, 37], "uint16arrai": [29, 37], "uint32arrai": [29, 37], "bigint32arrai": 29, "bigint64arrai": [29, 37], "pojo": 29, "registercustomobject": [29, 53], "alien": 29, "match": [29, 31, 38, 63], "constructor": [29, 31, 54, 72], "signatur": [29, 42, 48], "frommap": 29, "tomap": 29, "touchabl": 29, "easier": 29, "customobject": 29, "integ": [29, 30, 31, 37, 47, 48, 62], "put": [29, 31, 39, 60, 64], "getter": [29, 31, 48, 53, 54, 69, 76], "setter": [29, 31, 48, 53, 69, 76], "snippet": [29, 37, 38], "below": [29, 48], "getconvert": 29, "ones": 29, "upon": 29, "registr": [29, 42, 76], "customfrommap": 29, "customtomap": 29, "regular": [29, 36], "v8customobject": 29, "getobject": [29, 31], "assertnotnul": [29, 31, 47], "pro": 29, "con": 29, "intrus": [29, 60], "carri": [29, 76], "inform": 29, "memor": 29, "complic": [29, 38], "relationship": 29, "javetprimitiveconvert": [30, 53, 55], "charact": 30, "biginteg": 30, "zoneddatetim": [30, 55, 56], "optionalint": 30, "optionaldoubl": 30, "optionallong": 30, "fall": 30, "rang": [30, 37], "danger": 31, "touch": [31, 36], "tmp": 31, "executeboolean": 31, "isfil": 31, "isdirectori": 31, "canread": [31, 72], "canwrit": 31, "canexecut": 31, "lowmemorynotif": [31, 48, 49, 52, 60, 65, 69, 76], "getconfig": [31, 38, 71], "z": 31, "topath": 31, "tostr": [31, 38, 47, 48, 60, 63, 70, 72], "newpath": 31, "toobject": 31, "abc": [31, 35, 48, 63], "def": [31, 48, 62], "n": [31, 38, 48, 63], "d": [31, 38, 63], "instanceof": [31, 48, 49, 60], "matcher": [31, 63], "123": [31, 48, 63, 69, 72], "a123": 31, "smart": [31, 37], "javeterrortyp": 31, "assertthrow": 31, "javetexecutionexcept": [31, 38, 54], "field": 31, "should": [31, 45], "writabl": 31, "annot": [31, 48, 53], "autoclos": 31, "ijavetclos": [31, 53], "isassignablefrom": 31, "special": [31, 38, 48], "known": [31, 37], "lambda": [31, 48], "istringjoin": 31, "join": 31, "two": [31, 37], "stringjoin": 31, "hold": [31, 37, 49], "joiner": 31, "getjoin": 31, "setjoin": 31, "v8valuefunct": [31, 38, 48, 52, 53, 62, 72], "orphan": 31, "callabl": 31, "outofmemoryerror": 31, "similar": [31, 39, 65], "enhanc": [31, 48, 52, 53, 54, 55, 58], "istringutil": 31, "hello": [31, 62, 63, 65, 67, 74], "split": 31, "stringutil": 31, "util": 31, "getutil": 31, "setutil": 31, "str": [31, 48], "toarrai": [31, 64], "aussi": 31, "non": [31, 39, 48], "bytebuddi": [31, 56], "alreadi": [31, 42, 49], "referenc": [31, 37, 38], "buddi": 31, "12": [31, 54, 56, 57, 58], "groovi": 31, "javetreflectionobjectfactori": 31, "stai": [31, 35, 62, 76], "dynamicclass": 31, "ijavetanonym": [31, 48, 53], "setreflectionobjectfactori": 31, "getinst": [31, 35], "codestr": [31, 38, 51], "smartli": 31, "overload": 31, "vararg": [31, 48, 52, 55], "identifi": 31, "alter": 31, "v8allow": [31, 54], "v8block": [31, 54], "ignor": [31, 37, 48, 52], "v8getter": [31, 54], "v8setter": [31, 54], "treat": [31, 35, 37], "allowonli": 31, "blockonli": 31, "alia": 31, "virtual": [31, 38, 55], "document": [35, 48, 53], "assum": [35, 38, 48], "reload": 35, "setlibraryreload": 35, "jsruntimetyp": [35, 38, 71, 73], "unloadlibrari": [35, 53], "restor": [35, 48], "gc": [35, 60, 65, 69], "prior": 35, "loadlibrari": [35, 53], "unstabl": 35, "risk": [35, 39], "temp": 35, "javetlibload": 35, "setlibloadinglisten": 35, "ijavetlibloadinglisten": [35, 54], "getlibpath": 35, "anywher": 35, "bypass": [35, 48], "isdeploi": 35, "must": [35, 48, 72], "less": 35, "islibinsystempath": 35, "mavin": 35, "plug": 35, "osgi": 35, "repeatedli": 35, "regardless": [35, 36, 39], "unsatisfiedlinkerror": 35, "issuppressingerror": [35, 54], "javetlibloadinglisten": [35, 54], "mechan": [35, 36, 76], "djavet": 35, "unlock": [36, 60], "surround": 36, "v8locker": [36, 39, 51], "locker": 36, "getv8lock": 36, "nest": 36, "thrown": [36, 37, 39, 45, 48], "report": 36, "conflict": [36, 42], "slight": 36, "sensit": [36, 37, 39, 51, 76], "extrem": [36, 48], "50": 36, "granular": [36, 38], "concurr": 36, "scenario": [36, 37, 39, 51, 76], "maxim": [36, 39], "incompat": 36, "chao": 36, "sequenc": 36, "newglobalref": 37, "javaobject": [37, 76], "until": 37, "deleteglobalref": 37, "across": 37, "raw": 37, "categor": 37, "within": 37, "persist": 37, "aw": 37, "borrow": [37, 48], "rule": [37, 48], "wrap": 37, "outsid": 37, "setweak": [37, 39], "determin": [37, 48, 53], "javetstandardconsoleinterceptor": [37, 65, 69], "v8scope": [37, 39, 53], "setescap": 37, "getv8scop": 37, "binari": [37, 42, 57], "often": 37, "manipul": [37, 47], "content": [37, 49, 59], "dataview": 37, "specif": [37, 49], "format": [37, 42, 48], "nio": 37, "bytebuff": [37, 55], "consid": [37, 48, 60], "idl": 37, "equival": [37, 48], "128": 37, "complement": 37, "sign": 37, "int8_t": 37, "unsign": 37, "octet": 37, "uint8_t": 37, "clamp": 37, "32768": 37, "32767": 37, "int16_t": 37, "65535": 37, "uint16_t": 37, "2147483648": 37, "2147483647": 37, "int32_t": 37, "4294967295": 37, "uint32_t": 37, "38": 37, "1038": 37, "ieee": 37, "point": [37, 38], "digit": 37, "234567": 37, "unrestrict": 37, "324": 37, "10308": 37, "64": [37, 53], "23456789012345": 37, "int64_t": 37, "biguint64arrai": 37, "264": 37, "uint64_t": 37, "testv8valuetypedarrai": 37, "testv8valuedataview": 37, "frequenc": 37, "area": 37, "pace": 37, "zombi": 37, "cycl": 37, "notifi": [37, 60, 69], "space": 37, "v8notifi": 37, "setmemoryusagethresholdratio": [37, 52], "threshold": 37, "ratio": 37, "enablegcnotif": [37, 52], "ration": 37, "xms64m": 37, "xmx64m": 37, "pressur": [37, 76], "destroi": 37, "curv": 37, "smoother": 37, "exce": 37, "broadcast": 37, "schedul": [37, 54], "affect": 37, "worker": 37, "javetengineconfig": [37, 44, 52, 55, 73], "setautosendgcnotif": [37, 73], "light": 37, "weight": 37, "hint": [37, 48], "task": [37, 49, 52], "queue": [37, 49], "decis": 37, "millisecond": [37, 45, 62], "disregard": 37, "aforement": 37, "analyz": [37, 38], "getv8heapspacestatist": [37, 54], "getv8heapstatist": [37, 54], "getv8sharedmemorystatist": [37, 54], "javetenginepool": [38, 44, 52, 54, 65, 71, 73], "setjsruntimetyp": [38, 71, 73], "ijavetengin": [38, 45, 65, 71, 72], "getengin": [38, 45, 65, 71], "getv8runtim": [38, 45, 60, 65, 72], "workingdirectori": 38, "javetosutil": [38, 62, 72], "working_directori": [38, 62, 72], "node_modul": [38, 39, 62, 72], "getnodemodul": 38, "nodemodulemodul": 38, "setrequirerootdirectori": 38, "getlogg": [38, 44, 72], "loginfo": [38, 72], "23": [38, 52, 55, 56, 58, 68, 72], "34": [38, 72], "const": [38, 47, 48, 60, 62, 63, 64, 72], "decim": 38, "__dirnam": 38, "__filenam": 38, "scriptfil": 38, "scriptpath": 38, "scriptstr": 38, "iv8executor": [38, 56], "setresourcenam": 38, "resourcenam": 38, "setmodul": 38, "excit": 38, "potenti": [38, 53, 54], "piec": 38, "sqlite3": 38, "bother": 38, "electron": 38, "approach": [38, 48], "simpler": 38, "node_sqlite3": 38, "napi_create_error": 38, "patchelf": 38, "npm": [38, 62, 72], "node_module_fil": 38, "loadlibraryexw": 38, "unzip": 38, "somewher": 38, "replac": [38, 60], "voluntarili": 38, "compat": [38, 54], "go": [38, 50], "through": [38, 48], "pretti": 38, "backup": 38, "rebuilt": [38, 52], "dumpbin": 38, "win32": 38, "delai": 38, "ex": 38, "00000001": 38, "characterist": 38, "0000000180154a40": 38, "hmodul": 38, "0000000180154818": 38, "tabl": [38, 57], "000000018014f248": 38, "000000018014fa68": 38, "bound": 38, "0000000000000000": 38, "stamp": 38, "0000000180108724": 38, "424b": 38, "napi_create_funct": 38, "0000000180108ab5": 38, "4243": 38, "napi_create_buffer_copi": 38, "1801363d8": 38, "180166610": 38, "index": 38, "6096": 38, "napi_open_escapable_handle_scop": 38, "6072": 38, "napi_get_undefin": 38, "apart": 38, "swc": 38, "gyp": 38, "ppee": 38, "puppi": 38, "profession": 38, "pe": 38, "explor": 38, "cli": 38, "drag": 38, "directory_entry_delay_import": 38, "save": [38, 62], "resolut": [38, 58], "embedd": 38, "relai": [38, 54], "reachabl": 38, "javetbuiltinmoduleresolv": [38, 59], "setv8moduleresolv": 38, "existssync": 38, "getboolean": 38, "capabl": [38, 48, 60], "gain": 38, "order": [38, 47], "launch": [38, 39], "testfrommodul": 38, "assign": [38, 48, 53, 63], "v8modul": [38, 52, 56, 59], "compilemodul": 38, "containsmodul": 38, "getinteg": [38, 45], "heavi": 38, "v8modulereferr": 38, "equal": [38, 48, 51, 64, 70, 72], "compilev8modul": [38, 76], "cach": [38, 51, 55, 56], "propos": 38, "advantag": 38, "tradit": 38, "record": 38, "createv8valuefunct": [38, 48], "createv8modul": [38, 59], "issourcetextmodul": [38, 59], "issyntheticmodul": [38, 59], "invokeinteg": 38, "obtain": 39, "pass": [39, 53], "dangl": [39, 57], "ey": 39, "stage": 39, "prohibit": 39, "uncertain": 39, "acquir": [39, 42, 76], "malici": [39, 45], "eval": [39, 48], "impact": [39, 48], "unhandl": 39, "whose": 39, "period": 41, "style": 41, "statist": [41, 54], "101": 42, "osnotsupport": 42, "102": 42, "librarynotfound": 42, "103": 42, "librarynotload": 42, "104": 42, "notsupport": 42, "failedtoreadpath": 42, "201": 42, "compilationfailur": 42, "301": 42, "executionfailur": 42, "302": 42, "executiontermin": 42, "termin": [42, 43], "continu": 42, "401": 42, "callbacksignatureparametersizemismatch": 42, "mismatch": 42, "paramet": [42, 48], "expectedparameters": 42, "actualparameters": 42, "402": 42, "callbacksignatureparametertypemismatch": 42, "expectedparametertyp": 42, "actualparametertyp": 42, "403": 42, "callbackinjectionfailur": 42, "404": 42, "callbackregistrationfailur": 42, "405": 42, "callbackmethodfailur": 42, "406": 42, "callbackunknownfailur": 42, "unknown": 42, "407": [42, 53], "callbackunregistrationfailur": 42, "unregistr": 42, "408": [42, 58], "callbacktypenotsupport": [42, 58], "callbacktyp": 42, "501": 42, "converterfailur": 42, "502": 42, "convertercircularstructur": 42, "max": 42, "503": [42, 53], "convertersymbolnotbuiltin": 42, "601": 42, "modulenameempti": 42, "empti": 42, "602": [42, 53], "modulenotfound": 42, "modulenam": 42, "603": [42, 53], "modulepermissiondeni": 42, "deni": 42, "701": 42, "lockacquisitionfailur": 42, "702": 42, "lockreleasefailur": 42, "703": 42, "lockconflictthreadidmismatch": 42, "lockedthreadid": 42, "currentthreadid": 42, "801": 42, "runtimealreadyclos": 42, "802": 42, "runtimealreadyregist": 42, "803": 42, "runtimenotregist": 42, "804": 42, "runtimeleakagedetect": 42, "805": [42, 53], "runtimeclosefailur": 42, "806": [42, 54], "runtimeoutofmemori": 42, "heapstatist": 42, "901": [42, 55], "enginenotavail": [42, 55], "hell": [44, 73], "3rd": [44, 48], "parti": [44, 48], "interfac": [44, 49, 76], "slf4j": 44, "org": [44, 68], "loggerfactori": 44, "myjavetlogg": [44, 73], "isdebugen": 44, "throwabl": [44, 70], "info": [44, 56], "isinfoen": 44, "iswarnen": 44, "javetlogg": 44, "testlogg": 44, "setjavetlogg": [44, 73], "ijavetengineguard": [45, 51], "ijavetenginepool": [45, 65, 73], "guard": 45, "getguard": 45, "10000": 45, "infinit": [45, 70], "javetterminatedexcept": 45, "mark": 45, "iscontinu": 45, "dead": 45, "afterward": [45, 49], "hang": 45, "till": 45, "timeout": [45, 49], "cancel": 45, "monitor": 45, "daemonthread": 45, "isinus": [45, 51], "timeunit": [45, 62], "sleep": [45, 62], "interruptedexcept": [45, 62], "terminateexecut": [45, 51, 76], "var": [45, 48, 62], "greater": 45, "javetengineguard": [45, 52], "interrupt": 45, "disableindebugmod": [45, 52], "enableindebugmod": [45, 52], "getlength": 47, "getsiz": 47, "getkei": 47, "getownpropertynam": 47, "getentri": 47, "foreach": [47, 51, 58], "consum": 47, "biconsum": 47, "weakmap": 47, "weakset": 47, "atomicinteg": 47, "v8valueinteg": [47, 48, 60], "getandincr": 47, "popinteg": 47, "preserv": 47, "v8valuestr": [47, 60], "getjsfunctiontyp": [48, 52], "invis": 48, "stori": 48, "closur": 48, "goal": 48, "iv8valueobject": [48, 51, 52, 53, 56, 58], "caller": [48, 49], "scan": 48, "input": [48, 60, 64, 70], "receiv": [48, 49, 53, 60], "functioncallbackreceiv": 48, "tricki": 48, "charm": 48, "generatearraywithconvert": 48, "intrud": 48, "untouch": 48, "situat": 48, "v8runtimesett": 48, "generatearraywithoutconvert": 48, "declar": [48, 73, 76], "annotationbasedcallbackreceiv": 48, "stringvalu": 48, "getstringvalu": 48, "setstringvalu": 48, "echo": 48, "mathadd": 48, "recogn": [48, 60], "v8valuearrai": 48, "createv8valuearrai": 48, "staticecho": 48, "setv8runtim": 48, "tojsonstr": 48, "testopt": 48, "optionalstr": 48, "teststream": 48, "filter": 48, "thisobjectrequir": [48, 53], "specifi": [48, 76], "thisobject": 48, "bodi": [48, 60, 62], "especi": [48, 65, 76], "simpli": [48, 60], "symboltyp": 48, "v8valuesymboltyp": 48, "v8bindingenabl": [48, 53], "disabledfunct": 48, "disabledproperti": 48, "isv8bindingen": 48, "arbitrarymethod": 48, "whether": [48, 53], "refactor": [48, 52, 53, 54, 55], "friendli": [48, 76], "javetreflectionutil": [48, 53], "getmethodnamefromlambda": [48, 53], "getmethodnamesetfromlambda": [48, 53], "firstli": 48, "disabledfunctionset": 48, "supplier": 48, "serializ": 48, "secondli": 48, "est": 48, "tr\u00e8": 48, "bien": 48, "unbind": [48, 53, 76], "unbindproperti": [48, 53, 58], "unbindfunct": [48, 53, 58], "ijavetanonymous1": 48, "testfunct": 48, "testproperti": 48, "ijavetanonymous2": 48, "javetentityfunct": [48, 53], "jsfunctiontyp": 48, "userdefin": 48, "semi": 48, "mockcallbackreceiv": 48, "blank": 48, "iscal": 48, "happi": 48, "mirror": 48, "anonym": 48, "getsourcecod": [48, 52], "setsourcecod": [48, 52], "sourcecod": 48, "existingsourcecod": 48, "startposit": 48, "endposit": 48, "getposit": 48, "newsourcecod": 48, "setposit": 48, "len": 48, "radic": 48, "rough": 48, "layout": 48, "remain": 48, "accordingli": 48, "invoc": 48, "pseudo": [48, 49, 62], "originalsourcecod": 48, "getjsscopetyp": 48, "isclass": 48, "indic": 48, "callvoid": [48, 62], "isfunct": 48, "incorrect": 48, "malform": 48, "technic": [48, 71], "keyword": 48, "discard": 48, "createv8valuestr": [48, 52], "toclon": [48, 56], "abov": 48, "intvalu": 48, "valueof": 48, "createv8valueinteg": [48, 60], "safeti": 48, "sentenc": [48, 76], "belong": 48, "prototyp": 48, "combin": 48, "func": 48, "callobject": 48, "callprimit": 48, "callasconstructor": [48, 51, 72], "itself": 48, "invokevoid": [48, 60], "invokeobject": [48, 63], "invokeprimit": 48, "despit": 48, "deficit": 48, "quot": 48, "getcontext": [48, 54], "setcontext": 48, "copyscopeinfofrom": [48, 56], "anoth": [48, 72], "setscriptsourc": [48, 56], "lexic": 48, "jsfunction": 48, "ecma": 48, "262": 48, "speak": 48, "parallel": 48, "slot": 48, "scope_info": 48, "describ": 48, "lookup": 48, "presenc": 48, "previou": 48, "scopeinfo": [48, 56], "hascontextextensionslot": 48, "search": 48, "purpos": 48, "henc": 48, "sloppi": 48, "inner": [48, 54], "fast": 48, "harmoni": 48, "scriptcontext": 48, "rather": 48, "functioncontext": 48, "gather": 48, "scriptcontextt": 48, "toler": 48, "natur": [48, 49], "strongli": [48, 60], "conform": 48, "throughout": 48, "samplewithoutthi": 48, "samplewiththi": 48, "excess": 48, "behav": 48, "redund": 48, "fill": 48, "review": [48, 49], "due": 49, "multi": [49, 65, 76], "friend": 49, "iv8valuepromis": [49, 56], "ownership": 49, "chart": 49, "v8valuepromis": [49, 52, 53], "icallback": 49, "oncatch": 49, "v8valueerror": 49, "onfulfil": 49, "fulfil": 49, "onreject": 49, "manner": [49, 76], "filecont": 49, "filepath": 49, "v8valuepromiseresolv": 49, "createv8valuepromis": 49, "getpromis": 49, "getfilecont": 49, "getfilepath": 49, "createv8valueundefin": 49, "print": [49, 64, 70], "rais": 49, "setpromiserejectcallback": 49, "ijavetpromiserejectcallback": 49, "unhandledreject": 49, "handi": 49, "mainstream": 50, "v11": [50, 68], "mainten": [50, 53], "v18": [50, 57, 58], "v10": [50, 59], "v16": [50, 55], "v9": [50, 68], "v0": [50, 51, 52, 53, 76], "v14": [50, 52, 53], "critic": 50, "bug": [50, 52, 54, 55, 56, 57, 58, 76], "patch": 50, "deprec": [51, 52], "v8valueweakmap": 51, "v8valueweakset": 51, "setfunct": [51, 52], "functionnam": 51, "strictequ": 51, "samevalu": 51, "iv8valu": [51, 52, 56], "getidentityhash": 51, "iv8valuerefer": 51, "isdead": 51, "view": 51, "2021": [51, 52, 53, 54, 76], "02": [51, 52, 55, 56], "renam": [52, 53, 56, 58], "ijavetconsum": 52, "ijavetuniconsum": 52, "ijavetuniindexedconsum": 52, "ijavetbiindexedconsum": 52, "v8functioncallback": [52, 58], "bindfunct": [52, 58], "bindproperti": [52, 58], "checkreturnvalu": 52, "re": [52, 62], "organ": 52, "iv8valuefunct": [52, 53, 56], "emit": 52, "univers": 52, "createv8valuedoubl": 52, "createv8valuezoneddatetim": 52, "javeterror": [52, 55], "gcbeforeengineclos": 52, "javetcallbackexcept": 52, "isnullorundefin": 52, "06": [52, 53, 55, 58], "257": 52, "idlenotificationdeadlin": 52, "disablegcnotif": 52, "autosendgcnotif": 52, "javetcallbackcontext": [52, 58], "javetpromiserejectcallback": 52, "allowev": 52, "v8script": [52, 56], "v8bindenabl": 53, "v8virtualescapablevalu": 53, "146": [53, 54], "09": [53, 54, 56, 58, 59], "hasinternaltyp": 53, "isgeneratorobject": 53, "isgeneratorfunct": 53, "isasyncfunct": 53, "v8flag": 53, "v8valuesharedarraybuff": 53, "unregistercustomobject": 53, "javadoc": 53, "08": [53, 55, 58], "31": 53, "345": 53, "v8valuebuiltinsymbol": 53, "getownpropertysymbol": 53, "v8valuebuiltinobject": [53, 59], "createv8valuesymbol": 53, "javetvirtualobject": 53, "javetuniversalproxyhandl": 53, "isclos": 53, "07": [53, 55, 57, 58], "29": 53, "staticclassen": 53, "ownkei": 53, "iv8valueproxi": 53, "v8valueproxi": 53, "gettarget": 53, "gethandl": 53, "isrevok": 53, "revok": 53, "createv8valueproxi": 53, "230": 53, "19": [53, 54], "getprototyp": 53, "setprototyp": 53, "01": [53, 54, 55, 56], "iv8moduleresolv": 53, "nodemoduleprocess": 53, "getvers": 53, "15": [53, 55, 56, 57, 59], "05": [53, 55, 58], "269": 53, "28": [53, 56, 59], "106": 54, "javetcompilationexcept": 54, "convent": 54, "agnost": 54, "getdetailedmessag": 54, "getstack": 54, "javetscriptingerror": 54, "adjust": 54, "capac": 54, "observ": 54, "v8runtimeobserveraveragecallbackcontextcount": 54, "v8runtimeobserveraveragereferencecount": 54, "v8runtimeobserveraveragev8modulecount": 54, "v8convert": 54, "26": [54, 55], "180": 54, "javetoutofmemoryexcept": 54, "awai": 54, "haspendingexcept": 54, "haspendingmessag": 54, "hasscheduledexcept": 54, "promotescheduledexcept": 54, "reportpendingmessag": 54, "addgcepiloguecallback": 54, "addgcprologuecallback": 54, "removegcepiloguecallback": 54, "removegcprologuecallback": 54, "172": [54, 59], "v8intern": 54, "clean": 54, "methodhandl": 54, "cast": 54, "mistakenli": 54, "v8runtimeopt": 54, "noderuntimeopt": 54, "218": 55, "handler": [55, 62], "132": 55, "improp": 55, "waitforenginemaxretrycount": 55, "174": 55, "pend": [55, 62], "andoird": 55, "v8valuebiginteg": 55, "154": 55, "ispurgeeventloopbeforeclos": 55, "setpurgeeventloopbeforeclos": [55, 62], "124": [55, 69], "03": [55, 56, 57], "139": 55, "115": 55, "createv8valuearraybuff": 55, "177": 55, "r23b": 55, "abi": [55, 57, 68], "libgcc": 55, "libstdc": 55, "cento": 55, "226": 56, "verifynostrongbaseobject": 56, "ilisten": 56, "v8awaitmod": 56, "194": 56, "compilev8valuefunct": 56, "getcacheddata": 56, "iswrap": 56, "getargu": 56, "cacheddata": 56, "v8stringexecutor": 56, "168": 56, "revis": 56, "getscopeinfo": 56, "getownpropertynamestr": 56, "referencecopi": 56, "193": 56, "javetuniversalproxi": 56, "javetdynamicproxi": [56, 58], "javetdynamicobjectfactori": 56, "copycontextfrom": 56, "getscriptsourc": 56, "setsourcecodeopt": 56, "iscompil": 56, "candiscardcompil": 56, "discardcompil": 56, "244": 57, "214": 57, "277": 57, "439": 58, "189": 58, "executor": 58, "nativecontext": 58, "150": 58, "ijavetdirectproxyhandl": [58, 60], "v8virtualiter": 58, "javetproxysymboliterableconvert": 58, "183": 58, "receivecallback": 58, "iv8valuemap": 58, "iv8valuearrai": 58, "batchget": 58, "javetcallbacktyp": 58, "ijavetdirectcal": 58, "redesign": 58, "javetreflectionproxi": 58, "169": 59, "freez": 59, "leaf": 60, "elaps": 60, "leverag": 60, "verbos": [60, 76], "testjavaflavor": 60, "round": 60, "isobject": 60, "isint": 60, "asint": 60, "wrapper": 60, "neat": 60, "pure": 60, "testjsflavor": 60, "redirect": [60, 65], "proxyget": 60, "proxyset": 60, "jsonnodewrapp": 60, "requirenonnul": 60, "getjsonnod": 60, "childjsonnod": 60, "v8valueboolean": 60, "propertykei": 60, "propertyvalu": 60, "objectnod": 60, "createv8valueboolean": 60, "testnam": 60, "starttim": 60, "currenttimemilli": 60, "stoptim": 60, "100_000": 60, "interoper": 60, "testscriptjavaflavor": 60, "testscriptjsflavor": 60, "objectmapp": 60, "readtre": 60, "jsonstr": 60, "amd": 60, "5950x": 60, "128gb": 60, "22h2": 60, "corretto": 60, "0_282": 60, "19464m": 60, "100000": 60, "5214m": 60, "370": 60, "underli": 60, "spent": 60, "door": 62, "hijack": 62, "seamlessli": 62, "parser": 62, "cooki": 62, "multer": 62, "app": 62, "req": 62, "8991": 62, "testexpress": 62, "codefil": 62, "tofil": 62, "atomicboolean": 62, "serverup": 62, "500": 62, "max_valu": 62, "1000": 62, "trick": 62, "awaitmod": 62, "drain_the_task_queu": 62, "pause_the_event_loop": 62, "there_are_more_tasks_in_task_queu": 62, "sleep_a_whil": 62, "resume_the_event_loop": 62, "runonc": 62, "there_are_no_more_task": 62, "timer": 62, "gracefulli": 62, "color": 63, "pink": 63, "awt": 63, "175": 63, "stringarrai": 64, "represent": 64, "stringlist": 64, "assert": 64, "mapx": 64, "mapi": 64, "spawn": 65, "databas": 65, "javetengin": [65, 71], "javetconsoleinterceptor": 65, "unregist": [65, 69], "necessari": 65, "famili": 68, "unix": 68, "activebydefault": 68, "operatingsystem": 68, "val": 68, "cpuarch": 68, "getproperti": 68, "ismacosx": 68, "islinux": 68, "aarch64": 68, "cent": 68, "mission": 68, "imposs": 68, "guess": 69, "increaseandget": 69, "suitabl": 69, "testintercept": 69, "delta": 69, "testinterceptor": 69, "76": 69, "200": 69, "scanner": 70, "nextlin": 70, "captur": 70, "err": 70, "getmessag": 70, "highlight": 71, "javetenginepoo": 71, "l": 71, "loadj": 72, "decimaljsfil": 72, "getabsolutepath": 72, "logerror": 72, "v8valuefunctiondecim": 72, "v8valueobjectdecim": 72, "45": 72, "hasownproperti": 72, "getstr": 72, "bigdecim": 72, "lack": [72, 76], "bean": 73, "propertysourc": 73, "classpath": 73, "configurationproperti": 73, "prefix": 73, "myjavetengineconfig": 73, "javetenginepoolnod": 73, "getjavetenginepoolnod": 73, "javetengineconfignod": 73, "setallowev": 73, "setdefaultengineguardtimeoutmilli": 73, "setengineguardcheckintervalmilli": 73, "setpooldaemoncheckintervalmilli": 73, "setpoolidletimeoutsecond": 73, "setpoolmins": 73, "setpoolmaxs": 73, "setpoolshutdowntimeoutsecond": 73, "setresetenginetimeoutsecond": 73, "javetenginepoolv8": 73, "getjavetenginepoolv8": 73, "javetengineconfigv8": 73, "frequent": 76, "ask": 76, "question": 76, "jan": 76, "publish": 76, "smooth": 76, "took": 76, "week": 76, "abandon": 76, "hierarchi": 76, "inconsist": 76, "repeat": 76, "attent": 76, "mental": 76, "role": 76, "inherit": 76, "liter": 76, "richer": 76, "v8valueprimit": 76, "v8data": 76, "consist": 76, "rich": 76, "pain": 76, "imper": 76, "never": 76, "deliv": 76, "elimin": 76, "rid": 76, "everywher": 76, "hotfix": 76, "usag": 76, "extra": 76, "shut": 76, "success": 76}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"build": [0, 1, 2, 9], "javet": [0, 1, 2, 4, 6, 7, 12, 17, 22, 25, 35, 36, 38, 54, 65, 66, 70, 76], "environ": [0, 2, 18, 35], "linux": [0, 1, 2, 9, 17, 38, 68], "maco": 0, "window": [0, 1, 2, 9, 38, 68], "android": [0, 1, 2, 54, 68], "variabl": [0, 35], "v8": [0, 1, 4, 6, 14, 37, 38, 46, 47, 48, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 66, 71, 72, 76], "featur": [0, 25, 31], "flag": 0, "from": [1, 12, 29, 30, 35, 37, 76], "scratch": 1, "prepar": [1, 26, 31, 63], "arm64": [1, 2, 54], "x86_64": [1, 53], "mac": [1, 53, 54, 68], "o": [1, 53, 54, 68], "why": [1, 9, 16, 24, 42, 48, 76], "patch": [1, 38], "node": [1, 4, 6, 8, 16, 24, 38, 39, 52, 54, 56, 62, 66, 71, 72, 76], "j": [1, 4, 6, 8, 16, 24, 38, 39, 52, 54, 56, 60, 62, 66, 71, 72, 76], "jni": 1, "librari": [1, 20, 35, 54], "docker": 2, "hub": 2, "github": 2, "express": 2, "full": 2, "multi": [2, 4, 53], "stage": 2, "all": 2, "one": 2, "file": [2, 31, 35], "deprec": 2, "debug": [3, 22, 45, 51], "chrome": [3, 22], "develop": [3, 5, 8, 13], "tool": [3, 8], "cdt": 3, "shell": [3, 70], "1": [3, 36, 37, 44, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 66], "run": 3, "2": [3, 36, 37, 44, 48, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 62], "script": 3, "3": [3, 8, 37, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62], "open": 3, "4": [3, 51, 52, 53, 54, 55, 56, 58], "usual": 3, "intern": [3, 38], "handshak": 3, "custom": [3, 27, 29, 31, 35, 54], "design": [4, 27], "architectur": 4, "primit": [4, 30, 52, 76], "refer": [4, 32, 33, 37], "type": [4, 48, 76], "mode": [4, 6, 14, 16, 31, 36, 38, 45, 66, 71, 72], "v": [4, 6, 48], "modul": [4, 38, 52, 53, 76], "requir": 4, "import": [4, 38, 48], "virtual": [4, 36], "engin": [4, 39, 45, 51, 65], "pool": [4, 39, 45, 65, 71], "isol": 4, "context": [4, 48], "intercept": [4, 12, 48, 52, 69], "cross": 4, "platform": 4, "process": [4, 53], "safeti": [4, 28, 36], "memori": [4, 37], "leak": 4, "detect": 4, "perform": [6, 36], "comparison": [6, 28, 36, 48], "highlight": [6, 29], "java": [6, 26, 29, 30, 48, 53, 60, 63], "wasm": 6, "benchmark": 6, "improv": 6, "test": [7, 12, 60, 69], "jdk": 8, "intellij": 8, "gradl": [8, 25, 68], "maven": [8, 9, 25, 68], "option": [8, 37], "visual": 8, "studio": 8, "commun": 8, "2022": 8, "python": 8, "8": [8, 52, 53, 55, 56, 59], "histori": 9, "j2v8": [9, 76], "issu": 9, "latest": 9, "version": 9, "onli": 9, "autom": 9, "system": 9, "deploi": [9, 35], "repositori": 9, "background": [10, 24], "what": [11, 36, 48, 62], "i": [11, 16, 22, 48, 62], "motiv": [11, 65], "how": [12, 26, 29, 31, 37, 45, 48, 62], "think": 12, "v8runtim": [12, 37, 76], "v8valueglobalobject": 12, "executor": 12, "execut": 12, "declar": [12, 52], "function": [12, 28, 31, 48, 52, 53], "properti": [12, 48, 52, 53], "learn": 12, "unit": 12, "where": [14, 15], "ar": [14, 15], "es6": [14, 76], "api": [14, 33], "exampl": [15, 38, 49], "inspector": 16, "disabl": [16, 48], "can": [17, 21, 22, 28, 35, 48], "support": [17, 21], "legaci": 17, "faq": 19, "A": 20, "dynam": [20, 31, 38], "link": 20, "dll": 20, "initi": 20, "routin": 20, "fail": 20, "i18n": 21, "devtool": 22, "troubleshoot": [23, 43], "crash": 24, "when": [24, 28], "being": 24, "close": [24, 62], "root": 24, "caus": 24, "solut": 24, "event": [24, 52], "unhandledreject": 24, "noderuntim": 24, "await": [24, 37], "lowmemorynotif": [24, 37], "major": 25, "quick": 25, "start": 25, "depend": [25, 68], "kotlin": [25, 68], "dsl": [25, 68], "groovi": [25, 68], "hello": [25, 66], "sponsor": 25, "licens": 25, "blog": 25, "document": 25, "bridg": 26, "convert": [26, 27, 28, 29, 30, 31, 53, 64], "usag": [26, 29, 31, 37, 47, 65, 71], "boolean": [26, 48], "int": 26, "arrai": [26, 64], "integ": 26, "list": [26, 41, 64], "long": [26, 37], "unmodifi": 26, "string": [26, 48], "cast": 26, "object": [26, 27, 28, 29, 31, 48, 64], "javascript": [26, 29, 30, 48, 62, 63], "pojo": 27, "defin": [27, 48], "creat": 27, "pojoconvert": 27, "readi": 27, "go": 27, "insid": 28, "bind": [28, 48], "via": 28, "nativ": [28, 35, 38, 52], "proxi": [28, 31, 53], "null": 28, "circular": 28, "structur": 28, "doe": [28, 29, 31, 36], "config": 28, "take": [28, 35], "effect": 28, "built": [28, 38], "ignor": 28, "regist": [29, 49], "enhanc": 29, "It": 29, "work": [29, 31], "instanc": 31, "map": [31, 48, 64], "path": 31, "static": [31, 63], "stringbuild": [31, 63], "pattern": [31, 63], "enum": [31, 63], "interfac": [31, 53], "anonym": [31, 53], "class": [31, 63], "v8convert": 31, "v8properti": [31, 69], "name": 31, "v8function": [31, 69, 76], "javetproxyconvert": 31, "resourc": [34, 37, 39, 48], "manag": [34, 37, 39, 48], "load": [35, 38, 54], "unload": 35, "On": [35, 38], "demand": [35, 38], "locat": 35, "deploy": 35, "skip": 35, "alreadi": 35, "anoth": 35, "classload": [35, 53], "suppress": 35, "lib": 35, "listen": 35, "remov": 35, "jar": 35, "know": 36, "lock": 36, "mean": 36, "implicit": 36, "explicit": 36, "thread": [36, 39, 62], "coroutin": 36, "challeng": 37, "jvm": 37, "gc": [37, 52], "c": 37, "runtim": 37, "recommend": 37, "automat": [37, 45, 48], "try": 37, "weak": 37, "escap": 37, "without": 37, "altern": 37, "arraybuff": 37, "passiv": 37, "aggress": 37, "manual": [37, 38, 45, 48], "idlenotificationdeadlin": 37, "deadlineinmilli": 37, "statist": 37, "modular": 38, "gap": 38, "between": 38, "deal": 38, "elf": 38, "rebuild": 38, "pre": 38, "synthet": 38, "best": 39, "practic": 39, "secur": 39, "tip": [40, 48], "todo": 41, "error": [42, 52], "code": [42, 48, 52], "backward": 42, "compat": [42, 68], "log": 44, "step": [44, 62], "implement": 44, "ijavetlogg": 44, "inject": [44, 63, 73], "logger": 44, "termin": 45, "about": [45, 48], "valu": [46, 48], "collect": 47, "v8valuearrai": 47, "v8valueset": 47, "v8valuemap": 47, "registr": 48, "convers": [48, 52, 76], "thi": 48, "pass": 48, "symbol": 48, "unregist": 48, "both": 48, "One": 48, "bindfunct": 48, "functionnam": 48, "javetcallbackcontext": 48, "set": 48, "kei": 48, "v8valu": 48, "codestr": 48, "mismatch": 48, "summari": 48, "chang": 48, "user": 48, "fly": 48, "sourc": [48, 52], "call": 48, "invok": 48, "scope": [48, 53], "info": 48, "avoid": 48, "argument": 48, "handl": 48, "count": 48, "promis": [49, 53], "resolv": [49, 53], "lifecycl": 49, "callback": 49, "f": 49, "readfileasync": 49, "unhandl": 49, "reject": 49, "releas": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59], "note": [50, 51, 52, 53, 54, 55, 56, 57, 58, 59], "0": [51, 52, 53, 54, 55, 56, 57, 58, 59], "7": [51, 52, 53, 54, 55, 56, 58], "x": [51, 52, 53, 54, 55, 56, 57, 58, 59], "live": 51, "locker": 51, "guard": 51, "bug": 51, "fix": 51, "birth": 51, "9": [51, 52, 53, 54, 55, 56, 59], "10": [52, 53, 56], "index": 52, "foreach": 52, "hotfix": 52, "6": [52, 53, 54, 55, 58], "loop": 52, "5": [52, 53, 54, 55, 58], "v9": [52, 53, 54, 55], "first": [52, 54], "time": [52, 54], "14": 53, "13": 53, "12": 53, "privat": 53, "11": 53, "polyfil": [53, 72], "empow": 53, "v2": 53, "v1": 53, "safe": 53, "core": 54, "abi": 54, "21": 54, "v16": 54, "v10": [55, 56], "v11": [56, 57, 58, 59], "v18": 56, "v12": 59, "expos": 60, "jsonnod": 60, "approach": 60, "flavor": 60, "direct": 60, "exposur": 60, "wrap": 60, "conclus": 60, "advanc": 61, "interact": 62, "That": 62, "possibl": 62, "server": 62, "worker": 62, "main": 62, "If": 62, "hang": 62, "dure": 62, "interop": 63, "an": 63, "goal": 65, "print": 66, "basic": 67, "instal": 68, "sampl": 69, "co": 71, "exist": 71, "v8host": 71, "decim": 72, "spring": 73, "integr": 73, "configur": 73, "tutori": 74, "migrat": [75, 76], "guid": [75, 76], "registerjavamethod": 76, "v8locker": 76, "bless": 76}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"Build Javet": [[0, "build-javet"], [1, "build-javet"], [1, "id1"]], "Build Environment": [[0, "build-environment"], [2, "build-environment"]], "Linux Environment": [[0, "linux-environment"], [2, "linux-environment"]], "MacOS Environment": [[0, "macos-environment"]], "Windows Environment": [[0, "windows-environment"], [2, "windows-environment"]], "Android Environment": [[0, "android-environment"]], "Environment Variables": [[0, "environment-variables"]], "V8 Feature Flags": [[0, "v8-feature-flags"]], "Build Javet from Scratch": [[1, "build-javet-from-scratch"]], "Build V8": [[1, "build-v8"]], "Prepare V8": [[1, "prepare-v8"]], "Build V8 for Linux arm64": [[1, "build-v8-for-linux-arm64"]], "Build V8 for Linux x86_64": [[1, "build-v8-for-linux-x86-64"]], "Build V8 for Mac OS arm64": [[1, "build-v8-for-mac-os-arm64"]], "Build V8 for Mac OS x86_64": [[1, "build-v8-for-mac-os-x86-64"]], "Build V8 for Windows": [[1, "build-v8-for-windows"]], "Build V8 for Android": [[1, "build-v8-for-android"]], "Why Patching V8?": [[1, "why-patching-v8"]], "Build Node.js": [[1, "build-node-js"]], "Prepare Node.js": [[1, "prepare-node-js"]], "Build Node.js on Linux": [[1, "build-node-js-on-linux"]], "Why Patching Node.js?": [[1, "why-patching-node-js"]], "Build Node.js on Mac OS": [[1, "build-node-js-on-mac-os"]], "Build Node.js on Windows": [[1, "build-node-js-on-windows"]], "Build Javet JNI Library for Android": [[1, "build-javet-jni-library-for-android"]], "Build Javet for Linux, Mac OS and Windows": [[1, "build-javet-for-linux-mac-os-and-windows"]], "Build Javet for Android": [[1, "build-javet-for-android"]], "Build Javet with Docker": [[2, "build-javet-with-docker"]], "Docker Hub and Github": [[2, "docker-hub-and-github"]], "Build Javet for Linux on Linux or Windows": [[2, "build-javet-for-linux-on-linux-or-windows"]], "Express Build": [[2, "express-build"]], "Full Build - Multi-staged": [[2, "full-build-multi-staged"]], "Full Build - All-in-one": [[2, "full-build-all-in-one"]], "Build Javet for Windows on Windows": [[2, "build-javet-for-windows-on-windows"]], "Build Javet for Android on Linux or Windows": [[2, "build-javet-for-android-on-linux-or-windows"]], "Linux arm64 Docker Files Deprecated": [[2, "linux-arm64-docker-files-deprecated"]], "Debug with Chrome Developer Tools": [[3, "debug-with-chrome-developer-tools"]], "CDT Shell": [[3, "cdt-shell"]], "1. Run CDT Shell": [[3, "run-cdt-shell"]], "2. Run Script in CDT Shell": [[3, "run-script-in-cdt-shell"]], "3. Open CDT": [[3, "open-cdt"]], "4. Debug as Usual": [[3, "debug-as-usual"]], "Chrome Developer Tools Internals": [[3, "chrome-developer-tools-internals"]], "Handshake": [[3, "handshake"]], "Customization": [[3, "customization"]], "Javet Design": [[4, "javet-design"]], "Architecture": [[4, "architecture"]], "Primitive and Reference Types in Javet": [[4, "primitive-and-reference-types-in-javet"]], "Node.js Mode vs. V8 Mode": [[4, "node-js-mode-vs-v8-mode"]], "Module": [[4, "module"]], "require() vs. import()": [[4, "require-vs-import"]], "Module Virtualization": [[4, "module-virtualization"]], "Engine Pool": [[4, "engine-pool"]], "V8 Isolate and Context in Javet": [[4, "v8-isolate-and-context-in-javet"]], "Javet Engine Pool": [[4, "javet-engine-pool"], [65, "javet-engine-pool"]], "Interception": [[4, "interception"], [69, "interception"]], "Cross-platform": [[4, "cross-platform"]], "Multi-process Safety": [[4, "multi-process-safety"]], "Memory Leak Detection": [[4, "memory-leak-detection"]], "Development": [[5, "development"], [13, "development"]], "Javet Performance": [[6, "javet-performance"]], "Performance Comparisons of Node.js Mode and V8 Mode": [[6, "performance-comparisons-of-node-js-mode-and-v8-mode"]], "Highlights": [[6, "highlights"], [29, "highlights"]], "Java VS Wasm Benchmarks": [[6, "java-vs-wasm-benchmarks"]], "Javet Performance Improvements": [[6, "javet-performance-improvements"]], "Test Javet": [[7, "test-javet"]], "Development Tools": [[8, "development-tools"]], "JDK": [[8, "jdk"]], "IntelliJ": [[8, "intellij"]], "Gradle": [[8, "gradle"]], "Node.js": [[8, "node-js"], [39, "node-js"]], "Maven (Optional)": [[8, "maven-optional"]], "Visual Studio Community 2022 (Optional)": [[8, "visual-studio-community-2022-optional"]], "Python 3.8+ (Optional)": [[8, "python-3-8-optional"]], "History with J2V8": [[9, "history-with-j2v8"]], "J2V8 Issues": [[9, "j2v8-issues"]], "J2V8 Latest Version": [[9, "j2v8-latest-version"]], "Why Windows and Linux only?": [[9, "why-windows-and-linux-only"]], "Why not Automate the J2V8 Build System?": [[9, "why-not-automate-the-j2v8-build-system"]], "Why not Deploy J2V8 to Maven Repository?": [[9, "why-not-deploy-j2v8-to-maven-repository"]], "Background": [[10, "background"], [24, "background"]], "What is the Motivation?": [[11, "what-is-the-motivation"]], "How to Think in Javet?": [[12, "how-to-think-in-javet"]], "V8Runtime and V8ValueGlobalObject": [[12, "v8runtime-and-v8valueglobalobject"]], "V8Runtime": [[12, "v8runtime"]], "V8ValueGlobalObject": [[12, "v8valueglobalobject"]], "Executor and Execute": [[12, "executor-and-execute"]], "Declarative Function and Property Interception": [[12, "declarative-function-and-property-interception"]], "Learn from Unit Test": [[12, "learn-from-unit-test"]], "Where are ES6 API in V8 Mode?": [[14, "where-are-es6-api-in-v8-mode"]], "Where are the Examples?": [[15, "where-are-the-examples"]], "Why is the Inspector Disabled in Node.js Mode?": [[16, "why-is-the-inspector-disabled-in-node-js-mode"]], "Can Javet Support Legacy Linux?": [[17, "can-javet-support-legacy-linux"]], "Environment": [[18, "environment"]], "FAQ": [[19, "faq"]], "A dynamic link library (DLL) initialization routine failed": [[20, "a-dynamic-link-library-dll-initialization-routine-failed"]], "Can i18n be Supported?": [[21, "can-i18n-be-supported"]], "Can I Debug Javet in Chrome DevTools?": [[22, "can-i-debug-javet-in-chrome-devtools"]], "Troubleshooting": [[23, "troubleshooting"], [43, "troubleshooting"]], "Why Node.js Crashes When being Closed?": [[24, "why-node-js-crashes-when-being-closed"]], "Root Cause": [[24, "root-cause"]], "Solution": [[24, "solution"]], "Event unhandledRejection": [[24, "event-unhandledrejection"]], "NodeRuntime.await()": [[24, "noderuntime-await"]], "NodeRuntime.lowMemoryNotification()": [[24, "noderuntime-lowmemorynotification"]], "Javet": [[25, "javet"]], "Major Features": [[25, "major-features"]], "Quick Start": [[25, "quick-start"]], "Dependency": [[25, "dependency"], [68, "dependency"]], "Maven": [[25, "maven"], [68, "maven"]], "Gradle Kotlin DSL": [[25, "gradle-kotlin-dsl"], [68, "gradle-kotlin-dsl"]], "Gradle Groovy DSL": [[25, "gradle-groovy-dsl"], [68, "gradle-groovy-dsl"]], "Hello Javet": [[25, "hello-javet"], [66, "hello-javet"]], "Sponsors": [[25, "sponsors"]], "License": [[25, "license"]], "Blog": [[25, "blog"]], "Documents": [[25, "documents"]], "Bridge Converter": [[26, "bridge-converter"]], "Usage": [[26, "usage"], [29, "usage"], [31, "usage"], [47, "usage"], [65, "usage"], [71, "usage"]], "Preparation": [[26, "preparation"], [31, "preparation"], [63, "preparation"]], "Boolean": [[26, "boolean"]], "int": [[26, "int"]], "int Array": [[26, "int-array"]], "Integer List": [[26, "integer-list"]], "Long Unmodifiable List": [[26, "long-unmodifiable-list"]], "String Array": [[26, "string-array"]], "How to Cast Java Objects to JavaScript Objects?": [[26, "how-to-cast-java-objects-to-javascript-objects"]], "Custom Converter": [[27, "custom-converter"]], "Design a POJO Converter": [[27, "design-a-pojo-converter"]], "Define POJO Object": [[27, "define-pojo-object"]], "Create PojoConverter": [[27, "create-pojoconverter"]], "Ready! Go!": [[27, "ready-go"]], "Converters": [[28, "converters"]], "Comparisons": [[28, "comparisons"], [36, "comparisons"], [48, "comparisons"]], "Inside Converters": [[28, "inside-converters"]], "Binding via Native": [[28, "binding-via-native"]], "Binding via Proxy": [[28, "binding-via-proxy"]], "Null Safety": [[28, "null-safety"]], "Functions and Objects": [[28, "functions-and-objects"]], "Circular Structure": [[28, "circular-structure"]], "When does the Config Take Effect?": [[28, "when-does-the-config-take-effect"]], "Can Built-in Converter be Ignored?": [[28, "can-built-in-converter-be-ignored"]], "Object Converter": [[29, "object-converter"], [64, "object-converter"]], "From Java to JavaScript": [[29, "from-java-to-javascript"], [30, "from-java-to-javascript"]], "From JavaScript to Java": [[29, "from-javascript-to-java"], [30, "from-javascript-to-java"]], "Register Custom Objects": [[29, "register-custom-objects"]], "Enhance the Custom Object": [[29, "enhance-the-custom-object"]], "Register the Custom Object": [[29, "register-the-custom-object"]], "How does It Work?": [[29, "how-does-it-work"]], "Primitive Converter": [[30, "primitive-converter"]], "Proxy Converter": [[31, "proxy-converter"]], "Instance: File": [[31, "instance-file"]], "Instance: Map": [[31, "instance-map"]], "Instance: Path": [[31, "instance-path"]], "Static: StringBuilder": [[31, "static-stringbuilder"]], "Static: Pattern": [[31, "static-pattern"]], "Static: Enum": [[31, "static-enum"]], "Static: Interface": [[31, "static-interface"]], "Dynamic: Anonymous Function": [[31, "dynamic-anonymous-function"]], "Dynamic: Anonymous Object for Interface": [[31, "dynamic-anonymous-object-for-interface"]], "Dynamic: Anonymous Object for Class": [[31, "dynamic-anonymous-object-for-class"]], "Features": [[31, "features"]], "@V8Convert::mode": [[31, "v8convert-mode"]], "@V8Property::name": [[31, "v8property-name"]], "@V8Function::name": [[31, "v8function-name"]], "How does JavetProxyConverter Work?": [[31, "how-does-javetproxyconverter-work"]], "How to Customize JavetProxyConverter?": [[31, "how-to-customize-javetproxyconverter"]], "Reference": [[32, "reference"]], "API Reference": [[33, "api-reference"]], "Resource Management": [[34, "resource-management"], [39, "resource-management"], [48, "resource-management"]], "Load and Unload": [[35, "load-and-unload"]], "Can Javet Native Library be Loaded or Unloaded On-demand?": [[35, "can-javet-native-library-be-loaded-or-unloaded-on-demand"]], "Unload": [[35, "unload"]], "Load": [[35, "load"]], "Can Javet Native Library be Deployed to a Custom Location?": [[35, "can-javet-native-library-be-deployed-to-a-custom-location"]], "Can Javet Native Library Deployment be Skipped?": [[35, "can-javet-native-library-deployment-be-skipped"]], "Can already loaded in another classloader be Suppressed?": [[35, "can-already-loaded-in-another-classloader-be-suppressed"]], "Can Javet Lib Loading Listener Take Environment Variables?": [[35, "can-javet-lib-loading-listener-take-environment-variables"]], "Can Javet Libraries be Removed from the Jar File?": [[35, "can-javet-libraries-be-removed-from-the-jar-file"]], "Know the Lock": [[36, "know-the-lock"]], "What does Lock Mean in Javet?": [[36, "what-does-lock-mean-in-javet"]], "1. Implicit Mode": [[36, "implicit-mode"]], "2. Explicit Mode": [[36, "explicit-mode"]], "Performance": [[36, "performance"]], "Thread-safety": [[36, "thread-safety"]], "Coroutines or Virtual Threads": [[36, "coroutines-or-virtual-threads"]], "Memory Management": [[37, "memory-management"]], "3 Challenges in Memory Management": [[37, "challenges-in-memory-management"]], "JVM GC": [[37, "jvm-gc"]], "C++ Runtime": [[37, "c-runtime"]], "V8 GC": [[37, "v8-gc"]], "Recommended Options": [[37, "recommended-options"]], "Automatic Management with try-with-resource": [[37, "automatic-management-with-try-with-resource"]], "Automatically Manage with Weak Reference": [[37, "automatically-manage-with-weak-reference"]], "How to Escape from try-with-resource?": [[37, "how-to-escape-from-try-with-resource"]], "Usage 1 without V8 Runtime": [[37, "usage-1-without-v8-runtime"]], "Usage 2 with V8 Runtime": [[37, "usage-2-with-v8-runtime"]], "Alternative Option: ArrayBuffer": [[37, "alternative-option-arraybuffer"]], "GC": [[37, "gc"]], "Automatic GC": [[37, "automatic-gc"]], "Passive GC": [[37, "passive-gc"]], "Aggressive GC": [[37, "aggressive-gc"]], "Manual GC": [[37, "manual-gc"]], "V8Runtime.await()": [[37, "v8runtime-await"]], "V8Runtime.idleNotificationDeadline(long deadlineInMillis)": [[37, "v8runtime-idlenotificationdeadline-long-deadlineinmillis"]], "V8Runtime.lowMemoryNotification()": [[37, "v8runtime-lowmemorynotification"]], "Statistics": [[37, "statistics"]], "Modularization": [[38, "modularization"]], "Node.js Mode": [[38, "node-js-mode"], [72, "node-js-mode"]], "Example": [[38, "example"]], "Gaps between Javet Node.js Mode and Native Node.js": [[38, "gaps-between-javet-node-js-mode-and-native-node-js"]], "Deal with Native Modules": [[38, "deal-with-native-modules"]], "Patch ELF Native Modules on Linux": [[38, "patch-elf-native-modules-on-linux"]], "Rebuild Native Modules on Windows": [[38, "rebuild-native-modules-on-windows"]], "Manual Patch Native Modules on Windows": [[38, "manual-patch-native-modules-on-windows"]], "Dynamically Import Built-in Modules": [[38, "dynamically-import-built-in-modules"]], "V8 Mode": [[38, "v8-mode"], [72, "v8-mode"]], "Pre-load": [[38, "pre-load"]], "On-demand": [[38, "on-demand"]], "Synthetic Module": [[38, "synthetic-module"]], "Internals": [[38, "internals"]], "Best Practices": [[39, "best-practices"]], "Thread, Engine and Pool": [[39, "thread-engine-and-pool"]], "Security": [[39, "security"]], "Tips": [[40, "tips"], [48, "tips"]], "TODO List": [[41, "todo-list"]], "Error Codes": [[42, "error-codes"]], "Why Error Codes?": [[42, "why-error-codes"]], "Backward Compatibility": [[42, "backward-compatibility"]], "Logging": [[44, "logging"]], "Step 1: Implement IJavetLogger": [[44, "step-1-implement-ijavetlogger"]], "Step 2: Inject the Logger": [[44, "step-2-inject-the-logger"]], "Termination": [[45, "termination"]], "Automatic Termination with Pool and Engine": [[45, "automatic-termination-with-pool-and-engine"]], "Manual Termination": [[45, "manual-termination"]], "How about Debug Mode?": [[45, "how-about-debug-mode"]], "V8 Values": [[46, "v8-values"]], "V8 Collection": [[47, "v8-collection"]], "Collection in V8": [[47, "collection-in-v8"]], "V8ValueArray": [[47, "v8valuearray"]], "V8ValueSet": [[47, "v8valueset"]], "V8ValueMap": [[47, "v8valuemap"]], "V8 Function": [[48, "v8-function"]], "Function Types": [[48, "function-types"]], "Function Interception": [[48, "function-interception"]], "Automatic Registration": [[48, "automatic-registration"]], "bind()": [[48, "bind"]], "How about Object Type Conversion?": [[48, "how-about-object-type-conversion"]], "Can this be Passed in?": [[48, "can-this-be-passed-in"]], "Can Symbol Properties be Intercepted?": [[48, "can-symbol-properties-be-intercepted"]], "How to Disable Properties or Functions?": [[48, "how-to-disable-properties-or-functions"]], "How to Unregister Properties or Functions?": [[48, "how-to-unregister-properties-or-functions"]], "Can Both JavaScript Function and Property Map to One Java Function?": [[48, "can-both-javascript-function-and-property-map-to-one-java-function"]], "Can 2 Java Functions Map to One JavaScript Function and Property?": [[48, "can-2-java-functions-map-to-one-javascript-function-and-property"]], "Manual Registration": [[48, "manual-registration"]], "boolean bindFunction(String functionName, JavetCallbackContext javetCallbackContext)": [[48, "boolean-bindfunction-string-functionname-javetcallbackcontext-javetcallbackcontext"]], "boolean set(String key, V8Value value)": [[48, "boolean-set-string-key-v8value-value"]], "boolean bindFunction(String functionName, String codeString)": [[48, "boolean-bindfunction-string-functionname-string-codestring"]], "Type Mismatch": [[48, "type-mismatch"]], "Summary": [[48, "summary"]], "Change a User Defined JavaScript Function on the Fly": [[48, "change-a-user-defined-javascript-function-on-the-fly"]], "Why is Changing a User Defined JavaScript Function Important?": [[48, "why-is-changing-a-user-defined-javascript-function-important"]], "How to Change a User Defined JavaScript Function on the Fly?": [[48, "how-to-change-a-user-defined-javascript-function-on-the-fly"]], "What is the Source Code of a Function in V8?": [[48, "what-is-the-source-code-of-a-function-in-v8"]], "Automatic Type Conversion": [[48, "automatic-type-conversion"]], "Call vs. Invoke": [[48, "call-vs-invoke"]], "Call": [[48, "call"]], "Invoke": [[48, "invoke"]], "How about Bind?": [[48, "how-about-bind"]], "Context and Scope Info": [[48, "context-and-scope-info"]], "How to Avoid Argument Type Mismatches?": [[48, "how-to-avoid-argument-type-mismatches"]], "How to Handle Argument Count Mismatches?": [[48, "how-to-handle-argument-count-mismatches"]], "V8 Promise": [[49, "v8-promise"]], "Promise and Resolver": [[49, "promise-and-resolver"]], "Lifecycle": [[49, "lifecycle"]], "Register a Callback": [[49, "register-a-callback"]], "Example fs.readFileAsync()": [[49, "example-fs-readfileasync"]], "Unhandled Rejection": [[49, "unhandled-rejection"]], "Release Notes": [[50, "release-notes"]], "Release Notes 0.7.x": [[51, "release-notes-0-7-x"]], "0.7.4 Live Debug": [[51, "live-debug"]], "0.7.3 Locker": [[51, "locker"]], "0.7.2 Engine Guard": [[51, "engine-guard"]], "0.7.1 Bug Fixes": [[51, "bug-fixes"]], "0.7.0 Birth with V8 v8.9": [[51, "birth-with-v8-v8-9"]], "Release Notes 0.8.x": [[52, "release-notes-0-8-x"]], "0.8.10 Index in forEach": [[52, "index-in-foreach"]], "0.8.9 Declarative Property Interception": [[52, "declarative-property-interception"]], "0.8.8 Hotfix the Source Code": [[52, "hotfix-the-source-code"]], "0.8.7 Native Modules for Node.js": [[52, "native-modules-for-node-js"]], "0.8.6 Event Loop for Node.js": [[52, "event-loop-for-node-js"]], "0.8.5 Error Codes": [[52, "error-codes"]], "0.8.4 V8 v9.0": [[52, "v8-v9-0"]], "0.8.3 GC": [[52, "gc"]], "0.8.2 Conversion for Primitive": [[52, "conversion-for-primitive"]], "0.8.1 Declarative Function Interception": [[52, "declarative-function-interception"]], "0.8.0 First Time with Node.js": [[52, "first-time-with-node-js"]], "Release Notes 0.9.x": [[53, "release-notes-0-9-x"]], "0.9.14 V8 Scope": [[53, "v8-scope"]], "0.9.13 V8 v9.4": [[53, "v8-v9-4"]], "0.9.12 Private Properties": [[53, "private-properties"]], "0.9.11 V8 v9.3": [[53, "v8-v9-3"]], "0.9.10 Polyfill Java Interfaces": [[53, "polyfill-java-interfaces"]], "0.9.9 Mac OS x86_64": [[53, "mac-os-x86-64"]], "0.9.8 Empower the Promise": [[53, "empower-the-promise"]], "0.9.7 Proxy Converter v2": [[53, "proxy-converter-v2"]], "0.9.6 Proxy Converter v1": [[53, "proxy-converter-v1"]], "0.9.5 V8 v9.2": [[53, "v8-v9-2"]], "0.9.4 Multi-process Safe": [[53, "multi-process-safe"]], "0.9.3 Module Resolver": [[53, "module-resolver"]], "0.9.2 Anonymous Functions in Converter": [[53, "anonymous-functions-in-converter"]], "0.9.1 V8 in Classloader": [[53, "v8-in-classloader"]], "0.9.0 V8 v9.1": [[53, "v8-v9-1"]], "Release Notes 1.0.x": [[54, "release-notes-1-0-x"]], "1.0.7 V8 v9.7": [[54, "v8-v9-7"]], "1.0.6 Mac OS (arm64)": [[54, "mac-os-arm64"]], "1.0.5 Javet Core": [[54, "javet-core"]], "1.0.4 V8 9.6": [[54, "v8-9-6"]], "1.0.3 Android ABI 21": [[54, "android-abi-21"]], "1.0.2 First Time with Android": [[54, "first-time-with-android"]], "1.0.1 Custom Library Loading": [[54, "custom-library-loading"]], "1.0.0 First Time with Node.js v16": [[54, "first-time-with-node-js-v16"]], "Release Notes 1.1.x": [[55, "release-notes-1-1-x"]], "1.1.7 V8 v10.5": [[55, "v8-v10-5"]], "1.1.6 V8 v10.4": [[55, "v8-v10-4"]], "1.1.5 V8 v10.3": [[55, "v8-v10-3"]], "1.1.4 V8 v10.2": [[55, "v8-v10-2"]], "1.1.3 V8 v10.1": [[55, "v8-v10-1"]], "1.1.2 V8 v10.0": [[55, "v8-v10-0"]], "1.1.1 V8 v9.9": [[55, "v8-v9-9"]], "1.1.0 V8 v9.8": [[55, "v8-v9-8"]], "Release Notes 2.0.x": [[56, "release-notes-2-0-x"]], "2.0.4 V8 v11.0": [[56, "v8-v11-0"]], "2.0.3 V8 v10.9": [[56, "v8-v10-9"]], "2.0.2 V8 v10.8": [[56, "v8-v10-8"]], "2.0.1 V8 v10.7": [[56, "v8-v10-7"]], "2.0.0 Node.js v18.10": [[56, "node-js-v18-10"]], "Release Notes 2.1.x": [[57, "release-notes-2-1-x"]], "2.1.2 V8 v11.3": [[57, "v8-v11-3"]], "2.1.1 V8 v11.2": [[57, "v8-v11-2"]], "2.1.0 V8 v11.1": [[57, "v8-v11-1"]], "Release Notes 2.2.x": [[58, "release-notes-2-2-x"]], "2.2.3 V8 v11.7": [[58, "v8-v11-7"]], "2.2.2 V8 v11.6": [[58, "v8-v11-6"]], "2.2.1 V8 v11.5": [[58, "v8-v11-5"]], "2.2.0 V8 v11.4": [[58, "v8-v11-4"]], "Release Notes 3.0.x": [[59, "release-notes-3-0-x"]], "3.0.2 V8 v12.0": [[59, "v8-v12-0"]], "3.0.1 V8 v11.9": [[59, "v8-v11-9"]], "3.0.0 V8 v11.8": [[59, "v8-v11-8"]], "Expose JsonNode in V8": [[60, "expose-jsonnode-in-v8"]], "2 Approaches": [[60, "approaches"]], "Java Flavor (Direct Exposure)": [[60, "java-flavor-direct-exposure"]], "JS Flavor (Wrapped Exposure)": [[60, "js-flavor-wrapped-exposure"]], "Test": [[60, "test"], [69, "test"]], "Conclusion": [[60, "conclusion"]], "Advanced": [[61, "advanced"]], "Interact with Node.js": [[62, "interact-with-node-js"]], "Is That Possible?": [[62, "is-that-possible"]], "How?": [[62, "how"]], "Step 1: JavaScript Server": [[62, "step-1-javascript-server"]], "Step 2: Worker Thread for the JavaScript Server": [[62, "step-2-worker-thread-for-the-javascript-server"]], "Step 3: Main Thread for the Interaction": [[62, "step-3-main-thread-for-the-interaction"]], "What If Node.js Hangs during Close()?": [[62, "what-if-node-js-hangs-during-close"]], "Java and JavaScript Interop": [[63, "java-and-javascript-interop"]], "Inject a Static Class": [[63, "inject-a-static-class"]], "Inject an Enum": [[63, "inject-an-enum"]], "Inject a Pattern": [[63, "inject-a-pattern"]], "Inject a StringBuilder": [[63, "inject-a-stringbuilder"]], "Array": [[64, "array"]], "List": [[64, "list"]], "Map": [[64, "map"]], "Motivation": [[65, "motivation"]], "Goals": [[65, "goals"]], "Print Hello Javet in V8 Mode": [[66, "print-hello-javet-in-v8-mode"]], "Print 1 + 1 in Node.js Mode": [[66, "print-1-1-in-node-js-mode"]], "Basic": [[67, "basic"]], "Installation": [[68, "installation"]], "OS Compatibility": [[68, "os-compatibility"]], "Windows": [[68, "windows"]], "Linux": [[68, "linux"]], "Mac OS": [[68, "mac-os"]], "Android": [[68, "android"]], "Sample": [[69, "sample"]], "@V8Property and @V8Function": [[69, "v8property-and-v8function"]], "Javet Shell": [[70, "javet-shell"]], "Node.js Mode and V8 Mode": [[71, "node-js-mode-and-v8-mode"]], "Co-existence": [[71, "co-existence"]], "V8Host": [[71, "v8host"]], "Pool": [[71, "pool"]], "Polyfill": [[72, "polyfill"]], "decimal.js": [[72, "decimal-js"]], "Spring Integration": [[73, "spring-integration"]], "Configuration": [[73, "configuration"]], "Injection": [[73, "injection"]], "Tutorial": [[74, "tutorial"]], "Migration Guides": [[75, "migration-guides"], [76, "migration-guides"]], "Migrate from J2V8": [[76, "migrate-from-j2v8"]], "Why Migrate from J2V8 to Javet?": [[76, "why-migrate-from-j2v8-to-javet"]], "V8 \u27f6 V8Runtime": [[76, "v8-v8runtime"]], "Primitive Types": [[76, "primitive-types"]], "registerJavaMethod() \u27f6 @V8Function": [[76, "registerjavamethod-v8function"]], "V8Locker": [[76, "v8locker"]], "Type Conversion": [[76, "type-conversion"]], "Node.js and V8": [[76, "node-js-and-v8"]], "ES6 Module": [[76, "es6-module"]], "Blessing": [[76, "blessing"]]}, "indexentries": {}}) \ No newline at end of file diff --git a/docs/tutorial/advanced/expose_json_node_in_v8.html b/docs/tutorial/advanced/expose_json_node_in_v8.html index 7af443dc0..c0bd182e7 100644 --- a/docs/tutorial/advanced/expose_json_node_in_v8.html +++ b/docs/tutorial/advanced/expose_json_node_in_v8.html @@ -6,7 +6,7 @@ - Expose JsonNode in V8 - Javet 3.0.1 documentation + Expose JsonNode in V8 - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
          @@ -151,7 +151,7 @@
          - Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
        • Know the Lock
        • Memory Management
        • Modularization
        • -
        • Javet Performance
      • Troubleshooting
      • Troubleshooting
      • Troubleshooting
      • Troubleshooting
      • Troubleshooting
          @@ -433,7 +432,7 @@

          Map#

          - + diff --git a/docs/tutorial/basic/engine_pool.html b/docs/tutorial/basic/engine_pool.html index 4429c5dcd..2888cfd85 100644 --- a/docs/tutorial/basic/engine_pool.html +++ b/docs/tutorial/basic/engine_pool.html @@ -6,7 +6,7 @@ - Javet Engine Pool - Javet 3.0.1 documentation + Javet Engine Pool - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
          @@ -151,7 +151,7 @@
          - Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
        • Know the Lock
        • Memory Management
        • Modularization
        • -
        • Javet Performance
      • Troubleshooting
          @@ -415,7 +414,7 @@

          Usage#< - + diff --git a/docs/tutorial/basic/hello_javet.html b/docs/tutorial/basic/hello_javet.html index 8d279e585..bf091998d 100644 --- a/docs/tutorial/basic/hello_javet.html +++ b/docs/tutorial/basic/hello_javet.html @@ -6,7 +6,7 @@ - Hello Javet - Javet 3.0.1 documentation + Hello Javet - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
          @@ -151,7 +151,7 @@
          - Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
        • Know the Lock
        • Memory Management
        • Modularization
        • -
        • Javet Performance
      • Troubleshooting
      • Troubleshooting
          @@ -363,7 +362,7 @@

          Basic#< - + diff --git a/docs/tutorial/basic/installation.html b/docs/tutorial/basic/installation.html index db840cbce..823dac823 100644 --- a/docs/tutorial/basic/installation.html +++ b/docs/tutorial/basic/installation.html @@ -6,7 +6,7 @@ - Installation - Javet 3.0.1 documentation + Installation - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
          @@ -151,7 +151,7 @@
          - Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
        • Know the Lock
        • Memory Management
        • Modularization
        • -
        • Javet Performance
      • Troubleshooting
          @@ -311,78 +310,95 @@

          Maven#< <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet</artifactId> - <version>3.0.1</version> + <version>3.0.2</version> </dependency> <!-- Linux (arm64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-linux-arm64</artifactId> - <version>3.0.1</version> + <version>3.0.2</version> </dependency> <!-- Mac OS (x86_64 and arm64) --> <dependency> <groupId>com.caoccao.javet</groupId> <artifactId>javet-macos</artifactId> - <version>3.0.1</version> + <version>3.0.2</version> </dependency>
          <properties>
          -    <javet.version>3.0.1</javet.version>
          +  <javet.version>3.0.2</javet.version>
           </properties>
           
           <profiles>
          -    <profile>
          -        <id>windows</id>
          -        <activation>
          -            <os>
          -                <family>windows</family>
          -                <arch>x86</arch>
          -            </os>
          -        </activation>
          -        <dependencies>
          -            <dependency>
          -                <groupId>com.caoccao.javet</groupId>
          -                <artifactId>javet</artifactId>
          -                <version>${javet.version}</version>
          -            </dependency>
          -        </dependencies>
          -    </profile>
          -    <profile>
          -        <id>linux</id>
          -        <activation>
          -            <os>
          -                <family>unix</family>
          -                <arch>x86</arch>
          -            </os>
          -        </activation>
          -        <dependencies>
          -            <dependency>
          -                <groupId>com.caoccao.javet</groupId>
          -                <artifactId>javet</artifactId>
          -                <version>${javet.version}</version>
          -            </dependency>
          -        </dependencies>
          -    </profile>
          -    <profile>
          -        <id>macos</id>
          -        <activation>
          -            <os>
          -                <family>mac</family>
          -            </os>
          -        </activation>
          -        <dependencies>
          -            <dependency>
          -                <groupId>com.caoccao.javet</groupId>
          -                <artifactId>javet-macos</artifactId>
          -                <version>${javet.version}</version>
          -            </dependency>
          -        </dependencies>
          -    </profile>
          +  <profile>
          +    <id>windows</id>
          +    <activation>
          +      <os>
          +        <family>windows</family>
          +        <arch>x86</arch>
          +      </os>
          +    </activation>
          +    <dependencies>
          +      <dependency>
          +        <groupId>com.caoccao.javet</groupId>
          +        <artifactId>javet</artifactId>
          +        <version>${javet.version}</version>
          +      </dependency>
          +    </dependencies>
          +  </profile>
          +  <profile>
          +    <id>linux</id>
          +    <activation>
          +      <os>
          +        <family>unix</family>
          +        <arch>x86</arch>
          +      </os>
          +      <activeByDefault>true</activeByDefault>
          +    </activation>
          +    <dependencies>
          +      <dependency>
          +        <groupId>com.caoccao.javet</groupId>
          +        <artifactId>javet</artifactId>
          +        <version>${javet.version}</version>
          +      </dependency>
          +    </dependencies>
          +  </profile>
          +  <profile>
          +    <id>linux-arm64</id>
          +    <activation>
          +      <os>
          +        <family>unix</family>
          +        <arch>arm64</arch>
          +      </os>
          +    </activation>
          +    <dependencies>
          +      <dependency>
          +        <groupId>com.caoccao.javet</groupId>
          +        <artifactId>javet-linux-arm64</artifactId>
          +        <version>${javet.version}</version>
          +      </dependency>
          +    </dependencies>
          +  </profile>
          +  <profile>
          +    <id>macos</id>
          +    <activation>
          +      <os>
          +        <family>mac</family>
          +      </os>
          +    </activation>
          +    <dependencies>
          +      <dependency>
          +        <groupId>com.caoccao.javet</groupId>
          +        <artifactId>javet-macos</artifactId>
          +        <version>${javet.version}</version>
          +      </dependency>
          +    </dependencies>
          +  </profile>
           </profiles>
           
          @@ -393,10 +409,10 @@

          Maven#<

          Gradle Kotlin DSL#

          -
          implementation("com.caoccao.javet:javet:3.0.1") // Linux and Windows (x86_64)
          -implementation("com.caoccao.javet:javet-linux-arm64:3.0.1") // Linux (arm64)
          -implementation("com.caoccao.javet:javet-macos:3.0.1") // Mac OS (x86_64 and arm64)
          -implementation("com.caoccao.javet:javet-android:3.0.1") // Android (arm, arm64, x86 and x86_64)
          +
          implementation("com.caoccao.javet:javet:3.0.2") // Linux and Windows (x86_64)
          +implementation("com.caoccao.javet:javet-linux-arm64:3.0.2") // Linux (arm64)
          +implementation("com.caoccao.javet:javet-macos:3.0.2") // Mac OS (x86_64 and arm64)
          +implementation("com.caoccao.javet:javet-android:3.0.2") // Android (arm, arm64, x86 and x86_64)
           
          @@ -406,11 +422,11 @@

          Gradle Kotlin DSLval os = OperatingSystem.current() val cpuArch = System.getProperty("os.arch") if (os.isMacOsX) { - implementation("com.caoccao.javet:javet:3.0.1") + implementation("com.caoccao.javet:javet:3.0.2") } else if (os.isLinux && (cpuArch == "aarch64" || cpuArch == "arm64")) { - implementation("com.caoccao.javet:javet-linux-arm64:3.0.1") + implementation("com.caoccao.javet:javet-linux-arm64:3.0.2") } else { - implementation("com.caoccao.javet:javet-macos:3.0.1") + implementation("com.caoccao.javet:javet-macos:3.0.2") }

          @@ -419,10 +435,10 @@

          Gradle Kotlin DSL

          Gradle Groovy DSL#

          -
          implementation 'com.caoccao.javet:javet:3.0.1' // Linux and Windows (x86_64)
          -implementation 'com.caoccao.javet:javet-linux-arm64:3.0.1' // Linux (arm64)
          -implementation 'com.caoccao.javet:javet-macos:3.0.1' // Mac OS (x86_64 and arm64)
          -implementation 'com.caoccao.javet:javet-android:3.0.1' // Android (arm, arm64, x86 and x86_64)
          +
          implementation 'com.caoccao.javet:javet:3.0.2' // Linux and Windows (x86_64)
          +implementation 'com.caoccao.javet:javet-linux-arm64:3.0.2' // Linux (arm64)
          +implementation 'com.caoccao.javet:javet-macos:3.0.2' // Mac OS (x86_64 and arm64)
          +implementation 'com.caoccao.javet:javet-android:3.0.2' // Android (arm, arm64, x86 and x86_64)
           

      @@ -636,7 +652,7 @@

      Android#< - + diff --git a/docs/tutorial/basic/installation.rst b/docs/tutorial/basic/installation.rst index 1d7cf1a6a..21fe5b726 100644 --- a/docs/tutorial/basic/installation.rst +++ b/docs/tutorial/basic/installation.rst @@ -16,21 +16,21 @@ Maven com.caoccao.javet javet - 3.0.1 + 3.0.2 com.caoccao.javet javet-linux-arm64 - 3.0.1 + 3.0.2 com.caoccao.javet javet-macos - 3.0.1 + 3.0.2 .. tab:: Complete @@ -38,57 +38,74 @@ Maven .. code-block:: xml - 3.0.1 + 3.0.2 - - windows - - - windows - x86 - - - - - com.caoccao.javet - javet - ${javet.version} - - - - - linux - - - unix - x86 - - - - - com.caoccao.javet - javet - ${javet.version} - - - - - macos - - - mac - - - - - com.caoccao.javet - javet-macos - ${javet.version} - - - + + windows + + + windows + x86 + + + + + com.caoccao.javet + javet + ${javet.version} + + + + + linux + + + unix + x86 + + true + + + + com.caoccao.javet + javet + ${javet.version} + + + + + linux-arm64 + + + unix + arm64 + + + + + com.caoccao.javet + javet-linux-arm64 + ${javet.version} + + + + + macos + + + mac + + + + + com.caoccao.javet + javet-macos + ${javet.version} + + + Gradle Kotlin DSL @@ -98,10 +115,10 @@ Gradle Kotlin DSL .. code-block:: kotlin - implementation("com.caoccao.javet:javet:3.0.1") // Linux and Windows (x86_64) - implementation("com.caoccao.javet:javet-linux-arm64:3.0.1") // Linux (arm64) - implementation("com.caoccao.javet:javet-macos:3.0.1") // Mac OS (x86_64 and arm64) - implementation("com.caoccao.javet:javet-android:3.0.1") // Android (arm, arm64, x86 and x86_64) + implementation("com.caoccao.javet:javet:3.0.2") // Linux and Windows (x86_64) + implementation("com.caoccao.javet:javet-linux-arm64:3.0.2") // Linux (arm64) + implementation("com.caoccao.javet:javet-macos:3.0.2") // Mac OS (x86_64 and arm64) + implementation("com.caoccao.javet:javet-android:3.0.2") // Android (arm, arm64, x86 and x86_64) .. tab:: Complete @@ -112,11 +129,11 @@ Gradle Kotlin DSL val os = OperatingSystem.current() val cpuArch = System.getProperty("os.arch") if (os.isMacOsX) { - implementation("com.caoccao.javet:javet:3.0.1") + implementation("com.caoccao.javet:javet:3.0.2") } else if (os.isLinux && (cpuArch == "aarch64" || cpuArch == "arm64")) { - implementation("com.caoccao.javet:javet-linux-arm64:3.0.1") + implementation("com.caoccao.javet:javet-linux-arm64:3.0.2") } else { - implementation("com.caoccao.javet:javet-macos:3.0.1") + implementation("com.caoccao.javet:javet-macos:3.0.2") } Gradle Groovy DSL @@ -124,10 +141,10 @@ Gradle Groovy DSL .. code-block:: groovy - implementation 'com.caoccao.javet:javet:3.0.1' // Linux and Windows (x86_64) - implementation 'com.caoccao.javet:javet-linux-arm64:3.0.1' // Linux (arm64) - implementation 'com.caoccao.javet:javet-macos:3.0.1' // Mac OS (x86_64 and arm64) - implementation 'com.caoccao.javet:javet-android:3.0.1' // Android (arm, arm64, x86 and x86_64) + implementation 'com.caoccao.javet:javet:3.0.2' // Linux and Windows (x86_64) + implementation 'com.caoccao.javet:javet-linux-arm64:3.0.2' // Linux (arm64) + implementation 'com.caoccao.javet:javet-macos:3.0.2' // Mac OS (x86_64 and arm64) + implementation 'com.caoccao.javet:javet-android:3.0.2' // Android (arm, arm64, x86 and x86_64) OS Compatibility ================ diff --git a/docs/tutorial/basic/interception.html b/docs/tutorial/basic/interception.html index 194f80eb3..6d474c115 100644 --- a/docs/tutorial/basic/interception.html +++ b/docs/tutorial/basic/interception.html @@ -6,7 +6,7 @@ - Interception - Javet 3.0.1 documentation + Interception - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
      @@ -151,7 +151,7 @@
      - Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
    • Know the Lock
    • Memory Management
    • Modularization
    • -
    • Javet Performance
  • Troubleshooting
      @@ -475,7 +474,7 @@

      Test# - + diff --git a/docs/tutorial/basic/javet_shell.html b/docs/tutorial/basic/javet_shell.html index 16e14c731..f4d49a2ff 100644 --- a/docs/tutorial/basic/javet_shell.html +++ b/docs/tutorial/basic/javet_shell.html @@ -6,7 +6,7 @@ - Javet Shell - Javet 3.0.1 documentation + Javet Shell - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
      @@ -151,7 +151,7 @@
      - Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
    • Know the Lock
    • Memory Management
    • Modularization
    • -
    • Javet Performance
  • Troubleshooting
  • Troubleshooting
      @@ -426,7 +425,7 @@

      Pool# - + diff --git a/docs/tutorial/basic/polyfill.html b/docs/tutorial/basic/polyfill.html index 3f60b4824..50e411ee6 100644 --- a/docs/tutorial/basic/polyfill.html +++ b/docs/tutorial/basic/polyfill.html @@ -6,7 +6,7 @@ - Polyfill - Javet 3.0.1 documentation + Polyfill - Javet 3.0.2 documentation @@ -125,7 +125,7 @@
      @@ -151,7 +151,7 @@
      - Javet 3.0.1 documentation + Javet 3.0.2 documentation @@ -206,7 +206,6 @@
    • Know the Lock
    • Memory Management
    • Modularization
    • -
    • Javet Performance
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting
  • Troubleshooting