Skip to content

Commit ad4cb94

Browse files
authored
♨️ Javet v3.1.1 (#318)
* Upgraded Node.js to `v20.12.2` ([2024-04-10](https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md#20.12.2)) * Upgraded V8 to `v12.4.254.9` (2024-04-04) * Updated Node.js to new process initialization and teardown functions * Added crypto initialization to Node.js * Removed `isPurgeEventLoopBeforeClose()`, `setPurgeEventLoopBeforeClose()` from `NodeRuntime`
1 parent 32d8b95 commit ad4cb94

File tree

534 files changed

+2256
-2402
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

534 files changed

+2256
-2402
lines changed

.github/workflows/android_node_build.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ on:
88
workflow_dispatch:
99

1010
env:
11-
JAVET_NODE_VERSION: 20.11.1
12-
JAVET_VERSION: 3.1.0
11+
JAVET_NODE_VERSION: 20.12.2
12+
JAVET_VERSION: 3.1.1
1313
ROOT: /home/runner/work/Javet
1414

1515
jobs:

.github/workflows/android_v8_build.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ on:
88
workflow_dispatch:
99

1010
env:
11-
JAVET_V8_VERSION: 12.3.219.10
12-
JAVET_VERSION: 3.1.0
11+
JAVET_V8_VERSION: 12.4.254.9
12+
JAVET_VERSION: 3.1.1
1313
ROOT: /home/runner/work/Javet
1414

1515
jobs:

.github/workflows/linux_build_artifact.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ on:
1717
env:
1818
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
1919
DOCKERHUB_REPO_JAVET: ${{ secrets.DOCKERHUB_REPO_JAVET }}
20-
JAVET_NODE_VERSION: 20.11.1
21-
JAVET_V8_VERSION: 12.3.219.10
22-
JAVET_VERSION: 3.1.0
20+
JAVET_NODE_VERSION: 20.12.2
21+
JAVET_V8_VERSION: 12.4.254.9
22+
JAVET_VERSION: 3.1.1
2323

2424
jobs:
2525
javet_linux_x86_64:

.github/workflows/linux_build_node_v8_image.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ on:
2121
env:
2222
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
2323
DOCKERHUB_REPO_JAVET: ${{ secrets.DOCKERHUB_REPO_JAVET }}
24-
JAVET_NODE_VERSION: 20.11.1
25-
JAVET_V8_VERSION: 12.3.219.10
26-
JAVET_VERSION: 3.1.0
24+
JAVET_NODE_VERSION: 20.12.2
25+
JAVET_V8_VERSION: 12.4.254.9
26+
JAVET_VERSION: 3.1.1
2727

2828
# if we skip a job using a job level `if` condition, then any dependent jobs also don't run.
2929
# we can skip a step of the job, using a step level `if` condition.

.github/workflows/linux_x86_64_build.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ on:
77
workflow_dispatch:
88

99
env:
10-
JAVET_NODE_VERSION: 20.11.1
11-
JAVET_V8_VERSION: 12.3.219.10
12-
JAVET_VERSION: 3.1.0
10+
JAVET_NODE_VERSION: 20.12.2
11+
JAVET_V8_VERSION: 12.4.254.9
12+
JAVET_VERSION: 3.1.1
1313
ROOT: /home/runner/work/Javet
1414

1515
jobs:

.github/workflows/macos_arm64_build.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ on:
77
workflow_dispatch:
88

99
env:
10-
JAVET_NODE_VERSION: 20.11.1
11-
JAVET_V8_VERSION: 12.3.219.10
12-
JAVET_VERSION: 3.1.0
10+
JAVET_NODE_VERSION: 20.12.2
11+
JAVET_V8_VERSION: 12.4.254.9
12+
JAVET_VERSION: 3.1.1
1313
ROOT: /Users/runner/work/Javet
1414

1515
jobs:

.github/workflows/macos_x86_64_build.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ on:
77
workflow_dispatch:
88

99
env:
10-
JAVET_NODE_VERSION: 20.11.1
11-
JAVET_V8_VERSION: 12.3.219.10
12-
JAVET_VERSION: 3.1.0
10+
JAVET_NODE_VERSION: 20.12.2
11+
JAVET_V8_VERSION: 12.4.254.9
12+
JAVET_VERSION: 3.1.1
1313
ROOT: /Users/runner/work/Javet
1414

1515
jobs:

README.rst

+14-14
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ arm ✔️ ❌ ❌ ❌
4747
arm64 ✔️ ✔️ ✔️ ❌
4848
=========== ======= ======= ======= =======
4949

50-
* Node.js ``v20.11.1`` + V8 ``v12.3.219.10``
50+
* Node.js ``v20.12.2`` + V8 ``v12.4.254.9``
5151
* Dynamic switch between Node.js and V8 mode (`Which mode do you prefer? <https://github.com/caoccao/Javet/discussions/92>`_)
5252
* Polyfill V8 mode with `Javenode <https://github.com/caoccao/Javenode>`_
5353
* V8 API exposure in JVM
@@ -75,44 +75,44 @@ Maven
7575
<dependency>
7676
<groupId>com.caoccao.javet</groupId>
7777
<artifactId>javet</artifactId>
78-
<version>3.1.0</version>
78+
<version>3.1.1</version>
7979
</dependency>
8080
8181
<!-- Linux (arm64) -->
8282
<dependency>
8383
<groupId>com.caoccao.javet</groupId>
8484
<artifactId>javet-linux-arm64</artifactId>
85-
<version>3.1.0</version>
85+
<version>3.1.1</version>
8686
</dependency>
8787
8888
<!-- Mac OS (x86_64 and arm64) -->
8989
<dependency>
9090
<groupId>com.caoccao.javet</groupId>
9191
<artifactId>javet-macos</artifactId>
92-
<version>3.1.0</version>
92+
<version>3.1.1</version>
9393
</dependency>
9494
9595
Gradle Kotlin DSL
9696
^^^^^^^^^^^^^^^^^
9797

9898
.. code-block:: kotlin
9999
100-
implementation("com.caoccao.javet:javet:3.1.0") // Linux and Windows (x86_64)
101-
implementation("com.caoccao.javet:javet-linux-arm64:3.1.0") // Linux (arm64)
102-
implementation("com.caoccao.javet:javet-macos:3.1.0") // Mac OS (x86_64 and arm64)
103-
implementation("com.caoccao.javet:javet-android-node:3.1.0") // Android Node (arm, arm64, x86 and x86_64)
104-
implementation("com.caoccao.javet:javet-android-v8:3.1.0") // Android V8 (arm, arm64, x86 and x86_64)
100+
implementation("com.caoccao.javet:javet:3.1.1") // Linux and Windows (x86_64)
101+
implementation("com.caoccao.javet:javet-linux-arm64:3.1.1") // Linux (arm64)
102+
implementation("com.caoccao.javet:javet-macos:3.1.1") // Mac OS (x86_64 and arm64)
103+
implementation("com.caoccao.javet:javet-android-node:3.1.1") // Android Node (arm, arm64, x86 and x86_64)
104+
implementation("com.caoccao.javet:javet-android-v8:3.1.1") // Android V8 (arm, arm64, x86 and x86_64)
105105
106106
Gradle Groovy DSL
107107
^^^^^^^^^^^^^^^^^
108108

109109
.. code-block:: groovy
110110
111-
implementation 'com.caoccao.javet:javet:3.1.0' // Linux and Windows (x86_64)
112-
implementation 'com.caoccao.javet:javet-linux-arm64:3.1.0' // Linux (arm64)
113-
implementation 'com.caoccao.javet:javet-macos:3.1.0' // Mac OS (x86_64 and arm64)
114-
implementation 'com.caoccao.javet:javet-android-node:3.1.0' // Android Node (arm, arm64, x86 and x86_64)
115-
implementation 'com.caoccao.javet:javet-android-v8:3.1.0' // Android V8 (arm, arm64, x86 and x86_64)
111+
implementation 'com.caoccao.javet:javet:3.1.1' // Linux and Windows (x86_64)
112+
implementation 'com.caoccao.javet:javet-linux-arm64:3.1.1' // Linux (arm64)
113+
implementation 'com.caoccao.javet:javet-macos:3.1.1' // Mac OS (x86_64 and arm64)
114+
implementation 'com.caoccao.javet:javet-android-node:3.1.1' // Android Node (arm, arm64, x86 and x86_64)
115+
implementation 'com.caoccao.javet:javet-android-v8:3.1.1' // Android V8 (arm, arm64, x86 and x86_64)
116116
117117
Hello Javet
118118
-----------

android/javet-android/build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ object Config {
7373
const val ANDROIDX_TEST = "1.1.5"
7474
const val APPCOMPAT = "1.3.1"
7575
const val DESUGAR_JDK_LIBS = "2.0.4"
76-
const val JAVET = "3.1.0"
76+
const val JAVET = "3.1.1"
7777
const val JUNIT = "5.10.1"
7878
}
7979
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
android:versionCode="1"
4-
android:versionName="3.1.0"
4+
android:versionName="3.1.1"
55
>
66

77
</manifest>

android/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
<groupId>com.caoccao.javet</groupId>
55
<artifactId>javet-android</artifactId>
6-
<version>3.1.0</version>
6+
<version>3.1.1</version>
77
<name>javet</name>
88
<packaging>aar</packaging>
99
<description>Javet is Java + V8 (JAVa + V + EighT). It is an awesome way of embedding V8 in Java.</description>
@@ -29,7 +29,7 @@
2929
<connection>scm:git:git://github.com/caoccao/Javet.git</connection>
3030
<developerConnection>scm:git:git@github.com:caoccao/caoccao.git</developerConnection>
3131
<url>https://github.com/caoccao/Javet</url>
32-
<tag>3.1.0</tag>
32+
<tag>3.1.1</tag>
3333
</scm>
3434

3535
<properties>

build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ object Config {
7272
const val BYTE_BUDDY = "1.14.10"
7373
const val JACKSON_DATABIND = "2.16.0"
7474
const val JAVA_VERSION = "1.8"
75-
const val JAVET = "3.1.0"
75+
const val JAVET = "3.1.1"
7676
const val JETTY_WEBSOCKET = "9.4.53.v20231009"
7777
const val JUNIT = "5.10.1"
7878
}

cpp/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ if(DEFINED V8_DIR)
110110
endif()
111111
if(DEFINED NODE_DIR)
112112
list(APPEND includeDirs
113+
${NODE_DIR}/deps/openssl/openssl/include
113114
${NODE_DIR}/deps/uv/include
114115
${NODE_DIR}/deps/v8
115116
${NODE_DIR}/deps/v8/include

cpp/build-android.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# Usage for V8: sh build-android.sh -DV8_DIR=${HOME}/v8 -DCMAKE_ANDROID_NDK=${HOME}/android -DCMAKE_ANDROID_ARCH=arm64
44
# Usage for Node: sh build-android.sh -DNODE_DIR=${HOME}/node -DCMAKE_ANDROID_NDK=${HOME}/android -DCMAKE_ANDROID_ARCH=arm64
5-
JAVET_VERSION=3.1.0
5+
JAVET_VERSION=3.1.1
66
rm -rf build_android
77
mkdir build_android
88
cd build_android

cpp/build-linux-arm64.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# Usage for V8: sh build-linux-arm64.sh -DV8_DIR=${HOME}/v8
44
# Usage for Node: sh build-linux-arm64.sh -DNODE_DIR=${HOME}/node
5-
JAVET_VERSION=3.1.0
5+
JAVET_VERSION=3.1.1
66
rm -rf build_linux_arm64
77
mkdir build_linux_arm64
88
cd build_linux_arm64

cpp/build-linux-x86_64.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# Usage for V8: sh build-linux-x86_64.sh -DV8_DIR=${HOME}/v8
44
# Usage for Node: sh build-linux-x86_64.sh -DNODE_DIR=${HOME}/node
5-
JAVET_VERSION=3.1.0
5+
JAVET_VERSION=3.1.1
66
rm -rf build_linux_x86_64
77
mkdir build_linux_x86_64
88
cd build_linux_x86_64

cpp/build-macos.sh

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# Usage for V8: sh build-macos.sh -DV8_DIR=${HOME}/v8
44
# Usage for Node: sh build-macos.sh -DNODE_DIR=${HOME}/node
5-
JAVET_VERSION=3.1.0
5+
JAVET_VERSION=3.1.1
66
rm -rf build_macos
77
mkdir build_macos
88
cd build_macos

cpp/build-windows.cmd

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
@echo off
22
REM Usage for V8: build -DV8_DIR=C:\v8
33
REM Usage for Node: build -DNODE_DIR=C:\node
4-
SET JAVET_VERSION=3.1.0
4+
SET JAVET_VERSION=3.1.1
55
rd /s/q build_windows
66
mkdir build_windows
77
cd build_windows

cpp/jni/com_caoccao_javet_interop_NodeNative.h

-16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cpp/jni/javet_jni_core_node.cpp

-17
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,3 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_NodeNative_await
2424
return (jboolean)v8Runtime->Await(umAwaitMode);
2525
}
2626

27-
JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_NodeNative_isPurgeEventLoopBeforeClose
28-
(JNIEnv* jniEnv, jobject caller, jlong v8RuntimeHandle) {
29-
#ifdef ENABLE_NODE
30-
auto v8Runtime = Javet::V8Runtime::FromHandle(v8RuntimeHandle);
31-
return v8Runtime->purgeEventLoopBeforeClose;
32-
#else
33-
return false;
34-
#endif
35-
}
36-
37-
JNIEXPORT void JNICALL Java_com_caoccao_javet_interop_NodeNative_setPurgeEventLoopBeforeClose
38-
(JNIEnv* jniEnv, jobject caller, jlong v8RuntimeHandle, jboolean purgeEventLoopBeforeClose) {
39-
#ifdef ENABLE_NODE
40-
auto v8Runtime = Javet::V8Runtime::FromHandle(v8RuntimeHandle);
41-
v8Runtime->purgeEventLoopBeforeClose = purgeEventLoopBeforeClose;
42-
#endif
43-
}

cpp/jni/javet_jni_core_v8.cpp

-5
Original file line numberDiff line numberDiff line change
@@ -357,12 +357,7 @@ JNIEXPORT void JNICALL Java_com_caoccao_javet_interop_V8Native_setWeak
357357

358358
JNIEXPORT jbyteArray JNICALL Java_com_caoccao_javet_interop_V8Native_snapshotCreate
359359
(JNIEnv* jniEnv, jobject caller, jlong v8RuntimeHandle) {
360-
#ifdef ENABLE_NODE
361-
auto v8Runtime = Javet::V8Runtime::FromHandle(v8RuntimeHandle);
362-
auto v8Locker = v8Runtime->GetSharedV8Locker();
363-
#else
364360
RUNTIME_HANDLES_TO_OBJECTS_WITH_SCOPE(v8RuntimeHandle);
365-
#endif
366361
return v8Runtime->CreateSnapshot(jniEnv);
367362
}
368363

cpp/jni/javet_jni_module.cpp

+8-1
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,17 @@ JNIEXPORT jobject JNICALL Java_com_caoccao_javet_interop_V8Native_moduleCreate
7777
}
7878
}
7979
}
80+
#ifndef ENABLE_NODE
81+
v8::MemorySpan<const V8LocalString> exportNamesMemorySpan(exportNames.begin(), exportNames.end());
82+
#endif
8083
auto v8LocalModule = v8::Module::CreateSyntheticModule(
8184
v8Context->GetIsolate(),
8285
Javet::Converter::ToV8String(jniEnv, v8Context, mModuleName),
86+
#ifdef ENABLE_NODE
8387
exportNames,
88+
#else
89+
exportNamesMemorySpan,
90+
#endif
8491
Javet::Callback::JavetSyntheticModuleEvaluationStepsCallback);
8592
std::string stringKey("module:{}" + std::to_string(v8LocalModule->GetIdentityHash()));
8693
auto v8LocalStringKey = Javet::Converter::ToV8String(v8Context, stringKey.c_str());
@@ -226,7 +233,7 @@ JNIEXPORT jstring JNICALL Java_com_caoccao_javet_interop_V8Native_moduleGetResou
226233
#endif
227234
auto v8InternalStringName = v8InternalSyntheticModule.name();
228235
v8LocalObjectName = v8::Utils::ToLocal(v8::internal::handle(v8InternalStringName, v8InternalIsolate));
229-
}
236+
}
230237
if (!v8LocalObjectName.IsEmpty()) {
231238
return Javet::Converter::ToJavaString(jniEnv, v8Context, v8LocalObjectName);
232239
}

cpp/jni/javet_native.cpp

+18-13
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,9 @@ namespace Javet {
115115
if (!jniEnv->CallStaticBooleanMethod(jclassV8Host, jmethodIDV8HostIsLibraryReloadable)) {
116116
v8::V8::Dispose();
117117
v8::V8::DisposePlatform();
118+
#ifdef ENABLE_NODE
119+
node::TearDownOncePerProcess();
120+
#endif
118121
GlobalV8Platform.reset();
119122
#ifndef ENABLE_NODE
120123
GlobalV8ArrayBufferAllocator.reset();
@@ -143,18 +146,20 @@ namespace Javet {
143146
#ifdef ENABLE_NODE
144147
uv_setup_args(0, nullptr);
145148
std::vector<std::string> args{ DEFAULT_SCRIPT_NAME };
146-
std::vector<std::string> execArgs;
147-
std::vector<std::string> errors;
148-
auto flags = static_cast<node::ProcessInitializationFlags::Flags>(
149-
node::ProcessInitializationFlags::kNoFlags
150-
| node::ProcessInitializationFlags::kNoStdioInitialization
151-
| node::ProcessInitializationFlags::kNoDefaultSignalHandling
152-
| node::ProcessInitializationFlags::kNoInitializeV8
153-
| node::ProcessInitializationFlags::kNoInitializeNodeV8Platform
154-
| node::ProcessInitializationFlags::kNoInitializeCppgc);
155-
int exitCode = node::InitializeNodeWithArgs(&args, &execArgs, &errors, flags);
156-
if (exitCode != 0) {
157-
LOG_ERROR("Failed to call node::InitializeNodeWithArgs().");
149+
std::unique_ptr<node::InitializationResult> result = node::InitializeOncePerProcess(
150+
args, {
151+
node::ProcessInitializationFlags::kNoFlags,
152+
node::ProcessInitializationFlags::kNoStdioInitialization,
153+
node::ProcessInitializationFlags::kNoDefaultSignalHandling,
154+
node::ProcessInitializationFlags::kNoInitializeV8,
155+
node::ProcessInitializationFlags::kNoInitializeNodeV8Platform,
156+
#ifndef ENABLE_I18N
157+
node::ProcessInitializationFlags::kNoICU,
158+
#endif
159+
node::ProcessInitializationFlags::kNoInitializeCppgc,
160+
});
161+
if (result->exit_code() != 0) {
162+
LOG_ERROR("Failed to call node::InitializeOncePerProcess().");
158163
}
159164
Javet::V8Native::GlobalV8Platform = node::MultiIsolatePlatform::Create(4);
160165
#else
@@ -171,7 +176,7 @@ namespace Javet {
171176
if (!GlobalV8ArrayBufferAllocator) {
172177
GlobalV8ArrayBufferAllocator = std::shared_ptr<V8ArrayBufferAllocator>();
173178
GlobalV8ArrayBufferAllocator.reset(V8ArrayBufferAllocator::NewDefaultAllocator());
174-
}
179+
}
175180
#endif
176181
LOG_INFO("V8::Initialize() ends.");
177182
}

0 commit comments

Comments
 (0)