From cfca3b21a21a16073e3670fec75261591634e0dc Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Wed, 24 Jul 2024 07:18:49 +0800 Subject: [PATCH 01/13] =?UTF-8?q?=F0=9F=90=B3=20chore:=20Update=20version?= =?UTF-8?q?=20to=20v3.1.5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/android_node_build.yml | 2 +- .github/workflows/android_v8_build.yml | 2 +- .github/workflows/linux_build_artifact.yml | 2 +- .../workflows/linux_build_node_v8_image.yml | 2 +- .github/workflows/linux_x86_64_build.yml | 2 +- .github/workflows/macos_arm64_build.yml | 2 +- .github/workflows/macos_x86_64_build.yml | 2 +- README.rst | 26 +++++++------- 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 | 2 +- docker/android/build.Dockerfile | 2 +- docker/linux-arm64/base_all_in_one.Dockerfile | 2 +- docker/linux-arm64/base_gradle.Dockerfile | 2 +- docker/linux-arm64/build_artifact.Dockerfile | 4 +-- .../linux-x86_64/base_all_in_one.Dockerfile | 2 +- docker/linux-x86_64/base_gradle.Dockerfile | 2 +- docker/linux-x86_64/build.env | 2 +- .../linux-x86_64/build_all_in_one.Dockerfile | 2 +- docker/linux-x86_64/build_artifact.Dockerfile | 4 +-- docker/windows-x86_64/base.Dockerfile | 2 +- docker/windows-x86_64/build.Dockerfile | 2 +- docs/conf.py | 2 +- docs/tutorial/basic/installation.rst | 34 +++++++++---------- scripts/node/javet-rebuild/rebuild.cmd | 2 +- scripts/node/javet-rebuild/rebuild.sh | 2 +- scripts/python/change_javet_version.py | 2 +- .../javet/interop/loader/JavetLibLoader.java | 2 +- 37 files changed, 78 insertions(+), 78 deletions(-) diff --git a/.github/workflows/android_node_build.yml b/.github/workflows/android_node_build.yml index 7a7cdefb..f5c955ae 100644 --- a/.github/workflows/android_node_build.yml +++ b/.github/workflows/android_node_build.yml @@ -9,7 +9,7 @@ on: env: JAVET_NODE_VERSION: 20.15.1 - JAVET_VERSION: 3.1.4 + JAVET_VERSION: 3.1.5 ROOT: /home/runner/work/Javet jobs: diff --git a/.github/workflows/android_v8_build.yml b/.github/workflows/android_v8_build.yml index f6cfac5d..99395d93 100644 --- a/.github/workflows/android_v8_build.yml +++ b/.github/workflows/android_v8_build.yml @@ -9,7 +9,7 @@ on: env: JAVET_V8_VERSION: 12.7.224.16 - JAVET_VERSION: 3.1.4 + JAVET_VERSION: 3.1.5 ROOT: /home/runner/work/Javet jobs: diff --git a/.github/workflows/linux_build_artifact.yml b/.github/workflows/linux_build_artifact.yml index 7e1494ee..0f183b5e 100644 --- a/.github/workflows/linux_build_artifact.yml +++ b/.github/workflows/linux_build_artifact.yml @@ -19,7 +19,7 @@ env: DOCKERHUB_REPO_JAVET: ${{ secrets.DOCKERHUB_REPO_JAVET }} JAVET_NODE_VERSION: 20.15.1 JAVET_V8_VERSION: 12.7.224.16 - JAVET_VERSION: 3.1.4 + JAVET_VERSION: 3.1.5 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 27c7e74f..72aa909f 100644 --- a/.github/workflows/linux_build_node_v8_image.yml +++ b/.github/workflows/linux_build_node_v8_image.yml @@ -23,7 +23,7 @@ env: DOCKERHUB_REPO_JAVET: ${{ secrets.DOCKERHUB_REPO_JAVET }} JAVET_NODE_VERSION: 20.15.1 JAVET_V8_VERSION: 12.7.224.16 - JAVET_VERSION: 3.1.4 + JAVET_VERSION: 3.1.5 # 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 67c43360..bdc3a3a6 100644 --- a/.github/workflows/linux_x86_64_build.yml +++ b/.github/workflows/linux_x86_64_build.yml @@ -9,7 +9,7 @@ on: env: JAVET_NODE_VERSION: 20.15.1 JAVET_V8_VERSION: 12.7.224.16 - JAVET_VERSION: 3.1.4 + JAVET_VERSION: 3.1.5 ROOT: /home/runner/work/Javet jobs: diff --git a/.github/workflows/macos_arm64_build.yml b/.github/workflows/macos_arm64_build.yml index c1314e81..d2e7e234 100644 --- a/.github/workflows/macos_arm64_build.yml +++ b/.github/workflows/macos_arm64_build.yml @@ -9,7 +9,7 @@ on: env: JAVET_NODE_VERSION: 20.15.1 JAVET_V8_VERSION: 12.7.224.16 - JAVET_VERSION: 3.1.4 + JAVET_VERSION: 3.1.5 ROOT: /Users/runner/work/Javet jobs: diff --git a/.github/workflows/macos_x86_64_build.yml b/.github/workflows/macos_x86_64_build.yml index 1d3c2bee..c3ab2422 100644 --- a/.github/workflows/macos_x86_64_build.yml +++ b/.github/workflows/macos_x86_64_build.yml @@ -9,7 +9,7 @@ on: env: JAVET_NODE_VERSION: 20.15.1 JAVET_V8_VERSION: 12.7.224.16 - JAVET_VERSION: 3.1.4 + JAVET_VERSION: 3.1.5 ROOT: /Users/runner/work/Javet jobs: diff --git a/README.rst b/README.rst index db6518aa..efa215d1 100644 --- a/README.rst +++ b/README.rst @@ -75,21 +75,21 @@ Maven com.caoccao.javet javet - 3.1.4 + 3.1.5 com.caoccao.javet javet-linux-arm64 - 3.1.4 + 3.1.5 com.caoccao.javet javet-macos - 3.1.4 + 3.1.5 Gradle Kotlin DSL @@ -97,22 +97,22 @@ Gradle Kotlin DSL .. code-block:: kotlin - implementation("com.caoccao.javet:javet:3.1.4") // Linux and Windows (x86_64) - implementation("com.caoccao.javet:javet-linux-arm64:3.1.4") // Linux (arm64) - implementation("com.caoccao.javet:javet-macos:3.1.4") // Mac OS (x86_64 and arm64) - implementation("com.caoccao.javet:javet-android-node:3.1.4") // Android Node (arm, arm64, x86 and x86_64) - implementation("com.caoccao.javet:javet-android-v8:3.1.4") // Android V8 (arm, arm64, x86 and x86_64) + implementation("com.caoccao.javet:javet:3.1.5") // Linux and Windows (x86_64) + implementation("com.caoccao.javet:javet-linux-arm64:3.1.5") // Linux (arm64) + implementation("com.caoccao.javet:javet-macos:3.1.5") // Mac OS (x86_64 and arm64) + implementation("com.caoccao.javet:javet-android-node:3.1.5") // Android Node (arm, arm64, x86 and x86_64) + implementation("com.caoccao.javet:javet-android-v8:3.1.5") // Android V8 (arm, arm64, x86 and x86_64) Gradle Groovy DSL ^^^^^^^^^^^^^^^^^ .. code-block:: groovy - implementation 'com.caoccao.javet:javet:3.1.4' // Linux and Windows (x86_64) - implementation 'com.caoccao.javet:javet-linux-arm64:3.1.4' // Linux (arm64) - implementation 'com.caoccao.javet:javet-macos:3.1.4' // Mac OS (x86_64 and arm64) - implementation 'com.caoccao.javet:javet-android-node:3.1.4' // Android Node (arm, arm64, x86 and x86_64) - implementation 'com.caoccao.javet:javet-android-v8:3.1.4' // Android V8 (arm, arm64, x86 and x86_64) + implementation 'com.caoccao.javet:javet:3.1.5' // Linux and Windows (x86_64) + implementation 'com.caoccao.javet:javet-linux-arm64:3.1.5' // Linux (arm64) + implementation 'com.caoccao.javet:javet-macos:3.1.5' // Mac OS (x86_64 and arm64) + implementation 'com.caoccao.javet:javet-android-node:3.1.5' // Android Node (arm, arm64, x86 and x86_64) + implementation 'com.caoccao.javet:javet-android-v8:3.1.5' // Android V8 (arm, arm64, x86 and x86_64) Hello Javet ----------- diff --git a/android/javet-android/build.gradle.kts b/android/javet-android/build.gradle.kts index 3d9eadae..1cbe99ff 100644 --- a/android/javet-android/build.gradle.kts +++ b/android/javet-android/build.gradle.kts @@ -73,7 +73,7 @@ object Config { const val ANDROIDX_TEST = "1.1.5" const val APPCOMPAT = "1.3.1" const val DESUGAR_JDK_LIBS = "2.0.4" - const val JAVET = "3.1.4" + const val JAVET = "3.1.5" const val JUNIT = "5.10.1" } } diff --git a/android/javet-android/src/main/AndroidManifest.xml b/android/javet-android/src/main/AndroidManifest.xml index 772b2b17..0afc83bf 100644 --- a/android/javet-android/src/main/AndroidManifest.xml +++ b/android/javet-android/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ \ No newline at end of file diff --git a/android/pom.xml b/android/pom.xml index 8ddc175f..173b8076 100644 --- a/android/pom.xml +++ b/android/pom.xml @@ -3,7 +3,7 @@ com.caoccao.javet javet-android - 3.1.4 + 3.1.5 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.1.4 + 3.1.5 diff --git a/build.gradle.kts b/build.gradle.kts index 338488bb..8c09ee7c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -72,7 +72,7 @@ object Config { const val BYTE_BUDDY = "1.14.10" const val JACKSON_DATABIND = "2.16.0" const val JAVA_VERSION = "1.8" - const val JAVET = "3.1.4" + const val JAVET = "3.1.5" const val JETTY_WEBSOCKET = "9.4.53.v20231009" const val JUNIT = "5.10.1" } diff --git a/cpp/build-android.sh b/cpp/build-android.sh index 7c622650..fb2afbeb 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.1.4 +JAVET_VERSION=3.1.5 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 616e6b7f..218ccf4f 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.1.4 +JAVET_VERSION=3.1.5 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 31998f1b..d4343d6b 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.1.4 +JAVET_VERSION=3.1.5 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 b0c713b0..3d825872 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.1.4 +JAVET_VERSION=3.1.5 rm -rf build_macos mkdir build_macos cd build_macos diff --git a/cpp/build-windows.cmd b/cpp/build-windows.cmd index 10e3fb60..be78cada 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.1.4 +SET JAVET_VERSION=3.1.5 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 9d10ecef..11829728 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,1,4,0 - PRODUCTVERSION 3,1,4,0 + FILEVERSION 3,1,5,0 + PRODUCTVERSION 3,1,5,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -79,12 +79,12 @@ BEGIN BEGIN VALUE "CompanyName", "caoccao.com" VALUE "FileDescription", "caoccao.com" - VALUE "FileVersion", "3.1.4.0" - VALUE "InternalName", "libjavet-node-windows-x86_64.v.3.1.4.dll" + VALUE "FileVersion", "3.1.5.0" + VALUE "InternalName", "libjavet-node-windows-x86_64.v.3.1.5.dll" VALUE "LegalCopyright", "Copyright (c) 2021-2024." - VALUE "OriginalFilename", "libjavet-node-windows-x86_64.v.3.1.4.dll" + VALUE "OriginalFilename", "libjavet-node-windows-x86_64.v.3.1.5.dll" VALUE "ProductName", "Javet Windows" - VALUE "ProductVersion", "3.1.4.0" + VALUE "ProductVersion", "3.1.5.0" END END BLOCK "VarFileInfo" diff --git a/cpp/jni/javet_resource_v8.rc b/cpp/jni/javet_resource_v8.rc index 531e66bb..179ab350 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,1,4,0 - PRODUCTVERSION 3,1,4,0 + FILEVERSION 3,1,5,0 + PRODUCTVERSION 3,1,5,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -79,12 +79,12 @@ BEGIN BEGIN VALUE "CompanyName", "caoccao.com" VALUE "FileDescription", "caoccao.com" - VALUE "FileVersion", "3.1.4.0" - VALUE "InternalName", "libjavet-v8-windows-x86_64.v.3.1.4.dll" + VALUE "FileVersion", "3.1.5.0" + VALUE "InternalName", "libjavet-v8-windows-x86_64.v.3.1.5.dll" VALUE "LegalCopyright", "Copyright (c) 2021-2024." - VALUE "OriginalFilename", "libjavet-v8-windows-x86_64.v.3.1.4.dll" + VALUE "OriginalFilename", "libjavet-v8-windows-x86_64.v.3.1.5.dll" VALUE "ProductName", "Javet Windows" - VALUE "ProductVersion", "3.1.4.0" + VALUE "ProductVersion", "3.1.5.0" END END BLOCK "VarFileInfo" diff --git a/docker/android/base.Dockerfile b/docker/android/base.Dockerfile index e3b322e7..e09d4e97 100644 --- a/docker/android/base.Dockerfile +++ b/docker/android/base.Dockerfile @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Usage: docker build -t sjtucaocao/javet-android:3.1.4 -f docker/android/base.Dockerfile . +# Usage: docker build -t sjtucaocao/javet-android:3.1.5 -f docker/android/base.Dockerfile . ARG JAVET_V8_VERSION=12.7.224.16 diff --git a/docker/android/build.Dockerfile b/docker/android/build.Dockerfile index a7e415a3..f84ace9b 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.1.4 +FROM sjtucaocao/javet-android:3.1.5 WORKDIR / # Copy Javet diff --git a/docker/linux-arm64/base_all_in_one.Dockerfile b/docker/linux-arm64/base_all_in_one.Dockerfile index dfca3ee4..c5ac515b 100644 --- a/docker/linux-arm64/base_all_in_one.Dockerfile +++ b/docker/linux-arm64/base_all_in_one.Dockerfile @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Usage: docker build -t sjtucaocao/javet-arm64:3.1.4 -f docker/linux-arm64/base_all_in_one.Dockerfile . +# Usage: docker build -t sjtucaocao/javet-arm64:3.1.5 -f docker/linux-arm64/base_all_in_one.Dockerfile . ARG JAVET_NODE_VERSION=18.15.0 ARG JAVET_V8_VERSION=12.7.224.16 diff --git a/docker/linux-arm64/base_gradle.Dockerfile b/docker/linux-arm64/base_gradle.Dockerfile index 460d6a64..09ba78d5 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.1.4 \ +# -t sjtucaocao/javet:arm64-3.1.5 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ # -f docker/linux-arm64/base_gradle.Dockerfile . diff --git a/docker/linux-arm64/build_artifact.Dockerfile b/docker/linux-arm64/build_artifact.Dockerfile index 3b16edbd..b3ede013 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.1.4 \ +# --build-arg JAVET_VERSION=3.1.5 \ # -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.1.4 +ARG JAVET_VERSION=3.1.5 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 a4efe69b..97003a95 100644 --- a/docker/linux-x86_64/base_all_in_one.Dockerfile +++ b/docker/linux-x86_64/base_all_in_one.Dockerfile @@ -13,7 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Usage: docker build -t sjtucaocao/javet:3.1.4 -f docker/linux-x86_64/base_all_in_one.Dockerfile . +# Usage: docker build -t sjtucaocao/javet:3.1.5 -f docker/linux-x86_64/base_all_in_one.Dockerfile . FROM ubuntu:20.04 WORKDIR / diff --git a/docker/linux-x86_64/base_gradle.Dockerfile b/docker/linux-x86_64/base_gradle.Dockerfile index 37b0ce6f..e2dc9419 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.1.4 \ +# -t sjtucaocao/javet:x86_64-3.1.5 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ # -f docker/linux-x86_64/base_gradle.Dockerfile . diff --git a/docker/linux-x86_64/build.env b/docker/linux-x86_64/build.env index e69dc65b..a265b186 100644 --- a/docker/linux-x86_64/build.env +++ b/docker/linux-x86_64/build.env @@ -1,4 +1,4 @@ JAVET_REPO=sjtucaocao/javet -JAVET_VERSION=3.1.4 +JAVET_VERSION=3.1.5 JAVET_V8_VERSION=12.7.224.16 JAVET_NODE_VERSION=20.15.1 diff --git a/docker/linux-x86_64/build_all_in_one.Dockerfile b/docker/linux-x86_64/build_all_in_one.Dockerfile index 934ea598..62ac18f8 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.1.4 +FROM sjtucaocao/javet:3.1.5 WORKDIR / # Copy Javet diff --git a/docker/linux-x86_64/build_artifact.Dockerfile b/docker/linux-x86_64/build_artifact.Dockerfile index 376899ee..bfe1aca9 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.1.4 \ +# --build-arg JAVET_VERSION=3.1.5 \ # -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.1.4 +ARG JAVET_VERSION=3.1.5 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 a534fb51..ac2168ba 100644 --- a/docker/windows-x86_64/base.Dockerfile +++ b/docker/windows-x86_64/base.Dockerfile @@ -29,7 +29,7 @@ # 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.1.4 -m 4G -f docker/windows-x86_64/base.Dockerfile . +# Usage: docker build -t sjtucaocao/javet-windows:3.1.5 -m 4G -f docker/windows-x86_64/base.Dockerfile . ARG JAVET_NODE_VERSION=20.15.1 ARG JAVET_V8_VERSION=12.7.224.16 diff --git a/docker/windows-x86_64/build.Dockerfile b/docker/windows-x86_64/build.Dockerfile index 59f3c502..b4e719f2 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.1.4 +FROM sjtucaocao/javet-windows:3.1.5 SHELL ["cmd", "/S", "/C"] WORKDIR / diff --git a/docs/conf.py b/docs/conf.py index c48402ef..d026b0cd 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.1.4' +release = '3.1.5' # -- General configuration --------------------------------------------------- diff --git a/docs/tutorial/basic/installation.rst b/docs/tutorial/basic/installation.rst index 7519bc58..1bd2a005 100644 --- a/docs/tutorial/basic/installation.rst +++ b/docs/tutorial/basic/installation.rst @@ -16,21 +16,21 @@ Maven com.caoccao.javet javet - 3.1.4 + 3.1.5 com.caoccao.javet javet-linux-arm64 - 3.1.4 + 3.1.5 com.caoccao.javet javet-macos - 3.1.4 + 3.1.5 .. tab:: Complete @@ -38,7 +38,7 @@ Maven .. code-block:: xml - 3.1.4 + 3.1.5 @@ -115,11 +115,11 @@ Gradle Kotlin DSL .. code-block:: kotlin - implementation("com.caoccao.javet:javet:3.1.4") // Linux and Windows (x86_64) - implementation("com.caoccao.javet:javet-linux-arm64:3.1.4") // Linux (arm64) - implementation("com.caoccao.javet:javet-macos:3.1.4") // Mac OS (x86_64 and arm64) - implementation("com.caoccao.javet:javet-android-node:3.1.4") // Android Node (arm, arm64, x86 and x86_64) - implementation("com.caoccao.javet:javet-android-v8:3.1.4") // Android V8 (arm, arm64, x86 and x86_64) + implementation("com.caoccao.javet:javet:3.1.5") // Linux and Windows (x86_64) + implementation("com.caoccao.javet:javet-linux-arm64:3.1.5") // Linux (arm64) + implementation("com.caoccao.javet:javet-macos:3.1.5") // Mac OS (x86_64 and arm64) + implementation("com.caoccao.javet:javet-android-node:3.1.5") // Android Node (arm, arm64, x86 and x86_64) + implementation("com.caoccao.javet:javet-android-v8:3.1.5") // Android V8 (arm, arm64, x86 and x86_64) .. tab:: Complete @@ -130,11 +130,11 @@ Gradle Kotlin DSL val os = OperatingSystem.current() val cpuArch = System.getProperty("os.arch") if (os.isMacOsX) { - implementation("com.caoccao.javet:javet:3.1.4") + implementation("com.caoccao.javet:javet:3.1.5") } else if (os.isLinux && (cpuArch == "aarch64" || cpuArch == "arm64")) { - implementation("com.caoccao.javet:javet-linux-arm64:3.1.4") + implementation("com.caoccao.javet:javet-linux-arm64:3.1.5") } else { - implementation("com.caoccao.javet:javet-macos:3.1.4") + implementation("com.caoccao.javet:javet-macos:3.1.5") } Gradle Groovy DSL @@ -142,11 +142,11 @@ Gradle Groovy DSL .. code-block:: groovy - implementation 'com.caoccao.javet:javet:3.1.4' // Linux and Windows (x86_64) - implementation 'com.caoccao.javet:javet-linux-arm64:3.1.4' // Linux (arm64) - implementation 'com.caoccao.javet:javet-macos:3.1.4' // Mac OS (x86_64 and arm64) - implementation 'com.caoccao.javet:javet-android-node:3.1.4' // Android Node (arm, arm64, x86 and x86_64) - implementation 'com.caoccao.javet:javet-android-v8:3.1.4' // Android V8 (arm, arm64, x86 and x86_64) + implementation 'com.caoccao.javet:javet:3.1.5' // Linux and Windows (x86_64) + implementation 'com.caoccao.javet:javet-linux-arm64:3.1.5' // Linux (arm64) + implementation 'com.caoccao.javet:javet-macos:3.1.5' // Mac OS (x86_64 and arm64) + implementation 'com.caoccao.javet:javet-android-node:3.1.5' // Android Node (arm, arm64, x86 and x86_64) + implementation 'com.caoccao.javet:javet-android-v8:3.1.5' // Android V8 (arm, arm64, x86 and x86_64) OS Compatibility ================ diff --git a/scripts/node/javet-rebuild/rebuild.cmd b/scripts/node/javet-rebuild/rebuild.cmd index f9c06b24..5c0ae5b1 100644 --- a/scripts/node/javet-rebuild/rebuild.cmd +++ b/scripts/node/javet-rebuild/rebuild.cmd @@ -1,5 +1,5 @@ @echo off -SET NODE_LIB_FILE="..\..\..\..\..\..\build\libs\libjavet-node-windows-x86_64.v.3.1.4.lib" +SET NODE_LIB_FILE="..\..\..\..\..\..\build\libs\libjavet-node-windows-x86_64.v.3.1.5.lib" cd %NODE_MODULE_ROOT% call node-gyp clean call node-gyp configure --module_name=%NODE_MODULE_NAME% --module_path=%NODE_MODULE_PATH% --node_lib_file=%NODE_LIB_FILE% diff --git a/scripts/node/javet-rebuild/rebuild.sh b/scripts/node/javet-rebuild/rebuild.sh index 81ecedd0..1e65adba 100755 --- a/scripts/node/javet-rebuild/rebuild.sh +++ b/scripts/node/javet-rebuild/rebuild.sh @@ -1 +1 @@ -patchelf --add-needed libjavet-node-linux-x86_64.v.3.1.4.so ${NODE_MODULE_FILE} +patchelf --add-needed libjavet-node-linux-x86_64.v.3.1.5.so ${NODE_MODULE_FILE} diff --git a/scripts/python/change_javet_version.py b/scripts/python/change_javet_version.py index 8e2d2e15..fe215eee 100644 --- a/scripts/python/change_javet_version.py +++ b/scripts/python/change_javet_version.py @@ -186,7 +186,7 @@ def _update(self, relative_file_path: str, line_separator: str, *patterns: list) logging.info(' Updated.') def main(): - change_javet_version = ChangeJavetVersion('3.1.4') + change_javet_version = ChangeJavetVersion('3.1.5') change_javet_version.update() return 0 diff --git a/src/main/java/com/caoccao/javet/interop/loader/JavetLibLoader.java b/src/main/java/com/caoccao/javet/interop/loader/JavetLibLoader.java index ea326a25..4fe64860 100644 --- a/src/main/java/com/caoccao/javet/interop/loader/JavetLibLoader.java +++ b/src/main/java/com/caoccao/javet/interop/loader/JavetLibLoader.java @@ -45,7 +45,7 @@ public final class JavetLibLoader { * * @since 0.8.0 */ - public static final String LIB_VERSION = "3.1.4"; + public static final String LIB_VERSION = "3.1.5"; private static final String ANDROID_ABI_ARM = "armeabi-v7a"; private static final String ANDROID_ABI_ARM64 = "arm64-v8a"; private static final String ANDROID_ABI_X86 = "x86"; From 6db400a66b3178464c147e9a0619fe4d645af90c Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Mon, 29 Jul 2024 06:45:34 +0800 Subject: [PATCH 02/13] =?UTF-8?q?=F0=9F=93=83=20docs:=20Remove=20extra=20J?= =?UTF-8?q?S=20from=20docs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/searchindex.js | 1 - 1 file changed, 1 deletion(-) delete mode 100644 docs/searchindex.js diff --git a/docs/searchindex.js b/docs/searchindex.js deleted file mode 100644 index ade6c794..00000000 --- a/docs/searchindex.js +++ /dev/null @@ -1 +0,0 @@ -Search.setIndex({"alltitles": {"0.7.0 Birth with V8 v8.9": [[56, "birth-with-v8-v8-9"]], "0.7.1 Bug Fixes": [[56, "bug-fixes"]], "0.7.2 Engine Guard": [[56, "engine-guard"]], "0.7.3 Locker": [[56, "locker"]], "0.7.4 Live Debug": [[56, "live-debug"]], "0.8.0 First Time with Node.js": [[57, "first-time-with-node-js"]], "0.8.1 Declarative Function Interception": [[57, "declarative-function-interception"]], "0.8.10 Index in forEach": [[57, "index-in-foreach"]], "0.8.2 Conversion for Primitive": [[57, "conversion-for-primitive"]], "0.8.3 GC": [[57, "gc"]], "0.8.4 V8 v9.0": [[57, "v8-v9-0"]], "0.8.5 Error Codes": [[57, "error-codes"]], "0.8.6 Event Loop for Node.js": [[57, "event-loop-for-node-js"]], "0.8.7 Native Modules for Node.js": [[57, "native-modules-for-node-js"]], "0.8.8 Hotfix the Source Code": [[57, "hotfix-the-source-code"]], "0.8.9 Declarative Property Interception": [[57, "declarative-property-interception"]], "0.9.0 V8 v9.1": [[58, "v8-v9-1"]], "0.9.1 V8 in Classloader": [[58, "v8-in-classloader"]], "0.9.10 Polyfill Java Interfaces": [[58, "polyfill-java-interfaces"]], "0.9.11 V8 v9.3": [[58, "v8-v9-3"]], "0.9.12 Private Properties": [[58, "private-properties"]], "0.9.13 V8 v9.4": [[58, "v8-v9-4"]], "0.9.14 V8 Scope": [[58, "v8-scope"]], "0.9.2 Anonymous Functions in Converter": [[58, "anonymous-functions-in-converter"]], "0.9.3 Module Resolver": [[58, "module-resolver"]], "0.9.4 Multi-process Safe": [[58, "multi-process-safe"]], "0.9.5 V8 v9.2": [[58, "v8-v9-2"]], "0.9.6 Proxy Converter v1": [[58, "proxy-converter-v1"]], "0.9.7 Proxy Converter v2": [[58, "proxy-converter-v2"]], "0.9.8 Empower the Promise": [[58, "empower-the-promise"]], "0.9.9 Mac OS x86_64": [[58, "mac-os-x86-64"]], "1. Implicit Mode": [[40, "implicit-mode"]], "1. Run CDT Shell": [[3, "run-cdt-shell"]], "1.0.0 First Time with Node.js v16": [[59, "first-time-with-node-js-v16"]], "1.0.1 Custom Library Loading": [[59, "custom-library-loading"]], "1.0.2 First Time with Android": [[59, "first-time-with-android"]], "1.0.3 Android ABI 21": [[59, "android-abi-21"]], "1.0.4 V8 9.6": [[59, "v8-9-6"]], "1.0.5 Javet Core": [[59, "javet-core"]], "1.0.6 Mac OS (arm64)": [[59, "mac-os-arm64"]], "1.0.7 V8 v9.7": [[59, "v8-v9-7"]], "1.1.0 V8 v9.8": [[60, "v8-v9-8"]], "1.1.1 V8 v9.9": [[60, "v8-v9-9"]], "1.1.2 V8 v10.0": [[60, "v8-v10-0"]], "1.1.3 V8 v10.1": [[60, "v8-v10-1"]], "1.1.4 V8 v10.2": [[60, "v8-v10-2"]], "1.1.5 V8 v10.3": [[60, "v8-v10-3"]], "1.1.6 V8 v10.4": [[60, "v8-v10-4"]], "1.1.7 V8 v10.5": [[60, "v8-v10-5"]], "2 Approaches": [[67, "approaches"]], "2. Explicit Mode": [[40, "explicit-mode"]], "2. Run Script in CDT Shell": [[3, "run-script-in-cdt-shell"]], "2.0.0 Node.js v18.10": [[61, "node-js-v18-10"]], "2.0.1 V8 v10.7": [[61, "v8-v10-7"]], "2.0.2 V8 v10.8": [[61, "v8-v10-8"]], "2.0.3 V8 v10.9": [[61, "v8-v10-9"]], "2.0.4 V8 v11.0": [[61, "v8-v11-0"]], "2.1.0 V8 v11.1": [[62, "v8-v11-1"]], "2.1.1 V8 v11.2": [[62, "v8-v11-2"]], "2.1.2 V8 v11.3": [[62, "v8-v11-3"]], "2.2.0 V8 v11.4": [[63, "v8-v11-4"]], "2.2.1 V8 v11.5": [[63, "v8-v11-5"]], "2.2.2 V8 v11.6": [[63, "v8-v11-6"]], "2.2.3 V8 v11.7": [[63, "v8-v11-7"]], "3 Challenges in Memory Management": [[41, "challenges-in-memory-management"]], "3. Open CDT": [[3, "open-cdt"]], "3.0.0 V8 v11.8": [[64, "v8-v11-8"]], "3.0.1 V8 v11.9": [[64, "v8-v11-9"]], "3.0.2 V8 v12.0": [[64, "v8-v12-0"]], "3.0.3 V8 v12.1": [[64, "v8-v12-1"]], "3.0.4 V8 v12.2": [[64, "v8-v12-2"]], "3.1.0 V8 v12.3": [[65, "v8-v12-3"]], "3.1.1 V8 v12.4": [[65, "v8-v12-4"]], "3.1.2 V8 v12.5": [[65, "v8-v12-5"]], "3.1.3 V8 v12.6": [[65, "v8-v12-6"]], "3.1.4 V8 v12.7": [[65, "v8-v12-7"]], "4. Debug as Usual": [[3, "debug-as-usual"]], "@V8Convert::mode": [[34, "v8convert-mode"]], "@V8Function::name": [[34, "v8function-name"]], "@V8Property and @V8Function": [[76, "v8property-and-v8function"]], "@V8Property::name": [[34, "v8property-name"]], "A dynamic link library (DLL) initialization routine failed": [[21, "a-dynamic-link-library-dll-initialization-routine-failed"]], "API Reference": [[37, "api-reference"]], "Access the Whole JVM": [[66, "access-the-whole-jvm"]], "Add or Remove Proxy Plugins": [[35, "add-or-remove-proxy-plugins"]], "Advanced": [[68, "advanced"]], "Aggressive GC": [[41, "aggressive-gc"]], "Alternative Option: ArrayBuffer": [[41, "alternative-option-arraybuffer"]], "Analysis": [[26, "analysis"]], "Android": [[75, "android"]], "Android Environment": [[0, "android-environment"]], "Architecture": [[4, "architecture"]], "Array": [[71, "array"]], "Automatic GC": [[41, "automatic-gc"]], "Automatic Management with try-with-resource": [[41, "automatic-management-with-try-with-resource"]], "Automatic Registration": [[53, "automatic-registration"]], "Automatic Termination": [[50, "automatic-termination"]], "Automatic Type Conversion": [[53, "automatic-type-conversion"]], "Automatically Manage with Weak Reference": [[41, "automatically-manage-with-weak-reference"]], "Background": [[10, "background"], [27, "background"]], "Backward Compatibility": [[47, "backward-compatibility"]], "Basic": [[74, "basic"]], "Benefits": [[43, "benefits"]], "Best Practices": [[44, "best-practices"]], "Binding via Native": [[31, "binding-via-native"]], "Binding via Proxy": [[31, "binding-via-proxy"]], "Blessing": [[83, "blessing"]], "Blog": [[28, "blog"]], "Boolean": [[29, "boolean"]], "Bridge Converter": [[29, "bridge-converter"]], "Build Environment": [[0, "build-environment"], [2, "build-environment"]], "Build Javet": [[0, "build-javet"], [1, "build-javet"], [1, "id1"]], "Build Javet JNI Library for Android": [[1, "build-javet-jni-library-for-android"]], "Build Javet for Android": [[1, "build-javet-for-android"]], "Build Javet for Android on Linux or Windows": [[2, "build-javet-for-android-on-linux-or-windows"]], "Build Javet for Linux on Linux or Windows": [[2, "build-javet-for-linux-on-linux-or-windows"]], "Build Javet for Linux, Mac OS and Windows": [[1, "build-javet-for-linux-mac-os-and-windows"]], "Build Javet for Windows on Windows": [[2, "build-javet-for-windows-on-windows"]], "Build Javet from Scratch": [[1, "build-javet-from-scratch"]], "Build Javet with Docker": [[2, "build-javet-with-docker"]], "Build Node.js": [[1, "build-node-js"]], "Build Node.js on Linux": [[1, "build-node-js-on-linux"]], "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 V8": [[1, "build-v8"]], "Build V8 for Android": [[1, "build-v8-for-android"]], "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"]], "Built-in Proxy Plugins": [[35, "built-in-proxy-plugins"]], "C++ Runtime": [[41, "c-runtime"]], "CDT Shell": [[3, "cdt-shell"]], "Call": [[53, "call"]], "Call vs. Invoke": [[53, "call-vs-invoke"]], "Can 2 Java Functions Map to One JavaScript Function and Property?": [[53, "can-2-java-functions-map-to-one-javascript-function-and-property"]], "Can Both JavaScript Function and Property Map to One Java Function?": [[53, "can-both-javascript-function-and-property-map-to-one-java-function"]], "Can Built-in Converter be Ignored?": [[31, "can-built-in-converter-be-ignored"]], "Can I Debug Javet in Chrome DevTools?": [[23, "can-i-debug-javet-in-chrome-devtools"]], "Can Javet Lib Loading Listener Take Environment Variables?": [[39, "can-javet-lib-loading-listener-take-environment-variables"]], "Can Javet Libraries be Removed from the Jar File?": [[39, "can-javet-libraries-be-removed-from-the-jar-file"]], "Can Javet Native Library Deployment be Skipped?": [[39, "can-javet-native-library-deployment-be-skipped"]], "Can Javet Native Library be Deployed to a Custom Location?": [[39, "can-javet-native-library-be-deployed-to-a-custom-location"]], "Can Javet Native Library be Loaded or Unloaded On-demand?": [[39, "can-javet-native-library-be-loaded-or-unloaded-on-demand"]], "Can Javet Support Legacy Linux?": [[18, "can-javet-support-legacy-linux"]], "Can Native Image be Supported?": [[12, "can-native-image-be-supported"]], "Can Node.js Event Loop be Skipped?": [[24, "can-node-js-event-loop-be-skipped"]], "Can Symbol Properties be Intercepted?": [[53, "can-symbol-properties-be-intercepted"]], "Can already loaded in another classloader be Suppressed?": [[39, "can-already-loaded-in-another-classloader-be-suppressed"]], "Can i18n be Supported?": [[22, "can-i18n-be-supported"]], "Can this be Passed in?": [[53, "can-this-be-passed-in"]], "Change a User Defined JavaScript Function on the Fly": [[53, "change-a-user-defined-javascript-function-on-the-fly"]], "Chrome Developer Tools Internals": [[3, "chrome-developer-tools-internals"]], "Circular Structure": [[31, "circular-structure"]], "Cleanup": [[66, "cleanup"]], "Co-existence": [[78, "co-existence"]], "Collection in V8": [[52, "collection-in-v8"]], "Comparisons": [[31, "comparisons"], [40, "comparisons"], [53, "comparisons"]], "Conclusion": [[67, "conclusion"]], "Configuration": [[80, "configuration"]], "Context and Scope Info": [[53, "context-and-scope-info"]], "Converters": [[31, "converters"]], "Coroutines or Virtual Threads": [[40, "coroutines-or-virtual-threads"]], "Create PojoConverter": [[30, "create-pojoconverter"]], "Create a New Proxy Plugin": [[35, "create-a-new-proxy-plugin"]], "Create a Snapshot in Javet": [[43, "create-a-snapshot-in-javet"]], "Create a Snapshot via mksnapshot": [[43, "create-a-snapshot-via-mksnapshot"]], "Cross-platform": [[4, "cross-platform"]], "Custom Converter": [[30, "custom-converter"]], "Customization": [[3, "customization"]], "Deal with Native Modules": [[42, "deal-with-native-modules"]], "Debug with Chrome Developer Tools": [[3, "debug-with-chrome-developer-tools"]], "Declarative Function and Property Interception": [[13, "declarative-function-and-property-interception"]], "Define POJO Object": [[30, "define-pojo-object"]], "Dependency": [[28, "dependency"], [75, "dependency"]], "Design a POJO Converter": [[30, "design-a-pojo-converter"]], "Development": [[5, "development"], [14, "development"]], "Development Tools": [[8, "development-tools"]], "Docker Hub and Github": [[2, "docker-hub-and-github"]], "Documents": [[28, "documents"]], "Does it Support Node.js Mode?": [[3, "does-it-support-node-js-mode"]], "Dynamic import()": [[42, "dynamic-import"]], "Dynamic: Anonymous Function": [[34, "dynamic-anonymous-function"]], "Dynamic: Anonymous Object for Class": [[34, "dynamic-anonymous-object-for-class"]], "Dynamic: Anonymous Object for Interface": [[34, "dynamic-anonymous-object-for-interface"]], "Dynamically Import Built-in Modules": [[42, "dynamically-import-built-in-modules"]], "ES6 Module": [[83, "es6-module"]], "Engine Pool": [[4, "engine-pool"]], "Enhance the Custom Object": [[32, "enhance-the-custom-object"]], "Environment": [[19, "environment"]], "Environment Variables": [[0, "environment-variables"]], "Error Codes": [[47, "error-codes"]], "Event unhandledRejection": [[27, "event-unhandledrejection"]], "Example": [[42, "example"]], "Example fs.readFileAsync()": [[54, "example-fs-readfileasync"]], "Executor and Execute": [[13, "executor-and-execute"]], "Expose JsonNode in V8": [[67, "expose-jsonnode-in-v8"]], "Express Build": [[2, "express-build"]], "FAQ": [[20, "faq"]], "FAQs": [[3, "faqs"]], "Features": [[34, "features"]], "From Java to JavaScript": [[32, "from-java-to-javascript"], [33, "from-java-to-javascript"]], "From JavaScript to Java": [[32, "from-javascript-to-java"], [33, "from-javascript-to-java"]], "Full Build - All-in-one": [[2, "full-build-all-in-one"]], "Full Build - Multi-staged": [[2, "full-build-multi-staged"]], "Function Interception": [[53, "function-interception"]], "Function Types": [[53, "function-types"]], "Functions and Objects": [[31, "functions-and-objects"]], "GC": [[41, "gc"]], "Gaps between Javet Node.js Mode and Native Node.js": [[42, "gaps-between-javet-node-js-mode-and-native-node-js"]], "Goals": [[72, "goals"]], "Gradle": [[8, "gradle"]], "Gradle Groovy DSL": [[28, "gradle-groovy-dsl"], [75, "gradle-groovy-dsl"]], "Gradle Kotlin DSL": [[28, "gradle-kotlin-dsl"], [75, "gradle-kotlin-dsl"]], "Handshake": [[3, "handshake"]], "Hello Javet": [[28, "hello-javet"], [73, "hello-javet"]], "Highlights": [[6, "highlights"], [32, "highlights"]], "History with J2V8": [[9, "history-with-j2v8"]], "How Snapshot Works": [[43, "how-snapshot-works"]], "How about Bind?": [[53, "how-about-bind"]], "How about Debug Mode?": [[50, "how-about-debug-mode"]], "How about Object Type Conversion?": [[53, "how-about-object-type-conversion"]], "How does It Work?": [[32, "how-does-it-work"]], "How does JavetProxyConverter Work?": [[34, "how-does-javetproxyconverter-work"]], "How to Avoid Argument Type Mismatches?": [[53, "how-to-avoid-argument-type-mismatches"]], "How to Cast Java Objects to JavaScript Objects?": [[29, "how-to-cast-java-objects-to-javascript-objects"]], "How to Change a User Defined JavaScript Function on the Fly?": [[53, "how-to-change-a-user-defined-javascript-function-on-the-fly"]], "How to Create a Snapshot": [[43, "how-to-create-a-snapshot"]], "How to Customize JavetProxyConverter?": [[34, "how-to-customize-javetproxyconverter"]], "How to Disable Properties or Functions?": [[53, "how-to-disable-properties-or-functions"]], "How to Escape from try-with-resource?": [[41, "how-to-escape-from-try-with-resource"]], "How to Handle Argument Count Mismatches?": [[53, "how-to-handle-argument-count-mismatches"]], "How to Think in Javet?": [[13, "how-to-think-in-javet"]], "How to Unregister Properties or Functions?": [[53, "how-to-unregister-properties-or-functions"]], "How?": [[69, "how"]], "Inject a Pattern": [[70, "inject-a-pattern"]], "Inject a Static Class": [[70, "inject-a-static-class"]], "Inject a StringBuilder": [[70, "inject-a-stringbuilder"]], "Inject an Enum": [[70, "inject-an-enum"]], "Injection": [[80, "injection"]], "Inside Converters": [[31, "inside-converters"]], "Installation": [[75, "installation"]], "Instance: File": [[34, "instance-file"]], "Instance: List": [[34, "instance-list"]], "Instance: Map": [[34, "instance-map"]], "Instance: Path": [[34, "instance-path"]], "Instance: Set": [[34, "instance-set"]], "Integer List": [[29, "integer-list"]], "IntelliJ": [[8, "intellij"]], "Interact with Node.js": [[69, "interact-with-node-js"]], "Interception": [[4, "interception"], [76, "interception"]], "Internals": [[42, "internals"]], "Invoke": [[53, "invoke"]], "Is That Possible?": [[69, "is-that-possible"]], "Is There a Live Demo?": [[3, "is-there-a-live-demo"]], "J2V8 Issues": [[9, "j2v8-issues"]], "J2V8 Latest Version": [[9, "j2v8-latest-version"]], "JDK": [[8, "jdk"]], "JS Flavor (Wrapped Exposure)": [[67, "js-flavor-wrapped-exposure"]], "JVM GC": [[41, "jvm-gc"]], "Java Flavor (Direct Exposure)": [[67, "java-flavor-direct-exposure"]], "Java VS Wasm Benchmarks": [[6, "java-vs-wasm-benchmarks"]], "Java and JavaScript Interop": [[70, "java-and-javascript-interop"]], "Javet": [[28, "javet"]], "Javet Design": [[4, "javet-design"]], "Javet Engine Pool": [[4, "javet-engine-pool"], [72, "javet-engine-pool"]], "Javet Performance": [[6, "javet-performance"]], "Javet Performance Improvements": [[6, "javet-performance-improvements"]], "Javet Shell": [[77, "javet-shell"]], "JavetProxyPluginArray": [[35, "javetproxypluginarray"]], "JavetProxyPluginDefault": [[35, "javetproxyplugindefault"]], "JavetProxyPluginList": [[35, "javetproxypluginlist"]], "JavetProxyPluginMap": [[35, "javetproxypluginmap"]], "JavetProxyPluginSet": [[35, "javetproxypluginset"]], "Know the Lock": [[40, "know-the-lock"]], "Learn from Unit Test": [[13, "learn-from-unit-test"]], "License": [[28, "license"]], "Lifecycle": [[54, "lifecycle"]], "Limitations": [[43, "limitations"]], "Linux": [[75, "linux"]], "Linux Environment": [[0, "linux-environment"], [2, "linux-environment"]], "Linux arm64 Docker Files Deprecated": [[2, "linux-arm64-docker-files-deprecated"]], "List": [[71, "list"]], "Load": [[39, "load"]], "Load and Unload": [[39, "load-and-unload"]], "Logging": [[49, "logging"]], "Long Unmodifiable List": [[29, "long-unmodifiable-list"]], "Mac OS": [[75, "mac-os"]], "MacOS Environment": [[0, "macos-environment"]], "Major Features": [[28, "major-features"]], "Manual GC": [[41, "manual-gc"]], "Manual Patch Native Modules on Windows": [[42, "manual-patch-native-modules-on-windows"]], "Manual Registration": [[53, "manual-registration"]], "Manual Termination": [[50, "manual-termination"]], "Map": [[71, "map"]], "Maven": [[28, "maven"], [75, "maven"]], "Maven (Optional)": [[8, "maven-optional"]], "Memory Leak Detection": [[4, "memory-leak-detection"]], "Memory Management": [[41, "memory-management"]], "Migrate from J2V8": [[83, "migrate-from-j2v8"]], "Migration Guides": [[82, "migration-guides"], [83, "migration-guides"]], "Modularization": [[42, "modularization"]], "Module": [[4, "module"]], "Module Virtualization": [[4, "module-virtualization"]], "Motivation": [[72, "motivation"]], "Multi-process Safety": [[4, "multi-process-safety"]], "Node.js": [[8, "node-js"], [44, "node-js"]], "Node.js Mode": [[42, "node-js-mode"], [79, "node-js-mode"]], "Node.js Mode and V8 Mode": [[78, "node-js-mode-and-v8-mode"]], "Node.js Mode vs. V8 Mode": [[4, "node-js-mode-vs-v8-mode"]], "Node.js and V8": [[83, "node-js-and-v8"]], "NodeRuntime.await()": [[27, "noderuntime-await"]], "NodeRuntime.lowMemoryNotification()": [[27, "noderuntime-lowmemorynotification"]], "Null Safety": [[31, "null-safety"]], "OS Compatibility": [[75, "os-compatibility"]], "Object Converter": [[32, "object-converter"], [71, "object-converter"]], "On-demand": [[42, "on-demand"]], "Passive GC": [[41, "passive-gc"]], "Patch ELF Native Modules on Linux": [[42, "patch-elf-native-modules-on-linux"]], "Performance": [[40, "performance"]], "Performance Comparisons of Node.js Mode and V8 Mode": [[6, "performance-comparisons-of-node-js-mode-and-v8-mode"]], "Play with Dynamic Interface": [[66, "play-with-dynamic-interface"]], "Play with Dynamic Object": [[66, "play-with-dynamic-object"]], "Play with StringBuilder": [[66, "play-with-stringbuilder"]], "Polyfill": [[79, "polyfill"]], "Pool": [[78, "pool"]], "Pre-load": [[42, "pre-load"]], "Preparation": [[29, "preparation"], [34, "preparation"], [70, "preparation"]], "Prepare Node.js": [[1, "prepare-node-js"]], "Prepare V8": [[1, "prepare-v8"]], "Primitive Converter": [[33, "primitive-converter"]], "Primitive Types": [[83, "primitive-types"]], "Primitive and Reference Types in Javet": [[4, "primitive-and-reference-types-in-javet"]], "Print 1 + 1 in Node.js Mode": [[73, "print-1-1-in-node-js-mode"]], "Print Hello Javet in V8 Mode": [[73, "print-hello-javet-in-v8-mode"]], "Promise and Resolver": [[54, "promise-and-resolver"]], "Proxy Converter": [[34, "proxy-converter"]], "Proxy Plugins": [[35, "proxy-plugins"]], "Python 3.8+ (Optional)": [[8, "python-3-8-optional"]], "Quick Start": [[28, "quick-start"]], "Ready! Go!": [[30, "ready-go"]], "Rebuild Native Modules on Windows": [[42, "rebuild-native-modules-on-windows"]], "Recommended Options": [[41, "recommended-options"]], "Reference": [[36, "reference"]], "Register Custom Objects": [[32, "register-custom-objects"]], "Register a Callback": [[54, "register-a-callback"]], "Register the Custom Object": [[32, "register-the-custom-object"]], "Release Notes": [[55, "release-notes"]], "Release Notes 0.7.x": [[56, "release-notes-0-7-x"]], "Release Notes 0.8.x": [[57, "release-notes-0-8-x"]], "Release Notes 0.9.x": [[58, "release-notes-0-9-x"]], "Release Notes 1.0.x": [[59, "release-notes-1-0-x"]], "Release Notes 1.1.x": [[60, "release-notes-1-1-x"]], "Release Notes 2.0.x": [[61, "release-notes-2-0-x"]], "Release Notes 2.1.x": [[62, "release-notes-2-1-x"]], "Release Notes 2.2.x": [[63, "release-notes-2-2-x"]], "Release Notes 3.0.x": [[64, "release-notes-3-0-x"]], "Release Notes 3.1.x": [[65, "release-notes-3-1-x"]], "Resource Management": [[38, "resource-management"], [44, "resource-management"], [53, "resource-management"]], "Root Cause": [[27, "root-cause"]], "SIGSEGV at createV8Runtime() in V8 Mode on AWS": [[26, "sigsegv-at-createv8runtime-in-v8-mode-on-aws"]], "Sample": [[76, "sample"]], "Security": [[44, "security"]], "Snapshot": [[43, "snapshot"]], "Solution": [[27, "solution"]], "Solution 1: Enforce the Initialization": [[26, "solution-1-enforce-the-initialization"]], "Solution 2: Set Environment Variable JAVET_DISABLE_PKU": [[26, "solution-2-set-environment-variable-javet-disable-pku"]], "Solutions": [[26, "solutions"]], "Sponsors": [[28, "sponsors"]], "Spring Integration": [[80, "spring-integration"]], "Static: Enum": [[34, "static-enum"]], "Static: Interface": [[34, "static-interface"]], "Static: Pattern": [[34, "static-pattern"]], "Static: StringBuilder": [[34, "static-stringbuilder"]], "Statistics": [[41, "statistics"]], "Step 1: Implement IJavetLogger": [[49, "step-1-implement-ijavetlogger"]], "Step 1: JavaScript Server": [[69, "step-1-javascript-server"]], "Step 2: Inject the Logger": [[49, "step-2-inject-the-logger"]], "Step 2: Worker Thread for the JavaScript Server": [[69, "step-2-worker-thread-for-the-javascript-server"]], "Step 3: Main Thread for the Interaction": [[69, "step-3-main-thread-for-the-interaction"]], "String Array": [[29, "string-array"]], "Summary": [[53, "summary"], [66, "summary"]], "Symptoms": [[26, "symptoms"]], "Synthetic Module": [[42, "synthetic-module"]], "System.gc() and System.runFinalization()": [[41, "system-gc-and-system-runfinalization"]], "TODO List": [[46, "todo-list"]], "Termination": [[50, "termination"]], "Test": [[67, "test"], [76, "test"]], "Test Javet": [[7, "test-javet"]], "Thread, Engine and Pool": [[44, "thread-engine-and-pool"]], "Thread-safety": [[40, "thread-safety"]], "Tips": [[45, "tips"], [53, "tips"]], "Troubleshooting": [[25, "troubleshooting"], [48, "troubleshooting"]], "Tutorial": [[81, "tutorial"]], "Type Conversion": [[83, "type-conversion"]], "Type Mismatch": [[53, "type-mismatch"]], "Unhandled Rejection": [[54, "unhandled-rejection"]], "Unload": [[39, "unload"]], "Usage": [[29, "usage"], [32, "usage"], [34, "usage"], [52, "usage"], [72, "usage"], [78, "usage"]], "Usage 1 without V8 Runtime": [[41, "usage-1-without-v8-runtime"]], "Usage 2 with V8 Runtime": [[41, "usage-2-with-v8-runtime"]], "V8 Collection": [[52, "v8-collection"]], "V8 Feature Flags": [[0, "v8-feature-flags"]], "V8 Function": [[53, "v8-function"]], "V8 GC": [[41, "v8-gc"]], "V8 Isolate and Context in Javet": [[4, "v8-isolate-and-context-in-javet"]], "V8 Mode": [[42, "v8-mode"], [79, "v8-mode"]], "V8 Options and V8Flags": [[41, "v8-options-and-v8flags"]], "V8 Promise": [[54, "v8-promise"]], "V8 Values": [[51, "v8-values"]], "V8 \u27f6 V8Runtime": [[83, "v8-v8runtime"]], "V8Host": [[78, "v8host"]], "V8Locker": [[83, "v8locker"]], "V8Runtime": [[13, "v8runtime"]], "V8Runtime and V8ValueGlobalObject": [[13, "v8runtime-and-v8valueglobalobject"]], "V8Runtime.await()": [[41, "v8runtime-await"]], "V8Runtime.lowMemoryNotification()": [[41, "v8runtime-lowmemorynotification"]], "V8ValueArray": [[52, "v8valuearray"]], "V8ValueGlobalObject": [[13, "v8valueglobalobject"]], "V8ValueMap": [[52, "v8valuemap"]], "V8ValueSet": [[52, "v8valueset"]], "Visual Studio Community 2022 (Optional)": [[8, "visual-studio-community-2022-optional"]], "What If Node.js Hangs during Close()?": [[69, "what-if-node-js-hangs-during-close"]], "What does Lock Mean in Javet?": [[40, "what-does-lock-mean-in-javet"]], "What is the Motivation?": [[11, "what-is-the-motivation"]], "What is the Source Code of a Function in V8?": [[53, "what-is-the-source-code-of-a-function-in-v8"]], "When does the Config Take Effect?": [[31, "when-does-the-config-take-effect"]], "Where are ES6 API in V8 Mode?": [[15, "where-are-es6-api-in-v8-mode"]], "Where are the Examples?": [[16, "where-are-the-examples"]], "Why Error Codes?": [[47, "why-error-codes"]], "Why Migrate from J2V8 to Javet?": [[83, "why-migrate-from-j2v8-to-javet"]], "Why Node.js Crashes When being Closed?": [[27, "why-node-js-crashes-when-being-closed"]], "Why Patching Node.js?": [[1, "why-patching-node-js"]], "Why Patching V8?": [[1, "why-patching-v8"]], "Why Windows and Linux only?": [[9, "why-windows-and-linux-only"]], "Why is Changing a User Defined JavaScript Function Important?": [[53, "why-is-changing-a-user-defined-javascript-function-important"]], "Why is the Inspector Disabled in Node.js Mode?": [[17, "why-is-the-inspector-disabled-in-node-js-mode"]], "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"]], "Windows": [[75, "windows"]], "Windows Environment": [[0, "windows-environment"], [2, "windows-environment"]], "With Engine Pool": [[50, "with-engine-pool"]], "Without Engine Pool": [[50, "without-engine-pool"]], "bind()": [[53, "bind"]], "boolean bindFunction(String functionName, JavetCallbackContext javetCallbackContext)": [[53, "boolean-bindfunction-string-functionname-javetcallbackcontext-javetcallbackcontext"]], "boolean bindFunction(String functionName, String codeString)": [[53, "boolean-bindfunction-string-functionname-string-codestring"]], "boolean set(String key, V8Value value)": [[53, "boolean-set-string-key-v8value-value"]], "decimal.js": [[79, "decimal-js"]], "int": [[29, "int"]], "int Array": [[29, "int-array"]], "registerJavaMethod() \u27f6 @V8Function": [[83, "registerjavamethod-v8function"]], "require() vs. import()": [[4, "require-vs-import"]]}, "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/can_native_image_be_supported", "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/can_node_js_event_loop_be_skipped", "faq/troubleshooting/index", "faq/troubleshooting/sigsegv_at_createv8runtime_in_v8_mode_on_aws", "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/converters/proxy_plugins", "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/snapshot", "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", "release_notes/release_notes_3_1", "tutorial/advanced/access_the_whole_jvm", "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"], "envversion": {"sphinx": 61, "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}, "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/can_native_image_be_supported.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/can_node_js_event_loop_be_skipped.rst", "faq/troubleshooting/index.rst", "faq/troubleshooting/sigsegv_at_createv8runtime_in_v8_mode_on_aws.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/converters/proxy_plugins.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/snapshot.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", "release_notes/release_notes_3_1.rst", "tutorial/advanced/access_the_whole_jvm.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"], "indexentries": {}, "objects": {}, "objnames": {}, "objtypes": {}, "terms": {"": [0, 2, 4, 6, 9, 11, 26, 27, 30, 34, 35, 40, 41, 42, 43, 44, 47, 53, 54, 66, 67, 69, 71, 78, 83], "0": [1, 3, 9, 18, 24, 26, 28, 29, 30, 32, 34, 35, 41, 42, 43, 44, 50, 52, 53, 55, 66, 67, 69, 71, 75, 76, 79, 83], "00000000": 3, "0000000000000000": 42, "00000001": 42, "0000000180108724": 42, "0000000180108ab5": 42, "000000018014f248": 42, "000000018014fa68": 42, "0000000180154818": 42, "0000000180154a40": 42, "003": 9, "009": 9, "01": [58, 59, 60, 61, 64], "019": 9, "02": [56, 57, 60, 61, 64], "03": [60, 61, 62, 65], "032": 6, "04": [0, 2, 18, 56, 57, 60, 62, 64, 65, 75], "05": [58, 60, 63, 65], "06": [57, 58, 60, 63, 65], "07": [58, 60, 62, 63, 65], "08": [58, 60, 63, 65], "09": [58, 59, 61, 63, 64, 65], "0_282": 67, "1": [0, 4, 6, 9, 13, 18, 28, 29, 30, 32, 34, 35, 39, 42, 43, 44, 50, 52, 53, 55, 66, 67, 70, 71, 75, 76, 77, 78, 79, 83], "10": [0, 2, 6, 34, 41, 50, 59, 64, 65, 67, 75], "1000": [24, 69], "10000": 50, "100000": 67, "100000000": 3, "100_000": 67, "101": 47, "102": 47, "103": 47, "10308": 41, "1038": 41, "104": 47, "105": [6, 47], "106": 59, "10700k": [6, 9], "1095": 6, "11": [0, 30, 59, 60, 61, 64, 65], "110": 9, "1134": 6, "115": 60, "11gb": 2, "12": [59, 61, 62, 63, 65], "120gb": 2, "123": [34, 53, 66, 70, 76, 79], "12345": 29, "12346": 29, "124": [60, 76], "127": [3, 41], "128": 41, "128gb": 67, "13": [6, 59, 61, 62, 65], "132": 60, "139": 60, "14": [8, 9, 34, 59, 60, 61, 62, 63, 64, 65, 75], "1411": 6, "143": 6, "146": [58, 59], "15": [28, 58, 60, 61, 62, 64, 65], "150": 63, "154": 60, "16": [0, 6, 18, 28, 41, 57, 58, 60, 61, 62, 63, 64, 65, 75], "1660": 6, "168": 61, "169": 64, "17": [8, 58, 60, 63, 64], "172": [59, 64], "174": 60, "175": 70, "177": 60, "18": [18, 59, 63, 75], "180": 59, "1801363d8": 42, "180166610": 42, "183": 63, "189": 63, "19": [58, 59], "193": 61, "194": 61, "19464m": 67, "1l": 29, "1m": 43, "1n": 35, "2": [6, 8, 9, 13, 18, 28, 29, 32, 34, 35, 39, 42, 43, 44, 50, 52, 55, 66, 70, 73, 75, 76, 77, 78, 79, 83], "20": [0, 2, 27, 57, 59, 60, 61, 62, 63, 64, 75], "200": 76, "201": 47, "2015": [9, 42], "2016": 9, "2017": 9, "2019": [9, 62], "2020": [9, 11], "2021": [56, 57, 58, 59, 83], "2022": [0, 5, 60, 61, 62, 65], "2023": [6, 26, 61, 62, 63, 64], "2024": [64, 65], "2048": 6, "21": [6, 40, 58, 64, 75], "213": 9, "214": 62, "2147483647": 41, "2147483648": 41, "218": 60, "219": 65, "22": [59, 64, 75], "221": 6, "224": [28, 65], "226": 61, "227": 65, "228": 65, "22h2": 67, "23": [42, 57, 60, 61, 63, 75, 79], "230": 58, "234567": 41, "23456789012345": 41, "24": [0, 57, 62, 64, 75], "244": 62, "25": [0, 59, 61, 64, 75], "253": 6, "254": 65, "255": [9, 41, 56, 70], "256": 41, "257": 57, "26": [26, 59, 60, 64, 65], "262": 53, "263": [6, 41], "264": 41, "267": 64, "269": 58, "274": 9, "2761": 6, "277": 62, "279": 6, "28": [43, 58, 61, 64, 65], "281": 64, "285": 64, "29": [58, 75], "298k": 43, "299": 9, "2l": 29, "2n": 35, "3": [0, 1, 5, 6, 9, 17, 18, 27, 28, 29, 34, 35, 39, 42, 43, 52, 53, 55, 66, 73, 75, 76, 77], "30": [0, 61], "301": 47, "302": 47, "305": 6, "31": 58, "32": [3, 41], "324": 41, "32767": 41, "32768": 41, "338": 9, "34": [42, 75, 79], "345": 58, "35": 9, "363": 6, "367": 6, "36893488147419103232": 35, "370": 67, "38": 41, "384": 41, "3rd": [49, 53], "4": [0, 6, 9, 28, 34, 35, 39, 41, 42, 52, 53, 55, 66, 69, 75, 76, 77], "401": 47, "402": 47, "403": 47, "404": 47, "405": 47, "406": 47, "407": [47, 58], "408": [47, 63], "410": 6, "4128": 6, "4198": 6, "4243": 42, "424b": 42, "428": 9, "4294967295": 41, "439": 63, "45": 79, "458": 6, "4639": 6, "472": 6, "484": 6, "4975": 6, "4g": 2, "5": [0, 2, 3, 26, 27, 34, 41, 42, 43, 55, 66, 69, 75, 76, 77], "50": 40, "500": 69, "501": 47, "502": 47, "503": [47, 58], "508": 6, "51": 6, "512": [6, 41], "5214m": 67, "546": 6, "55": 6, "571": 9, "586": 6, "59": 6, "5950x": 67, "5gb": 2, "6": [3, 8, 9, 42, 55, 61, 64, 66, 69, 75, 76, 77], "60": 2, "601": 47, "602": [47, 58], "603": [47, 58], "6072": 42, "6096": 42, "64": [41, 58], "647": 6, "65": 6, "65535": 41, "65n": 35, "660": 6, "672": 6, "688": 9, "694": 6, "7": [3, 6, 18, 28, 41, 55, 66, 69, 75, 76, 77, 83], "70": 18, "701": 47, "702": 47, "703": 47, "72": 6, "745k": 43, "748": 6, "751": 6, "76": 76, "768": 41, "78": 6, "796": 6, "8": [0, 3, 5, 6, 9, 18, 30, 41, 55, 59, 62, 66, 67, 69, 75], "80": 18, "801": 47, "802": 47, "803": 47, "804": 47, "805": [47, 58], "806": [47, 59], "807": 47, "808": 47, "814": 6, "82": 27, "84": 6, "846": 6, "86": 6, "8991": 69, "9": [0, 9, 18, 55, 65, 66, 69], "90": 18, "901": [47, 60], "9229": 3, "968": 6, "98": 6, "A": [1, 4, 20, 25, 26, 30, 42, 43, 53], "And": [6, 9, 28, 69], "As": [2, 3, 4, 13, 26, 29, 32, 34, 39, 41, 49, 53, 66, 80], "At": [9, 11, 53], "Be": [3, 34, 44, 54, 66], "But": [17, 39, 40, 41, 42, 53, 54, 80], "By": [22, 24, 39, 41, 76], "For": [8, 13, 34, 42, 50, 53], "If": [1, 2, 13, 27, 28, 31, 32, 33, 34, 41, 42, 43, 44, 50, 53, 76, 77, 83], "In": [3, 4, 6, 13, 17, 24, 27, 29, 31, 34, 39, 40, 41, 42, 44, 50, 53, 54, 67, 69, 83], "It": [0, 2, 4, 6, 9, 13, 17, 22, 28, 30, 31, 34, 35, 40, 41, 42, 43, 44, 50, 53, 72, 77, 78, 83], "Its": [9, 41, 43, 83], "NOT": [4, 40, 53], "No": [4, 9, 30, 31, 39, 42, 50, 52, 53, 69], "Not": [4, 53, 75], "Of": [2, 34, 41, 42, 53, 66, 83], "One": [4, 31], "Or": 2, "That": [2, 4, 6, 9, 26, 27, 31, 39, 41, 42, 49, 50, 53, 66, 83], "The": [0, 1, 2, 3, 4, 6, 7, 9, 13, 16, 17, 21, 26, 27, 29, 30, 31, 34, 35, 39, 40, 41, 42, 43, 47, 50, 53, 54, 66, 67, 69, 70, 75, 76, 77, 78, 83], "Then": 30, "There": [4, 9, 12, 13, 18, 29, 30, 31, 35, 39, 41, 42, 43, 47, 50, 53, 66, 67, 78], "To": [1, 3, 9, 22, 31, 39, 46, 70], "With": [9, 13, 42, 67], "__dirnam": [42, 65], "__filenam": [42, 65], "_zn4nodel23thread_local_modpending": 1, "a123": 34, "aar": 1, "aarch64": 75, "ab": 29, "abandon": 83, "abc": [34, 39, 53, 66, 70], "abc123": 66, "abi": [60, 62, 75], "abl": [11, 13, 22, 27, 31, 42, 43, 50, 53, 69, 83], "about": [30, 40], "abov": 53, "absent": [15, 40, 53], "accept": [3, 17, 31, 49, 53, 54, 58], "access": [1, 13, 34, 39, 41, 47, 53, 68, 81], "accid": 29, "accord": 6, "accordingli": 53, "achiev": [4, 9, 34, 40, 41, 53], "acquir": [44, 47, 83], "across": 41, "activ": [9, 27, 39, 42, 75], "activebydefault": 75, "actual": [2, 3, 4, 6, 9, 13, 31, 40, 41, 42, 47, 53, 66, 67, 69], "actualparameters": 47, "actualparametertyp": 47, "ad": [6, 9, 34, 40, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65], "add": [3, 18, 26, 29, 30, 32, 34, 41, 42, 43, 50, 52, 53, 54, 66, 71, 76, 79, 83], "addgcepiloguecallback": 59, "addgcprologuecallback": 59, "addit": [6, 12, 18, 32, 40, 53, 75, 83], "address": [3, 27, 41, 42, 44, 53, 64, 69], "adjust": 59, "admit": 9, "advanc": [18, 28, 54, 81], "advantag": 42, "affect": 41, "aforement": 41, "after": [1, 3, 9, 32, 34, 39, 42, 43, 44, 50, 53, 54, 67, 83], "afterward": [50, 54], "ag": 9, "again": [17, 34, 39], "against": [1, 53], "agent": 17, "agnost": 59, "aim": [15, 42, 79, 83], "air": 9, "aka": 3, "algorithm": [6, 59], "alia": 34, "alien": 32, "align": 4, "all": [0, 1, 3, 4, 9, 12, 27, 29, 30, 32, 34, 35, 39, 41, 42, 43, 50, 53, 57, 59, 66, 67, 69, 71, 83], "alloc": [4, 40, 53, 59], "allow": [4, 6, 9, 22, 29, 30, 31, 32, 34, 35, 39, 42, 49, 53, 54, 57, 58, 59, 63, 66, 69, 70, 71, 72, 76, 83], "allowev": 57, "allowonli": 34, "almost": [4, 9, 34, 41, 53, 69], "alreadi": [34, 47, 54], "also": [1, 2, 4, 6, 9, 11, 13, 31, 33, 34, 39, 40, 41, 42, 49, 53, 54, 69, 83], "alter": 34, "altern": [18, 32], "alwai": [4, 30, 44, 53], "am": [9, 34, 53], "amd": [42, 67], "among": [3, 6, 40, 53, 63, 83], "amount": [6, 22, 83], "an": [3, 4, 6, 9, 11, 13, 15, 26, 28, 29, 31, 34, 35, 39, 40, 41, 42, 43, 44, 49, 50, 53, 54, 66, 71, 76, 77, 78], "analysi": [28, 42], "analyz": [41, 42], "andoird": 60, "android": [9, 28, 39, 60, 61, 62, 65, 66], "android_ndk_hom": [0, 1], "android_sdk_hom": 0, "ani": [1, 9, 31, 32, 33, 34, 42, 43, 47, 49, 50, 53, 83], "annoi": 29, "annot": [34, 53, 58, 66], "annotationbasedcallbackreceiv": 53, "anonym": [53, 66], "anoth": [53, 66, 79], "anywher": 39, "apach": 28, "apart": 42, "api": [3, 4, 9, 11, 13, 14, 20, 28, 30, 31, 34, 36, 39, 40, 41, 42, 49, 53, 54, 56, 57, 59, 63, 66, 67, 69, 71, 79, 83], "app": 69, "appear": [3, 53], "append": [1, 34, 66, 70], "appli": [4, 26, 31, 34, 39, 42, 44, 50, 53, 60, 64, 69], "applic": [3, 4, 6, 13, 17, 26, 27, 30, 31, 32, 34, 39, 40, 41, 42, 43, 50, 53, 54, 66, 69, 70, 72, 76, 77, 83], "approach": [42, 53], "apt": [18, 42], "ar": [0, 1, 2, 3, 4, 6, 8, 9, 13, 14, 17, 18, 20, 24, 27, 28, 29, 30, 31, 32, 33, 34, 35, 39, 40, 41, 42, 43, 44, 47, 50, 53, 54, 56, 57, 58, 66, 67, 69, 70, 71, 75, 76, 78, 83], "arbitrari": [3, 4, 13, 31, 32, 34, 66, 70, 83], "arbitrarymethod": 53, "arch": [1, 28, 43, 59, 75], "architectur": [5, 9], "area": 41, "arg": [1, 26, 30, 53, 69], "argument": [30, 32, 43, 83], "arm": [1, 28, 59, 75], "arm64": [28, 62, 64, 75], "armeabi": 1, "around": [9, 42], "arrai": [31, 32, 34, 35, 41, 52, 53, 56, 65], "arraylist": [26, 29, 32, 71], "arrayutil": 64, "articl": 4, "artifact": 2, "artifactid": [28, 34, 75], "asarrai": 64, "asboolean": 64, "asdoubl": 64, "asint": [64, 67], "ask": 83, "aslist": [29, 53], "aslong": 64, "assembli": 43, "assert": 71, "assertarrayequ": [29, 34], "assertequ": [29, 32, 34, 35, 42, 43, 50, 52, 53], "assertfals": [29, 34, 35, 42, 50, 52, 53], "assertinstanceof": 50, "assertnotnul": [32, 34, 43, 52], "assertsam": [34, 35], "assertthrow": 34, "asserttru": [29, 34, 35, 42, 43, 50, 52, 53, 54], "assign": [42, 53, 58, 70], "asstr": 64, "assum": [39, 42, 53], "ast": [13, 28], "async": [4, 6, 27, 54], "asynchron": [6, 41], "atomic_bool": 17, "atomicboolean": 69, "atomicinteg": 52, "attack": [31, 50], "attempt": 22, "attent": 83, "aussi": 34, "authent": 3, "author": 3, "auto": [3, 18, 39, 57], "autoclos": 34, "autom": [30, 41], "automat": [4, 7, 31, 34, 39, 40, 42, 47, 62, 73, 76, 83], "autosendgcnotif": 57, "avail": [2, 3, 4, 21, 35, 39, 43, 47, 53, 66, 78], "avoid": [4, 13, 22, 31, 34, 39, 44, 64, 66], "aw": [20, 25, 41], "awai": 59, "await": [4, 6, 44, 53, 54, 57, 61, 69], "awaitmod": 69, "awar": [6, 41, 44], "awesom": [28, 78], "awt": 70, "b": [3, 29, 31, 34, 35, 42, 43, 53, 66, 67, 70, 71, 77, 79], "back": [13, 31, 34, 41, 42, 53, 55], "background": [20, 28, 54], "backup": 42, "bad": [4, 9], "base": [2, 6, 7, 26, 34, 41, 53, 58, 60, 61, 67, 83], "base_all_in_on": 2, "base_gradl": 2, "base_jvm": 2, "base_nod": 2, "base_v8": 2, "basejavetconsoleinterceptor": 64, "basejavetreflectionproxyhandl": 64, "bases": 2, "basic": [15, 28, 33, 35, 53, 72, 79, 81, 83], "bat": 1, "batchget": 63, "bean": 80, "beauti": [4, 31, 53], "becaus": [3, 4, 6, 8, 9, 17, 27, 28, 29, 30, 31, 32, 34, 39, 40, 41, 44, 47, 53, 54, 66, 67, 72, 78, 79, 83], "been": [2, 8, 9, 27, 39, 53, 83], "befor": [3, 13, 24, 26, 27, 31, 39, 41, 42, 50, 66, 69], "begin": 4, "behav": 53, "behavior": [31, 34, 41, 44, 53, 65], "behind": [4, 6, 11, 13, 27, 66, 71], "being": [20, 24, 25, 34, 41, 42, 50, 53], "belong": 53, "below": [32, 53], "benchmark": 5, "besid": [29, 53], "best": [4, 16, 45], "better": [3, 4, 6, 39, 40, 53, 64, 67], "between": [4, 6, 9, 28, 31, 32, 41, 44, 53, 57, 67, 70], "beyond": 4, "bfals": 29, "bi": [31, 71], "biconsum": 52, "bien": 53, "bigdecim": 79, "bigint": [28, 33, 35, 41, 56], "bigint32arrai": 32, "bigint64arrai": [32, 41], "biginteg": [33, 35], "biguint64arrai": 41, "bin": [1, 18], "binari": [41, 47, 62], "binarytre": 6, "bind": [6, 34, 42, 54, 57, 71, 76, 83], "bindfunct": [57, 63], "bindingcontextstor": 64, "bindproperti": [57, 63], "bit": [13, 32, 41, 42], "black": 6, "blank": 53, "blob": 43, "block": [24, 31, 40, 41, 47, 50, 53, 73], "blockonli": 34, "blogspot": 28, "bodi": [53, 67, 69], "boolean": [31, 32, 33, 35, 39, 43], "borrow": [41, 53], "both": [4, 6, 31, 39, 41, 43, 47, 54, 58, 66, 78, 83], "bother": 42, "bound": 42, "boundari": 4, "box": [6, 42], "brand": 4, "break": [9, 31, 42, 53, 54, 67, 77], "breakpoint": 3, "brew": 0, "bridg": [31, 59], "bring": [4, 31, 39], "broadcast": 41, "broken": [1, 9, 26, 41, 53], "browser": [3, 44], "btrue": 29, "buddi": [34, 66], "buffer": [4, 41], "bug": [55, 57, 59, 60, 61, 62, 63, 83], "bui": 9, "build": [3, 4, 5, 8, 11, 12, 17, 18, 22, 26, 28, 42, 43, 53, 57, 58, 62, 64, 75], "build_all_in_on": 2, "build_artifact": 2, "builder": 13, "built": [0, 2, 3, 6, 7, 29, 32, 41, 43, 47, 50, 53, 54, 57, 58, 62, 65, 66, 67, 83], "bundl": 8, "busi": [6, 59, 83], "bypass": [39, 53], "byte": [4, 32, 33, 34, 35, 41, 43, 53, 66], "bytebuddi": [34, 61], "bytebuff": [41, 60], "c": [1, 34, 42, 53, 60, 61, 62, 67, 71], "cach": [42, 56, 60, 61], "cacheddata": 61, "calcul": [4, 53], "call": [4, 6, 9, 13, 17, 24, 26, 27, 30, 31, 34, 39, 40, 41, 42, 44, 50, 54, 57, 66, 67, 69, 70, 76, 83], "callabl": 34, "callasconstructor": [53, 56, 79], "callback": [3, 27, 41, 42, 47, 53, 57, 58, 59, 60, 62, 63, 69], "callbackcontextcount": 47, "callbackinjectionfailur": 47, "callbackmethodfailur": 47, "callbackregistrationfailur": 47, "callbacksignatureparametersizemismatch": 47, "callbacksignatureparametertypemismatch": 47, "callbacktyp": 47, "callbacktypenotsupport": [47, 63], "callbackunknownfailur": 47, "callbackunregistrationfailur": 47, "caller": [53, 54], "callobject": 53, "callprimit": 53, "callvoid": [53, 69], "can": [1, 2, 3, 4, 6, 13, 14, 19, 20, 25, 27, 32, 34, 35, 41, 42, 43, 44, 54, 66, 69, 70, 78, 79, 80, 83], "canaccess": 30, "candiscardcompil": 61, "canexecut": 34, "cannot": [21, 31, 40, 41, 42, 43], "canread": [34, 79], "canwrit": 34, "caoccao": [2, 6, 26, 28, 41, 42, 49, 75], "capabl": [35, 42, 53, 66, 67], "capac": 59, "captur": [43, 77], "care": [3, 33, 34, 40, 42, 44, 54, 66], "carri": [32, 83], "case": [4, 6, 7, 9, 16, 24, 31, 33, 39, 40, 41, 42, 53, 54, 56, 83], "cast": 59, "catalina": [0, 75], "catch": [26, 30, 50, 53, 54, 69, 77], "categor": 41, "caus": [9, 21, 22, 24, 26, 39, 50, 53, 59, 83], "cd": [1, 2, 42], "cdt": [5, 77], "cdtshell": 64, "cent": 75, "cento": 60, "central": [2, 8], "ceo": 30, "certain": [1, 3, 4, 13, 43, 53, 54, 58], "cfo": 30, "chain": [18, 41], "challeng": [4, 9, 13, 31], "chanc": [9, 41], "chang": [2, 17, 26, 31, 32, 40, 42, 47, 58, 59, 63, 64, 70, 76], "channel": 28, "chao": 40, "char": [32, 33, 35, 53], "charact": [33, 35], "characterist": 42, "charm": 53, "chart": 54, "cheap": 31, "cheaper": 4, "check": [13, 40, 42, 53, 58, 65, 83], "check_eq": 17, "checkout": 1, "checkreturnvalu": 57, "childjsonnod": 67, "choic": [18, 28], "choos": [6, 27, 53], "chrome": [4, 5, 17, 20, 25, 28, 43, 56], "chromedevtool": 3, "circular": [30, 47, 58], "clamp": 41, "class": [26, 30, 32, 42, 49, 50, 53, 66, 67, 69, 76, 80], "classdescriptorstor": 64, "classload": [4, 83], "classpath": 80, "clean": [59, 66], "clear": 64, "cli": 42, "click": 3, "clone": [1, 2, 61], "close": [4, 9, 13, 17, 20, 24, 25, 34, 39, 41, 42, 44, 47, 50, 53, 57, 58, 62, 64, 66, 71, 72], "closur": 53, "cmake": [0, 1, 9], "cmakelist": 9, "cmd": [1, 42], "co": 4, "code": [1, 3, 4, 6, 9, 13, 17, 26, 30, 31, 32, 35, 40, 41, 42, 43, 44, 48, 50, 54, 58, 59, 63, 66, 67, 70, 71, 72, 73, 76, 77, 79, 83], "codefil": 69, "codestr": [24, 34, 42, 56], "collect": [27, 29, 32, 39, 51, 56], "collectionutil": 64, "collector": [34, 41, 66], "color": 70, "com": [2, 6, 26, 28, 41, 42, 49, 75], "combin": 53, "come": [0, 4, 6, 40, 42], "command": [1, 43, 77], "commit": [18, 26, 75], "common": [13, 18], "commonj": 42, "commun": [0, 3, 5, 9, 17, 28], "compar": [4, 7, 40], "comparison": [4, 5, 9, 28], "compat": [42, 59, 64], "compel": 11, "compil": [1, 4, 6, 34, 42, 43, 47, 53, 64, 66, 70, 83], "compilationfailur": 47, "compilemodul": 42, "compilev8modul": [42, 83], "compilev8valuefunct": 61, "complement": 41, "complet": [3, 4, 7, 12, 32, 34, 41, 42, 44, 50, 53, 58, 59, 69, 70, 75, 83], "complic": [32, 42], "compress": 0, "compromis": 28, "con": 32, "concept": [4, 13, 54], "concern": 6, "concurr": 40, "condit": [4, 32, 40, 41, 65], "config": [18, 34, 49], "configur": 1, "configurationproperti": 80, "conflict": [40, 47], "conform": 53, "connect": [2, 3, 4, 72], "consid": [41, 53, 67], "consider": [6, 18, 31, 50, 75], "consist": 83, "consol": [3, 4, 24, 30, 53, 54, 66, 67, 69, 72, 73, 76, 77], "const": [34, 42, 43, 52, 53, 67, 69, 70, 71, 79], "constant": 42, "constantli": 3, "construct": [8, 53, 58], "constructor": [32, 34, 35, 59, 66, 79], "consum": [26, 52], "contact": [0, 1, 9, 17, 18, 22, 55, 75, 83], "contain": [30, 34, 35, 42, 44, 53], "containskei": [34, 35], "containsmodul": 42, "content": [41, 54, 64], "context": [3, 6, 13, 27, 40, 41, 42, 44, 47, 62], "continu": 47, "contribut": 9, "contributor": 2, "control": [4, 27, 31, 35, 42, 50, 53], "conveni": 31, "convent": 59, "convers": [13, 29, 31, 35, 61, 64, 71], "convert": [28, 35, 36, 47, 53, 57, 59, 60, 64, 65, 66, 67, 68, 70, 81, 83], "convertercircularstructur": 47, "converterfailur": 47, "convertersymbolnotbuiltin": 47, "cook": 43, "cooki": 69, "copi": [4, 34, 39, 41], "copycontextfrom": 61, "copyscopeinfofrom": [53, 61], "core": [4, 39, 40, 42, 44, 58], "coro": 6, "correspond": [1, 2, 4, 27, 35, 41, 42, 44, 53, 66], "corretto": 67, "corrupt": 27, "cost": 11, "could": [6, 9], "couldn": [9, 83], "count": [4, 24, 47, 50, 52, 66, 69], "coupl": 66, "cours": [2, 34, 41, 42, 53, 66, 83], "cover": [13, 30, 32, 41, 83], "cpp": [1, 43], "cpu": [9, 26, 28, 67], "cpuarch": 75, "crash": [17, 20, 22, 25, 39, 40, 53, 59, 62, 64], "creat": [3, 17, 22, 26, 29, 32, 34, 40, 41, 42, 47, 49, 50, 53, 54, 58, 63, 65, 66, 67, 69, 70, 71, 72, 73, 76, 77, 80, 83], "createsnapshot": [43, 64], "createtargetobject": 64, "createv8modul": [42, 64], "createv8runtim": [20, 24, 25, 28, 30, 42, 43, 50, 66, 67, 69, 73, 76, 77, 78], "createv8valuearrai": 53, "createv8valuearraybuff": 60, "createv8valueboolean": 67, "createv8valuedoubl": 57, "createv8valueerror": 64, "createv8valuefunct": [42, 53], "createv8valueinteg": [53, 67], "createv8valueobject": [30, 41, 42, 53, 76], "createv8valuepromis": 54, "createv8valueproxi": 58, "createv8valuestr": [53, 57], "createv8valuestringobject": 64, "createv8valuesymbol": 58, "createv8valueundefin": 54, "createv8valuezoneddatetim": 57, "creation": [6, 41, 43, 72], "critic": 55, "cross": [5, 83], "cruel": 9, "crypto": 65, "current": [3, 4, 9, 47, 53, 75], "currentthreadid": 47, "currenttimemilli": 67, "curv": 41, "custom": [0, 4, 5, 31, 42, 43, 44, 53, 57, 58, 60], "customfrommap": 32, "customobject": 32, "customtomap": 32, "cycl": [26, 41], "d": [34, 42, 70], "daemon": [2, 41, 50], "daemonthread": 50, "dai": [2, 44], "danger": 34, "dangl": [44, 62], "data": [0, 4, 31, 41, 42, 43, 53, 56, 61, 66], "databas": 72, "dataview": 41, "date": [28, 33, 35, 42, 56], "db": 4, "dcmake_android_arch": 1, "dcmake_android_ndk": 1, "dead": 50, "deal": [6, 30, 32, 41, 53], "debug": [0, 4, 5, 17, 20, 25, 28, 49, 53], "debugg": [3, 53], "debuggerid": 3, "decent": [3, 6, 9, 52, 54], "decim": 42, "decimaljsfil": 79, "decis": 41, "declar": [53, 80, 83], "decor": [13, 53, 58, 76, 83], "dedic": [4, 41, 44, 69, 83], "deepli": 9, "def": [34, 53, 69], "default": [3, 4, 22, 24, 26, 31, 32, 34, 35, 39, 41, 42, 50, 53, 65, 70, 76, 78], "deficit": 53, "defin": [4, 31, 34], "definit": 4, "delai": 42, "delet": [4, 29, 34, 35, 52, 53, 66, 70, 76], "deleteglobalref": 41, "deliv": 83, "delta": 76, "demonstr": 3, "denable_i18n": 1, "deni": 47, "depend": [2, 4, 6, 9, 34, 42, 43, 49, 53, 80], "deploi": [4, 58, 66], "deploy": 43, "depot": 0, "depot_tools_hom": [0, 1], "depot_tools_win_toolchain": 1, "deprec": [56, 57], "depth": [30, 31, 47, 58], "deriv": 35, "describ": 53, "descript": [0, 34, 41], "design": [5, 7, 16, 17, 28, 32, 34, 39, 40, 42, 53, 69, 78, 83], "desper": 0, "despit": 53, "destroi": 41, "detail": [3, 4, 11, 17, 22, 23, 40, 41, 50, 53, 54, 66, 67, 70, 71, 72, 73, 76, 77, 78, 79, 83], "detect": [5, 30, 31, 47, 53, 58, 59], "determin": [41, 53, 58], "dev": [1, 6], "develop": [0, 17, 20, 23, 28, 43, 47, 54, 56, 67, 83], "devic": [9, 28], "devtool": [3, 20, 25, 28], "diagnos": 3, "diagram": [4, 53], "didn": 9, "differ": [6, 9, 13, 32, 42, 44, 53, 54, 67], "differenti": 31, "difficulti": 43, "digit": 41, "direct": 43, "direction": [31, 71], "directli": [3, 28, 34, 39, 41, 42, 53, 67, 70, 83], "directori": [0, 4, 42, 79], "directory_entry_delay_import": 42, "disabl": [1, 3, 13, 14, 20, 26, 34, 41, 43, 44, 47, 50, 54, 61], "disabledfunct": 53, "disabledfunctionset": 53, "disabledproperti": 53, "disablegcnotif": 57, "disableindebugmod": 57, "discard": 53, "discardcompil": 61, "discord": [28, 83], "dispos": 66, "distribut": [18, 26, 60, 64, 75], "djavet": 39, "dll": [1, 20, 25, 42], "dm": 2, "dnode_dir": 1, "do": [7, 9, 13, 23, 27, 28, 40, 41, 42, 44, 50, 53, 54, 71], "doc": [3, 6, 42, 57, 59], "docker": [0, 3, 5, 9], "dockerfil": [2, 58, 62], "document": [39, 53, 58], "doe": [4, 17, 26, 27, 39, 41, 50, 53, 83], "doesn": [0, 3, 4, 9, 32, 34, 39, 40, 41, 42, 47, 49, 50, 53, 80, 83], "don": [4, 9, 17, 28, 34, 42, 43, 49, 78, 80, 83], "donat": [9, 28], "done": [3, 83], "door": [66, 69], "doubl": [32, 33, 35, 41, 53], "down": [6, 83], "downgrad": 64, "download": [12, 18, 42], "dr": 9, "drag": 42, "drain": [24, 31, 41], "drain_the_task_queu": 69, "dramat": [6, 53], "drawback": [6, 42, 67], "drive": [18, 42], "drop": [8, 9, 42, 53], "dsl": [8, 34], "due": 54, "dump": [4, 40, 44, 58, 59], "dumpbin": 42, "duplic": 13, "dure": [4, 26, 27, 31, 39, 41, 42, 43, 53, 57, 83], "dv8_dir": 1, "dy": 11, "dylib": 1, "dynam": [20, 25, 28, 39, 43, 53, 57, 64], "dynamicclass": [34, 66], "e": [4, 6, 13, 15, 24, 27, 29, 30, 31, 39, 41, 42, 50, 53, 54, 66, 67, 69, 76, 78, 79, 83], "each": [4, 41, 50, 53, 78, 83], "earli": [9, 44], "earlier": 42, "easi": [9, 13, 28, 30, 53, 56, 67, 72, 77], "easier": 32, "easili": [9, 31, 35, 41, 50, 80], "echo": 53, "eclips": 9, "ecma": 53, "ecmascript": [9, 42], "ecosystem": [4, 78], "edigit": 6, "edit": [3, 53], "effect": [13, 39, 41, 42, 69], "effici": [2, 16, 58], "effort": [18, 50, 75], "eg": 18, "eight": 28, "either": [3, 4, 6, 7, 42, 53], "elaps": 67, "electron": 42, "elegantli": [28, 66, 67], "elimin": 83, "els": [26, 30, 42, 53, 54, 67, 69, 75, 79, 83], "emb": 6, "embed": [3, 4, 6, 9, 22, 28, 43, 44], "embedd": 42, "emit": 57, "empti": 47, "enabl": [1, 2, 3, 6, 13, 17, 22, 34, 41, 43, 53, 54, 57, 58, 65, 66, 70], "enablegcnotif": [41, 57], "enableindebugmod": 57, "end": [11, 34, 41, 44, 50, 53, 73], "endposit": 53, "enforc": [3, 66], "engin": [5, 26, 28, 29, 41, 42, 43, 47, 59, 74, 80, 81], "engineguardcheckintervalmilli": 65, "enginenotavail": [47, 60], "enginepool": 26, "enhanc": [34, 53, 57, 58, 59, 60, 63], "enjoi": 3, "enough": [4, 30, 34], "ensur": [26, 66], "entri": 35, "enum": 26, "environ": [3, 4, 5, 6, 18, 20, 28, 40, 42, 57, 59, 72], "equal": [42, 53, 56, 71, 77, 79], "equival": [41, 43, 53], "err": [26, 77], "err_vm_dynamic_import_callback_miss": 42, "error": [1, 9, 39, 42, 48, 49, 53, 54, 58, 59, 60, 63], "es6": [4, 9, 14, 20, 42], "esm": [42, 65], "especi": [53, 72, 83], "essenti": 18, "est": 53, "etc": [4, 11, 13, 15, 29, 31, 39, 41, 53, 66, 69, 79], "eval": [44, 53], "evalu": [3, 4, 42, 60, 83], "even": [0, 9, 83], "event": [3, 20, 25, 44, 54, 69, 83], "eventu": [6, 41, 66], "everi": [0, 4, 13, 31, 40, 41, 53], "everyth": [13, 66], "everywher": 83, "evolv": 9, "ex": [42, 43], "exampl": [4, 14, 20, 24, 30, 70, 71], "exce": 41, "excel": [4, 9], "except": [26, 30, 34, 40, 41, 42, 44, 49, 50, 53, 57, 59, 60, 67, 83], "excess": 53, "exchang": 17, "excit": 42, "excluded_method": 30, "execut": [1, 3, 4, 6, 12, 26, 34, 42, 43, 44, 47, 50, 52, 53, 54, 66, 67, 72, 73, 77], "executebiginteg": 35, "executeboolean": [34, 35, 66], "executeinteg": [29, 32, 34, 35, 42, 43, 50, 53, 66, 73], "executeobject": [29, 34, 66, 70, 71], "executeprimit": 64, "executestr": [28, 29, 32, 34, 35, 42, 53, 66, 70, 71, 73, 79], "executevoid": [24, 29, 30, 34, 42, 43, 50, 53, 66, 67, 69, 70, 71, 72, 76, 79], "executioncontextcr": 3, "executionfailur": 47, "executiontermin": [47, 50], "executor": 63, "executorservic": 65, "exist": [4, 11, 34, 35, 42, 43, 67, 79], "existingsourcecod": 53, "existssync": 42, "exit": [27, 77], "expect": [9, 26, 41, 47, 53], "expectedparameters": 47, "expectedparametertyp": 47, "experi": [13, 27, 34, 39, 42, 71, 72, 77], "experienc": 13, "explain": 4, "explicit": [4, 29, 83], "explicitli": [27, 34, 39, 41, 44, 72], "explor": 42, "export": [1, 26, 42], "expos": [3, 4, 28, 31, 32, 34, 41, 42, 46, 53, 54, 59, 66, 68, 81, 83], "exposur": [28, 56], "express": [13, 34, 69, 75], "extend": [30, 34, 35, 42, 53], "extens": [15, 53, 72], "extern": [0, 6, 41], "extra": [43, 83], "extract": 31, "extrem": [40, 53], "ey": 44, "f": [2, 4, 42], "face": [1, 4], "fact": [27, 54], "fail": [2, 20, 25, 42, 47, 50, 53, 60, 65], "failedtoreadpath": 47, "failur": [21, 59], "fall": 33, "fals": [1, 17, 29, 31, 34, 39, 41, 42, 53, 66, 69, 70], "famili": 75, "famou": 31, "fanci": 31, "fannkuch": 6, "faq": [5, 28], "far": 9, "fast": 53, "fasta": 6, "faster": [3, 43], "featur": [3, 4, 5, 8, 9, 13, 26, 32, 35, 39, 41, 42, 47, 52, 53, 54, 55, 70, 78, 79, 83], "fedora": 26, "feed": [4, 42], "feel": [3, 42, 43, 53], "fetch": [4, 6, 54], "few": [1, 2, 3, 8, 9, 11, 13, 26, 30, 31, 34, 41, 53, 56, 57, 64, 66, 70, 71, 77], "field": [34, 35], "file": [1, 3, 4, 6, 9, 22, 41, 42, 43, 54, 66, 69, 79], "filecont": 54, "filepath": 54, "fill": 53, "filter": 53, "final": [2, 26, 30, 31, 32, 34, 41, 42, 47, 50, 53, 54, 66, 67], "find": [11, 53, 66], "fine": [17, 28, 31, 35], "first": [1, 3, 39, 41, 42, 53, 56, 83], "firstli": 53, "fix": [9, 11, 21, 29, 41, 42, 50, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65], "flag": [5, 26, 41, 58, 60], "flat": 64, "flavor": [3, 16, 53, 66, 77], "flexibl": [6, 42], "flip": 17, "float": [32, 33, 35, 41, 53], "float32arrai": [32, 41], "float64arrai": [32, 41], "fly": 3, "folder": [1, 44, 69], "folk": [13, 42], "follow": [1, 2, 3, 4, 12, 16, 18, 22, 24, 26, 27, 28, 30, 32, 35, 41, 42, 43, 44, 47, 49, 50, 52, 53, 54, 66, 67, 69, 76, 78], "footprint": 4, "forc": [26, 27, 34, 44, 72], "foreach": [52, 56, 63], "forev": [2, 24, 41], "form": [9, 53], "format": [41, 42, 47, 53], "forward": [9, 42], "found": [21, 42, 47, 79], "fpic": 1, "framework": [13, 80], "free": [3, 4, 13, 32, 40, 41, 42, 53, 57, 72, 83], "freed": 4, "freez": 64, "frequenc": 41, "frequent": 83, "friend": 54, "friendli": [53, 83], "from": [0, 2, 4, 5, 6, 9, 11, 12, 16, 17, 18, 24, 26, 27, 31, 34, 35, 40, 42, 43, 44, 47, 50, 53, 54, 57, 58, 59, 60, 64, 65, 66, 67, 69, 70, 72, 73, 76, 77, 81, 82], "frommap": 32, "frustrat": [0, 9], "fulfil": 54, "full": [9, 26, 44, 53], "fulli": [9, 30], "func": 53, "function": [4, 15, 17, 32, 39, 41, 42, 43, 51, 56, 59, 60, 61, 65, 66, 67, 69, 70, 76, 83], "functioncallbackreceiv": 53, "functioncontext": 53, "functionnam": 56, "fundament": [17, 49, 80], "further": [3, 6, 41], "futur": 9, "g": [4, 6, 13, 15, 18, 24, 27, 29, 31, 39, 41, 42, 53, 54, 66, 67, 69, 70, 76, 78, 79, 83], "gain": 42, "garbag": [27, 34, 39, 41, 66], "gather": 53, "gb": 2, "gc": [34, 39, 66, 67, 72, 76], "gcbeforeengineclos": 57, "gcc": [0, 18, 57, 64], "gcov": 18, "gen": 1, "gener": [6, 30, 34, 41, 43, 47, 53, 58, 67], "generatearraywithconvert": 53, "generatearraywithoutconvert": 53, "genuin": 27, "get": [4, 9, 13, 27, 29, 30, 32, 34, 39, 41, 42, 44, 49, 50, 52, 53, 54, 59, 60, 67, 69, 71, 72, 78, 79, 80, 83], "getabsolutepath": 79, "getandincr": 52, "getargu": 61, "getboolean": 42, "getcacheddata": 61, "getclass": 30, "getconfig": [26, 34, 35, 42, 66, 78], "getcontext": [53, 59], "getconvert": 32, "getdetailedmessag": [59, 64], "getengin": [26, 42, 50, 72, 78], "getentri": 52, "geterror": 50, "geterrortyp": 64, "getexecutor": [24, 28, 29, 30, 32, 34, 35, 42, 43, 50, 52, 53, 54, 66, 67, 69, 70, 71, 72, 73, 76, 77, 79], "getfilecont": 54, "getfilepath": 54, "getglobalobject": [13, 29, 30, 32, 34, 35, 42, 50, 53, 54, 66, 67, 69, 70, 71, 72, 76, 79, 83], "getguard": [50, 65], "gethandl": 58, "getidentityhash": [56, 65], "getinst": [34, 35, 39, 66], "getinteg": [42, 50], "getisolateid": 3, "getjavetenginepoolnod": 80, "getjavetenginepoolv8": 80, "getjoin": 34, "getjsfunctiontyp": [53, 57], "getjsonnod": 67, "getjsscopetyp": 53, "getkei": 52, "getlength": 52, "getlibpath": 39, "getlogg": [42, 49, 79], "getmessag": [64, 77], "getmethod": [30, 53], "getmethodnamefromlambda": [53, 58], "getmethodnamesetfromlambda": [53, 58], "getnam": [30, 32, 76, 80], "getnamespac": 65, "getnodeinst": [24, 28, 30, 41, 69, 73, 78], "getnodemodul": 42, "getobject": [32, 34, 35], "getownpropertydescriptor": 64, "getownpropertynam": [34, 35, 52], "getownpropertynamestr": 61, "getownpropertysymbol": 58, "getparametercount": 30, "getposit": 53, "getpromis": 54, "getproperti": 75, "getprototyp": 58, "getprototypeof": 65, "getproxyplugin": [35, 64], "getresourcenam": 65, "getscopeinfo": 61, "getscriptid": 65, "getscriptsourc": 61, "getsiz": 52, "getsnapshotblob": 64, "getsourcecod": [53, 57], "getstack": 59, "getstr": 79, "getstringvalu": 53, "gettarget": 58, "getter": [32, 34, 53, 58, 59, 76, 83], "getutil": 34, "getv8guarddaemon": 50, "getv8guardqueu": 50, "getv8heapspacestatist": [41, 59, 65], "getv8heapstatist": [41, 59, 65], "getv8inst": [26, 28, 41, 42, 50, 66, 67, 73, 76, 77, 78], "getv8lock": 40, "getv8runtim": [42, 50, 67, 72, 79], "getv8scop": 41, "getv8sharedmemorystatist": [41, 59], "getvalu": [30, 32, 52, 53, 67, 76], "getvers": 58, "git": 2, "github": [3, 6], "give": [29, 31, 41, 50, 53, 66], "given": 29, "glibc": 75, "global": [4, 13, 26, 42, 53, 62, 66, 72, 83], "globalobject": [13, 53], "globalthi": [13, 42, 83], "gn": 1, "go": [34, 42, 55], "goal": 53, "goe": [13, 53], "gone": [9, 27], "good": [4, 28, 41, 76], "googl": [0, 3], "got": [9, 11], "graalj": [28, 34], "graalvm": 12, "gracefulli": 69, "gradl": [0, 1, 2, 5, 9, 34], "grain": [31, 35], "granular": [40, 42], "great": 28, "greater": 50, "groovi": 34, "groupid": [28, 34, 75], "gson": [3, 67], "guard": 50, "guess": 76, "guid": [1, 28, 81], "guido": 9, "gyp": 42, "ha": [0, 2, 4, 6, 8, 9, 13, 17, 30, 32, 34, 39, 41, 42, 49, 50, 52, 53, 54, 57, 67, 83], "hack": [9, 13, 27], "hacki": 17, "had": [9, 11], "hair": 9, "hand": 27, "handi": 54, "handl": [13, 27, 30, 34, 40, 42, 54, 58, 60, 72], "handler": [60, 69], "hang": [24, 50], "happen": [21, 27, 31, 34, 41, 54], "happi": 53, "hard": [0, 9, 54, 83], "harder": 43, "harmoni": 53, "hascontextextensionslot": 53, "hashmap": [32, 71], "hashset": [30, 32, 53], "hasinternaltyp": 58, "hasn": [9, 27, 53], "hasownproperti": 79, "haspendingexcept": 59, "haspendingmessag": 59, "hasscheduledexcept": 59, "have": [2, 9, 17, 26, 28, 30, 32, 34, 35, 41, 42, 43, 53, 54, 79, 83], "haven": 9, "heap": [4, 41, 43], "heapstatist": 47, "heavi": 42, "heavili": [8, 30, 53, 83], "hei": 9, "held": 50, "hell": [49, 80], "hello": [34, 69, 70, 72, 74, 81], "helloworld": 6, "help": [3, 43, 44], "henc": 53, "here": [0, 3, 4, 6, 9, 11, 17, 30, 34, 39, 41, 42, 53, 54, 69, 70, 71], "hide": [4, 9], "hierarchi": 83, "high": [4, 31, 41], "higher": 6, "highlight": 78, "hijack": 69, "hint": [41, 53], "histori": [10, 11, 20, 83], "hit": [27, 50], "hivemq": 28, "hmodul": 42, "hoc": [6, 9, 40, 58], "hold": [34, 41, 54], "home": 0, "host": [3, 4, 22, 39, 42, 66, 67, 69, 73, 76, 77], "hotfix": [66, 83], "hour": [2, 9], "how": [3, 4, 7, 11, 14, 16, 20, 24, 27, 28, 30, 35, 39, 40, 42, 58, 66, 67, 83], "howev": [4, 6, 9, 11, 13, 27, 31, 32, 39, 41, 53, 67, 83], "http": [2, 3, 4, 6, 28, 69], "huge": [6, 22], "hungri": 43, "i": [0, 1, 2, 4, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 18, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 39, 40, 41, 42, 43, 44, 47, 49, 50, 52, 54, 57, 58, 66, 67, 70, 71, 72, 73, 75, 76, 77, 78, 79, 80, 83], "i18n": [0, 1, 20, 25, 47, 60], "i7": [6, 9], "ia32": 1, "icallback": 54, "iclassproxyplugin": [35, 64], "id": [1, 3, 4, 47, 53, 75], "idea": [8, 9, 11, 41], "ident": [29, 42, 53, 76], "identifi": 34, "idl": 41, "idlenotificationdeadlin": [57, 65], "ieee": 41, "ignor": [34, 41, 53, 57], "ijavetanonym": [34, 53, 58, 66], "ijavetanonymous1": 53, "ijavetanonymous2": 53, "ijavetbiindexedconsum": 57, "ijavetclos": [34, 58], "ijavetconsum": 57, "ijavetdirectcal": 63, "ijavetdirectproxyhandl": [63, 64, 65, 67], "ijavetengin": [26, 42, 50, 72, 78, 79], "ijavetengineguard": 56, "ijavetenginepool": [50, 72, 80], "ijavetentityfunct": [31, 32], "ijavetentitymap": [31, 32], "ijavetlibloadinglisten": [39, 59], "ijavetmapp": [32, 58], "ijavetpromiserejectcallback": 54, "ijavetuniconsum": 57, "ijavetuniindexedconsum": 57, "ilisten": 61, "imag": [2, 3, 9, 14, 20], "immedi": [4, 17, 22, 40, 41, 44], "impact": [44, 53], "imper": 83, "implement": [9, 28, 32, 34, 35, 39, 41, 42, 53, 54, 66, 67, 75], "impli": [6, 11, 17, 18, 27, 75, 83], "implicit": [29, 83], "implicitli": [29, 59], "import": [26, 27, 49, 50, 54, 75, 83], "importmoduledynam": 42, "improp": [60, 64], "improv": [5, 9, 40, 41, 43, 59, 63, 64], "includ": [2, 9, 29, 34, 39, 43, 53, 83], "incompat": 40, "inconsist": 83, "inconveni": [31, 39], "incorrect": 53, "increas": [4, 31, 47, 83], "increaseandget": 76, "increment": [30, 67], "inde": [11, 44], "independ": [1, 6], "index": 42, "indic": 53, "ineffici": 31, "inevit": 17, "infinit": [50, 77], "info": [49, 61], "inform": [12, 32], "inherit": 83, "initi": [4, 6, 20, 25, 41, 42, 43, 60, 64, 65, 69, 72, 76], "inject": [31, 34, 39, 41, 43, 47, 53, 54, 58, 65, 66, 67, 83], "inner": [53, 59], "input": [53, 67, 71, 77], "insid": [2, 3, 4, 26, 34, 41, 54], "insight": 4, "inspect": [3, 17, 53], "inspector": [3, 14, 20, 65], "instal": [8, 9, 12, 18, 39, 42, 69, 74, 79, 81], "instanc": [4, 6, 13, 17, 29, 41, 42, 44, 49, 50, 53, 70, 76], "instanceof": [34, 35, 53, 54, 65, 67], "instanti": 66, "instead": [17, 31, 40, 41, 42, 43, 57, 62, 65, 71, 83], "instruct": 2, "int": [26, 30, 32, 33, 34, 35, 43, 50, 53, 67, 69, 76], "int16_t": 41, "int16arrai": [32, 41], "int32_t": 41, "int32arrai": [32, 41], "int64_t": 41, "int64arrai": 32, "int8_t": 41, "int8arrai": [32, 41], "intarrai": [29, 35], "integ": [26, 32, 33, 34, 35, 41, 52, 53, 69], "integerlist": 29, "integr": [3, 9, 28, 49, 56, 74, 81], "intellij": [5, 9], "intend": [9, 13], "interact": [3, 4, 28, 30, 57, 66, 68, 77, 81], "intercept": [3, 5, 34, 41, 42, 56, 58, 74, 81], "interceptor": [4, 27, 53, 54, 66, 72, 76], "interest": [2, 9], "interfac": [49, 54, 83], "interfer": 4, "intern": [5, 34, 39, 40, 41, 50, 53, 59, 60, 63, 75], "internet": 2, "interop": [26, 28, 68, 81], "interoper": 67, "interpret": [3, 4], "interrupt": 50, "interruptedexcept": [50, 69], "intl": 1, "intro": 28, "introduc": [31, 41, 42, 59, 83], "intrud": 53, "intrus": [32, 67], "intvalu": 53, "invis": 53, "invoc": 53, "invok": [13, 30, 57], "invokeinteg": 42, "invokeobject": [53, 70], "invokeprimit": 53, "invokevoid": [53, 67], "involv": 13, "io": [3, 17, 66], "is_component_build": 1, "is_debug": 1, "isarrai": 35, "isassignablefrom": 34, "isasyncfunct": 58, "iscal": 53, "isclass": 53, "isclos": 58, "iscompil": 61, "iscontinu": 50, "iscreatesnapshoten": 64, "isdead": 56, "isdebugen": 49, "isdeploi": 39, "isdirectori": 34, "isfil": 34, "isfreespaceorfillermap": 65, "isfrozen": 65, "isfunct": 53, "isgeneratorfunct": 58, "isgeneratorobject": 58, "isinfoen": 49, "isint": 67, "isinus": [50, 56], "islibinsystempath": 39, "islinux": 75, "ismacosx": 75, "isnullorundefin": 57, "isobject": 67, "isol": [6, 13, 40, 41, 42, 44, 83], "isproxyarrayen": 64, "isproxylisten": 64, "ispurgeeventloopbeforeclos": [60, 65], "isrevok": 58, "isseal": 65, "issourcetextmodul": [42, 64], "isstop": 65, "issu": [1, 3, 4, 11, 12, 26, 27, 40, 41, 42, 44, 57, 58, 59, 62, 64, 65], "issuppressingerror": [39, 59], "issyntheticmodul": [42, 64], "istringjoin": 34, "istringutil": 34, "isundefin": 30, "isv8bindingen": 53, "iswarnen": 49, "iswrap": 61, "iter": [29, 34, 63], "its": [0, 4, 9, 34, 35, 40, 41, 42, 53, 54], "itself": [50, 53], "iv8execut": 64, "iv8executor": [42, 61], "iv8inspectorlisten": 3, "iv8modul": 65, "iv8moduleresolv": 58, "iv8script": 65, "iv8valu": [56, 57, 61, 64], "iv8valuearrai": [63, 64], "iv8valuefunct": [57, 58, 61], "iv8valuemap": 63, "iv8valueobject": [53, 56, 57, 58, 61, 63], "iv8valuepromis": [54, 61], "iv8valueproxi": 58, "iv8valuerefer": 56, "j": [0, 2, 5, 7, 9, 14, 15, 20, 21, 22, 25, 28, 35, 39, 40, 41, 43, 46, 47, 53, 54, 55, 56, 58, 60, 62, 63, 64, 65, 66, 68, 72, 74, 81], "j2v8": [10, 11, 13, 20, 81, 82], "j2v8_win32_x86_64": 9, "j4": 1, "jackson": [3, 67], "jan": 83, "jar": [1, 3, 4, 9], "java": [3, 4, 5, 9, 15, 26, 28, 30, 31, 34, 35, 39, 40, 41, 42, 54, 59, 66, 68, 69, 71, 76, 79, 81, 83], "javadoc": 58, "javaobject": [41, 83], "javascript": [4, 6, 17, 27, 28, 31, 34, 40, 41, 42, 43, 54, 59, 66, 68, 71, 73, 76, 81, 83], "javax": 66, "javenod": [15, 16, 28, 54, 79, 83], "javet": [3, 5, 8, 9, 12, 14, 15, 16, 17, 19, 20, 21, 25, 26, 27, 29, 30, 31, 32, 34, 41, 44, 46, 47, 49, 50, 52, 53, 54, 56, 58, 63, 66, 69, 70, 71, 74, 75, 76, 78, 79, 80, 81], "javet_hom": [0, 1], "javetbridgeconvert": [29, 35, 41, 59, 64], "javetbuiltinmoduleresolv": [42, 64], "javetcallbackcontext": [57, 63], "javetcallbackexcept": 57, "javetcallbacktyp": 63, "javetcompilationexcept": 59, "javetconsoleinterceptor": 72, "javetconverterconfig": [31, 35, 58, 64, 65], "javetconverterexcept": 31, "javetdirectproxyobjecthandl": 65, "javetdynamicobjectfactori": 61, "javetdynamicproxi": [61, 63], "javetengin": [72, 78], "javetengineconfig": [41, 49, 57, 60, 65, 80], "javetengineconfignod": 80, "javetengineconfigv8": 80, "javetengineguard": [57, 65], "javetenginepoo": 78, "javetenginepool": [26, 42, 49, 57, 59, 72, 78, 80], "javetenginepoolnod": 80, "javetenginepoolv8": 80, "javetentityerror": 64, "javetentityfunct": [53, 58], "javetentityobject": 64, "javetentitypropertydescriptor": 64, "javetentitysymbol": 32, "javeterror": [50, 57, 60, 64], "javeterrortyp": 34, "javetexcept": [30, 50, 53, 54, 67, 69, 79], "javetexecutionexcept": [34, 42, 59], "javetjvminterceptor": [64, 66], "javetlibload": 39, "javetlibloadinglisten": [39, 59], "javetlogg": 49, "javetnativemonitor": 4, "javetobjectconvert": [30, 31, 32, 58, 64, 65, 83], "javetosutil": [42, 69, 79], "javetoutofmemoryexcept": 59, "javetperf": [6, 63], "javetprimitiveconvert": [33, 58, 60], "javetpromiserejectcallback": 57, "javetproxyconvert": [29, 31, 35, 41, 58, 59, 66, 67, 70, 83], "javetproxypluginarrai": 64, "javetproxypluginclass": 64, "javetproxyplugindefault": 64, "javetproxypluginlist": 64, "javetproxypluginmap": 64, "javetproxypluginset": 64, "javetproxyprototypestor": 65, "javetproxysymboliterableconvert": [63, 64], "javetproxysymboltoprimitiveconvert": 64, "javetreflectionobjectfactori": [34, 66], "javetreflectionproxi": 63, "javetreflectionutil": [53, 58], "javetscriptingerror": [59, 64], "javetshel": [3, 28, 66], "javetstandardconsoleinterceptor": [41, 72, 76], "javetterminatedexcept": 50, "javetuniversalproxi": 61, "javetuniversalproxyhandl": 58, "javetvirtualobject": 58, "jdk": [0, 5, 30, 49, 67], "jerri": 30, "jetti": 3, "jit": 6, "jni": [4, 8, 39, 41, 53, 59, 60, 62], "jnilib": 1, "join": [26, 34, 66], "joiner": 34, "joke": 9, "jsfunction": 53, "jsfunctiontyp": 53, "json": [2, 3, 29, 34, 35, 42, 67, 71], "jsonnod": [28, 68, 81], "jsonnodewrapp": 67, "jsonstr": 67, "jsruntimetyp": [26, 39, 42, 78, 80], "jsx": 28, "jul": 6, "just": [2, 3, 6, 9, 12, 13, 24, 30, 32, 39, 40, 41, 42, 53, 66, 70, 83], "jvm": [2, 4, 22, 28, 31, 34, 39, 40, 56, 68, 69, 71, 72, 78, 81, 83], "kb": 6, "keep": [4, 31, 34, 40, 41, 44, 67], "kei": [4, 26, 34, 42, 52, 67], "kernel": 26, "keyword": 53, "kind": [4, 9, 30, 40, 53, 83], "knodefaultsignalhandl": 64, "knostdioiniti": 64, "know": [4, 7, 9, 27, 38, 42, 53, 83], "known": [34, 41], "kotlin": [8, 34, 40], "kvm": 26, "l": [35, 78], "label": 43, "lack": [79, 83], "lambda": [34, 53], "land": 27, "lang": [31, 39, 66], "languag": [6, 41, 53], "larg": [2, 17], "last": 9, "later": [9, 11, 42], "latest": [0, 2, 12, 78], "launch": [42, 43, 44], "layer": [9, 83], "layout": 53, "lazi": 4, "ld": 1, "lead": [27, 43, 44], "leaf": 67, "leak": [5, 9, 11, 31, 34, 41, 44, 57, 59, 64, 65, 66], "leakag": [13, 47], "learn": [11, 16, 35], "least": [4, 9], "leav": [4, 11, 32, 42, 66], "legaci": [4, 9, 19, 20, 60], "len": 53, "length": [26, 29, 30, 32, 34, 35, 41, 43], "less": [34, 39], "let": [3, 9, 24, 27, 30, 34, 42, 43, 66, 67, 69, 77], "level": [13, 31, 40, 53], "leverag": 67, "lexic": 53, "lib": [1, 42, 59], "libcxx": 0, "libgcc": 60, "libjavet": [1, 39, 42], "libnod": 1, "librari": [0, 2, 3, 4, 7, 13, 20, 22, 25, 42, 47, 49, 53, 58, 66], "librarynotfound": 47, "librarynotload": 47, "libstdc": 60, "lifecycl": [13, 41, 44, 53], "light": 41, "like": [1, 3, 6, 9, 11, 13, 28, 34, 42, 43, 44, 47, 53, 60, 77], "limit": [4, 13], "line": [30, 40, 53, 77], "link": [1, 20, 25, 41, 42], "linux": [6, 11, 19, 20, 26, 28, 56, 57, 58, 60, 62, 64, 83], "linx": 26, "list": [3, 6, 26, 28, 31, 32, 35, 36, 53, 65], "listen": [3, 27, 41, 54, 69], "liter": 83, "littl": [13, 32], "live": [28, 40, 41, 53], "load": [4, 13, 21, 38, 43, 47, 79, 83], "loadabl": 4, "loadj": 79, "loadlibrari": [39, 58], "loadlibraryexw": 42, "local": [9, 30, 41, 53], "locat": [4, 42, 83], "lock": [4, 38, 41, 47, 50, 57, 64, 65, 83], "lockacquisitionfailur": 47, "lockconflictthreadidmismatch": 47, "lockedthreadid": 47, "locker": 40, "lockreleasefailur": 47, "log": [24, 30, 41, 44, 48, 53, 54, 69, 72, 76], "logerror": 79, "loggerfactori": 49, "logic": [6, 9, 31, 53, 54, 69, 83], "loginfo": [42, 79], "long": [2, 32, 33, 34, 35, 40, 41, 53, 67], "longer": [13, 31, 34, 41, 44, 83], "longlist": 29, "look": [1, 4, 9, 11, 42, 58], "lookup": 53, "loop": [20, 25, 27, 50, 54, 69, 77], "lot": [11, 72], "low": 4, "lower": [11, 43], "lowest": [9, 75], "lowmemorynotif": [34, 53, 54, 57, 66, 67, 72, 76, 83], "lt": 1, "luck": 9, "luckili": [31, 42], "m": [2, 6, 67], "mac": [2, 9, 28, 83], "macbook": 9, "machin": 9, "maco": [1, 9, 28, 39, 75], "made": [9, 11, 43], "mai": [1, 2, 3, 4, 6, 9, 13, 16, 26, 27, 28, 29, 31, 34, 39, 40, 41, 42, 43, 44, 49, 50, 53, 80], "mail": 28, "main": [1, 26, 30, 34, 70], "mainli": 6, "mainstream": 55, "maintain": [0, 17, 18, 22, 55, 75, 83], "mainten": [55, 58], "major": [6, 42, 56, 83], "make": [0, 1, 2, 17, 31, 32, 41, 42, 43, 54, 66, 69, 79, 83], "malform": 53, "malici": [43, 44, 50], "manag": [4, 9, 13, 16, 28, 36, 42, 50, 57], "mandelbrot": 6, "mani": [1, 9, 11, 41, 43, 53, 83], "manipul": [41, 52], "manner": [54, 83], "manual": [11, 18, 34], "map": [4, 29, 31, 32, 35, 42, 52, 65], "mapi": 71, "mapx": 71, "mark": 50, "master": [9, 54], "match": [32, 34, 42, 70], "matcher": [34, 70], "mathadd": 53, "maven": [2, 5, 34], "mavin": 39, "max": [41, 47], "max_valu": 69, "maxdepth": [3, 47], "maxim": [40, 44], "maximum": 31, "maxscriptscaches": 3, "me": [9, 28], "meal": 43, "mean": [6, 39, 42, 49, 53], "meanwhil": [9, 69], "measur": [6, 67], "mechan": [39, 40, 83], "meet": [26, 31, 42], "memor": 32, "memori": [5, 9, 11, 16, 26, 27, 31, 34, 38, 39, 43, 44, 47, 53, 57, 59, 64, 65, 66, 67, 83], "mental": 83, "mere": 9, "merkletre": 6, "messag": [3, 41, 47, 49], "meta": 66, "method": [3, 13, 30, 32, 34, 35, 47, 53, 67], "method_prefix_get": 30, "method_prefix_i": 30, "methodhandl": 59, "methodnam": [30, 47, 53], "might": [11, 39], "migrat": [13, 28, 81], "millisecond": [43, 50, 69], "min": 41, "mini": 9, "minim": [4, 32, 44, 72], "minut": [2, 4, 31], "mirror": 53, "mismatch": 47, "mistakenli": 59, "mitig": 43, "mix": 13, "mixtur": 4, "mockcallbackreceiv": 53, "mode": [1, 5, 7, 14, 18, 20, 21, 22, 25, 27, 28, 39, 41, 43, 44, 53, 54, 57, 58, 60, 63, 65, 66, 72, 74, 81, 83], "model": [4, 26, 40], "modif": 41, "modul": [5, 21, 27, 44, 46, 47, 53, 61, 62, 64, 65, 79], "modular": [21, 38, 44, 83], "modulenam": 47, "modulenameempti": 47, "modulenotfound": 47, "modulepermissiondeni": 47, "monitor": 50, "monolith": 0, "month": [9, 11], "more": [3, 4, 6, 9, 12, 17, 18, 32, 39, 41, 42, 43, 46, 47, 50, 53, 54, 58, 59, 72, 73, 76, 77, 78, 79, 83], "most": [13, 40, 42, 44, 53], "mostli": 27, "motiv": [10, 20, 83], "move": [9, 57, 58], "msvc": [1, 42], "much": [4, 6, 9, 34, 41, 44, 53, 67, 77, 79, 83], "multer": 69, "multi": [54, 72, 83], "multipl": [4, 17, 22, 26, 40, 42, 44, 58, 83], "must": [39, 41, 53, 79], "my": [9, 28], "myjavetengineconfig": 80, "myjavetlogg": [49, 80], "n": [34, 42, 53, 70], "name": [3, 4, 13, 30, 32, 35, 39, 42, 47, 49, 53, 59, 62, 64, 66, 67, 76, 79, 80], "napi": [21, 42], "napi_create_buffer_copi": 42, "napi_create_error": 42, "napi_create_funct": 42, "napi_get_undefin": 42, "napi_open_escapable_handle_scop": 42, "nashorn": 28, "nativ": [4, 14, 20, 21, 28, 29, 32, 35, 40, 41, 44, 53, 56, 69, 83], "nativecontext": 63, "natur": [53, 54], "navig": [1, 42], "nbodi": 6, "ndk": [0, 60], "nearli": 9, "neat": 67, "necessari": [66, 72], "need": [0, 3, 6, 9, 30, 31, 32, 34, 40, 41, 42, 53, 54, 67, 70, 83], "nest": 40, "net": [4, 34], "network": 2, "never": 83, "new": [4, 6, 7, 9, 11, 26, 29, 30, 32, 34, 39, 40, 41, 42, 43, 49, 50, 52, 53, 54, 55, 65, 66, 67, 69, 70, 71, 72, 76, 77, 78, 79, 80], "newer": 7, "newglobalref": 41, "newpath": 34, "newsourcecod": 53, "next": [0, 31, 53], "nextlin": 77, "ninja": 1, "nio": 41, "node": [0, 2, 5, 7, 9, 14, 15, 20, 21, 22, 25, 28, 39, 40, 41, 43, 46, 47, 53, 54, 55, 58, 60, 62, 63, 64, 65, 66, 67, 68, 72, 74, 75, 77, 80, 81], "node_bind": 1, "node_hom": [0, 1], "node_modul": [42, 44, 69, 79], "node_module_fil": 42, "node_sqlite3": 42, "nodemodulemodul": 42, "nodemoduleprocess": 58, "noderuntim": [17, 24, 42, 57, 60, 65, 69, 73, 78], "noderuntimeopt": [41, 59], "non": [34, 44, 50, 53, 66], "none": [3, 53], "norm": 6, "normal": [3, 41, 50, 69], "note": [28, 34, 41, 42, 53], "noth": 13, "notif": [3, 41], "notifi": [41, 67, 76], "notsupport": 47, "now": [8, 9, 30, 34, 42, 49, 50, 53, 76], "nowadai": 9, "npm": [42, 69, 79], "nsiev": 6, "null": [30, 32, 34, 42, 53, 54, 69, 76, 77], "nullpointerexcept": 31, "number": [31, 33, 35, 41, 42], "o": [0, 2, 4, 28, 40, 43, 47, 53, 67, 83], "object": [1, 4, 13, 27, 35, 41, 43, 44, 52, 57, 58, 59, 60, 64, 65, 67, 68, 70, 72, 76, 81, 83], "objectclass": 30, "objectmapp": 67, "objectnod": 67, "observ": 59, "observertimeoutmilli": 65, "obtain": 44, "obvious": [9, 42, 53, 67], "occur": [26, 27, 31, 34, 41], "octet": 41, "off": [0, 1, 3, 4, 35, 41], "offer": [13, 15, 41], "offici": [0, 1, 9, 12, 16, 18, 28, 42], "often": 41, "old": [4, 9, 44, 54], "older": 6, "onc": [1, 30, 31, 35, 41, 42, 43, 47, 66, 69], "oncatch": 54, "one": [4, 7, 9, 11, 13, 17, 22, 29, 34, 39, 41, 42, 50, 53, 67, 70, 76, 77, 78, 83], "ones": 32, "onfulfil": 54, "onli": [4, 13, 15, 17, 22, 26, 31, 33, 34, 39, 42, 43, 44, 49, 50, 53, 55, 67, 83], "onreject": 54, "open": [32, 34, 44, 66], "oper": [4, 31], "operatingsystem": 75, "opportun": 31, "opt": 2, "optim": 6, "option": [0, 5, 17, 33, 42, 43, 44, 53, 58, 60, 64, 66, 67, 76, 78], "optionaldoubl": 33, "optionalint": 33, "optionallong": 33, "optionalstr": 53, "order": [42, 52], "org": [49, 75], "organ": 57, "origin": [3, 4, 53], "originalsourcecod": 53, "orphan": 34, "osgi": 39, "osnotsupport": 47, "other": [3, 4, 13, 31, 39, 40, 41, 43, 44, 49, 53, 54, 57, 69, 71, 75, 78, 83], "otherwis": [3, 32, 33, 39, 40, 53], "out": [1, 26, 28, 41, 42, 47, 50, 66, 67, 69, 70, 71, 73, 76, 77, 83], "outer": 9, "outofmemoryerror": 34, "outperform": 6, "output": [1, 30, 53, 66, 67, 69, 70, 71], "outsid": 41, "over": [4, 27, 31, 35, 42, 53, 83], "overflow": 31, "overhead": [4, 6, 13, 31, 32, 40, 41, 50, 72], "overload": 34, "overrid": [30, 34, 39, 49, 53, 54, 67], "overridden": [31, 39], "own": [0, 4, 9, 30, 32, 34, 35, 39, 41, 42, 53, 54], "ownership": 54, "ownkei": 58, "p": [1, 34, 35], "pace": 41, "packag": [4, 6, 8, 9, 66], "page": 3, "pai": [9, 83], "pain": 83, "pair": [30, 53], "parallel": 53, "param": 3, "paramet": [47, 53], "parent": [30, 44], "pars": [3, 6], "parseint": 26, "parser": 69, "parti": [49, 53], "partial": 4, "particular": [6, 9, 35, 39, 42, 43], "pass": [44, 58], "patch": [26, 55, 64, 65], "patch_node_build": 1, "patch_v8_build": 1, "patchelf": 42, "path": [1, 18, 39, 42, 47, 63, 65, 69], "pattern": [3, 13, 16, 32, 50], "pause_the_event_loop": 69, "pe": 42, "peacefulli": 26, "pend": [60, 69], "peopl": [27, 83], "per": [4, 34, 39, 40, 41, 42], "perform": [2, 3, 4, 5, 9, 26, 27, 28, 29, 31, 32, 39, 41, 42, 44, 53, 56, 59, 63, 64, 67, 69, 72, 76, 83], "period": [34, 46], "permiss": 9, "persist": 41, "person": 8, "perspect": [13, 41], "phase": 1, "pid": 4, "pidigit": 6, "piec": 42, "pink": 70, "pitfal": 0, "place": [1, 4, 9, 27, 31, 41, 83], "plai": [9, 40, 42, 54, 67, 69], "plan": 9, "platform": [0, 5, 43], "pleas": [0, 1, 2, 3, 4, 6, 11, 12, 17, 18, 22, 23, 28, 31, 34, 39, 40, 41, 42, 44, 50, 53, 54, 55, 66, 67, 70, 71, 72, 73, 75, 76, 77, 79, 83], "plug": 39, "plugin": [31, 64], "point": [41, 42], "pointer": [0, 41, 53], "pojo": 32, "pojoarrai": 30, "polyfil": [28, 74, 81, 83], "pom": [9, 60], "pool": [5, 26, 28, 41, 49, 56, 59, 74, 80, 81], "pop": [34, 35], "popinteg": 52, "popular": 43, "port": [3, 55, 69], "posit": [1, 6, 53], "possibl": [4, 32, 40, 43, 44, 65, 67], "potenti": [42, 58, 59], "power": [30, 43], "ppa": 18, "ppee": 42, "practic": [3, 4, 13, 45], "pre": 43, "preciou": 9, "precis": [9, 31, 53], "prefer": 28, "prefix": 80, "prepar": [18, 39, 42, 43, 53, 72], "presenc": 53, "preserv": 52, "pressur": [41, 83], "pretti": 42, "prevent": [27, 39, 41, 44], "previou": [43, 53], "primari": 43, "prime": 6, "primit": [29, 30, 31, 32, 34, 35, 44, 53, 56, 59, 60], "print": [54, 71, 77], "println": [26, 28, 42, 66, 67, 69, 70, 71, 73, 76, 77], "printstacktrac": [26, 30, 50, 69], "prior": 39, "prioriti": [18, 50, 59], "privat": [0, 17, 18, 22, 30, 32, 34, 53, 67, 75, 76], "pro": 32, "problem": [3, 6, 9, 30, 53], "problemat": 9, "process": [2, 3, 27, 30, 50, 54, 65], "profession": 42, "profil": [3, 75], "program": 6, "prohibit": 44, "project": [4, 9, 11, 13, 15, 16, 28, 34, 42, 54, 66, 79, 83], "promis": [6, 27, 44, 51, 69], "promotescheduledexcept": 59, "proper": 1, "properli": [4, 26, 66], "properti": [18, 31, 32, 34, 67, 75, 76, 80], "propertykei": 67, "propertynam": 30, "propertysourc": 80, "propertyvalu": 67, "propos": 42, "protect": [26, 30, 40, 49, 50, 80], "protocol": 3, "prototyp": 53, "provid": [3, 4, 6, 18, 27, 29, 30, 31, 32, 34, 35, 42, 43, 52, 53, 66, 72, 76, 83], "proxi": [29, 32, 59, 60, 64, 65, 66, 67], "proxydeleteproperti": 64, "proxyget": 67, "proxygetownpropertydescriptor": 64, "proxyset": 67, "pseudo": [53, 54, 69], "public": [26, 30, 32, 34, 35, 39, 49, 53, 54, 60, 66, 67, 69, 76, 79, 80], "publish": 83, "pull": 2, "puppi": 42, "pure": 67, "purg": [4, 69], "purpos": 53, "push": [2, 34, 35, 52, 53, 54, 63], "put": [32, 34, 44, 67, 71], "py": 1, "python": [0, 1, 5], "python2": 9, "python3": [1, 9], "queri": [3, 66], "question": 83, "queue": [24, 41, 50, 54], "quickli": 3, "quit": [0, 4, 6, 11, 13, 26, 31, 34, 41, 49, 50, 53, 67, 69, 72, 83], "quot": 53, "r": [2, 18, 70], "r23b": 60, "r25b": 0, "r_x86_64_tpoff32": 1, "race": [4, 40, 41, 65], "radic": 53, "rais": 54, "rang": [33, 41], "rapidli": 9, "rather": 53, "ratio": 41, "ration": 41, "raw": 41, "re": [43, 57, 66, 69], "reach": [26, 31, 47], "reachabl": 42, "read": [31, 41, 43, 47, 54], "readi": 1, "readtre": 67, "realiti": 9, "realli": [9, 54], "reason": [0, 4, 9, 22, 27, 47, 54, 69, 83], "rebuilt": [42, 57], "receiv": [53, 54, 58, 67], "receivecallback": 63, "recogn": [53, 67], "recommend": [4, 6, 8, 34, 35, 44, 53, 54, 67, 72], "recompil": 1, "record": 42, "recurs": [30, 31, 58], "recycl": [4, 6, 27, 31, 34, 41, 44, 73], "redesign": 63, "redirect": [67, 72], "reduc": [22, 43], "redund": 53, "redux": 6, "refactor": [53, 57, 58, 59, 60], "refer": [3, 6, 11, 12, 27, 28, 34, 39, 40, 42, 44, 47, 50, 53, 54, 62, 64, 66, 67, 70, 71, 72, 73, 76, 77, 79, 83], "referenc": [34, 41, 42], "referencecopi": 61, "referencecount": 47, "reflect": [30, 32, 34, 44, 53, 63], "refus": 3, "regard": [2, 3], "regardless": [39, 40, 44], "regist": [13, 27, 42, 44, 47, 53, 61, 63, 66, 72, 76, 83], "registercustomobject": [32, 58], "registr": [32, 47, 83], "regular": [32, 40], "reject": [27, 44, 58], "rel": 9, "relai": [42, 59], "relat": [22, 53], "relationship": 32, "releas": [0, 1, 4, 6, 9, 28, 41, 47, 83], "reli": [18, 41, 49, 66, 67, 80], "reload": 39, "reloc": 1, "remain": 53, "remedi": 65, "remot": 3, "remov": [9, 57, 58, 59, 60, 64, 65], "removegcepiloguecallback": 59, "removegcprologuecallback": 59, "removeif": 35, "renam": [57, 58, 61, 63], "repeat": 83, "repeatedli": 39, "repl": 66, "replac": [42, 65, 66, 67], "report": 40, "reportpendingmessag": 59, "repositori": [2, 18], "repres": [4, 13, 31, 41, 53, 83], "represent": 71, "req": 69, "request": 3, "requir": [1, 6, 8, 13, 39, 42, 44, 50, 53, 54, 65, 69], "requirenonnul": 67, "reset": [6, 44], "resetcontext": [4, 40, 44, 57], "resetisol": [4, 40, 57], "resolut": [42, 63], "resolv": [27, 34, 42, 43, 69, 83], "resourc": [1, 4, 13, 16, 28, 31, 36, 40, 42, 47, 50, 54, 66, 67, 73, 76, 77, 80], "resourcenam": 42, "respons": [3, 39, 42, 43, 53], "rest": [3, 42], "restart": [2, 83], "restor": [39, 53, 64], "result": [2, 3, 4, 6, 31, 40, 44, 54, 73, 77], "resume_the_event_loop": 69, "retain": 65, "retir": 28, "return": [30, 31, 32, 34, 39, 41, 42, 44, 50, 53, 54, 57, 67, 69, 70, 71, 76, 80], "reus": [7, 13], "review": [35, 53, 54], "revis": [61, 65], "revisit": 9, "reviv": 9, "revok": 58, "rewrot": 65, "rich": 83, "richer": 83, "rid": 83, "right": [3, 39], "risk": [39, 44], "roi": 9, "role": 83, "root": [21, 26, 30, 41, 42, 43, 65], "rossum": 9, "rough": 53, "roughli": 2, "round": 67, "routin": [20, 25, 42], "rule": [41, 53], "run": [2, 4, 6, 28, 30, 34, 40, 41, 42, 50, 79], "runfin": [34, 66], "runifwaitingfordebugg": 3, "runnabl": 66, "runnowait": 65, "runonc": [65, 69], "runtim": [3, 4, 18, 22, 24, 34, 39, 40, 42, 43, 44, 47, 50, 53, 58, 59, 60, 62, 64, 66, 67, 69, 72, 73, 76, 77, 78, 83], "runtimealreadyclos": 47, "runtimealreadyregist": 47, "runtimeclosefailur": 47, "runtimecreatesnapshotblock": [47, 64], "runtimecreatesnapshotdis": [47, 64], "runtimeleakagedetect": 47, "runtimenotregist": 47, "runtimeopt": 64, "runtimeoutofmemori": 47, "rust": 6, "safe": [4, 27, 31, 40, 53], "safeti": 53, "sai": [9, 30], "same": [0, 4, 17, 40, 41, 42, 44, 53, 54, 64, 67, 83], "samevalu": 56, "sampl": [4, 30, 34, 39, 41, 42, 53, 66, 69], "samplewithoutthi": 53, "samplewiththi": 53, "sandbox": 0, "satisfi": 9, "save": [42, 69], "sb": 66, "scan": 53, "scanner": 77, "scenario": [40, 41, 44, 56, 83], "scene": [4, 13, 27, 66, 71], "schedul": [41, 59], "school": 4, "scope": [13, 17, 41, 61], "scope_info": 53, "scopeinfo": [53, 61], "scratch": [0, 5, 11, 35, 43], "screenshot": 3, "script": [1, 4, 9, 13, 28, 42, 44, 50, 53, 57, 61, 66, 72, 77, 79], "scriptcontext": 53, "scriptcontextt": 53, "scriptfil": 42, "scriptpath": 42, "scriptstr": 42, "sdk": [0, 49, 80], "seal": [41, 65], "sealeden": 65, "seamlessli": 69, "search": 53, "second": [1, 3, 16, 22, 42, 43, 50, 53], "secondli": 53, "section": [0, 42, 43, 53], "secur": [4, 6, 13, 42, 43, 79, 83], "see": [27, 40, 42, 66, 67, 78], "seem": 26, "segfault": [27, 83], "select": [18, 41, 53], "semi": [41, 53], "send": [3, 31, 41, 69], "sensit": [40, 41, 44, 56, 83], "sentenc": [53, 83], "separ": [4, 6, 13, 34], "sequenc": 40, "serializ": 53, "seriou": [9, 11], "serious": [6, 9], "serv": 17, "server": [3, 6, 31, 75], "serverup": 69, "session": 9, "set": [1, 3, 4, 7, 9, 13, 29, 30, 31, 32, 35, 39, 41, 42, 43, 49, 52, 54, 57, 63, 66, 67, 69, 70, 71, 76], "setallowev": 80, "setallownativessyntax": 41, "setasynccallstackdepth": 3, "setautosendgcnotif": [41, 80], "setblackboxpattern": 3, "setcontext": 53, "setconvert": [29, 30, 34, 66, 67, 70], "setcreatesnapshoten": [43, 64], "setcustomflag": 41, "setdebugmodeen": 50, "setdefaultengineguardtimeoutmilli": 80, "setescap": 41, "setexposegc": 41, "setexposeinspectorscript": 41, "setextractfunctionsourcecod": 31, "setfunct": [56, 57], "setinterv": [15, 24, 69, 79], "setjavetlogg": [49, 80], "setjoin": 34, "setjsruntimetyp": [26, 42, 78, 80], "setlibloadinglisten": 39, "setlibraryreload": 39, "setmaxheaps": 41, "setmaxoldspaces": 41, "setmemoryusagethresholdratio": [41, 57], "setmodul": 42, "setnam": [30, 32, 76], "setpauseonexcept": 3, "setpooldaemoncheckintervalmilli": 80, "setpoolidletimeoutsecond": 80, "setpoolmaxs": 80, "setpoolmins": 80, "setpoolshutdowntimeoutsecond": 80, "setposit": 53, "setpromiserejectcallback": 54, "setprototyp": 58, "setprototypeof": 65, "setproxyarrayen": 64, "setproxylisten": [34, 64], "setproxymapen": [31, 34], "setproxyseten": 34, "setpurgeeventloopbeforeclos": [60, 65, 69], "setreflectionobjectfactori": [34, 66], "setrequirerootdirectori": 42, "setresetenginetimeoutsecond": 80, "setresourcenam": [42, 65], "setscriptsourc": [53, 61], "setskipfunctioninobject": 31, "setsnapshotblob": [43, 64], "setsourcecod": [53, 57], "setsourcecodeopt": 61, "setstop": [24, 65], "setstringvalu": 53, "setter": [32, 34, 53, 58, 76, 83], "settimeout": [15, 69, 79, 83], "setusestrict": 41, "setutil": 34, "setv8moduleresolv": 42, "setv8runtim": 53, "setvalu": [30, 32, 53, 76], "setweak": [41, 44], "sh": [1, 42], "share": [0, 1, 4, 40, 42, 53, 54, 69, 83], "sheetj": 28, "shell": [5, 74, 81], "shift": [34, 64], "ship": 3, "short": [32, 33, 35, 41, 53], "should": [34, 50], "show": [3, 4, 34, 41, 42, 53, 54, 66], "showcas": 3, "shut": 83, "side": [4, 6, 17, 41], "siev": 6, "sign": 41, "signatur": [32, 47, 53], "signific": [6, 41], "significantli": [2, 43, 47], "sigsegv": [20, 25], "similar": [34, 44, 72], "simpl": [30, 34, 39, 41, 42, 43, 49, 53, 67, 69, 78], "simplelist": [34, 35], "simplemap": [34, 35], "simpler": 42, "simpleset": [34, 35], "simpli": [53, 67], "simplifi": [4, 53], "simul": [15, 35, 42, 53, 79, 83], "sinc": [2, 9, 75], "singl": [4, 6, 9, 40, 53, 69], "singleton": 17, "sit": 9, "site": 12, "situat": 53, "size": [2, 4, 6, 22, 29, 32, 34, 35, 39, 41, 47, 50], "sjtucaocao": [1, 2, 28], "skip": [20, 25, 29, 31, 34, 58], "slave": 18, "sleep": [50, 69], "sleep_a_whil": 69, "slf4j": 49, "slight": [40, 41, 64], "slightli": 6, "sloppi": 53, "slot": 53, "slow": [6, 32], "slowli": 11, "small": 26, "smaller": 43, "smart": [34, 41], "smartli": 34, "smooth": 83, "smoother": 41, "smoothli": [13, 31], "snapshot": [0, 18, 38, 47, 61], "snapshotblob1": 43, "snapshotblob2": 43, "snippet": [32, 41, 42, 66], "so": [1, 2, 4, 6, 7, 9, 13, 15, 18, 24, 26, 27, 29, 30, 31, 32, 34, 39, 40, 41, 42, 43, 44, 49, 50, 53, 54, 61, 67, 69, 71, 75, 79, 80, 83], "softwar": 18, "solut": [1, 11, 32, 53, 66], "solvabl": 9, "some": [3, 4, 6, 9, 13, 15, 18, 21, 26, 27, 31, 39, 41, 43, 53, 54, 59, 63, 66, 67, 72, 79, 83], "someon": [9, 42], "someth": [9, 53], "sometim": [11, 24, 26, 29, 30, 31, 34, 41, 43, 53, 54, 66], "somewher": 42, "sort": 35, "sourc": [1, 3, 17, 26, 31, 35, 40, 42, 47, 50, 66, 67, 70, 71, 72, 73, 76, 77, 79, 83], "sourcecod": 53, "space": 41, "spawn": 72, "speak": 53, "special": [34, 42, 53], "specif": [26, 41, 54], "specifi": [53, 83], "spectral": 6, "speed": 43, "spend": 9, "spent": 67, "split": 34, "spring": [13, 28, 56, 74, 81], "sqlite3": 42, "src": [1, 43], "stabl": 2, "stack": [31, 53], "stackoverflowerror": 31, "stage": 44, "stai": [24, 34, 39, 69, 83], "stamp": 42, "standard": [27, 42, 62], "star": 28, "start": [4, 11, 17, 26, 31, 43, 50, 53, 59, 66, 69, 83], "start_io_thread_async_initi": 17, "startposit": 53, "startswith": 30, "starttim": 67, "startup": [0, 43], "state": [3, 43, 53], "static": [0, 1, 17, 26, 30, 43, 53, 58, 60, 69], "staticclassen": 58, "staticecho": 53, "statist": [46, 59], "statu": [18, 50, 55], "std": 17, "step": [9, 12, 13, 27, 29, 32, 34, 39, 41, 42, 53, 66, 70, 73, 76, 77], "stick": 9, "still": [9, 43, 50, 53, 66, 83], "stop": [1, 9, 62], "stoptim": 67, "storag": [2, 6, 26], "store": [4, 26, 35, 41, 42, 43, 53, 62], "stori": 53, "str": [34, 53], "stream": [32, 53, 58, 60], "strictequ": 56, "string": [4, 24, 26, 30, 32, 33, 34, 35, 42, 49, 54, 56, 67, 69, 71, 73, 76, 77, 79], "stringarrai": 71, "stringifi": [29, 34, 35, 71], "stringjoin": 34, "stringlist": 71, "stringutil": 34, "stringvalu": 53, "strongli": [53, 67], "structur": [30, 47, 58, 67], "studio": [0, 5, 61, 62, 65], "style": 46, "subclass": [32, 34, 35, 44, 54], "substanti": 31, "substr": 30, "subtract": 43, "success": 83, "successfulli": [0, 2, 3, 26], "sudo": [18, 42], "suffer": 9, "suit": 7, "suitabl": 76, "summari": [4, 6], "super": [30, 67], "supplier": 53, "support": [0, 1, 2, 4, 8, 9, 14, 17, 19, 20, 25, 28, 32, 33, 34, 35, 39, 41, 42, 43, 47, 50, 52, 53, 57, 58, 59, 60, 61, 63, 64, 65, 75, 78, 83], "suppos": [9, 33, 39, 54], "suppresswarn": 30, "sure": [1, 2, 9, 17, 31, 41, 42, 69, 79], "surpris": 9, "surround": 40, "swap": 64, "swc": 42, "swc4j": 28, "switch": [3, 28, 39, 40, 44, 57], "symbol": [21, 29, 32, 34, 42, 47, 58, 60, 63], "symbol_level": 1, "symboltyp": 53, "sync": 4, "synchron": [6, 40, 83], "system": [4, 8, 11, 26, 28, 34, 39, 42, 47, 49, 64, 66, 67, 69, 70, 71, 73, 75, 76, 77], "system_temporary_directori": 4, "t": [0, 3, 4, 9, 17, 26, 27, 28, 30, 31, 32, 34, 39, 40, 41, 42, 43, 47, 49, 50, 53, 77, 78, 80, 83], "tabl": [42, 62], "take": [2, 4, 6, 9, 11, 27, 33, 34, 41, 42, 43, 53, 57, 59, 66, 67, 69, 72, 77, 83], "target": [3, 7, 31, 32, 43, 67, 83], "target_cpu": 1, "target_o": 1, "task": [24, 41, 54, 57], "team": 9, "teardown": 65, "technic": [43, 53, 78], "technologi": 6, "tediou": [4, 13, 83], "tell": [3, 27, 34, 39, 41, 42, 69, 76], "temp": 39, "temporari": 64, "temporarili": 9, "term": [4, 50, 53, 67], "termin": [47, 48], "terminateexecut": [50, 56, 83], "test": [1, 2, 4, 5, 6, 9, 16, 17, 18, 28, 34, 40, 42, 43, 53, 54, 56, 66, 69, 75, 79], "testcrash": 26, "testexpress": 69, "testfrommodul": 42, "testfunct": 53, "testintercept": 76, "testinterceptor": 76, "testjavaflavor": 67, "testjsflavor": 67, "testlogg": 49, "testnam": 67, "testopt": 53, "testpojo": 30, "testproperti": 53, "testscriptjavaflavor": 67, "testscriptjsflavor": 67, "teststream": 53, "testv8valuedataview": 41, "testv8valuetypedarrai": 41, "than": [6, 11, 31, 43, 50, 53, 79, 83], "thank": 28, "thei": [4, 9, 32, 35, 39, 41, 42, 44, 47, 54, 67, 78], "them": [0, 3, 34, 41, 42, 53, 67], "there_are_more_tasks_in_task_queu": 69, "there_are_no_more_task": 69, "thi": [0, 3, 4, 9, 11, 12, 13, 18, 21, 24, 26, 27, 28, 30, 31, 32, 34, 39, 40, 41, 42, 43, 54, 60, 67, 69, 70, 76, 78, 83], "thin": 1, "thing": [13, 31, 32, 41, 42], "think": [9, 11, 14, 16, 17, 20, 43], "thisobject": 53, "thisobjectrequir": [53, 58], "those": [1, 3, 4, 13, 27, 41, 42, 53, 66], "though": [3, 8, 47, 53, 72, 83], "thought": [9, 11], "thread": [4, 6, 9, 17, 26, 41, 47, 50, 54, 57, 58, 66, 72, 83], "threadcount": 26, "threadisol": 26, "threadlist": 26, "threshold": 41, "through": [42, 53], "throughout": 53, "throw": [26, 30, 31, 34, 42, 50, 53, 54, 67, 69, 79], "throwabl": [26, 49, 77], "throwerror": 64, "thrown": [40, 41, 42, 44, 50, 53], "till": 50, "time": [6, 9, 17, 32, 34, 39, 42, 43, 50, 67, 72], "timeout": [50, 54], "timer": 69, "timestamp": 7, "timeunit": [50, 69], "tini": [31, 41], "tip": [3, 28, 36], "tl": 9, "tmp": 34, "toarrai": [34, 71], "toclon": [53, 61], "todo": [28, 36], "tofil": 69, "togeth": [3, 43, 69], "tojson": [34, 64], "tojsonstr": 53, "toler": 53, "tolowercas": 30, "tom": 30, "tomap": 32, "too": [9, 17, 42], "toobject": 34, "took": 83, "tool": [0, 1, 2, 5, 17, 18, 23, 28, 43, 56], "toolchain": 18, "toolkit": 43, "top": [13, 42, 53, 83], "topath": 34, "topic": [31, 54], "toprimit": 29, "tostr": [34, 42, 52, 53, 65, 66, 67, 70, 77, 79], "touch": [34, 40], "touchabl": 32, "tov8valu": [29, 30, 67], "tp": [6, 9], "track": [4, 41, 63, 65], "trade": 4, "tradit": 42, "transform": 28, "transpar": [30, 34, 53, 83], "transpil": 28, "treat": [34, 39, 41], "tri": [4, 9, 21], "trick": [26, 69], "tricki": 53, "trigger": [17, 40, 41, 53], "troubleshoot": [20, 28, 36], "true": [1, 11, 17, 24, 29, 31, 34, 39, 41, 42, 43, 50, 53, 66, 67, 69, 70, 71, 75, 77], "try": [4, 9, 11, 24, 26, 28, 30, 34, 40, 42, 43, 44, 50, 52, 53, 54, 66, 67, 69, 72, 73, 76, 77, 78, 79], "tr\u00e8": 53, "tsx": 28, "turn": [1, 3, 4, 35, 41, 57, 64], "tutori": [28, 66], "tweak": 30, "two": [34, 35, 41], "txt": 9, "type": [6, 13, 29, 30, 31, 32, 34, 35, 39, 40, 41, 42, 47, 56, 57, 59, 60, 67], "typescript": 28, "typic": [4, 35, 42, 50, 53], "ubuntu": [0, 2, 18, 42, 57, 60, 64, 75], "uint16_t": 41, "uint16arrai": [32, 41], "uint32_t": 41, "uint32arrai": [32, 41], "uint64_t": 41, "uint8_t": 41, "uint8arrai": [32, 41], "uint8clampedarrai": [32, 41], "ultim": 3, "unbind": [53, 58, 83], "unbindfunct": [53, 58, 63], "unbindproperti": [53, 58, 63], "uncertain": 44, "uncertainti": 9, "uncheck": 30, "undefin": [3, 31, 34, 42, 53, 66, 67, 77], "under": [9, 41, 44, 53, 66], "underli": 67, "understand": 9, "unexpect": [9, 31, 53, 65], "unfortun": [4, 9], "unhandl": 44, "unhandledreject": 54, "uniqueid": 3, "unit": [4, 16], "univers": 57, "unix": 75, "unknown": 47, "unless": [6, 41, 44, 83], "unload": [4, 38, 42, 83], "unloadlibrari": [39, 58], "unlock": [40, 67], "unmanag": [4, 41], "unmodifiablelist": 29, "unoffici": 9, "unpack": 4, "unrealist": 31, "unregist": [66, 72, 76], "unregistercustomobject": 58, "unregistr": 47, "unrel": [4, 6], "unrestrict": 41, "unsatisfiedlinkerror": 39, "unshift": [34, 64], "unsign": 41, "unstabl": 39, "until": 41, "untouch": 53, "unzip": 42, "up": [2, 3, 4, 6, 13, 34, 40, 41, 42, 43, 58, 59, 66, 69], "updat": [2, 18, 39, 43, 53, 57, 58, 59, 60, 62, 65], "upgrad": [3, 8, 9, 11, 18, 46, 57, 58, 59, 60, 61, 62, 63, 64, 65], "upon": 32, "url": 4, "us": [1, 3, 4, 6, 8, 11, 17, 26, 27, 31, 33, 39, 41, 42, 43, 44, 49, 53, 66, 72, 83], "usabl": 43, "usag": [43, 83], "use_custom_libcxx": 1, "use_main_context_default_load": 42, "user": [27, 31, 34, 42, 49, 72, 77, 80], "userdefin": 53, "usr": [1, 18], "usual": [0, 30, 34, 42, 50, 53, 54, 66, 69], "util": [26, 34], "v": [1, 5, 9, 28, 42], "v0": [55, 56, 57, 58, 75, 83], "v1": [3, 55, 59, 75], "v10": [55, 64], "v11": [55, 75], "v12": [2, 28], "v14": [55, 57, 58], "v16": [55, 60], "v17": [0, 65], "v18": [55, 62, 63], "v2": [9, 55, 75], "v20": [28, 55, 64, 65], "v3": [8, 26, 42, 55, 75], "v4": 9, "v6": 9, "v7": 8, "v7a": 1, "v8": [2, 3, 5, 7, 9, 11, 13, 14, 17, 20, 22, 25, 27, 28, 31, 32, 34, 36, 39, 40, 43, 44, 46, 47, 50, 55, 66, 68, 69, 70, 71, 72, 74, 75, 76, 77, 80, 81], "v8_enable_i18n_support": 1, "v8_enable_pointer_compress": 1, "v8_enable_sandbox": 1, "v8_flag": 41, "v8_home": [0, 1], "v8_monolith": 1, "v8_static_librari": 1, "v8_target_cpu": 1, "v8_use_external_startup_data": 1, "v8a": 1, "v8allow": [34, 59], "v8awaitmod": [61, 65], "v8bindenabl": 58, "v8bindingenabl": [53, 58], "v8block": [34, 59], "v8convert": 59, "v8customobject": 32, "v8data": 83, "v8errortempl": 64, "v8flag": [58, 65], "v8function": [13, 53, 54, 58, 59, 66], "v8functioncallback": [57, 63], "v8gen": 1, "v8getter": [34, 59], "v8guard": [50, 65], "v8host": [24, 26, 28, 30, 39, 41, 42, 43, 50, 57, 58, 59, 66, 67, 69, 73, 76, 77], "v8intern": 59, "v8locker": [40, 44, 56], "v8modul": [42, 57, 61, 64], "v8modulecount": 47, "v8modulereferr": 42, "v8notifi": 41, "v8properti": [13, 53, 57, 58, 59, 83], "v8runtim": [4, 6, 26, 28, 29, 30, 32, 34, 35, 40, 42, 43, 44, 50, 52, 53, 54, 56, 57, 58, 59, 61, 64, 65, 66, 67, 70, 71, 72, 73, 76, 77, 78, 79], "v8runtimeobserveraveragecallbackcontextcount": 59, "v8runtimeobserveraveragereferencecount": 59, "v8runtimeobserveraveragev8modulecount": 59, "v8runtimeopt": [43, 59], "v8runtimesett": 53, "v8scope": [41, 44, 58], "v8script": [57, 61], "v8setter": [34, 59], "v8statisticsfutur": 65, "v8stringexecutor": 61, "v8valu": [30, 31, 54, 57, 58, 60, 67, 71, 77, 83], "v8valuearrai": 53, "v8valuebiginteg": [60, 65], "v8valueboolean": 67, "v8valuebooleanobject": 64, "v8valuebuiltinobject": [58, 64, 65], "v8valuebuiltinreflect": 64, "v8valuebuiltinsymbol": 58, "v8valuedoubl": 65, "v8valuedoubleobject": 64, "v8valueerror": [54, 64], "v8valueerrortyp": 64, "v8valuefunct": [34, 42, 53, 57, 58, 69, 79], "v8valuefunctiondecim": 79, "v8valueinteg": [52, 53, 65, 67], "v8valueintegerobject": 64, "v8valuelong": 65, "v8valuelongobject": 64, "v8valuemap": 64, "v8valueobject": [30, 34, 41, 42, 53, 58, 60, 65, 76, 79, 83], "v8valueobjectdecim": 79, "v8valueprimit": 83, "v8valuepromis": [54, 57, 58], "v8valuepromiseresolv": 54, "v8valueproxi": 58, "v8valueset": 64, "v8valuesharedarraybuff": 58, "v8valuestr": [52, 67], "v8valuestringobject": 64, "v8valuesymboltyp": 53, "v8valuetemp": 30, "v8valueweakmap": 56, "v8valueweakset": 56, "v8virtualescapablevalu": 58, "v8virtualiter": 63, "v9": [55, 75], "vagu": 4, "val": 75, "valid": [4, 41, 53, 66], "valu": [4, 28, 30, 31, 32, 33, 36, 39, 41, 42, 47, 52, 56, 57, 58, 59, 67, 76], "valueof": 53, "van": 9, "var": [50, 53, 69], "vararg": [34, 53, 57, 60], "variabl": [29, 40, 42, 53, 59, 70, 71, 76], "variant": 43, "variou": [0, 63, 83], "vcbuild": 1, "ve": [9, 11, 43], "verbos": [67, 83], "veri": [4, 26, 34, 42, 44, 53, 77, 78], "verifi": [4, 42, 53], "verifynostrongbaseobject": 61, "versa": 31, "version": [1, 3, 4, 8, 11, 28, 34, 42, 43, 55, 75, 78], "via": [3, 4, 34, 41, 42, 44, 50, 53, 54, 66, 69, 76], "vice": 31, "view": 56, "violat": 4, "virtual": [34, 42, 60], "visibl": [4, 53], "visit": [3, 17, 23, 28, 79], "visual": [0, 5, 61, 62, 65], "vm": [4, 26, 42, 44, 64], "void": [26, 30, 32, 34, 49, 53, 54, 66, 67, 69, 76, 79], "voil\u00e0": [3, 34, 69], "voluntarili": 42, "vs2022": 1, "vulner": [6, 43, 44], "w": 3, "wa": [9, 42, 83], "wai": [0, 4, 13, 27, 28, 29, 30, 34, 35, 39, 41, 42, 43, 44, 50, 53, 54, 58, 67, 69, 72, 76, 80], "wait": [2, 3, 59, 69], "waitforenginemaxretrycount": 60, "want": [4, 8, 9, 13, 27, 31, 39, 40, 41, 43, 47, 53, 54, 55, 66], "warm": 6, "warn": [1, 49, 57], "wasm": 5, "watch": 9, "weak": 4, "weakmap": 52, "weakset": 52, "web": [3, 41, 44], "webassembli": 6, "websit": 3, "websocket": 3, "week": 83, "weight": 41, "welcom": [2, 77], "well": [3, 9, 12, 27, 34, 35, 41, 83], "were": [9, 26], "what": [3, 9, 10, 16, 20, 31, 41, 42, 67, 83], "whatev": [4, 27, 40, 41, 53, 54, 66], "when": [1, 4, 6, 9, 20, 21, 25, 34, 41, 42, 43, 44, 50, 53, 54, 60, 62, 83], "where": [13, 14, 20, 39, 42, 43, 67, 83], "wherea": [31, 41], "whether": [53, 58], "which": [0, 3, 4, 6, 7, 9, 13, 16, 18, 27, 28, 31, 32, 34, 39, 41, 42, 43, 50, 53, 66, 67, 70, 76, 78, 79, 83], "while": [1, 2, 34, 50, 69, 77], "who": [9, 42], "whole": [6, 34, 68, 81], "whose": 44, "why": [3, 13, 14, 20, 25, 26, 39, 41, 79], "win32": 42, "windbg": 0, "window": [6, 11, 13, 21, 28, 56, 67, 83], "wise": [2, 18, 53, 67, 75], "wish": [9, 83], "within": 41, "without": [1, 2, 3, 4, 27, 32, 34, 39, 40, 43, 53, 59, 63, 66, 67, 83], "won": [27, 31, 39], "word": [4, 41, 69], "work": [3, 4, 9, 12, 13, 26, 27, 28, 39, 40, 41, 42, 50, 53, 54, 67, 69, 83], "workaround": [17, 42], "worker": 41, "workflow": 2, "working_directori": [42, 69, 79], "workingdirectori": 42, "worri": [31, 39, 42, 50, 69], "wors": 31, "would": [9, 11, 17], "wrap": 41, "wrapper": 67, "writabl": 34, "write": [11, 30, 31, 41, 83], "written": [6, 31, 43], "wsl2": [0, 2], "x": [9, 28, 29, 32, 34, 35, 42, 53, 55, 71], "x64": [1, 42], "x86": [1, 28, 58, 59, 75], "x86_64": [2, 26, 28, 42, 59, 75], "xcode": 0, "xml": [9, 60], "xms64m": 41, "xmx64m": 41, "y": [18, 29, 32, 34, 35, 71], "ye": [3, 4, 12, 18, 23, 27, 31, 32, 34, 39, 40, 42, 52, 53, 75, 79], "year": [9, 83], "yet": 27, "you": [1, 2, 3, 8, 9, 13, 16, 23, 27, 28, 30, 34, 40, 41, 43, 49, 53, 54, 55, 66, 79, 80, 83], "your": [3, 9, 18, 34, 35, 39, 43, 44, 49, 80, 83], "z": [34, 35], "zero": [4, 41], "zombi": 41, "zoneddatetim": [33, 35, 60, 61]}, "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?", "Can Native Image be Supported?", "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?", "Can Node.js Event Loop be Skipped?", "Troubleshooting", "SIGSEGV at createV8Runtime() in V8 Mode on AWS", "Why Node.js Crashes When being Closed?", "Javet", "Bridge Converter", "Custom Converter", "Converters", "Object Converter", "Primitive Converter", "Proxy Converter", "Proxy Plugins", "Reference", "API Reference", "Resource Management", "Load and Unload", "Know the Lock", "Memory Management", "Modularization", "Snapshot", "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", "Release Notes 3.1.x", "Access the Whole JVM", "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"], "titleterms": {"0": [56, 57, 58, 59, 60, 61, 62, 63, 64, 65], "1": [3, 26, 40, 41, 49, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 69, 73], "10": [57, 58, 61], "11": 58, "12": 58, "13": 58, "14": 58, "2": [3, 26, 40, 41, 49, 53, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 67, 69], "2022": 8, "21": 59, "3": [3, 8, 41, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 69], "4": [3, 56, 57, 58, 59, 60, 61, 63, 64, 65], "5": [57, 58, 59, 60, 63, 65], "6": [57, 58, 59, 60, 63, 65], "7": [56, 57, 58, 59, 60, 61, 63, 65], "8": [8, 57, 58, 60, 61, 64], "9": [56, 57, 58, 59, 60, 61, 64], "A": 21, "If": 69, "It": 32, "On": [39, 42], "One": 53, "That": 69, "There": 3, "With": 50, "abi": 59, "about": [50, 53], "access": 66, "add": 35, "advanc": 68, "aggress": 41, "all": 2, "alreadi": 39, "altern": 41, "an": 70, "analysi": 26, "android": [0, 1, 2, 59, 75], "anonym": [34, 58], "anoth": 39, "api": [15, 37], "approach": 67, "ar": [15, 16], "architectur": 4, "argument": 53, "arm64": [1, 2, 59], "arrai": [29, 71], "arraybuff": 41, "autom": 9, "automat": [41, 50, 53], "avoid": 53, "aw": 26, "await": [27, 41], "background": [10, 27], "backward": 47, "basic": 74, "being": 27, "benchmark": 6, "benefit": 43, "best": 44, "between": 42, "bind": [31, 53], "bindfunct": 53, "birth": 56, "bless": 83, "blog": 28, "boolean": [29, 53], "both": 53, "bridg": 29, "bug": 56, "build": [0, 1, 2, 9], "built": [31, 35, 42], "c": 41, "call": 53, "callback": 54, "can": [12, 18, 22, 23, 24, 31, 39, 53], "cast": 29, "caus": 27, "cdt": 3, "challeng": 41, "chang": 53, "chrome": [3, 23], "circular": 31, "class": [34, 70], "classload": [39, 58], "cleanup": 66, "close": [27, 69], "co": 78, "code": [47, 53, 57], "codestr": 53, "collect": 52, "commun": 8, "comparison": [6, 31, 40, 53], "compat": [47, 75], "conclus": 67, "config": 31, "configur": 80, "context": [4, 53], "convers": [53, 57, 83], "convert": [29, 30, 31, 32, 33, 34, 58, 71], "core": 59, "coroutin": 40, "count": 53, "crash": 27, "creat": [30, 35, 43], "createv8runtim": 26, "cross": 4, "custom": [3, 30, 32, 34, 39, 59], "deal": 42, "debug": [3, 23, 50, 56], "decim": 79, "declar": [13, 57], "defin": [30, 53], "demand": [39, 42], "demo": 3, "depend": [28, 75], "deploi": [9, 39], "deploy": 39, "deprec": 2, "design": [4, 30], "detect": 4, "develop": [3, 5, 8, 14], "devtool": 23, "direct": 67, "disabl": [17, 53], "dll": 21, "docker": 2, "document": 28, "doe": [3, 31, 32, 34, 40], "dsl": [28, 75], "dure": 69, "dynam": [21, 34, 42, 66], "effect": 31, "elf": 42, "empow": 58, "enforc": 26, "engin": [4, 44, 50, 56, 72], "enhanc": 32, "enum": [34, 70], "environ": [0, 2, 19, 26, 39], "error": [47, 57], "es6": [15, 83], "escap": 41, "event": [24, 27, 57], "exampl": [16, 42, 54], "execut": 13, "executor": 13, "exist": 78, "explicit": 40, "expos": 67, "exposur": 67, "express": 2, "f": 54, "fail": 21, "faq": [3, 20], "featur": [0, 28, 34], "file": [2, 34, 39], "first": [57, 59], "fix": 56, "flag": 0, "flavor": 67, "fly": 53, "foreach": 57, "from": [1, 13, 32, 33, 39, 41, 83], "full": 2, "function": [13, 31, 34, 53, 57, 58], "functionnam": 53, "gap": 42, "gc": [41, 57], "github": 2, "go": 30, "goal": 72, "gradl": [8, 28, 75], "groovi": [28, 75], "guard": 56, "guid": [82, 83], "handl": 53, "handshak": 3, "hang": 69, "hello": [28, 73], "highlight": [6, 32], "histori": 9, "hotfix": 57, "how": [13, 29, 32, 34, 41, 43, 50, 53, 69], "hub": 2, "i": [3, 11, 17, 23, 53, 69], "i18n": 22, "ignor": 31, "ijavetlogg": 49, "imag": 12, "implement": 49, "implicit": 40, "import": [4, 42, 53], "improv": 6, "index": 57, "info": 53, "initi": [21, 26], "inject": [49, 70, 80], "insid": 31, "inspector": 17, "instal": 75, "instanc": 34, "int": 29, "integ": 29, "integr": 80, "intellij": 8, "interact": 69, "intercept": [4, 13, 53, 57, 76], "interfac": [34, 58, 66], "intern": [3, 42], "interop": 70, "invok": 53, "isol": 4, "issu": 9, "j": [1, 3, 4, 6, 8, 17, 24, 27, 42, 44, 57, 59, 61, 67, 69, 73, 78, 79, 83], "j2v8": [9, 83], "jar": 39, "java": [6, 29, 32, 33, 53, 58, 67, 70], "javascript": [29, 32, 33, 53, 69, 70], "javet": [0, 1, 2, 4, 6, 7, 13, 18, 23, 28, 39, 40, 42, 43, 59, 72, 73, 77, 83], "javet_disable_pku": 26, "javetcallbackcontext": 53, "javetproxyconvert": 34, "javetproxypluginarrai": 35, "javetproxyplugindefault": 35, "javetproxypluginlist": 35, "javetproxypluginmap": 35, "javetproxypluginset": 35, "jdk": 8, "jni": 1, "jsonnod": 67, "jvm": [41, 66], "kei": 53, "know": 40, "kotlin": [28, 75], "latest": 9, "leak": 4, "learn": 13, "legaci": 18, "lib": 39, "librari": [1, 21, 39, 59], "licens": 28, "lifecycl": 54, "limit": 43, "link": 21, "linux": [0, 1, 2, 9, 18, 42, 75], "list": [29, 34, 46, 71], "listen": 39, "live": [3, 56], "load": [39, 42, 59], "locat": 39, "lock": 40, "locker": 56, "log": 49, "logger": 49, "long": 29, "loop": [24, 57], "lowmemorynotif": [27, 41], "mac": [1, 58, 59, 75], "maco": 0, "main": 69, "major": 28, "manag": [38, 41, 44, 53], "manual": [41, 42, 50, 53], "map": [34, 53, 71], "maven": [8, 9, 28, 75], "mean": 40, "memori": [4, 41], "migrat": [82, 83], "mismatch": 53, "mksnapshot": 43, "mode": [3, 4, 6, 15, 17, 26, 34, 40, 42, 50, 73, 78, 79], "modul": [4, 42, 57, 58, 83], "modular": 42, "motiv": [11, 72], "multi": [2, 4, 58], "name": 34, "nativ": [12, 31, 39, 42, 57], "new": 35, "node": [1, 3, 4, 6, 8, 17, 24, 27, 42, 44, 57, 59, 61, 69, 73, 78, 79, 83], "noderuntim": 27, "note": [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65], "null": 31, "o": [1, 58, 59, 75], "object": [29, 30, 31, 32, 34, 53, 66, 71], "one": 2, "onli": 9, "open": 3, "option": [8, 41], "pass": 53, "passiv": 41, "patch": [1, 42], "path": 34, "pattern": [34, 70], "perform": [6, 40], "plai": 66, "platform": 4, "plugin": 35, "pojo": 30, "pojoconvert": 30, "polyfil": [58, 79], "pool": [4, 44, 50, 72, 78], "possibl": 69, "practic": 44, "pre": 42, "prepar": [1, 29, 34, 70], "primit": [4, 33, 57, 83], "print": 73, "privat": 58, "process": [4, 58], "promis": [54, 58], "properti": [13, 53, 57, 58], "proxi": [31, 34, 35, 58], "python": 8, "quick": 28, "readfileasync": 54, "readi": 30, "rebuild": 42, "recommend": 41, "refer": [4, 36, 37, 41], "regist": [32, 54], "registerjavamethod": 83, "registr": 53, "reject": 54, "releas": [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65], "remov": [35, 39], "repositori": 9, "requir": 4, "resolv": [54, 58], "resourc": [38, 41, 44, 53], "root": 27, "routin": 21, "run": 3, "runfin": 41, "runtim": 41, "safe": 58, "safeti": [4, 31, 40], "sampl": 76, "scope": [53, 58], "scratch": 1, "script": 3, "secur": 44, "server": 69, "set": [26, 34, 53], "shell": [3, 77], "sigsegv": 26, "skip": [24, 39], "snapshot": 43, "solut": [26, 27], "sourc": [53, 57], "sponsor": 28, "spring": 80, "stage": 2, "start": 28, "static": [34, 70], "statist": 41, "step": [49, 69], "string": [29, 53], "stringbuild": [34, 66, 70], "structur": 31, "studio": 8, "summari": [53, 66], "support": [3, 12, 18, 22], "suppress": 39, "symbol": 53, "symptom": 26, "synthet": 42, "system": [9, 41], "take": [31, 39], "termin": 50, "test": [7, 13, 67, 76], "thi": 53, "think": 13, "thread": [40, 44, 69], "time": [57, 59], "tip": [45, 53], "todo": 46, "tool": [3, 8], "troubleshoot": [25, 48], "try": 41, "tutori": 81, "type": [4, 53, 83], "unhandl": 54, "unhandledreject": 27, "unit": 13, "unload": 39, "unmodifi": 29, "unregist": 53, "usag": [29, 32, 34, 41, 52, 72, 78], "user": 53, "usual": 3, "v": [4, 6, 53], "v1": 58, "v10": [60, 61], "v11": [61, 62, 63, 64], "v12": [64, 65], "v16": 59, "v18": 61, "v2": 58, "v8": [0, 1, 4, 6, 15, 26, 41, 42, 51, 52, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 67, 73, 78, 79, 83], "v8convert": 34, "v8flag": 41, "v8function": [34, 76, 83], "v8host": 78, "v8locker": 83, "v8properti": [34, 76], "v8runtim": [13, 41, 83], "v8valu": 53, "v8valuearrai": 52, "v8valueglobalobject": 13, "v8valuemap": 52, "v8valueset": 52, "v9": [57, 58, 59, 60], "valu": [51, 53], "variabl": [0, 26, 39], "version": 9, "via": [31, 43], "virtual": [4, 40], "visual": 8, "wasm": 6, "weak": 41, "what": [11, 40, 53, 69], "when": [27, 31], "where": [15, 16], "whole": 66, "why": [1, 9, 17, 27, 47, 53, 83], "window": [0, 1, 2, 9, 42, 75], "without": [41, 50], "work": [32, 34, 43], "worker": 69, "wrap": 67, "x": [56, 57, 58, 59, 60, 61, 62, 63, 64, 65], "x86_64": [1, 58]}}) \ No newline at end of file From 098105ef08c844a797294ca0306fad12e22c745e Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Sun, 4 Aug 2024 11:54:16 +0800 Subject: [PATCH 03/13] =?UTF-8?q?=F0=9F=90=9E=20fix:=20#376=20Fix=20defaul?= =?UTF-8?q?t=20export?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/release_notes/release_notes_3_1.rst | 5 +++++ .../callback/JavetBuiltInModuleResolver.java | 13 ++++++++----- .../javet/values/reference/TestV8Module.java | 4 ++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/docs/release_notes/release_notes_3_1.rst b/docs/release_notes/release_notes_3_1.rst index 6273fc02..97db9b43 100644 --- a/docs/release_notes/release_notes_3_1.rst +++ b/docs/release_notes/release_notes_3_1.rst @@ -2,6 +2,11 @@ Release Notes 3.1.x =================== +3.1.5 V8 v12.8 +-------------- + +* Fixed a bug of the default export in ``JavetBuiltInModuleResolver`` + 3.1.4 V8 v12.7 -------------- diff --git a/src/main/java/com/caoccao/javet/interop/callback/JavetBuiltInModuleResolver.java b/src/main/java/com/caoccao/javet/interop/callback/JavetBuiltInModuleResolver.java index 127c71da..79787ecf 100644 --- a/src/main/java/com/caoccao/javet/interop/callback/JavetBuiltInModuleResolver.java +++ b/src/main/java/com/caoccao/javet/interop/callback/JavetBuiltInModuleResolver.java @@ -49,13 +49,16 @@ public IV8Module resolve(V8Runtime v8Runtime, String resourceName, IV8Module v8M IV8Module iV8Module = null; // It only works for Node.js runtime and module names starting with "node:". if (v8Runtime.getJSRuntimeType().isNode() && resourceName != null && resourceName.startsWith(PREFIX_NODE)) { - String moduleName = resourceName.substring(PREFIX_NODE.length()); NodeRuntime nodeRuntime = (NodeRuntime) v8Runtime; - NodeModuleAny nodeModuleAny = nodeRuntime.getNodeModule(moduleName, NodeModuleAny.class); + NodeModuleAny nodeModuleAny = nodeRuntime.getNodeModule(resourceName, NodeModuleAny.class); V8ValueObject v8ValueObject = nodeModuleAny.getModuleObject(); - if (!v8ValueObject.has(DEFAULT)) { - v8ValueObject.set(DEFAULT, v8ValueObject); - } + /* + * https://github.com/caoccao/Javet/issues/376 + * + * Sometimes the module object has 'default' property, but that property seems to be weird. + * Resetting the 'default' property resolves the issue. + */ + v8ValueObject.set(DEFAULT, v8ValueObject); iV8Module = v8Runtime.createV8Module(resourceName, v8ValueObject); } return iV8Module; diff --git a/src/test/java/com/caoccao/javet/values/reference/TestV8Module.java b/src/test/java/com/caoccao/javet/values/reference/TestV8Module.java index b907dfe4..33694f83 100644 --- a/src/test/java/com/caoccao/javet/values/reference/TestV8Module.java +++ b/src/test/java/com/caoccao/javet/values/reference/TestV8Module.java @@ -282,9 +282,13 @@ public void testJavetBuiltInModuleResolverWithDefault() throws JavetException { v8Runtime.setV8ModuleResolver(new JavetBuiltInModuleResolver()); v8Runtime.getExecutor( "import fs from 'node:fs';\n" + + "import events from 'node:events';\n" + + "import stream from 'node:stream';\n" + + "globalThis.b = events === stream;\n" + "globalThis.a = fs.existsSync('/path-not-found');") .setModule(true).executeVoid(); assertFalse(v8Runtime.getGlobalObject().getBoolean("a")); + assertFalse(v8Runtime.getGlobalObject().getBoolean("b")); } } From c2e80d253b17491cf150e06ecb2db95a38ee97ab Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Sun, 4 Aug 2024 12:25:57 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=F0=9F=A6=84=20refactor:=20Apply=20String?= =?UTF-8?q?Utils.isNotEmpty()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../javet/interop/callback/V8FunctionCallback.java | 9 +++------ .../java/com/caoccao/javet/utils/JavetTypeUtils.java | 2 +- .../caoccao/javet/values/reference/IV8ValueFunction.java | 3 ++- .../caoccao/javet/values/reference/V8ValueFunction.java | 6 ++++-- .../interop/proxy/JavetReflectionObjectFactory.java | 5 +++-- .../javet/values/reference/TestV8ValueFunction.java | 2 +- 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/caoccao/javet/interop/callback/V8FunctionCallback.java b/src/main/java/com/caoccao/javet/interop/callback/V8FunctionCallback.java index 5f6e1a61..d12c2d53 100644 --- a/src/main/java/com/caoccao/javet/interop/callback/V8FunctionCallback.java +++ b/src/main/java/com/caoccao/javet/interop/callback/V8FunctionCallback.java @@ -21,10 +21,7 @@ import com.caoccao.javet.interop.V8Runtime; import com.caoccao.javet.interop.converters.IJavetConverter; import com.caoccao.javet.interop.converters.JavetConverterConfig; -import com.caoccao.javet.utils.JavetReflectionUtils; -import com.caoccao.javet.utils.JavetResourceUtils; -import com.caoccao.javet.utils.JavetTypeUtils; -import com.caoccao.javet.utils.SimpleMap; +import com.caoccao.javet.utils.*; import com.caoccao.javet.values.IV8Value; import com.caoccao.javet.values.V8Value; @@ -189,7 +186,7 @@ private static Object convert(IJavetConverter converter, Class expectedClass, return ((Character) convertedObject).charValue(); } else if (convertedObjectClass == String.class) { String convertedString = (String) convertedObject; - return convertedString.length() > 0 ? + return StringUtils.isNotEmpty(convertedString) ? convertedString.charAt(0) : converter.getConfig().getDefaultChar(); } } @@ -252,7 +249,7 @@ private static Object convert(IJavetConverter converter, Class expectedClass, } else if (expectedClass == Character.class) { if (convertedObjectClass == String.class) { String convertedString = (String) convertedObject; - return convertedString.length() > 0 ? + return StringUtils.isNotEmpty(convertedString) ? convertedString.charAt(0) : converter.getConfig().getDefaultChar(); } } else if (expectedClass == Optional.class) { diff --git a/src/main/java/com/caoccao/javet/utils/JavetTypeUtils.java b/src/main/java/com/caoccao/javet/utils/JavetTypeUtils.java index aa0d60c6..de25b708 100644 --- a/src/main/java/com/caoccao/javet/utils/JavetTypeUtils.java +++ b/src/main/java/com/caoccao/javet/utils/JavetTypeUtils.java @@ -122,7 +122,7 @@ public static Object toApproximatePrimitive(Class expectedClass, Object objec return object; } else if (object instanceof String) { String objectString = (String) object; - if (objectString.length() > 0) { + if (StringUtils.isNotEmpty(objectString)) { return objectString.charAt(0); } } diff --git a/src/main/java/com/caoccao/javet/values/reference/IV8ValueFunction.java b/src/main/java/com/caoccao/javet/values/reference/IV8ValueFunction.java index 26f32ff5..d0a09f4e 100644 --- a/src/main/java/com/caoccao/javet/values/reference/IV8ValueFunction.java +++ b/src/main/java/com/caoccao/javet/values/reference/IV8ValueFunction.java @@ -23,6 +23,7 @@ import com.caoccao.javet.enums.V8ValueInternalType; import com.caoccao.javet.exceptions.JavetException; import com.caoccao.javet.interfaces.IJavetClosable; +import com.caoccao.javet.utils.StringUtils; import com.caoccao.javet.values.V8Value; import com.caoccao.javet.values.primitive.V8ValueBigInteger; import com.caoccao.javet.values.primitive.V8ValueZonedDateTime; @@ -971,7 +972,7 @@ public int hashCode() { * @since 2.0.1 */ public ScriptSource setCodeSnippet(String codeSnippet) { - if (codeSnippet != null && codeSnippet.length() > 0) { + if (StringUtils.isNotEmpty(codeSnippet)) { final int originalCodeLength = code.length(); final int codeSnippetLength = codeSnippet.length(); final int newCodeLength = originalCodeLength - (endPosition - startPosition) + codeSnippetLength; diff --git a/src/main/java/com/caoccao/javet/values/reference/V8ValueFunction.java b/src/main/java/com/caoccao/javet/values/reference/V8ValueFunction.java index fc7f031f..5bf80f94 100644 --- a/src/main/java/com/caoccao/javet/values/reference/V8ValueFunction.java +++ b/src/main/java/com/caoccao/javet/values/reference/V8ValueFunction.java @@ -23,6 +23,7 @@ import com.caoccao.javet.exceptions.JavetException; import com.caoccao.javet.interop.V8Internal; import com.caoccao.javet.interop.V8Runtime; +import com.caoccao.javet.utils.StringUtils; import com.caoccao.javet.utils.V8ValueUtils; import com.caoccao.javet.values.V8Value; import com.caoccao.javet.values.virtual.V8VirtualValueList; @@ -221,8 +222,9 @@ public boolean setSourceCode( SetSourceCodeOptions options) throws JavetException { Objects.requireNonNull(options, "Options cannot be null."); boolean success = false; - if (getJSFunctionType().isUserDefined() && getJSScopeType().isFunction() - && sourceCodeString != null && sourceCodeString.length() > 0) { + if (getJSFunctionType().isUserDefined() + && getJSScopeType().isFunction() + && StringUtils.isNotEmpty(sourceCodeString)) { if (options.isTrimTailingCharacters()) { sourceCodeString = V8ValueUtils.trimAnonymousFunction(sourceCodeString); } diff --git a/src/test/java/com/caoccao/javet/interop/proxy/JavetReflectionObjectFactory.java b/src/test/java/com/caoccao/javet/interop/proxy/JavetReflectionObjectFactory.java index a4931343..f6e60e98 100644 --- a/src/test/java/com/caoccao/javet/interop/proxy/JavetReflectionObjectFactory.java +++ b/src/test/java/com/caoccao/javet/interop/proxy/JavetReflectionObjectFactory.java @@ -19,6 +19,7 @@ import com.caoccao.javet.interfaces.IJavetLogger; import com.caoccao.javet.utils.JavetDefaultLogger; import com.caoccao.javet.utils.JavetResourceUtils; +import com.caoccao.javet.utils.StringUtils; import com.caoccao.javet.values.V8Value; import com.caoccao.javet.values.reference.V8ValueFunction; import com.caoccao.javet.values.reference.V8ValueObject; @@ -225,7 +226,7 @@ public Object intercept( } else if (methodName.startsWith(V8ValueObject.METHOD_PREFIX_GET)) { propertyName = methodName.substring(V8ValueObject.METHOD_PREFIX_GET.length()); } - if (propertyName != null && propertyName.length() > 0) { + if (StringUtils.isNotEmpty(propertyName)) { propertyName = propertyName.substring(0, 1).toLowerCase(Locale.ROOT) + propertyName.substring(1); if (v8ValueObject.has(propertyName)) { @@ -238,7 +239,7 @@ public Object intercept( if (methodName.startsWith(V8ValueObject.METHOD_PREFIX_SET)) { propertyName = methodName.substring(V8ValueObject.METHOD_PREFIX_SET.length()); } - if (propertyName != null && propertyName.length() > 0) { + if (StringUtils.isNotEmpty(propertyName)) { propertyName = propertyName.substring(0, 1).toLowerCase(Locale.ROOT) + propertyName.substring(1); if (v8ValueObject.has(propertyName)) { diff --git a/src/test/java/com/caoccao/javet/values/reference/TestV8ValueFunction.java b/src/test/java/com/caoccao/javet/values/reference/TestV8ValueFunction.java index f8712f88..08823d5a 100644 --- a/src/test/java/com/caoccao/javet/values/reference/TestV8ValueFunction.java +++ b/src/test/java/com/caoccao/javet/values/reference/TestV8ValueFunction.java @@ -1786,7 +1786,7 @@ public void testOptional() throws JavetException { public Optional test(Optional optionalString) { if (optionalString.isPresent()) { String str = optionalString.get(); - if (str.length() > 0) { + if (StringUtils.isNotEmpty(str)) { return Optional.of(str.substring(1)); } } From 435bd6fd92dc3811581e545deb6184c4776671cd Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Tue, 20 Aug 2024 09:19:32 +0800 Subject: [PATCH 05/13] =?UTF-8?q?=F0=9F=90=B3=20chore:=20Upgrade=20V8=20to?= =?UTF-8?q?=20v12.8.374.17?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/android_v8_build.yml | 2 +- .github/workflows/linux_build_artifact.yml | 2 +- .../workflows/linux_build_node_v8_image.yml | 2 +- .github/workflows/linux_x86_64_build.yml | 2 +- .github/workflows/macos_arm64_build.yml | 2 +- .github/workflows/macos_x86_64_build.yml | 2 +- README.rst | 2 +- cpp/CMakeLists.txt | 1 + cpp/jni/javet_converter.cpp | 4 +- cpp/jni/javet_converter.h | 10 ++-- cpp/jni/javet_jni_function.cpp | 18 +++--- cpp/jni/javet_jni_module.cpp | 5 +- cpp/jni/javet_jni_object.cpp | 12 +++- cpp/jni/javet_v8_runtime.cpp | 2 +- docker/android/base.Dockerfile | 2 +- docker/linux-arm64/base_all_in_one.Dockerfile | 2 +- docker/linux-arm64/base_v8.Dockerfile | 6 +- .../linux-x86_64/base_all_in_one.Dockerfile | 2 +- docker/linux-x86_64/base_v8.Dockerfile | 6 +- docker/linux-x86_64/build.env | 2 +- docker/windows-x86_64/base.Dockerfile | 2 +- docs/release_notes/release_notes_3_1.rst | 1 + scripts/python/change_node_v8_version.py | 2 +- .../caoccao/javet/enums/JSRuntimeType.java | 2 +- .../values/reference/V8ValueFunction.java | 9 ++- .../values/reference/TestV8ValueFunction.java | 57 +++++++++++++++---- 26 files changed, 104 insertions(+), 55 deletions(-) diff --git a/.github/workflows/android_v8_build.yml b/.github/workflows/android_v8_build.yml index 99395d93..675bd780 100644 --- a/.github/workflows/android_v8_build.yml +++ b/.github/workflows/android_v8_build.yml @@ -8,7 +8,7 @@ on: workflow_dispatch: env: - JAVET_V8_VERSION: 12.7.224.16 + JAVET_V8_VERSION: 12.8.374.17 JAVET_VERSION: 3.1.5 ROOT: /home/runner/work/Javet diff --git a/.github/workflows/linux_build_artifact.yml b/.github/workflows/linux_build_artifact.yml index 0f183b5e..70d6de8b 100644 --- a/.github/workflows/linux_build_artifact.yml +++ b/.github/workflows/linux_build_artifact.yml @@ -18,7 +18,7 @@ env: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_REPO_JAVET: ${{ secrets.DOCKERHUB_REPO_JAVET }} JAVET_NODE_VERSION: 20.15.1 - JAVET_V8_VERSION: 12.7.224.16 + JAVET_V8_VERSION: 12.8.374.17 JAVET_VERSION: 3.1.5 jobs: diff --git a/.github/workflows/linux_build_node_v8_image.yml b/.github/workflows/linux_build_node_v8_image.yml index 72aa909f..e9f5c7e2 100644 --- a/.github/workflows/linux_build_node_v8_image.yml +++ b/.github/workflows/linux_build_node_v8_image.yml @@ -22,7 +22,7 @@ env: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_REPO_JAVET: ${{ secrets.DOCKERHUB_REPO_JAVET }} JAVET_NODE_VERSION: 20.15.1 - JAVET_V8_VERSION: 12.7.224.16 + JAVET_V8_VERSION: 12.8.374.17 JAVET_VERSION: 3.1.5 # if we skip a job using a job level `if` condition, then any dependent jobs also don't run. diff --git a/.github/workflows/linux_x86_64_build.yml b/.github/workflows/linux_x86_64_build.yml index bdc3a3a6..28f187d4 100644 --- a/.github/workflows/linux_x86_64_build.yml +++ b/.github/workflows/linux_x86_64_build.yml @@ -8,7 +8,7 @@ on: env: JAVET_NODE_VERSION: 20.15.1 - JAVET_V8_VERSION: 12.7.224.16 + JAVET_V8_VERSION: 12.8.374.17 JAVET_VERSION: 3.1.5 ROOT: /home/runner/work/Javet diff --git a/.github/workflows/macos_arm64_build.yml b/.github/workflows/macos_arm64_build.yml index d2e7e234..cee42fef 100644 --- a/.github/workflows/macos_arm64_build.yml +++ b/.github/workflows/macos_arm64_build.yml @@ -8,7 +8,7 @@ on: env: JAVET_NODE_VERSION: 20.15.1 - JAVET_V8_VERSION: 12.7.224.16 + JAVET_V8_VERSION: 12.8.374.17 JAVET_VERSION: 3.1.5 ROOT: /Users/runner/work/Javet diff --git a/.github/workflows/macos_x86_64_build.yml b/.github/workflows/macos_x86_64_build.yml index c3ab2422..aebb3c75 100644 --- a/.github/workflows/macos_x86_64_build.yml +++ b/.github/workflows/macos_x86_64_build.yml @@ -8,7 +8,7 @@ on: env: JAVET_NODE_VERSION: 20.15.1 - JAVET_V8_VERSION: 12.7.224.16 + JAVET_V8_VERSION: 12.8.374.17 JAVET_VERSION: 3.1.5 ROOT: /Users/runner/work/Javet diff --git a/README.rst b/README.rst index efa215d1..d57d55f7 100644 --- a/README.rst +++ b/README.rst @@ -47,7 +47,7 @@ arm ✔️ ❌ ❌ ❌ arm64 ✔️ ✔️ ✔️ ❌ =========== ======= ======= ======= ======= -* Node.js ``v20.15.1`` + V8 ``v12.7.224.16`` +* Node.js ``v20.15.1`` + V8 ``v12.8.374.17`` * Dynamic switch between Node.js and V8 mode (`Which mode do you prefer? `_) * Polyfill V8 mode with `Javenode `_ * V8 API exposure in JVM diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 587b273e..65e4414f 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -99,6 +99,7 @@ if(DEFINED V8_DIR) ${V8_DIR} ${V8_DIR}/include ${V8_DIR}/third_party/abseil-cpp + ${V8_DIR}/third_party/fp16/src/include ${V8_RELEASE_DIR}/gen) if(DEFINED ENABLE_I18N) add_definitions(-DENABLE_I18N -DV8_INTL_SUPPORT) diff --git a/cpp/jni/javet_converter.cpp b/cpp/jni/javet_converter.cpp index c22b8edd..a9bb4299 100644 --- a/cpp/jni/javet_converter.cpp +++ b/cpp/jni/javet_converter.cpp @@ -625,12 +625,12 @@ namespace Javet { return ToExternalV8Value(jniEnv, v8Runtime, v8Context, v8LocalObject); } else if (v8::internal::IsContext(v8InternalObject)) { - auto v8InternalContext = V8InternalContext::cast(v8InternalObject); + auto v8InternalContext = v8::internal::Cast(v8InternalObject); auto v8LocalContext = v8::Utils::ToLocal(v8::internal::handle(v8InternalContext, v8InternalIsolate)); return ToExternalV8Context(jniEnv, v8Runtime, v8Context, v8LocalContext); } else if (v8::internal::IsModule(v8InternalObject)) { - auto v8LocalModule = v8::Utils::ToLocal(v8::internal::handle(V8InternalModule::cast(v8InternalObject), v8InternalIsolate)); + auto v8LocalModule = v8::Utils::ToLocal(v8::internal::handle(v8::internal::Cast(v8InternalObject), v8InternalIsolate)); return ToExternalV8Module(jniEnv, v8Runtime, v8Context, v8LocalModule); } else if (v8::internal::IsScript(v8InternalObject)) { diff --git a/cpp/jni/javet_converter.h b/cpp/jni/javet_converter.h index e105c69c..f08643b6 100644 --- a/cpp/jni/javet_converter.h +++ b/cpp/jni/javet_converter.h @@ -332,7 +332,7 @@ namespace Javet { #ifdef ENABLE_NODE return V8InternalContext::cast(*v8::Utils::OpenHandle(*v8LocalContext)); #else - return *V8InternalContext::cast(*v8::Utils::OpenHandle(*v8LocalContext)); + return *v8::internal::Cast(*v8::Utils::OpenHandle(*v8LocalContext)); #endif } @@ -341,7 +341,7 @@ namespace Javet { #ifdef ENABLE_NODE return V8InternalJSFunction::cast(*v8::Utils::OpenHandle(*v8LocalValue)); #else - return *V8InternalJSFunction::cast(*v8::Utils::OpenHandle(*v8LocalValue)); + return *v8::internal::Cast(*v8::Utils::OpenHandle(*v8LocalValue)); #endif } @@ -350,7 +350,7 @@ namespace Javet { #ifdef ENABLE_NODE return V8InternalJSObject::cast(*v8::Utils::OpenHandle(*v8LocalValue)); #else - return *V8InternalJSObject::cast(*v8::Utils::OpenHandle(*v8LocalValue)); + return *v8::internal::Cast(*v8::Utils::OpenHandle(*v8LocalValue)); #endif } @@ -359,7 +359,7 @@ namespace Javet { #ifdef ENABLE_NODE return V8InternalModule::cast(*v8::Utils::OpenHandle(*v8LocalModule)); #else - return *V8InternalModule::cast(*v8::Utils::OpenHandle(*v8LocalModule)); + return *v8::internal::Cast(*v8::Utils::OpenHandle(*v8LocalModule)); #endif } @@ -368,7 +368,7 @@ namespace Javet { #ifdef ENABLE_NODE return V8InternalScript::cast(*v8::Utils::OpenHandle(*v8LocalScript)); #else - return *V8InternalScript::cast(*v8::Utils::OpenHandle(*v8LocalScript)); + return *v8::internal::Cast(*v8::Utils::OpenHandle(*v8LocalScript)); #endif } } diff --git a/cpp/jni/javet_jni_function.cpp b/cpp/jni/javet_jni_function.cpp index e405427c..fa60158d 100644 --- a/cpp/jni/javet_jni_function.cpp +++ b/cpp/jni/javet_jni_function.cpp @@ -244,7 +244,7 @@ JNIEXPORT jobjectArray JNICALL Java_com_caoccao_javet_interop_V8Native_functionG auto v8InternalScript = V8InternalScript::cast(v8InternalShared.script()); auto wrappedArguments = v8InternalScript.wrapped_arguments(); #else - auto v8InternalScript = V8InternalScript::cast(v8InternalShared->script()); + auto v8InternalScript = v8::internal::Cast(v8InternalShared->script()); auto wrappedArguments = *v8InternalScript->wrapped_arguments(); #endif auto length = wrappedArguments.length(); @@ -274,7 +274,7 @@ JNIEXPORT jbyteArray JNICALL Java_com_caoccao_javet_interop_V8Native_functionGet auto v8InternalScript = V8InternalScript::cast(v8InternalShared.script()); if (v8InternalScript.is_wrapped()) { #else - auto v8InternalScript = V8InternalScript::cast(v8InternalShared->script()); + auto v8InternalScript = v8::internal::Cast(v8InternalShared->script()); if (v8InternalScript->is_wrapped()) { #endif V8TryCatch v8TryCatch(v8Context->GetIsolate()); @@ -425,8 +425,8 @@ JNIEXPORT jobject JNICALL Java_com_caoccao_javet_interop_V8Native_functionGetScr V8InternalAllowNullsFlag::DISALLOW_NULLS, V8InternalRobustnessFlag::ROBUST_STRING_TRAVERSAL, 0, sourceLength); #else - auto v8InternalScript = V8InternalScript::cast(v8InternalShared->script()); - auto v8InternalSource = V8InternalString::cast(v8InternalScript->source()); + auto v8InternalScript = v8::internal::Cast(v8InternalShared->script()); + auto v8InternalSource = v8::internal::Cast(v8InternalScript->source()); const int startPosition = v8InternalShared->StartPosition(); const int endPosition = v8InternalShared->EndPosition(); const int sourceLength = v8InternalSource->length(); @@ -461,8 +461,8 @@ JNIEXPORT jstring JNICALL Java_com_caoccao_javet_interop_V8Native_functionGetSou V8InternalAllowNullsFlag::DISALLOW_NULLS, V8InternalRobustnessFlag::ROBUST_STRING_TRAVERSAL, startPosition, endPosition - startPosition); #else - auto v8InternalScript = V8InternalScript::cast(v8InternalShared->script()); - auto v8InternalSource = V8InternalString::cast(v8InternalScript->source()); + auto v8InternalScript = v8::internal::Cast(v8InternalShared->script()); + auto v8InternalSource = v8::internal::Cast(v8InternalScript->source()); const int startPosition = v8InternalShared->StartPosition(); const int endPosition = v8InternalShared->EndPosition(); auto sourceCode = v8InternalSource->ToCString( @@ -551,7 +551,7 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_functionSetSc bool sourceCodeEquals = v8InternalScript.source().StrictEquals(*v8InternalSource); bool positionEquals = startPosition == v8InternalShared.StartPosition() && endPosition == v8InternalShared.EndPosition(); #else - auto v8InternalScript = V8InternalScript::cast(v8InternalShared->script()); + auto v8InternalScript = v8::internal::Cast(v8InternalShared->script()); auto v8InternalSource = v8::Utils::OpenHandle(*umSourceCode); bool sourceCodeEquals = V8InternalObject::StrictEquals(v8InternalScript->source(), *v8InternalSource); bool positionEquals = startPosition == v8InternalShared->StartPosition() && endPosition == v8InternalShared->EndPosition(); @@ -629,8 +629,8 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_functionSetSo const int endPosition = v8InternalShared.EndPosition(); const int sourceLength = v8InternalSource.length(); #else - auto v8InternalScript = V8InternalScript::cast(v8InternalShared->script()); - auto v8InternalSource = V8InternalString::cast(v8InternalScript->source()); + auto v8InternalScript = v8::internal::Cast(v8InternalShared->script()); + auto v8InternalSource = v8::internal::Cast(v8InternalScript->source()); const int startPosition = v8InternalShared->StartPosition(); const int endPosition = v8InternalShared->EndPosition(); const int sourceLength = v8InternalSource->length(); diff --git a/cpp/jni/javet_jni_module.cpp b/cpp/jni/javet_jni_module.cpp index 79fcfe99..42842b74 100644 --- a/cpp/jni/javet_jni_module.cpp +++ b/cpp/jni/javet_jni_module.cpp @@ -216,10 +216,11 @@ JNIEXPORT jstring JNICALL Java_com_caoccao_javet_interop_V8Native_moduleGetResou auto v8InternalModule = Javet::Converter::ToV8InternalModule(v8LocalModule); V8LocalValue v8LocalObjectName; if (v8LocalModule->IsSourceTextModule()) { - auto v8InternalSourceTextModule = V8InternalSourceTextModule::cast(v8InternalModule); #ifdef ENABLE_NODE + auto v8InternalSourceTextModule = V8InternalSourceTextModule::cast(v8InternalModule); auto v8InternalScript = v8InternalSourceTextModule.GetScript(); #else + auto v8InternalSourceTextModule = v8::internal::Cast(v8InternalModule); auto v8InternalScript = *((*v8InternalSourceTextModule).GetScript()); #endif auto v8InternalObjectNameOrSourceURL = v8InternalScript.GetNameOrSourceURL(); @@ -229,7 +230,7 @@ JNIEXPORT jstring JNICALL Java_com_caoccao_javet_interop_V8Native_moduleGetResou #ifdef ENABLE_NODE auto v8InternalSyntheticModule = V8InternalSyntheticModule::cast(v8InternalModule); #else - auto v8InternalSyntheticModule = *V8InternalSyntheticModule::cast(v8InternalModule); + auto v8InternalSyntheticModule = *v8::internal::Cast(v8InternalModule); #endif auto v8InternalStringName = v8InternalSyntheticModule.name(); v8LocalObjectName = v8::Utils::ToLocal(v8::internal::handle(v8InternalStringName, v8InternalIsolate)); diff --git a/cpp/jni/javet_jni_object.cpp b/cpp/jni/javet_jni_object.cpp index 31ef3de3..104f63df 100644 --- a/cpp/jni/javet_jni_object.cpp +++ b/cpp/jni/javet_jni_object.cpp @@ -646,7 +646,7 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_objectIsFroze #ifdef ENABLE_NODE auto elementKind = V8InternalJSObject::cast(v8InternalJSObject).GetElementsKind(); #else - auto elementKind = V8InternalJSObject::cast(v8InternalJSObject)->GetElementsKind(); + auto elementKind = v8::internal::Cast(v8InternalJSObject)->GetElementsKind(); #endif return v8::internal::IsFrozenElementsKind(elementKind); } @@ -661,7 +661,7 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_objectIsSeale #ifdef ENABLE_NODE auto elementKind = V8InternalJSObject::cast(v8InternalJSObject).GetElementsKind(); #else - auto elementKind = V8InternalJSObject::cast(v8InternalJSObject)->GetElementsKind(); + auto elementKind = v8::internal::Cast(v8InternalJSObject)->GetElementsKind(); #endif return v8::internal::IsSealedElementsKind(elementKind); } @@ -718,7 +718,11 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_objectSetAcce return false; } if (mContextGetter == nullptr) { +#ifdef ENABLE_NODE v8MaybeBool = v8LocalObject.As()->SetAccessor(v8Context, v8LocalName, nullptr); +#else + v8MaybeBool = v8LocalObject.As()->SetNativeDataProperty(v8Context, v8LocalName, nullptr); +#endif } else { auto v8LocalArrayContext = v8::Array::New(v8Context->GetIsolate(), 2); @@ -745,7 +749,11 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_objectSetAcce maybeResult = v8LocalArrayContext->Set(v8Context, 1, v8LocalContextSetterHandle); setter = Javet::Callback::JavetPropertySetterCallback; } +#ifdef ENABLE_NODE v8MaybeBool = v8LocalObject.As()->SetAccessor(v8Context, v8LocalName, getter, setter, v8LocalArrayContext); +#else + v8MaybeBool = v8LocalObject.As()->SetNativeDataProperty(v8Context, v8LocalName, getter, setter, v8LocalArrayContext); +#endif } } if (v8MaybeBool.IsNothing()) { diff --git a/cpp/jni/javet_v8_runtime.cpp b/cpp/jni/javet_v8_runtime.cpp index abedeff6..aeff20cc 100644 --- a/cpp/jni/javet_v8_runtime.cpp +++ b/cpp/jni/javet_v8_runtime.cpp @@ -316,7 +316,7 @@ namespace Javet { jstring mGlobalName = (jstring)jniEnv->CallObjectMethod(mRuntimeOptions, jmethodV8RuntimeOptionsGetGlobalName); if (mGlobalName != nullptr) { auto umGlobalName = Javet::Converter::ToV8String(jniEnv, v8::Context::New(v8Isolate), mGlobalName); - v8ObjectTemplate->SetAccessor(umGlobalName, GlobalAccessorGetterCallback); + v8ObjectTemplate->SetNativeDataProperty(umGlobalName, GlobalAccessorGetterCallback); } } auto v8LocalContext = v8::Context::New(v8Isolate, nullptr, v8ObjectTemplate); diff --git a/docker/android/base.Dockerfile b/docker/android/base.Dockerfile index e09d4e97..b1735184 100644 --- a/docker/android/base.Dockerfile +++ b/docker/android/base.Dockerfile @@ -15,7 +15,7 @@ # Usage: docker build -t sjtucaocao/javet-android:3.1.5 -f docker/android/base.Dockerfile . -ARG JAVET_V8_VERSION=12.7.224.16 +ARG JAVET_V8_VERSION=12.8.374.17 FROM ubuntu:20.04 WORKDIR / diff --git a/docker/linux-arm64/base_all_in_one.Dockerfile b/docker/linux-arm64/base_all_in_one.Dockerfile index c5ac515b..a8cd72a2 100644 --- a/docker/linux-arm64/base_all_in_one.Dockerfile +++ b/docker/linux-arm64/base_all_in_one.Dockerfile @@ -16,7 +16,7 @@ # Usage: docker build -t sjtucaocao/javet-arm64:3.1.5 -f docker/linux-arm64/base_all_in_one.Dockerfile . ARG JAVET_NODE_VERSION=18.15.0 -ARG JAVET_V8_VERSION=12.7.224.16 +ARG JAVET_V8_VERSION=12.8.374.17 FROM ubuntu:20.04 WORKDIR / diff --git a/docker/linux-arm64/base_v8.Dockerfile b/docker/linux-arm64/base_v8.Dockerfile index 11dcd4a8..bf25271e 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_12.7.224.16 \ +# -t sjtucaocao/javet:arm64-base-v8_12.8.374.17 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ -# --build-arg JAVET_V8_VERSION=12.7.224.16 \ +# --build-arg JAVET_V8_VERSION=12.8.374.17 \ # -f docker/linux-arm64/base_v8.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet -ARG JAVET_V8_VERSION=12.7.224.16 +ARG JAVET_V8_VERSION=12.8.374.17 FROM ${JAVET_REPO}:arm64-base-jvm diff --git a/docker/linux-x86_64/base_all_in_one.Dockerfile b/docker/linux-x86_64/base_all_in_one.Dockerfile index 97003a95..96a01a10 100644 --- a/docker/linux-x86_64/base_all_in_one.Dockerfile +++ b/docker/linux-x86_64/base_all_in_one.Dockerfile @@ -19,7 +19,7 @@ FROM ubuntu:20.04 WORKDIR / ARG JAVET_NODE_VERSION=20.15.1 -ARG JAVET_V8_VERSION=12.7.224.16 +ARG JAVET_V8_VERSION=12.8.374.17 # Update Ubuntu ENV DEBIAN_FRONTEND=noninteractive diff --git a/docker/linux-x86_64/base_v8.Dockerfile b/docker/linux-x86_64/base_v8.Dockerfile index b3dca751..040841a7 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_12.7.224.16 \ +# -t sjtucaocao/javet:x86_64-base-v8_12.8.374.17 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ -# --build-arg JAVET_V8_VERSION=12.7.224.16 \ +# --build-arg JAVET_V8_VERSION=12.8.374.17 \ # -f docker/linux-x86_64/base_v8.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet -ARG JAVET_V8_VERSION=12.7.224.16 +ARG JAVET_V8_VERSION=12.8.374.17 FROM ${JAVET_REPO}:x86_64-base-jvm diff --git a/docker/linux-x86_64/build.env b/docker/linux-x86_64/build.env index a265b186..88957fa2 100644 --- a/docker/linux-x86_64/build.env +++ b/docker/linux-x86_64/build.env @@ -1,4 +1,4 @@ JAVET_REPO=sjtucaocao/javet JAVET_VERSION=3.1.5 -JAVET_V8_VERSION=12.7.224.16 +JAVET_V8_VERSION=12.8.374.17 JAVET_NODE_VERSION=20.15.1 diff --git a/docker/windows-x86_64/base.Dockerfile b/docker/windows-x86_64/base.Dockerfile index ac2168ba..690a0fde 100644 --- a/docker/windows-x86_64/base.Dockerfile +++ b/docker/windows-x86_64/base.Dockerfile @@ -32,7 +32,7 @@ # Usage: docker build -t sjtucaocao/javet-windows:3.1.5 -m 4G -f docker/windows-x86_64/base.Dockerfile . ARG JAVET_NODE_VERSION=20.15.1 -ARG JAVET_V8_VERSION=12.7.224.16 +ARG JAVET_V8_VERSION=12.8.374.17 # https://hub.docker.com/_/microsoft-windows FROM mcr.microsoft.com/windows:20H2-amd64 diff --git a/docs/release_notes/release_notes_3_1.rst b/docs/release_notes/release_notes_3_1.rst index 97db9b43..5a01a4fd 100644 --- a/docs/release_notes/release_notes_3_1.rst +++ b/docs/release_notes/release_notes_3_1.rst @@ -5,6 +5,7 @@ Release Notes 3.1.x 3.1.5 V8 v12.8 -------------- +* Upgraded V8 to ``v12.8.374.17`` (2024-08-19) * Fixed a bug of the default export in ``JavetBuiltInModuleResolver`` 3.1.4 V8 v12.7 diff --git a/scripts/python/change_node_v8_version.py b/scripts/python/change_node_v8_version.py index d6145648..cca086b0 100644 --- a/scripts/python/change_node_v8_version.py +++ b/scripts/python/change_node_v8_version.py @@ -166,7 +166,7 @@ def update(self) -> None: def main(): change_node_version = ChangeNodeVersion('20.15.1') change_node_version.update() - change_v8_version = ChangeV8Version('12.7.224.16') + change_v8_version = ChangeV8Version('12.8.374.17') change_v8_version.update() return 0 diff --git a/src/main/java/com/caoccao/javet/enums/JSRuntimeType.java b/src/main/java/com/caoccao/javet/enums/JSRuntimeType.java index 6fa000b8..d0c25827 100644 --- a/src/main/java/com/caoccao/javet/enums/JSRuntimeType.java +++ b/src/main/java/com/caoccao/javet/enums/JSRuntimeType.java @@ -47,7 +47,7 @@ public enum JSRuntimeType { */ V8( "v8", - "12.7.224.16", + "12.8.374.17", V8RuntimeOptions::new, o -> o instanceof V8RuntimeOptions); diff --git a/src/main/java/com/caoccao/javet/values/reference/V8ValueFunction.java b/src/main/java/com/caoccao/javet/values/reference/V8ValueFunction.java index 5bf80f94..16d6ac2b 100644 --- a/src/main/java/com/caoccao/javet/values/reference/V8ValueFunction.java +++ b/src/main/java/com/caoccao/javet/values/reference/V8ValueFunction.java @@ -209,7 +209,9 @@ public boolean setContext(V8Context v8Context) throws JavetException { @Override public boolean setScriptSource(ScriptSource scriptSource, boolean cloneScript) throws JavetException { boolean success = false; - if (getJSFunctionType().isUserDefined() && getJSScopeType().isFunction() && scriptSource != null) { + if (getJSFunctionType().isUserDefined() + && (getJSScopeType().isFunction() || getJSScopeType().isScript()) + && scriptSource != null) { success = checkV8Runtime().getV8Internal().functionSetScriptSource( this, scriptSource, cloneScript); } @@ -223,7 +225,7 @@ public boolean setSourceCode( Objects.requireNonNull(options, "Options cannot be null."); boolean success = false; if (getJSFunctionType().isUserDefined() - && getJSScopeType().isFunction() + && (getJSScopeType().isFunction() || getJSScopeType().isScript()) && StringUtils.isNotEmpty(sourceCodeString)) { if (options.isTrimTailingCharacters()) { sourceCodeString = V8ValueUtils.trimAnonymousFunction(sourceCodeString); @@ -239,7 +241,8 @@ && getJSScopeType().isFunction() } else { ScriptSource originalScriptSource = v8Internal.functionGetScriptSource(this); ScriptSource newScriptSource = originalScriptSource.setCodeSnippet(sourceCodeString); - if (getJSFunctionType().isUserDefined() && getJSScopeType().isFunction()) { + if (getJSFunctionType().isUserDefined() + && (getJSScopeType().isFunction() || getJSScopeType().isScript())) { success = v8Internal.functionSetScriptSource( this, newScriptSource, options.isCloneScript()); } diff --git a/src/test/java/com/caoccao/javet/values/reference/TestV8ValueFunction.java b/src/test/java/com/caoccao/javet/values/reference/TestV8ValueFunction.java index 08823d5a..32a4dba2 100644 --- a/src/test/java/com/caoccao/javet/values/reference/TestV8ValueFunction.java +++ b/src/test/java/com/caoccao/javet/values/reference/TestV8ValueFunction.java @@ -828,9 +828,17 @@ public void testContextScope(int optionId) throws JavetException { @V8Function public Integer contextScope(V8ValueFunction v8ValueFunction) throws JavetException { assertTrue(v8ValueFunction.getJSFunctionType().isUserDefined()); - assertTrue(v8ValueFunction.getJSScopeType().isFunction()); - if (v8ValueFunction.setSourceCode("() => a + 2", options)) { + if (v8Runtime.getJSRuntimeType().isNode()) { assertTrue(v8ValueFunction.getJSScopeType().isFunction()); + } else { + assertTrue(v8ValueFunction.getJSScopeType().isScript()); + } + if (v8ValueFunction.setSourceCode("() => a + 2", options)) { + if (v8Runtime.getJSRuntimeType().isNode()) { + assertTrue(v8ValueFunction.getJSScopeType().isFunction()); + } else { + assertTrue(v8ValueFunction.getJSScopeType().isScript()); + } return v8ValueFunction.callInteger(null); } else { return 0; @@ -1226,7 +1234,11 @@ public void testGetAndSetContext() throws JavetException { assertEquals("() => a + b + 1", originalScriptSource.getCodeSnippet(), "The code snippet should match."); assertTrue(originalV8ValueFunction.getJSScopeType().isClass(), "The context is not ready."); assertEquals(5, originalV8ValueFunction.callInteger(null), "Populate the context."); - assertTrue(originalV8ValueFunction.getJSScopeType().isFunction(), "The context is ready."); + if (v8Runtime.getJSRuntimeType().isNode()) { + assertTrue(originalV8ValueFunction.getJSScopeType().isFunction(), "The context is ready."); + } else { + assertTrue(originalV8ValueFunction.getJSScopeType().isScript(), "The context is ready."); + } try (V8ValueFunction crackedV8ValueFunction = v8Runtime.createV8ValueFunction(crackedCodeString); V8Context v8Context = originalV8ValueFunction.getContext()) { assertNotNull(v8Context); @@ -1274,12 +1286,20 @@ public Integer intercept(V8ValueFunction v8ValueFunction) throws JavetException if (v8ValueFunction.getJSScopeType().isClass()) { v8ValueFunction.callInteger(null, 0); } - assertTrue(v8ValueFunction.getJSScopeType().isFunction()); + if (v8Runtime.getJSRuntimeType().isNode()) { + assertTrue(v8ValueFunction.getJSScopeType().isFunction()); + } else { + assertTrue(v8ValueFunction.getJSScopeType().isScript()); + } String originalCodeString = v8ValueFunction.getSourceCode(); String newCodeString = originalCodeString + " /*\n測試\nI am longer\n*/ + 1"; v8ValueFunction.setSourceCode(newCodeString, options); int result = v8ValueFunction.callInteger(null, 1); - assertTrue(v8ValueFunction.getJSScopeType().isFunction()); + if (v8Runtime.getJSRuntimeType().isNode()) { + assertTrue(v8ValueFunction.getJSScopeType().isFunction()); + } else { + assertTrue(v8ValueFunction.getJSScopeType().isScript()); + } v8ValueFunction.setSourceCode(originalCodeString, options); ++callCount; return result; @@ -1441,23 +1461,38 @@ public void testGetAndSetRegularSourceCode(int optionId) throws JavetException { "The cache is not ready and the scope type should be [Class]."); assertEquals(i, v8ValueFunction.callInteger(null), "Calling the function to build the cache and the result should match."); - assertTrue(v8ValueFunction.getJSScopeType().isFunction(), - "The cache is ready and the scope type should be [Function]."); + if (v8Runtime.getJSRuntimeType().isNode()) { + assertTrue(v8ValueFunction.getJSScopeType().isFunction(), + "The cache is ready and the scope type should be [Function]."); + } else { + assertTrue(v8ValueFunction.getJSScopeType().isScript(), + "The cache is ready and the scope type should be [Script]."); + } assertTrue(v8ValueFunction.setSourceCode(MessageFormat.format(functionBodyTemplate[1], i), options), "Updating the source code should pass."); assertEquals(i + 1, v8ValueFunction.callInteger(null), "Calling the new function and the result should match."); assertTrue(v8ValueFunction.setSourceCode(functionBodies.get(i), options), "Restoring the source code should pass."); - assertTrue(v8ValueFunction.getJSScopeType().isFunction(), - "The cache is refreshed and the scope type should be [Function]."); + if (v8Runtime.getJSRuntimeType().isNode()) { + assertTrue(v8ValueFunction.getJSScopeType().isFunction(), + "The cache is refreshed and the scope type should be [Function]."); + } else { + assertTrue(v8ValueFunction.getJSScopeType().isScript(), + "The cache is refreshed and the scope type should be [Script]."); + } } // Verify the cache. try (V8ValueFunction v8ValueFunction = v8Runtime.getGlobalObject().get(functionNames.get(i))) { assertTrue(v8ValueFunction.getJSFunctionType().isUserDefined(), "Function type should be user defined."); - assertTrue(v8ValueFunction.getJSScopeType().isFunction(), - "The cache is restored and the scope type should be [Function]."); + if (v8Runtime.getJSRuntimeType().isNode()) { + assertTrue(v8ValueFunction.getJSScopeType().isFunction(), + "The cache is restored and the scope type should be [Function]."); + } else { + assertTrue(v8ValueFunction.getJSScopeType().isScript(), + "The cache is restored and the scope type should be [Script]."); + } assertEquals(i, v8ValueFunction.callInteger(null), "Calling the function from the cache and the result should match."); } From becd8203a57c57d58d50ceb07d3ebaab967f831d Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Tue, 20 Aug 2024 09:56:47 +0800 Subject: [PATCH 06/13] =?UTF-8?q?=F0=9F=A6=84=20refactor:=20Adjust=20JS=20?= =?UTF-8?q?type=20conversion=20priority=20for=20better=20performance?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cpp/jni/javet_converter.cpp | 464 +++++++++++------------ docs/release_notes/release_notes_3_1.rst | 1 + 2 files changed, 232 insertions(+), 233 deletions(-) diff --git a/cpp/jni/javet_converter.cpp b/cpp/jni/javet_converter.cpp index a9bb4299..fcc179fc 100644 --- a/cpp/jni/javet_converter.cpp +++ b/cpp/jni/javet_converter.cpp @@ -656,179 +656,261 @@ namespace Javet { return ToExternalV8ValueNull(jniEnv, v8Runtime); } // Reference types - // Note: Reference types must be checked before primitive types are checked. - if (v8Value->IsArray()) { - return jniEnv->NewObject( - jclassV8ValueArray, - jmethodIDV8ValueArrayConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsTypedArray()) { - int type = V8ValueReferenceType::Invalid; - if (v8Value->IsBigInt64Array()) { - type = V8ValueReferenceType::BigInt64Array; + if (v8Value->IsObject()) { + if (v8Value->IsArray()) { + return jniEnv->NewObject( + jclassV8ValueArray, + jmethodIDV8ValueArrayConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - else if (v8Value->IsBigUint64Array()) { - type = V8ValueReferenceType::BigUint64Array; + if (v8Value->IsTypedArray()) { + int type = V8ValueReferenceType::Invalid; + if (v8Value->IsBigInt64Array()) { + type = V8ValueReferenceType::BigInt64Array; + } + else if (v8Value->IsBigUint64Array()) { + type = V8ValueReferenceType::BigUint64Array; + } + else if (v8Value->IsFloat32Array()) { + type = V8ValueReferenceType::Float32Array; + } + else if (v8Value->IsFloat64Array()) { + type = V8ValueReferenceType::Float64Array; + } + else if (v8Value->IsInt16Array()) { + type = V8ValueReferenceType::Int16Array; + } + else if (v8Value->IsInt32Array()) { + type = V8ValueReferenceType::Int32Array; + } + else if (v8Value->IsInt8Array()) { + type = V8ValueReferenceType::Int8Array; + } + else if (v8Value->IsUint16Array()) { + type = V8ValueReferenceType::Uint16Array; + } + else if (v8Value->IsUint32Array()) { + type = V8ValueReferenceType::Uint32Array; + } + else if (v8Value->IsUint8Array()) { + type = V8ValueReferenceType::Uint8Array; + } + else if (v8Value->IsUint8ClampedArray()) { + type = V8ValueReferenceType::Uint8ClampedArray; + } + if (type != V8ValueReferenceType::Invalid) { + return jniEnv->NewObject( + jclassV8ValueTypedArray, + jmethodIDV8ValueTypedArrayConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value), + type); + } } - else if (v8Value->IsFloat32Array()) { - type = V8ValueReferenceType::Float32Array; + if (v8Value->IsDataView()) { + return jniEnv->NewObject( + jclassV8ValueDataView, + jmethodIDV8ValueDataViewConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - else if (v8Value->IsFloat64Array()) { - type = V8ValueReferenceType::Float64Array; + if (v8Value->IsArrayBuffer()) { + auto v8ArrayBuffer = v8Value.As(); + return jniEnv->NewObject( + jclassV8ValueArrayBuffer, + jmethodIDV8ValueArrayBufferConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value), + jniEnv->NewDirectByteBuffer(v8ArrayBuffer->GetBackingStore()->Data(), v8ArrayBuffer->ByteLength())); } - else if (v8Value->IsInt16Array()) { - type = V8ValueReferenceType::Int16Array; + if (v8Value->IsSharedArrayBuffer()) { + auto v8SharedArrayBuffer = v8Value.As(); + return jniEnv->NewObject( + jclassV8ValueSharedArrayBuffer, + jmethodIDV8ValueSharedArrayBufferConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value), + jniEnv->NewDirectByteBuffer(v8SharedArrayBuffer->GetBackingStore()->Data(), v8SharedArrayBuffer->ByteLength())); } - else if (v8Value->IsInt32Array()) { - type = V8ValueReferenceType::Int32Array; + if (v8Value->IsArrayBufferView()) { + /* + * ArrayBufferView is a helper type representing any of typed array or DataView. + * This block shouldn't be entered. + */ } - else if (v8Value->IsInt8Array()) { - type = V8ValueReferenceType::Int8Array; + if (v8Value->IsWeakMap()) { + return jniEnv->NewObject( + jclassV8ValueWeakMap, + jmethodIDV8ValueWeakMapConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - else if (v8Value->IsUint16Array()) { - type = V8ValueReferenceType::Uint16Array; + if (v8Value->IsWeakSet()) { + return jniEnv->NewObject( + jclassV8ValueWeakSet, + jmethodIDV8ValueWeakSetConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - else if (v8Value->IsUint32Array()) { - type = V8ValueReferenceType::Uint32Array; + if (v8Value->IsMap()) { + return jniEnv->NewObject( + jclassV8ValueMap, + jmethodIDV8ValueMapConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - else if (v8Value->IsUint8Array()) { - type = V8ValueReferenceType::Uint8Array; + if (v8Value->IsSet()) { + return jniEnv->NewObject( + jclassV8ValueSet, + jmethodIDV8ValueSetConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - else if (v8Value->IsUint8ClampedArray()) { - type = V8ValueReferenceType::Uint8ClampedArray; + if (v8Value->IsMapIterator() || v8Value->IsSetIterator() || v8Value->IsGeneratorObject()) { + return jniEnv->NewObject( + jclassV8ValueIterator, + jmethodIDV8ValueIteratorConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - if (type != V8ValueReferenceType::Invalid) { + if (v8Value->IsArgumentsObject()) { return jniEnv->NewObject( - jclassV8ValueTypedArray, - jmethodIDV8ValueTypedArrayConstructor, + jclassV8ValueArguments, + jmethodIDV8ValueArgumentsConstructor, v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value), - type); + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsPromise()) { + return jniEnv->NewObject( + jclassV8ValuePromise, + jmethodIDV8ValuePromiseConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsRegExp()) { + return jniEnv->NewObject( + jclassV8ValueRegExp, + jmethodIDV8ValueRegExpConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsAsyncFunction()) { + // It defaults to V8ValueFunction. + } + if (v8Value->IsGeneratorFunction()) { + // It defaults to V8ValueFunction. + } + if (v8Value->IsProxy()) { + // Proxy is also a function. So, it needs to be tested before IsFunction(). + return jniEnv->NewObject( + jclassV8ValueProxy, + jmethodIDV8ValueProxyConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsFunction()) { + return jniEnv->NewObject( + jclassV8ValueFunction, + jmethodIDV8ValueFunctionConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsNativeError()) { + return jniEnv->NewObject( + jclassV8ValueError, + jmethodIDV8ValueErrorConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsDate()) { + auto v8Date = v8Value->ToObject(v8Context).ToLocalChecked().As(); + return jniEnv->CallObjectMethod( + v8Runtime->externalV8Runtime, + jmethodIDV8RuntimeCreateV8ValueZonedDateTime, + static_cast(v8Date->ValueOf())); + } + if (v8Value->IsSymbolObject()) { + return jniEnv->NewObject( + jclassV8ValueSymbolObject, + jmethodIDV8ValueSymbolObjectConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsStringObject()) { + return jniEnv->NewObject( + jclassV8ValueStringObject, + jmethodIDV8ValueStringObjectConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsNumberObject()) { + return jniEnv->NewObject( + jclassV8ValueDoubleObject, + jmethodIDV8ValueDoubleObjectConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsBooleanObject()) { + return jniEnv->NewObject( + jclassV8ValueBooleanObject, + jmethodIDV8ValueBooleanObjectConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsBigIntObject()) { + return jniEnv->NewObject( + jclassV8ValueLongObject, + jmethodIDV8ValueLongObjectConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); + } + if (v8Value->IsName()) { + /* + * Name is handled by either String or Symbol. + * This block should not be entered. + */ + } + if (v8Value->IsModule()) { + return jniEnv->NewObject( + jclassV8Module, + jmethodIDV8ModuleConstructor, + v8Runtime->externalV8Runtime, + ToV8PersistentReference(v8Context, v8Value)); } - } - if (v8Value->IsDataView()) { - return jniEnv->NewObject( - jclassV8ValueDataView, - jmethodIDV8ValueDataViewConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsArrayBuffer()) { - auto v8ArrayBuffer = v8Value.As(); - return jniEnv->NewObject( - jclassV8ValueArrayBuffer, - jmethodIDV8ValueArrayBufferConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value), - jniEnv->NewDirectByteBuffer(v8ArrayBuffer->GetBackingStore()->Data(), v8ArrayBuffer->ByteLength())); - } - if (v8Value->IsSharedArrayBuffer()) { - auto v8SharedArrayBuffer = v8Value.As(); - return jniEnv->NewObject( - jclassV8ValueSharedArrayBuffer, - jmethodIDV8ValueSharedArrayBufferConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value), - jniEnv->NewDirectByteBuffer(v8SharedArrayBuffer->GetBackingStore()->Data(), v8SharedArrayBuffer->ByteLength())); - } - if (v8Value->IsArrayBufferView()) { - /* - * ArrayBufferView is a helper type representing any of typed array or DataView. - * This block shouldn't be entered. - */ - } - if (v8Value->IsWeakMap()) { - return jniEnv->NewObject( - jclassV8ValueWeakMap, - jmethodIDV8ValueWeakMapConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsWeakSet()) { - return jniEnv->NewObject( - jclassV8ValueWeakSet, - jmethodIDV8ValueWeakSetConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsMap()) { - return jniEnv->NewObject( - jclassV8ValueMap, - jmethodIDV8ValueMapConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsSet()) { - return jniEnv->NewObject( - jclassV8ValueSet, - jmethodIDV8ValueSetConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsMapIterator() || v8Value->IsSetIterator() || v8Value->IsGeneratorObject()) { - return jniEnv->NewObject( - jclassV8ValueIterator, - jmethodIDV8ValueIteratorConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsArgumentsObject()) { - return jniEnv->NewObject( - jclassV8ValueArguments, - jmethodIDV8ValueArgumentsConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsPromise()) { - return jniEnv->NewObject( - jclassV8ValuePromise, - jmethodIDV8ValuePromiseConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsRegExp()) { return jniEnv->NewObject( - jclassV8ValueRegExp, - jmethodIDV8ValueRegExpConstructor, + jclassV8ValueObject, + jmethodIDV8ValueObjectConstructor, v8Runtime->externalV8Runtime, ToV8PersistentReference(v8Context, v8Value)); } - if (v8Value->IsAsyncFunction()) { - // It defaults to V8ValueFunction. - } - if (v8Value->IsGeneratorFunction()) { - // It defaults to V8ValueFunction. - } - if (v8Value->IsProxy()) { - // Proxy is also a function. So, it needs to be tested before IsFunction(). - return jniEnv->NewObject( - jclassV8ValueProxy, - jmethodIDV8ValueProxyConstructor, + // Primitive types + if (v8Value->IsBoolean()) { + return jniEnv->CallObjectMethod( v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); + jmethodIDV8RuntimeCreateV8ValueBoolean, + v8Value->IsTrue()); } - if (v8Value->IsFunction()) { - return jniEnv->NewObject( - jclassV8ValueFunction, - jmethodIDV8ValueFunctionConstructor, + if (v8Value->IsInt32()) { + return jniEnv->CallObjectMethod( v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); + jmethodIDV8RuntimeCreateV8ValueInteger, + v8Value->Int32Value(v8Context).FromMaybe(0)); } - if (v8Value->IsNativeError()) { - return jniEnv->NewObject( - jclassV8ValueError, - jmethodIDV8ValueErrorConstructor, + if (v8Value->IsNumber()) { + return jniEnv->CallObjectMethod( v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); + jmethodIDV8RuntimeCreateV8ValueDouble, + v8Value->NumberValue(v8Context).FromMaybe(0)); } - if (v8Value->IsSymbolObject()) { - return jniEnv->NewObject( - jclassV8ValueSymbolObject, - jmethodIDV8ValueSymbolObjectConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); + if (v8Value->IsString()) { + return ToExternalV8ValuePrimitive( + jniEnv, + jclassV8ValueString, + jmethodIDV8ValueStringConstructor, + v8Runtime, + v8Context, + v8Value); } if (v8Value->IsSymbol()) { return jniEnv->NewObject( @@ -837,47 +919,6 @@ namespace Javet { v8Runtime->externalV8Runtime, ToV8PersistentReference(v8Context, v8Value)); } - if (v8Value->IsStringObject()) { - return jniEnv->NewObject( - jclassV8ValueStringObject, - jmethodIDV8ValueStringObjectConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsNumberObject()) { - return jniEnv->NewObject( - jclassV8ValueDoubleObject, - jmethodIDV8ValueDoubleObjectConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsBooleanObject()) { - return jniEnv->NewObject( - jclassV8ValueBooleanObject, - jmethodIDV8ValueBooleanObjectConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - if (v8Value->IsBigIntObject()) { - return jniEnv->NewObject( - jclassV8ValueLongObject, - jmethodIDV8ValueLongObjectConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - // Primitive types - if (v8Value->IsBoolean()) { - return jniEnv->CallObjectMethod( - v8Runtime->externalV8Runtime, - jmethodIDV8RuntimeCreateV8ValueBoolean, - v8Value->IsTrue()); - } - if (v8Value->IsInt32()) { - return jniEnv->CallObjectMethod( - v8Runtime->externalV8Runtime, - jmethodIDV8RuntimeCreateV8ValueInteger, - v8Value->Int32Value(v8Context).FromMaybe(0)); - } if (v8Value->IsBigInt()) { V8LocalBigInt v8LocalBigInt = v8Value->ToBigInt(v8Context).ToLocalChecked(); int wordCount = v8LocalBigInt->WordCount(); @@ -903,49 +944,6 @@ namespace Javet { mLongArray); } } - if (v8Value->IsDate()) { - auto v8Date = v8Value->ToObject(v8Context).ToLocalChecked().As(); - return jniEnv->CallObjectMethod( - v8Runtime->externalV8Runtime, - jmethodIDV8RuntimeCreateV8ValueZonedDateTime, - static_cast(v8Date->ValueOf())); - } - if (v8Value->IsNumber()) { - return jniEnv->CallObjectMethod( - v8Runtime->externalV8Runtime, - jmethodIDV8RuntimeCreateV8ValueDouble, - v8Value->NumberValue(v8Context).FromMaybe(0)); - } - if (v8Value->IsString()) { - return ToExternalV8ValuePrimitive( - jniEnv, - jclassV8ValueString, - jmethodIDV8ValueStringConstructor, - v8Runtime, - v8Context, - v8Value); - } - if (v8Value->IsName()) { - /* - * Name is handled by either String or Symbol. - * This block should not be entered. - */ - } - if (v8Value->IsModule()) { - return jniEnv->NewObject( - jclassV8Module, - jmethodIDV8ModuleConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } - // Object needs to be the last one. - if (v8Value->IsObject()) { - return jniEnv->NewObject( - jclassV8ValueObject, - jmethodIDV8ValueObjectConstructor, - v8Runtime->externalV8Runtime, - ToV8PersistentReference(v8Context, v8Value)); - } // Something is wrong. It defaults to toString(). return ToExternalV8ValuePrimitive( jniEnv, diff --git a/docs/release_notes/release_notes_3_1.rst b/docs/release_notes/release_notes_3_1.rst index 5a01a4fd..39ce8f99 100644 --- a/docs/release_notes/release_notes_3_1.rst +++ b/docs/release_notes/release_notes_3_1.rst @@ -7,6 +7,7 @@ Release Notes 3.1.x * Upgraded V8 to ``v12.8.374.17`` (2024-08-19) * Fixed a bug of the default export in ``JavetBuiltInModuleResolver`` +* Adjust JS type conversion priority for better performance 3.1.4 V8 v12.7 -------------- From 9851712dc799d5f63ae5a434ca71adf9938e2055 Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Tue, 20 Aug 2024 12:01:18 +0800 Subject: [PATCH 07/13] =?UTF-8?q?=F0=9F=90=9E=20fix:=20Fixed=20undefined?= =?UTF-8?q?=20symbol=20=5FZTIN12v8=5Finspector17V8InspectorClientE=20for?= =?UTF-8?q?=20Linux=20x86=5F64=20(temporarily)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/linux_x86_64_build.yml | 1 + cpp/jni/version_script.map | 1 + docs/release_notes/release_notes_3_1.rst | 1 + 3 files changed, 3 insertions(+) diff --git a/.github/workflows/linux_x86_64_build.yml b/.github/workflows/linux_x86_64_build.yml index 28f187d4..a9f64d2e 100644 --- a/.github/workflows/linux_x86_64_build.yml +++ b/.github/workflows/linux_x86_64_build.yml @@ -72,6 +72,7 @@ jobs: run: | cd ${{ env.ROOT }}/Javet/cpp sh ./build-linux-x86_64.sh -DV8_DIR=${{ env.ROOT }}/google/v8 + sed -i 's/_ZTIN12v8_inspector17V8InspectorClientE/_ZTVN12v8_inspector17V8InspectorClientE/g' ../src/main/resources/libjavet-v8-linux-x86_64.v.${{ env.JAVET_VERSION }}.so - name: Upload the Artifact uses: actions/upload-artifact@v4 diff --git a/cpp/jni/version_script.map b/cpp/jni/version_script.map index 59167329..7d67d383 100644 --- a/cpp/jni/version_script.map +++ b/cpp/jni/version_script.map @@ -5,6 +5,7 @@ Java_com_caoccao_javet_*; napi_*; node_*; + _*v8_inspector*V8InspectorClient*; local: *; }; diff --git a/docs/release_notes/release_notes_3_1.rst b/docs/release_notes/release_notes_3_1.rst index 39ce8f99..40fc794e 100644 --- a/docs/release_notes/release_notes_3_1.rst +++ b/docs/release_notes/release_notes_3_1.rst @@ -8,6 +8,7 @@ Release Notes 3.1.x * Upgraded V8 to ``v12.8.374.17`` (2024-08-19) * Fixed a bug of the default export in ``JavetBuiltInModuleResolver`` * Adjust JS type conversion priority for better performance +* Fixed undefined symbol ``_ZTIN12v8_inspector17V8InspectorClientE`` for Linux x86_64 (temporarily) 3.1.4 V8 v12.7 -------------- From 9591bc64b38317ea37f48661282f5aaea2510a65 Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Tue, 20 Aug 2024 13:11:42 +0800 Subject: [PATCH 08/13] =?UTF-8?q?=F0=9F=90=8E=20ci:=20Upgrade=20gradle/act?= =?UTF-8?q?ions/setup-gradle@v4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/android_node_build.yml | 2 +- .github/workflows/android_v8_build.yml | 2 +- .github/workflows/build_docs.yml | 2 +- .github/workflows/linux_x86_64_build.yml | 2 +- .github/workflows/macos_arm64_build.yml | 2 +- .github/workflows/macos_x86_64_build.yml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/android_node_build.yml b/.github/workflows/android_node_build.yml index f5c955ae..3937c290 100644 --- a/.github/workflows/android_node_build.yml +++ b/.github/workflows/android_node_build.yml @@ -115,7 +115,7 @@ jobs: python-version: '3.11' - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-version: 8.5 diff --git a/.github/workflows/android_v8_build.yml b/.github/workflows/android_v8_build.yml index 675bd780..fa880590 100644 --- a/.github/workflows/android_v8_build.yml +++ b/.github/workflows/android_v8_build.yml @@ -127,7 +127,7 @@ jobs: python-version: '3.11' - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-version: 8.5 diff --git a/.github/workflows/build_docs.yml b/.github/workflows/build_docs.yml index 7e4aec9d..67d97bab 100644 --- a/.github/workflows/build_docs.yml +++ b/.github/workflows/build_docs.yml @@ -56,7 +56,7 @@ jobs: java-version: '8' - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-version: 8.5 diff --git a/.github/workflows/linux_x86_64_build.yml b/.github/workflows/linux_x86_64_build.yml index a9f64d2e..6e29984c 100644 --- a/.github/workflows/linux_x86_64_build.yml +++ b/.github/workflows/linux_x86_64_build.yml @@ -148,7 +148,7 @@ jobs: java-version: 8 - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-version: 8.5 diff --git a/.github/workflows/macos_arm64_build.yml b/.github/workflows/macos_arm64_build.yml index cee42fef..ebc4c209 100644 --- a/.github/workflows/macos_arm64_build.yml +++ b/.github/workflows/macos_arm64_build.yml @@ -142,7 +142,7 @@ jobs: java-version: 8 - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-version: 8.5 diff --git a/.github/workflows/macos_x86_64_build.yml b/.github/workflows/macos_x86_64_build.yml index aebb3c75..c3202f93 100644 --- a/.github/workflows/macos_x86_64_build.yml +++ b/.github/workflows/macos_x86_64_build.yml @@ -142,7 +142,7 @@ jobs: java-version: 8 - name: Setup Gradle - uses: gradle/gradle-build-action@v3 + uses: gradle/actions/setup-gradle@v4 with: gradle-version: 8.5 From a2b6dba828aa34d5a84f7201aab025758c7b1ea9 Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Tue, 20 Aug 2024 15:10:56 +0800 Subject: [PATCH 09/13] =?UTF-8?q?=F0=9F=90=8E=20ci:=20Upgrade=20android=20?= =?UTF-8?q?ndk=20to=20r27?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/android_node_build.yml | 2 +- .github/workflows/android_v8_build.yml | 2 +- cpp/CMakeLists.txt | 4 ++-- docs/release_notes/release_notes_3_1.rst | 1 + 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/android_node_build.yml b/.github/workflows/android_node_build.yml index 3937c290..f8dd7b4e 100644 --- a/.github/workflows/android_node_build.yml +++ b/.github/workflows/android_node_build.yml @@ -47,7 +47,7 @@ jobs: id: setup-ndk uses: nttld/setup-ndk@v1 with: - ndk-version: r25b + ndk-version: r27 local-cache: false - name: Setup Path diff --git a/.github/workflows/android_v8_build.yml b/.github/workflows/android_v8_build.yml index fa880590..d361459a 100644 --- a/.github/workflows/android_v8_build.yml +++ b/.github/workflows/android_v8_build.yml @@ -55,7 +55,7 @@ jobs: id: setup-ndk uses: nttld/setup-ndk@v1 with: - ndk-version: r25b + ndk-version: r27 local-cache: false - name: Setup Path diff --git a/cpp/CMakeLists.txt b/cpp/CMakeLists.txt index 65e4414f..625e9dc5 100644 --- a/cpp/CMakeLists.txt +++ b/cpp/CMakeLists.txt @@ -197,8 +197,8 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux" OR CMAKE_SYSTEM_NAME STREQUAL "Android set(CMAKE_POSITION_INDEPENDENT_CODE ON) add_library(Javet SHARED ${sourceFiles}) add_library(JavetStatic STATIC ${sourceFiles}) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-invalid-offsetof -O3 ") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-offsetof -O3 ") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-invalid-offsetof -O3 -fno-rtti ") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-invalid-offsetof -O3 -fno-rtti ") if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "(arm64|x86_64|aarch64)") set(JAVET_LIB_SYSTEM "linux") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-deprecated -Wno-deprecated-declarations ") diff --git a/docs/release_notes/release_notes_3_1.rst b/docs/release_notes/release_notes_3_1.rst index 40fc794e..caff5ab9 100644 --- a/docs/release_notes/release_notes_3_1.rst +++ b/docs/release_notes/release_notes_3_1.rst @@ -6,6 +6,7 @@ Release Notes 3.1.x -------------- * Upgraded V8 to ``v12.8.374.17`` (2024-08-19) +* Upgraded Android NDK to r27 * Fixed a bug of the default export in ``JavetBuiltInModuleResolver`` * Adjust JS type conversion priority for better performance * Fixed undefined symbol ``_ZTIN12v8_inspector17V8InspectorClientE`` for Linux x86_64 (temporarily) From c26cdc7437c0e605a1bc4878066ba7d76f244bde Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Tue, 20 Aug 2024 15:20:30 +0800 Subject: [PATCH 10/13] =?UTF-8?q?=F0=9F=A6=84=20refactor:=20Apply=20defaul?= =?UTF-8?q?t=20implementation=20to=20~JavetInspectorClient()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cpp/jni/javet_inspector.cpp | 3 --- cpp/jni/javet_inspector.h | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/cpp/jni/javet_inspector.cpp b/cpp/jni/javet_inspector.cpp index 3bb85e0a..08d3e26d 100644 --- a/cpp/jni/javet_inspector.cpp +++ b/cpp/jni/javet_inspector.cpp @@ -140,9 +140,6 @@ namespace Javet { return v8Runtime->GetV8LocalContext(); } - JavetInspectorClient::~JavetInspectorClient() { - } - JavetInspectorChannel::JavetInspectorChannel(V8Runtime* v8Runtime, const jobject mV8Inspector) noexcept { this->mV8Inspector = mV8Inspector; this->v8Runtime = v8Runtime; diff --git a/cpp/jni/javet_inspector.h b/cpp/jni/javet_inspector.h index c51b075b..f16e1686 100644 --- a/cpp/jni/javet_inspector.h +++ b/cpp/jni/javet_inspector.h @@ -57,7 +57,7 @@ namespace Javet { void quitMessageLoopOnPause() override; void runIfWaitingForDebugger(int contextGroupId) override; void runMessageLoopOnPause(int contextGroupId) override; - virtual ~JavetInspectorClient(); + virtual ~JavetInspectorClient() = default; private: bool activateMessageLoop; jobject mV8Inspector; From 8a5d3587fb792d87a63da80622df5265f64fb7e7 Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Tue, 20 Aug 2024 15:40:08 +0800 Subject: [PATCH 11/13] =?UTF-8?q?=F0=9F=90=9E=20fix:=20Revert=20temporaril?= =?UTF-8?q?y=20fix=20undefined=20symbol=20``=5FZTIN12v8=5Finspector17V8Ins?= =?UTF-8?q?pectorClientE``=20for=20Linux=20x86=5F64?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/linux_x86_64_build.yml | 1 - cpp/jni/version_script.map | 1 - docs/release_notes/release_notes_3_1.rst | 1 - 3 files changed, 3 deletions(-) diff --git a/.github/workflows/linux_x86_64_build.yml b/.github/workflows/linux_x86_64_build.yml index 6e29984c..22017d3e 100644 --- a/.github/workflows/linux_x86_64_build.yml +++ b/.github/workflows/linux_x86_64_build.yml @@ -72,7 +72,6 @@ jobs: run: | cd ${{ env.ROOT }}/Javet/cpp sh ./build-linux-x86_64.sh -DV8_DIR=${{ env.ROOT }}/google/v8 - sed -i 's/_ZTIN12v8_inspector17V8InspectorClientE/_ZTVN12v8_inspector17V8InspectorClientE/g' ../src/main/resources/libjavet-v8-linux-x86_64.v.${{ env.JAVET_VERSION }}.so - name: Upload the Artifact uses: actions/upload-artifact@v4 diff --git a/cpp/jni/version_script.map b/cpp/jni/version_script.map index 7d67d383..59167329 100644 --- a/cpp/jni/version_script.map +++ b/cpp/jni/version_script.map @@ -5,7 +5,6 @@ Java_com_caoccao_javet_*; napi_*; node_*; - _*v8_inspector*V8InspectorClient*; local: *; }; diff --git a/docs/release_notes/release_notes_3_1.rst b/docs/release_notes/release_notes_3_1.rst index caff5ab9..39156e52 100644 --- a/docs/release_notes/release_notes_3_1.rst +++ b/docs/release_notes/release_notes_3_1.rst @@ -9,7 +9,6 @@ Release Notes 3.1.x * Upgraded Android NDK to r27 * Fixed a bug of the default export in ``JavetBuiltInModuleResolver`` * Adjust JS type conversion priority for better performance -* Fixed undefined symbol ``_ZTIN12v8_inspector17V8InspectorClientE`` for Linux x86_64 (temporarily) 3.1.4 V8 v12.7 -------------- From 3d0a42251e926a1952d1dba77b0d1f757054c313 Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Wed, 21 Aug 2024 07:24:36 +0800 Subject: [PATCH 12/13] =?UTF-8?q?=F0=9F=90=B3=20chore:=20Upgrade=20Node.js?= =?UTF-8?q?=20to=20v20.16.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/android_node_build.yml | 2 +- .github/workflows/linux_build_artifact.yml | 2 +- .github/workflows/linux_build_node_v8_image.yml | 2 +- .github/workflows/linux_x86_64_build.yml | 2 +- .github/workflows/macos_arm64_build.yml | 2 +- .github/workflows/macos_x86_64_build.yml | 2 +- README.rst | 2 +- docker/linux-x86_64/base_all_in_one.Dockerfile | 2 +- docker/linux-x86_64/base_node.Dockerfile | 6 +++--- docker/linux-x86_64/build.env | 2 +- docker/windows-x86_64/base.Dockerfile | 2 +- docs/release_notes/release_notes_3_1.rst | 1 + scripts/python/change_node_v8_version.py | 2 +- .../java/com/caoccao/javet/interop/TestNodeRuntime.java | 2 +- 14 files changed, 16 insertions(+), 15 deletions(-) diff --git a/.github/workflows/android_node_build.yml b/.github/workflows/android_node_build.yml index f8dd7b4e..26045fff 100644 --- a/.github/workflows/android_node_build.yml +++ b/.github/workflows/android_node_build.yml @@ -8,7 +8,7 @@ on: workflow_dispatch: env: - JAVET_NODE_VERSION: 20.15.1 + JAVET_NODE_VERSION: 20.16.0 JAVET_VERSION: 3.1.5 ROOT: /home/runner/work/Javet diff --git a/.github/workflows/linux_build_artifact.yml b/.github/workflows/linux_build_artifact.yml index 70d6de8b..460eb132 100644 --- a/.github/workflows/linux_build_artifact.yml +++ b/.github/workflows/linux_build_artifact.yml @@ -17,7 +17,7 @@ on: env: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_REPO_JAVET: ${{ secrets.DOCKERHUB_REPO_JAVET }} - JAVET_NODE_VERSION: 20.15.1 + JAVET_NODE_VERSION: 20.16.0 JAVET_V8_VERSION: 12.8.374.17 JAVET_VERSION: 3.1.5 diff --git a/.github/workflows/linux_build_node_v8_image.yml b/.github/workflows/linux_build_node_v8_image.yml index e9f5c7e2..f9d9ef86 100644 --- a/.github/workflows/linux_build_node_v8_image.yml +++ b/.github/workflows/linux_build_node_v8_image.yml @@ -21,7 +21,7 @@ on: env: DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} DOCKERHUB_REPO_JAVET: ${{ secrets.DOCKERHUB_REPO_JAVET }} - JAVET_NODE_VERSION: 20.15.1 + JAVET_NODE_VERSION: 20.16.0 JAVET_V8_VERSION: 12.8.374.17 JAVET_VERSION: 3.1.5 diff --git a/.github/workflows/linux_x86_64_build.yml b/.github/workflows/linux_x86_64_build.yml index 22017d3e..75cc619d 100644 --- a/.github/workflows/linux_x86_64_build.yml +++ b/.github/workflows/linux_x86_64_build.yml @@ -7,7 +7,7 @@ on: workflow_dispatch: env: - JAVET_NODE_VERSION: 20.15.1 + JAVET_NODE_VERSION: 20.16.0 JAVET_V8_VERSION: 12.8.374.17 JAVET_VERSION: 3.1.5 ROOT: /home/runner/work/Javet diff --git a/.github/workflows/macos_arm64_build.yml b/.github/workflows/macos_arm64_build.yml index ebc4c209..5a56cf0b 100644 --- a/.github/workflows/macos_arm64_build.yml +++ b/.github/workflows/macos_arm64_build.yml @@ -7,7 +7,7 @@ on: workflow_dispatch: env: - JAVET_NODE_VERSION: 20.15.1 + JAVET_NODE_VERSION: 20.16.0 JAVET_V8_VERSION: 12.8.374.17 JAVET_VERSION: 3.1.5 ROOT: /Users/runner/work/Javet diff --git a/.github/workflows/macos_x86_64_build.yml b/.github/workflows/macos_x86_64_build.yml index c3202f93..171034ce 100644 --- a/.github/workflows/macos_x86_64_build.yml +++ b/.github/workflows/macos_x86_64_build.yml @@ -7,7 +7,7 @@ on: workflow_dispatch: env: - JAVET_NODE_VERSION: 20.15.1 + JAVET_NODE_VERSION: 20.16.0 JAVET_V8_VERSION: 12.8.374.17 JAVET_VERSION: 3.1.5 ROOT: /Users/runner/work/Javet diff --git a/README.rst b/README.rst index d57d55f7..aa5f7bc1 100644 --- a/README.rst +++ b/README.rst @@ -47,7 +47,7 @@ arm ✔️ ❌ ❌ ❌ arm64 ✔️ ✔️ ✔️ ❌ =========== ======= ======= ======= ======= -* Node.js ``v20.15.1`` + V8 ``v12.8.374.17`` +* Node.js ``v20.16.0`` + V8 ``v12.8.374.17`` * Dynamic switch between Node.js and V8 mode (`Which mode do you prefer? `_) * Polyfill V8 mode with `Javenode `_ * V8 API exposure in JVM diff --git a/docker/linux-x86_64/base_all_in_one.Dockerfile b/docker/linux-x86_64/base_all_in_one.Dockerfile index 96a01a10..84571f8b 100644 --- a/docker/linux-x86_64/base_all_in_one.Dockerfile +++ b/docker/linux-x86_64/base_all_in_one.Dockerfile @@ -18,7 +18,7 @@ FROM ubuntu:20.04 WORKDIR / -ARG JAVET_NODE_VERSION=20.15.1 +ARG JAVET_NODE_VERSION=20.16.0 ARG JAVET_V8_VERSION=12.8.374.17 # Update Ubuntu diff --git a/docker/linux-x86_64/base_node.Dockerfile b/docker/linux-x86_64/base_node.Dockerfile index b4f0a2b4..29552aea 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.15.1 \ +# -t sjtucaocao/javet:x86_64-base-node_20.16.0 \ # --build-arg JAVET_REPO=sjtucaocao/javet \ -# --build-arg JAVET_NODE_VERSION=20.15.1 \ +# --build-arg JAVET_NODE_VERSION=20.16.0 \ # -f docker/linux-x86_64/base_node.Dockerfile . ARG JAVET_REPO=sjtucaocao/javet -ARG JAVET_NODE_VERSION=20.15.1 +ARG JAVET_NODE_VERSION=20.16.0 FROM ${JAVET_REPO}:x86_64-base-jvm diff --git a/docker/linux-x86_64/build.env b/docker/linux-x86_64/build.env index 88957fa2..0e1c6df6 100644 --- a/docker/linux-x86_64/build.env +++ b/docker/linux-x86_64/build.env @@ -1,4 +1,4 @@ JAVET_REPO=sjtucaocao/javet JAVET_VERSION=3.1.5 JAVET_V8_VERSION=12.8.374.17 -JAVET_NODE_VERSION=20.15.1 +JAVET_NODE_VERSION=20.16.0 diff --git a/docker/windows-x86_64/base.Dockerfile b/docker/windows-x86_64/base.Dockerfile index 690a0fde..4684fe1b 100644 --- a/docker/windows-x86_64/base.Dockerfile +++ b/docker/windows-x86_64/base.Dockerfile @@ -31,7 +31,7 @@ # Usage: docker build -t sjtucaocao/javet-windows:3.1.5 -m 4G -f docker/windows-x86_64/base.Dockerfile . -ARG JAVET_NODE_VERSION=20.15.1 +ARG JAVET_NODE_VERSION=20.16.0 ARG JAVET_V8_VERSION=12.8.374.17 # https://hub.docker.com/_/microsoft-windows diff --git a/docs/release_notes/release_notes_3_1.rst b/docs/release_notes/release_notes_3_1.rst index 39156e52..7221a47e 100644 --- a/docs/release_notes/release_notes_3_1.rst +++ b/docs/release_notes/release_notes_3_1.rst @@ -5,6 +5,7 @@ Release Notes 3.1.x 3.1.5 V8 v12.8 -------------- +* Upgraded Node.js to ``v20.16.0`` `(2024-07-24) `_ * Upgraded V8 to ``v12.8.374.17`` (2024-08-19) * Upgraded Android NDK to r27 * Fixed a bug of the default export in ``JavetBuiltInModuleResolver`` diff --git a/scripts/python/change_node_v8_version.py b/scripts/python/change_node_v8_version.py index cca086b0..86867a94 100644 --- a/scripts/python/change_node_v8_version.py +++ b/scripts/python/change_node_v8_version.py @@ -164,7 +164,7 @@ def update(self) -> None: re.compile(r'"(?P\d+\.\d+\.\d+\.\d+)",')) def main(): - change_node_version = ChangeNodeVersion('20.15.1') + change_node_version = ChangeNodeVersion('20.16.0') change_node_version.update() change_v8_version = ChangeV8Version('12.8.374.17') change_v8_version.update() diff --git a/src/test/java/com/caoccao/javet/interop/TestNodeRuntime.java b/src/test/java/com/caoccao/javet/interop/TestNodeRuntime.java index 3035f5d7..a707e89b 100644 --- a/src/test/java/com/caoccao/javet/interop/TestNodeRuntime.java +++ b/src/test/java/com/caoccao/javet/interop/TestNodeRuntime.java @@ -210,7 +210,7 @@ public void testModuleProcess() throws JavetException { Path path4 = nodeModuleProcess.getWorkingDirectory().toPath(); assertNotEquals(path1.toAbsolutePath().toString(), path3.toAbsolutePath().toString()); assertEquals(path1.toAbsolutePath().toString(), path4.toAbsolutePath().toString()); - assertEquals("v20.15.1", nodeModuleProcess.getVersion()); + assertEquals("v20.16.0", nodeModuleProcess.getVersion()); } @Test From 91995449cf3a477df449d3fc6bf6a0641654cae2 Mon Sep 17 00:00:00 2001 From: Sam Cao Date: Wed, 21 Aug 2024 08:14:33 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=F0=9F=93=83=20docs:=20Update=20android?= =?UTF-8?q?=20ndk=20r27=20to=20build=20doc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/android/base.Dockerfile | 6 +++--- docs/development/build.rst | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docker/android/base.Dockerfile b/docker/android/base.Dockerfile index b1735184..badfef19 100644 --- a/docker/android/base.Dockerfile +++ b/docker/android/base.Dockerfile @@ -58,9 +58,9 @@ RUN echo V8 preparation is completed. # Prepare Android NDK WORKDIR / -RUN wget https://dl.google.com/android/repository/android-ndk-r25b-linux.zip -RUN unzip android-ndk-r25b-linux.zip -RUN rm android-ndk-r25b-linux.zip +RUN wget https://dl.google.com/android/repository/android-ndk-r27-linux.zip +RUN unzip android-ndk-r27-linux.zip +RUN rm android-ndk-r27-linux.zip # Prepare Android SDK WORKDIR /google/v8/third_party/android_sdk/public/cmdline-tools/latest/bin diff --git a/docs/development/build.rst b/docs/development/build.rst index 9390983c..5ae3ed68 100644 --- a/docs/development/build.rst +++ b/docs/development/build.rst @@ -62,7 +62,7 @@ Android Environment * Gradle 8.5+ * Python 3.11+ * Latest Android Studio (Optional) -* Android NDK r25b +* Android NDK r27 * Android SDK 30 Environment Variables