Skip to content

Commit 20c5edd

Browse files
authored
⛈️ Javet v4.1.0 (#416)
* Upgraded Node.js to `v22.11.0` ([2024-10-29](https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V22.md#22.11.0)) * Upgraded V8 to `v13.1.201.8` (2024-11-11) * Upgraded clang to v20 for V8 mode on MacOS * Switched to core dependency + individual native dependency * Supported `Float16Array` * Added `Float16` * Fixed `JavetJVMInterceptor` to allow arbitrary name * Added `addCallbackContexts()` to `JavetJVMInterceptor`
1 parent 96972b0 commit 20c5edd

File tree

74 files changed

+1724
-513
lines changed

Some content is hidden

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

74 files changed

+1724
-513
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: 22.9.0
12-
JAVET_VERSION: 4.0.0
11+
JAVET_NODE_VERSION: 22.11.0
12+
JAVET_VERSION: 4.1.0
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: 13.0.245.16
12-
JAVET_VERSION: 4.0.0
11+
JAVET_V8_VERSION: 13.1.201.8
12+
JAVET_VERSION: 4.1.0
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: 22.9.0
21-
JAVET_V8_VERSION: 13.0.245.16
22-
JAVET_VERSION: 4.0.0
20+
JAVET_NODE_VERSION: 22.11.0
21+
JAVET_V8_VERSION: 13.1.201.8
22+
JAVET_VERSION: 4.1.0
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: 22.9.0
25-
JAVET_V8_VERSION: 13.0.245.16
26-
JAVET_VERSION: 4.0.0
24+
JAVET_NODE_VERSION: 22.11.0
25+
JAVET_V8_VERSION: 13.1.201.8
26+
JAVET_VERSION: 4.1.0
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: 22.9.0
11-
JAVET_V8_VERSION: 13.0.245.16
12-
JAVET_VERSION: 4.0.0
10+
JAVET_NODE_VERSION: 22.11.0
11+
JAVET_V8_VERSION: 13.1.201.8
12+
JAVET_VERSION: 4.1.0
1313
ROOT: /home/runner/work/Javet
1414

1515
jobs:

.github/workflows/macos_arm64_build.yml

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

99
env:
10-
JAVET_NODE_VERSION: 22.9.0
11-
JAVET_V8_VERSION: 13.0.245.16
12-
JAVET_VERSION: 4.0.0
10+
JAVET_NODE_VERSION: 22.11.0
11+
JAVET_V8_VERSION: 13.1.201.8
12+
JAVET_VERSION: 4.1.0
1313
ROOT: /Users/runner/work/Javet
1414

1515
jobs:
@@ -85,6 +85,9 @@ jobs:
8585
cmake-version: '3.23.x'
8686

8787
- name: Build Javet JNI
88+
env:
89+
CC: ${{ env.ROOT }}/google/v8/third_party/llvm-build/Release+Asserts/bin/clang
90+
CXX: ${{ env.ROOT }}/google/v8/third_party/llvm-build/Release+Asserts/bin/clang
8891
run: |
8992
cd ${{ env.ROOT }}/Javet/cpp
9093
sed -i '.bak' 's/`nproc`/2/g' build-macos.sh

.github/workflows/macos_x86_64_build.yml

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

99
env:
10-
JAVET_NODE_VERSION: 22.9.0
11-
JAVET_V8_VERSION: 13.0.245.16
12-
JAVET_VERSION: 4.0.0
10+
JAVET_NODE_VERSION: 22.11.0
11+
JAVET_V8_VERSION: 13.1.201.8
12+
JAVET_VERSION: 4.1.0
1313
ROOT: /Users/runner/work/Javet
1414

1515
jobs:
@@ -85,6 +85,9 @@ jobs:
8585
cmake-version: '3.23.x'
8686

8787
- name: Build Javet JNI
88+
env:
89+
CC: ${{ env.ROOT }}/google/v8/third_party/llvm-build/Release+Asserts/bin/clang
90+
CXX: ${{ env.ROOT }}/google/v8/third_party/llvm-build/Release+Asserts/bin/clang
8891
run: |
8992
cd ${{ env.ROOT }}/Javet/cpp
9093
sed -i '.bak' 's/`nproc`/2/g' build-macos.sh

.github/workflows/windows_x86_64_build.yml

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

99
env:
10-
JAVET_NODE_VERSION: 22.9.0
11-
JAVET_V8_VERSION: 13.0.245.16
12-
JAVET_VERSION: 4.0.0
10+
JAVET_NODE_VERSION: 22.11.0
11+
JAVET_V8_VERSION: 13.1.201.8
12+
JAVET_VERSION: 4.1.0
1313
ROOT: D:\a\Javet
1414

1515
jobs:
@@ -49,25 +49,27 @@ jobs:
4949
- name: Build V8
5050
env:
5151
DEPOT_TOOLS_WIN_TOOLCHAIN: 0
52+
shell: bash
5253
run: |
53-
cd ${{ env.ROOT }}
54+
cd ..
5455
mkdir google
5556
cd google
5657
git clone --depth=10 --branch=main https://chromium.googlesource.com/chromium/tools/depot_tools.git
5758
cd depot_tools
5859
git checkout remotes/origin/main
5960
cd ..
60-
.\depot_tools\fetch.bat v8
61+
depot_tools/fetch.bat v8
6162
cd v8
6263
git checkout ${{ env.JAVET_V8_VERSION }}
6364
cd ..
64-
.\depot_tools\gclient.bat sync -D
65+
depot_tools/gclient.bat sync -D
6566
cd v8
66-
python3 tools\dev\v8gen.py x64.release -- v8_monolithic=true v8_use_external_startup_data=false is_component_build=false ${{ matrix.v8_flag }} v8_enable_pointer_compression=false v8_static_library=true symbol_level=0 use_custom_libcxx=false v8_enable_sandbox=false
67-
..\depot_tools\gn.bat gen out.gn/x64.release
68-
python3 ${{ env.ROOT }}\Javet\scripts\python\patch_v8_build.py -p .\
69-
..\depot_tools\ninja.bat -C out.gn/x64.release v8_monolith
70-
move out.gn out.gn.${{ matrix.name }}
67+
python3 tools/dev/v8gen.py x64.release -- v8_monolithic=true v8_use_external_startup_data=false is_component_build=false ${{ matrix.v8_flag }} v8_enable_pointer_compression=false v8_static_library=true symbol_level=0 use_custom_libcxx=false v8_enable_sandbox=false
68+
../depot_tools/gn.bat gen out.gn/x64.release
69+
python3 ../../Javet/scripts/python/patch_v8_build.py -p ./
70+
../depot_tools/ninja.bat -C out.gn/x64.release v8_monolith || python3 ../../Javet/scripts/python/patch_v8_build.py -p ./
71+
../depot_tools/ninja.bat -C out.gn/x64.release v8_monolith
72+
mv out.gn out.gn.${{ matrix.name }}
7173
7274
- name: Copy the i18n
7375
if: matrix.name == 'i18n'

README.rst

+88-19
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ arm ✔️ ❌ ❌ ❌
5050
arm64 ✔️ ✔️ ✔️ ❌
5151
=========== ======= ======= ======= =======
5252

53-
* Node.js ``v22.9.0`` + V8 ``v13.0.245.16``
53+
* Node.js ``v22.11.0`` + V8 ``v13.1.201.8``
5454
* i18n and non-i18n
5555
* Dynamic switch between Node.js and V8 mode
5656
* Polyfill V8 mode with `Javenode <https://github.com/caoccao/Javenode>`_
@@ -62,6 +62,7 @@ arm64 ✔️ ✔️ ✔️ ❌
6262
* Live debug with Chrome DevTools
6363
* AST analysis with `swc4j <https://github.com/caoccao/swc4j>`_
6464
* JS, TS, JSX, TSX transformation and transpilation with `swc4j <https://github.com/caoccao/swc4j>`_
65+
* Enhance JVM via Byte-code with `JavetBuddy <https://github.com/caoccao/JavetBuddy>`_
6566
* Live interaction with `JavetShell <https://github.com/caoccao/JavetShell>`_
6667

6768
Quick Start
@@ -75,48 +76,116 @@ Maven
7576

7677
.. code-block:: xml
7778
78-
<!-- Linux and Windows (x86_64) -->
79+
<!-- Core (Must-have) -->
7980
<dependency>
8081
<groupId>com.caoccao.javet</groupId>
8182
<artifactId>javet</artifactId>
82-
<version>4.0.0</version>
83+
<version>4.1.0</version>
8384
</dependency>
8485
85-
<!-- Linux (arm64) -->
86+
<!-- Node.js Linux (x86_64) -->
8687
<dependency>
8788
<groupId>com.caoccao.javet</groupId>
88-
<artifactId>javet-linux-arm64</artifactId>
89-
<version>4.0.0</version>
89+
<artifactId>javet-node-linux-x86_64</artifactId>
90+
<version>4.1.0</version>
9091
</dependency>
9192
92-
<!-- Mac OS (x86_64 and arm64) -->
93+
<!-- Node.js Linux (arm64) -->
9394
<dependency>
9495
<groupId>com.caoccao.javet</groupId>
95-
<artifactId>javet-macos</artifactId>
96-
<version>4.0.0</version>
96+
<artifactId>javet-node-linux-arm64</artifactId>
97+
<version>4.1.0</version>
98+
</dependency>
99+
100+
<!-- Node.js Mac OS (x86_64) -->
101+
<dependency>
102+
<groupId>com.caoccao.javet</groupId>
103+
<artifactId>javet-node-macos-x86_64</artifactId>
104+
<version>4.1.0</version>
105+
</dependency>
106+
107+
<!-- Node.js Mac OS (arm64) -->
108+
<dependency>
109+
<groupId>com.caoccao.javet</groupId>
110+
<artifactId>javet-node-macos-arm64</artifactId>
111+
<version>4.1.0</version>
112+
</dependency>
113+
114+
<!-- Node.js Windows (x86_64) -->
115+
<dependency>
116+
<groupId>com.caoccao.javet</groupId>
117+
<artifactId>javet-node-windows-x86_64</artifactId>
118+
<version>4.1.0</version>
119+
</dependency>
120+
121+
<!-- V8 Linux (x86_64) -->
122+
<dependency>
123+
<groupId>com.caoccao.javet</groupId>
124+
<artifactId>javet-v8-linux-x86_64</artifactId>
125+
<version>4.1.0</version>
126+
</dependency>
127+
128+
<!-- V8 Linux (arm64) -->
129+
<dependency>
130+
<groupId>com.caoccao.javet</groupId>
131+
<artifactId>javet-v8-linux-arm64</artifactId>
132+
<version>4.1.0</version>
133+
</dependency>
134+
135+
<!-- V8 Mac OS (x86_64) -->
136+
<dependency>
137+
<groupId>com.caoccao.javet</groupId>
138+
<artifactId>javet-v8-macos-x86_64</artifactId>
139+
<version>4.1.0</version>
140+
</dependency>
141+
142+
<!-- V8 Mac OS (arm64) -->
143+
<dependency>
144+
<groupId>com.caoccao.javet</groupId>
145+
<artifactId>javet-v8-macos-arm64</artifactId>
146+
<version>4.1.0</version>
147+
</dependency>
148+
149+
<!-- V8 Windows (x86_64) -->
150+
<dependency>
151+
<groupId>com.caoccao.javet</groupId>
152+
<artifactId>javet-v8-windows-x86_64</artifactId>
153+
<version>4.1.0</version>
97154
</dependency>
98155
99156
Gradle Kotlin DSL
100157
^^^^^^^^^^^^^^^^^
101158

102159
.. code-block:: kotlin
103160
104-
implementation("com.caoccao.javet:javet:4.0.0") // Linux and Windows (x86_64)
105-
implementation("com.caoccao.javet:javet-linux-arm64:4.0.0") // Linux (arm64)
106-
implementation("com.caoccao.javet:javet-macos:4.0.0") // Mac OS (x86_64 and arm64)
107-
implementation("com.caoccao.javet:javet-node-android:4.0.0") // Android Node (arm, arm64, x86 and x86_64)
108-
implementation("com.caoccao.javet:javet-v8-android:4.0.0") // Android V8 (arm, arm64, x86 and x86_64)
161+
implementation("com.caoccao.javet:javet:4.1.0") // Core (Must-have)
162+
implementation("com.caoccao.javet:javet-node-linux-arm64:4.1.0")
163+
implementation("com.caoccao.javet:javet-node-linux-x86_64:4.1.0")
164+
implementation("com.caoccao.javet:javet-node-macos-arm64:4.1.0")
165+
implementation("com.caoccao.javet:javet-node-macos-x86_64:4.1.0")
166+
implementation("com.caoccao.javet:javet-node-windows-x86_64:4.1.0")
167+
implementation("com.caoccao.javet:javet-v8-linux-arm64:4.1.0")
168+
implementation("com.caoccao.javet:javet-v8-linux-x86_64:4.1.0")
169+
implementation("com.caoccao.javet:javet-v8-macos-arm64:4.1.0")
170+
implementation("com.caoccao.javet:javet-v8-macos-x86_64:4.1.0")
171+
implementation("com.caoccao.javet:javet-v8-windows-x86_64:4.1.0")
109172
110173
Gradle Groovy DSL
111174
^^^^^^^^^^^^^^^^^
112175

113176
.. code-block:: groovy
114177
115-
implementation 'com.caoccao.javet:javet:4.0.0' // Linux and Windows (x86_64)
116-
implementation 'com.caoccao.javet:javet-linux-arm64:4.0.0' // Linux (arm64)
117-
implementation 'com.caoccao.javet:javet-macos:4.0.0' // Mac OS (x86_64 and arm64)
118-
implementation 'com.caoccao.javet:javet-node-android:4.0.0' // Android Node (arm, arm64, x86 and x86_64)
119-
implementation 'com.caoccao.javet:javet-v8-android:4.0.0' // Android V8 (arm, arm64, x86 and x86_64)
178+
implementation 'com.caoccao.javet:javet:4.1.0' // Core (Must-have)
179+
implementation 'com.caoccao.javet:javet-node-linux-arm64:4.1.0'
180+
implementation 'com.caoccao.javet:javet-node-linux-x86_64:4.1.0'
181+
implementation 'com.caoccao.javet:javet-node-macos-arm64:4.1.0'
182+
implementation 'com.caoccao.javet:javet-node-macos-x86_64:4.1.0'
183+
implementation 'com.caoccao.javet:javet-node-windows-x86_64:4.1.0'
184+
implementation 'com.caoccao.javet:javet-v8-linux-arm64:4.1.0'
185+
implementation 'com.caoccao.javet:javet-v8-linux-x86_64:4.1.0'
186+
implementation 'com.caoccao.javet:javet-v8-macos-arm64:4.1.0'
187+
implementation 'com.caoccao.javet:javet-v8-macos-x86_64:4.1.0'
188+
implementation 'com.caoccao.javet:javet-v8-windows-x86_64:4.1.0'
120189
121190
For more detail, please visit the `installation <https://www.caoccao.com/Javet/tutorial/basic/installation.html>`_ page.
122191

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 = "4.0.0"
76+
const val JAVET = "4.1.0"
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="4.0.0"
4+
android:versionName="4.1.0"
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>4.0.0</version>
6+
<version>4.1.0</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>4.0.0</tag>
32+
<tag>4.1.0</tag>
3333
</scm>
3434

3535
<properties>

0 commit comments

Comments
 (0)