Skip to content

Commit 74d0e64

Browse files
authored
🎧 Javet v3.1.4 (#371)
* Upgraded Node.js to `v20.15.1` ([2024-07-08](https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V20.md#20.15.1)) * Upgraded V8 to `v12.7.224.16` (2024-07-15) * Rewrote `getV8HeapStatistics()`, `getV8HeapSpaceStatistics()` for `V8Runtime` to remediate the race condition and fixed possible memory leak * Added `observerTimeoutMillis` to `JavetEngineConfig` * Added `V8StatisticsFuture` * Added `isStopping()`, `setStopping()` to `NodeRuntime` * Removed `idleNotificationDeadline()` from `V8Runtime` * Removed `--track-retaining-path` from `V8Flags`
1 parent 6ddb22f commit 74d0e64

File tree

551 files changed

+4543
-2022
lines changed

Some content is hidden

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

551 files changed

+4543
-2022
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.14.0
12-
JAVET_VERSION: 3.1.3
11+
JAVET_NODE_VERSION: 20.15.1
12+
JAVET_VERSION: 3.1.4
1313
ROOT: /home/runner/work/Javet
1414

1515
jobs:

.github/workflows/android_v8_build.yml

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

1010
env:
11-
JAVET_V8_VERSION: 12.6.228.13
12-
JAVET_VERSION: 3.1.3
11+
JAVET_V8_VERSION: 12.7.224.16
12+
JAVET_VERSION: 3.1.4
1313
ROOT: /home/runner/work/Javet
1414

1515
jobs:
@@ -80,7 +80,6 @@ jobs:
8080
gclient sync -D
8181
cd v8
8282
python3 tools/dev/v8gen.py ${{ matrix.v8_release }}.release -- 'target_os="android"' 'target_cpu="${{ matrix.v8_arch }}"' 'v8_target_cpu="${{ matrix.v8_arch }}"' v8_monolithic=true v8_use_external_startup_data=false is_component_build=false v8_enable_i18n_support=false v8_enable_pointer_compression=false v8_static_library=true symbol_level=0 use_custom_libcxx=false v8_enable_sandbox=false
83-
sed -i '/CHECK(!IsFreeSpaceOrFillerMap(map));/d' src/heap/concurrent-marking.cc
8483
ninja -C out.gn/${{ matrix.v8_release }}.release v8_monolith || python3 ${{ env.ROOT }}/Javet/scripts/python/patch_v8_build.py -p ./
8584
ninja -C out.gn/${{ matrix.v8_release }}.release v8_monolith
8685

.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.14.0
21-
JAVET_V8_VERSION: 12.6.228.13
22-
JAVET_VERSION: 3.1.3
20+
JAVET_NODE_VERSION: 20.15.1
21+
JAVET_V8_VERSION: 12.7.224.16
22+
JAVET_VERSION: 3.1.4
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.14.0
25-
JAVET_V8_VERSION: 12.6.228.13
26-
JAVET_VERSION: 3.1.3
24+
JAVET_NODE_VERSION: 20.15.1
25+
JAVET_V8_VERSION: 12.7.224.16
26+
JAVET_VERSION: 3.1.4
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-4
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ on:
77
workflow_dispatch:
88

99
env:
10-
JAVET_NODE_VERSION: 20.14.0
11-
JAVET_V8_VERSION: 12.6.228.13
12-
JAVET_VERSION: 3.1.3
10+
JAVET_NODE_VERSION: 20.15.1
11+
JAVET_V8_VERSION: 12.7.224.16
12+
JAVET_VERSION: 3.1.4
1313
ROOT: /home/runner/work/Javet
1414

1515
jobs:
@@ -52,7 +52,6 @@ jobs:
5252
gclient sync -D
5353
cd v8
5454
python3 tools/dev/v8gen.py x64.release -- v8_monolithic=true v8_use_external_startup_data=false is_component_build=false v8_enable_i18n_support=false v8_enable_pointer_compression=false v8_static_library=true symbol_level=0 use_custom_libcxx=false v8_enable_sandbox=false
55-
sed -i '/CHECK(!IsFreeSpaceOrFillerMap(map));/d' src/heap/concurrent-marking.cc
5655
sed -i '/#include "src\/libplatform\//a #include <cstdlib>' src/libplatform/default-thread-isolated-allocator.cc
5756
sed -i '/bool KernelHasPkruFix()/a const char* env = std::getenv("JAVET_DISABLE_PKU"); if (env && std::strlen(env) > 0) { return false; }' src/libplatform/default-thread-isolated-allocator.cc
5857
ninja -C out.gn/x64.release v8_monolith || python3 ${{ env.ROOT }}/Javet/scripts/python/patch_v8_build.py -p ./

.github/workflows/macos_arm64_build.yml

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

99
env:
10-
JAVET_NODE_VERSION: 20.14.0
11-
JAVET_V8_VERSION: 12.6.228.13
12-
JAVET_VERSION: 3.1.3
10+
JAVET_NODE_VERSION: 20.15.1
11+
JAVET_V8_VERSION: 12.7.224.16
12+
JAVET_VERSION: 3.1.4
1313
ROOT: /Users/runner/work/Javet
1414

1515
jobs:
@@ -52,7 +52,6 @@ jobs:
5252
gclient sync -D
5353
cd v8
5454
python3 tools/dev/v8gen.py arm64.release -- v8_monolithic=true 'target_cpu="arm64"' v8_use_external_startup_data=false is_component_build=false v8_enable_i18n_support=false v8_enable_pointer_compression=false v8_static_library=true symbol_level=0 use_custom_libcxx=false v8_enable_sandbox=false
55-
sed -i '' -e '/CHECK(!IsFreeSpaceOrFillerMap(map));/d' src/heap/concurrent-marking.cc
5655
gn gen out.gn/arm64.release
5756
ninja -C out.gn/arm64.release v8_monolith || python3 ${{ env.ROOT }}/Javet/scripts/python/patch_v8_build.py -p ./
5857
ninja -C out.gn/arm64.release v8_monolith

.github/workflows/macos_x86_64_build.yml

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

99
env:
10-
JAVET_NODE_VERSION: 20.14.0
11-
JAVET_V8_VERSION: 12.6.228.13
12-
JAVET_VERSION: 3.1.3
10+
JAVET_NODE_VERSION: 20.15.1
11+
JAVET_V8_VERSION: 12.7.224.16
12+
JAVET_VERSION: 3.1.4
1313
ROOT: /Users/runner/work/Javet
1414

1515
jobs:
@@ -52,7 +52,6 @@ jobs:
5252
gclient sync -D
5353
cd v8
5454
python3 tools/dev/v8gen.py x64.release -- v8_monolithic=true v8_use_external_startup_data=false is_component_build=false v8_enable_i18n_support=false v8_enable_pointer_compression=false v8_static_library=true symbol_level=0 use_custom_libcxx=false v8_enable_sandbox=false
55-
sed -i '' -e '/CHECK(!IsFreeSpaceOrFillerMap(map));/d' src/heap/concurrent-marking.cc
5655
gn gen out.gn/x64.release
5756
ninja -C out.gn/x64.release v8_monolith || python3 ${{ env.ROOT }}/Javet/scripts/python/patch_v8_build.py -p ./
5857
ninja -C out.gn/x64.release v8_monolith

README.rst

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

50-
* Node.js ``v20.14.0`` + V8 ``v12.6.228.13``
50+
* Node.js ``v20.15.1`` + V8 ``v12.7.224.16``
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.3</version>
78+
<version>3.1.4</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.3</version>
85+
<version>3.1.4</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.3</version>
92+
<version>3.1.4</version>
9393
</dependency>
9494
9595
Gradle Kotlin DSL
9696
^^^^^^^^^^^^^^^^^
9797

9898
.. code-block:: kotlin
9999
100-
implementation("com.caoccao.javet:javet:3.1.3") // Linux and Windows (x86_64)
101-
implementation("com.caoccao.javet:javet-linux-arm64:3.1.3") // Linux (arm64)
102-
implementation("com.caoccao.javet:javet-macos:3.1.3") // Mac OS (x86_64 and arm64)
103-
implementation("com.caoccao.javet:javet-android-node:3.1.3") // Android Node (arm, arm64, x86 and x86_64)
104-
implementation("com.caoccao.javet:javet-android-v8:3.1.3") // Android V8 (arm, arm64, x86 and x86_64)
100+
implementation("com.caoccao.javet:javet:3.1.4") // Linux and Windows (x86_64)
101+
implementation("com.caoccao.javet:javet-linux-arm64:3.1.4") // Linux (arm64)
102+
implementation("com.caoccao.javet:javet-macos:3.1.4") // Mac OS (x86_64 and arm64)
103+
implementation("com.caoccao.javet:javet-android-node:3.1.4") // Android Node (arm, arm64, x86 and x86_64)
104+
implementation("com.caoccao.javet:javet-android-v8:3.1.4") // 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.3' // Linux and Windows (x86_64)
112-
implementation 'com.caoccao.javet:javet-linux-arm64:3.1.3' // Linux (arm64)
113-
implementation 'com.caoccao.javet:javet-macos:3.1.3' // Mac OS (x86_64 and arm64)
114-
implementation 'com.caoccao.javet:javet-android-node:3.1.3' // Android Node (arm, arm64, x86 and x86_64)
115-
implementation 'com.caoccao.javet:javet-android-v8:3.1.3' // Android V8 (arm, arm64, x86 and x86_64)
111+
implementation 'com.caoccao.javet:javet:3.1.4' // Linux and Windows (x86_64)
112+
implementation 'com.caoccao.javet:javet-linux-arm64:3.1.4' // Linux (arm64)
113+
implementation 'com.caoccao.javet:javet-macos:3.1.4' // Mac OS (x86_64 and arm64)
114+
implementation 'com.caoccao.javet:javet-android-node:3.1.4' // Android Node (arm, arm64, x86 and x86_64)
115+
implementation 'com.caoccao.javet:javet-android-v8:3.1.4' // Android V8 (arm, arm64, x86 and x86_64)
116116
117117
Hello Javet
118118
-----------
@@ -132,7 +132,7 @@ Hello Javet
132132
Sponsors
133133
========
134134

135-
`HiveMQ <https://www.hivemq.com/>`_
135+
`HiveMQ <https://www.hivemq.com/>`_ | `SheetJS <https://www.sheetjs.com/>`_
136136

137137
License
138138
=======

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.3"
76+
const val JAVET = "3.1.4"
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.3"
4+
android:versionName="3.1.4"
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.3</version>
6+
<version>3.1.4</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.3</tag>
32+
<tag>3.1.4</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.3"
75+
const val JAVET = "3.1.4"
7676
const val JETTY_WEBSOCKET = "9.4.53.v20231009"
7777
const val JUNIT = "5.10.1"
7878
}

cpp/CMakeLists.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
162162
set(JAVET_LIB_ARCH x86_64)
163163
set(JAVET_LIB_ARCH x86_64)
164164
# Generate PDB file
165-
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi /MP /O2 /Ob2 /GS-")
165+
# https://learn.microsoft.com/en-us/cpp/build/reference/zc-cplusplus
166+
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi /MP /O2 /Ob2 /GS- /Zc:__cplusplus")
166167
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /DEBUG /OPT:REF /OPT:ICF")
167168
add_definitions(-D_ITERATOR_DEBUG_LEVEL=0 -D_WIN32)
168169
list(APPEND includeDirs $ENV{JAVA_HOME}/include/win32)

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.3
5+
JAVET_VERSION=3.1.4
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.3
5+
JAVET_VERSION=3.1.4
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.3
5+
JAVET_VERSION=3.1.4
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.3
5+
JAVET_VERSION=3.1.4
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.3
4+
SET JAVET_VERSION=3.1.4
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/com_caoccao_javet_interop_V8Native.h

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

cpp/jni/javet_converter.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -1124,7 +1124,9 @@ namespace Javet {
11241124
const jboolean mIsWASM,
11251125
const jboolean mIsModule) noexcept {
11261126
return std::make_unique<v8::ScriptOrigin>(
1127+
#ifdef ENABLE_NODE
11271128
v8Context->GetIsolate(),
1129+
#endif
11281130
ToV8String(jniEnv, v8Context, mResourceName),
11291131
(int)mResourceLineOffset,
11301132
(int)mResourceColumnOffset,

cpp/jni/javet_enums.h

+8
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,14 @@ namespace Javet {
2626
};
2727
};
2828

29+
namespace RawPointerType {
30+
enum RawPointerType {
31+
HeapStatisticsContainer = 1,
32+
HeapSpaceStatisticsContainer = 2,
33+
Invalid = 0,
34+
};
35+
}
36+
2937
namespace V8AwaitMode {
3038
enum V8AwaitMode {
3139
RunNoWait = 2,

0 commit comments

Comments
 (0)