Skip to content

Commit

Permalink
🐳 chore: Upgrade V8 to v13.2.152.16
Browse files Browse the repository at this point in the history
  • Loading branch information
caoccao committed Dec 6, 2024
1 parent a07765f commit cdd5e35
Show file tree
Hide file tree
Showing 20 changed files with 62 additions and 25 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/android_v8_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:
workflow_dispatch:

env:
JAVET_V8_VERSION: 13.1.201.8
JAVET_V8_VERSION: 13.2.152.16
JAVET_VERSION: 4.1.1
ROOT: /home/runner/work/Javet

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/linux_build_artifact.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_REPO_JAVET: ${{ secrets.DOCKERHUB_REPO_JAVET }}
JAVET_NODE_VERSION: 22.12.0
JAVET_V8_VERSION: 13.1.201.8
JAVET_V8_VERSION: 13.2.152.16
JAVET_VERSION: 4.1.1

jobs:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/linux_build_node_v8_image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
DOCKERHUB_REPO_JAVET: ${{ secrets.DOCKERHUB_REPO_JAVET }}
JAVET_NODE_VERSION: 22.12.0
JAVET_V8_VERSION: 13.1.201.8
JAVET_V8_VERSION: 13.2.152.16
JAVET_VERSION: 4.1.1

# if we skip a job using a job level `if` condition, then any dependent jobs also don't run.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/linux_x86_64_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:

env:
JAVET_NODE_VERSION: 22.12.0
JAVET_V8_VERSION: 13.1.201.8
JAVET_V8_VERSION: 13.2.152.16
JAVET_VERSION: 4.1.1
ROOT: /home/runner/work/Javet

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/macos_arm64_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:

env:
JAVET_NODE_VERSION: 22.12.0
JAVET_V8_VERSION: 13.1.201.8
JAVET_V8_VERSION: 13.2.152.16
JAVET_VERSION: 4.1.1
ROOT: /Users/runner/work/Javet

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/macos_x86_64_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:

env:
JAVET_NODE_VERSION: 22.12.0
JAVET_V8_VERSION: 13.1.201.8
JAVET_V8_VERSION: 13.2.152.16
JAVET_VERSION: 4.1.1
ROOT: /Users/runner/work/Javet

Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/windows_x86_64_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ on:

env:
JAVET_NODE_VERSION: 22.12.0
JAVET_V8_VERSION: 13.1.201.8
JAVET_V8_VERSION: 13.2.152.16
JAVET_VERSION: 4.1.1
ROOT: D:\a\Javet

Expand Down Expand Up @@ -93,6 +93,8 @@ jobs:
run: |
cd ../google/v8
sed -i '/static_assert(alignof(Type) <= alignof(decltype(/d' src/objects/tagged-field.h
sed -i 's/__attribute__((tls_model(V8_TLS_MODEL)))/ /g' src/execution/isolate.h
sed -i 's/__attribute__((tls_model(V8_TLS_MODEL)))/ /g' src/heap/local-heap.h
- name: Build Javet JNI
run: |
Expand Down
2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ arm ✔️ ❌ ❌ ❌
arm64 ✔️ ✔️ ✔️ ❌
=========== ======= ======= ======= =======

* Node.js ``v22.12.0`` + V8 ``v13.1.201.8``
* Node.js ``v22.12.0`` + V8 ``v13.2.152.16``
* i18n and non-i18n
* Dynamic switch between Node.js and V8 mode
* Polyfill V8 mode with `Javenode <https://github.com/caoccao/Javenode>`_
Expand Down
36 changes: 33 additions & 3 deletions cpp/jni/javet_jni_function.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -216,9 +216,6 @@ JNIEXPORT jobjectArray JNICALL Java_com_caoccao_javet_interop_V8Native_functionG
auto v8InternalIsolate = reinterpret_cast<V8InternalIsolate*>(v8Context->GetIsolate());
#ifdef ENABLE_NODE
auto v8InternalScript = V8InternalScript::cast(v8InternalShared->script());
#else
auto v8InternalScript = v8::internal::Cast<V8InternalScript>(v8InternalShared->script());
#endif
auto wrappedArguments = *v8InternalScript->wrapped_arguments();
auto length = wrappedArguments.length();
if (length > 0) {
Expand All @@ -231,6 +228,21 @@ JNIEXPORT jobjectArray JNICALL Java_com_caoccao_javet_interop_V8Native_functionG
}
return arguments;
}
#else
auto v8InternalScript = v8::internal::Cast<V8InternalScript>(v8InternalShared->script());
auto wrappedArguments = v8InternalScript->wrapped_arguments();
auto length = wrappedArguments->length();
if (length > 0) {
jobjectArray arguments = jniEnv->NewObjectArray(length, Javet::Converter::jclassString, nullptr);
for (int i = 0; i < length; ++i) {
auto v8InternalObjectHandle = v8::internal::handle(wrappedArguments->get(i), v8InternalIsolate);
auto v8LocalString = v8::Utils::ToLocal(v8InternalObjectHandle).As<v8::String>();
jstring argument = Javet::Converter::ToJavaString(jniEnv, v8Context, v8LocalString);
jniEnv->SetObjectArrayElement(arguments, i, argument);
}
return arguments;
}
#endif
}
}
return nullptr;
Expand Down Expand Up @@ -383,9 +395,13 @@ JNIEXPORT jobject JNICALL Java_com_caoccao_javet_interop_V8Native_functionGetScr
const int startPosition = v8InternalShared->StartPosition();
const int endPosition = v8InternalShared->EndPosition();
const int sourceLength = v8InternalSource->length();
#ifdef ENABLE_NODE
auto sourceCode = v8InternalSource->ToCString(
V8InternalAllowNullsFlag::DISALLOW_NULLS, V8InternalRobustnessFlag::ROBUST_STRING_TRAVERSAL,
0, sourceLength);
#else
auto sourceCode = v8InternalSource->ToCString(0, sourceLength);
#endif
return jniEnv->NewObject(
Javet::Converter::jclassIV8ValueFunctionScriptSource,
Javet::Converter::jmethodIDIV8ValueFunctionScriptSourceConstructor,
Expand Down Expand Up @@ -413,9 +429,13 @@ JNIEXPORT jstring JNICALL Java_com_caoccao_javet_interop_V8Native_functionGetSou
#endif
const int startPosition = v8InternalShared->StartPosition();
const int endPosition = v8InternalShared->EndPosition();
#ifdef ENABLE_NODE
auto sourceCode = v8InternalSource->ToCString(
V8InternalAllowNullsFlag::DISALLOW_NULLS, V8InternalRobustnessFlag::ROBUST_STRING_TRAVERSAL,
startPosition, endPosition - startPosition);
#else
auto sourceCode = v8InternalSource->ToCString(startPosition, endPosition - startPosition);
#endif
return Javet::Converter::ToJavaString(jniEnv, sourceCode.get());
}
}
Expand Down Expand Up @@ -542,10 +562,15 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_functionSetSo

V8LocalString newSourceCode;
if (startPosition > 0) {
#ifdef ENABLE_NODE
int utf8Length = 0;
auto stdStringHeader(v8InternalSource->ToCString(
V8InternalAllowNullsFlag::DISALLOW_NULLS, V8InternalRobustnessFlag::ROBUST_STRING_TRAVERSAL,
0, startPosition, &utf8Length));
#else
uint32_t utf8Length = 0;
auto stdStringHeader(v8InternalSource->ToCString(0, startPosition, &utf8Length));
#endif
auto v8MaybeLocalStringHeader = v8::String::NewFromUtf8(
v8Context->GetIsolate(), stdStringHeader.get(), v8::NewStringType::kNormal, utf8Length);
if (v8MaybeLocalStringHeader.IsEmpty()) {
Expand All @@ -562,10 +587,15 @@ JNIEXPORT jboolean JNICALL Java_com_caoccao_javet_interop_V8Native_functionSetSo
newSourceCode = v8::String::Concat(v8Context->GetIsolate(), newSourceCode, umSourceCode);
}
if (endPosition < sourceLength) {
#ifdef ENABLE_NODE
int utf8Length = 0;
auto stdStringFooter(v8InternalSource->ToCString(
V8InternalAllowNullsFlag::DISALLOW_NULLS, V8InternalRobustnessFlag::ROBUST_STRING_TRAVERSAL,
endPosition, sourceLength - endPosition, &utf8Length));
#else
uint32_t utf8Length = 0;
auto stdStringFooter(v8InternalSource->ToCString(endPosition, sourceLength - endPosition, &utf8Length));
#endif
auto v8MaybeLocalStringFooter = v8::String::NewFromUtf8(
v8Context->GetIsolate(), stdStringFooter.get(), v8::NewStringType::kNormal, utf8Length);
if (v8MaybeLocalStringFooter.IsEmpty()) {
Expand Down
4 changes: 4 additions & 0 deletions cpp/jni/javet_v8_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,9 @@
#pragma warning(default: 4819)
#pragma warning(default: 4996)

#ifdef ENABLE_NODE
using V8InternalAllowNullsFlag = v8::internal::AllowNullsFlag;
#endif
using V8internalBlockingBehavior = v8::internal::BlockingBehavior;
using V8InternalBuiltin = v8::internal::Builtin;
using V8InternalDisallowCompilation = v8::internal::DisallowCompilation;
Expand All @@ -71,7 +73,9 @@ using V8InternalJSObject = v8::internal::JSObject;
using V8InternalModule = v8::internal::Module;
using V8InternalNativeContext = v8::internal::NativeContext;
using V8InternalObject = v8::internal::Object;
#ifdef ENABLE_NODE
using V8InternalRobustnessFlag = v8::internal::RobustnessFlag;
#endif
using V8InternalScopeInfo = v8::internal::ScopeInfo;
using V8InternalScopeIterator = v8::internal::ScopeIterator;
using V8InternalScopeType = v8::internal::ScopeType;
Expand Down
2 changes: 1 addition & 1 deletion docker/android/base.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

# Usage: docker build -t sjtucaocao/javet-android:4.1.1 -f docker/android/base.Dockerfile .

ARG JAVET_V8_VERSION=13.1.201.8
ARG JAVET_V8_VERSION=13.2.152.16

FROM ubuntu:20.04
WORKDIR /
Expand Down
2 changes: 1 addition & 1 deletion docker/linux-arm64/base_all_in_one.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
# Usage: docker build -t sjtucaocao/javet-arm64:4.1.1 -f docker/linux-arm64/base_all_in_one.Dockerfile .

ARG JAVET_NODE_VERSION=18.15.0
ARG JAVET_V8_VERSION=13.1.201.8
ARG JAVET_V8_VERSION=13.2.152.16

FROM ubuntu:20.04
WORKDIR /
Expand Down
6 changes: 3 additions & 3 deletions docker/linux-arm64/base_v8.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@
# limitations under the License.

# Usage: docker build \
# -t sjtucaocao/javet:arm64-base-v8_13.1.201.8 \
# -t sjtucaocao/javet:arm64-base-v8_13.2.152.16 \
# --build-arg JAVET_REPO=sjtucaocao/javet \
# --build-arg JAVET_V8_VERSION=13.1.201.8 \
# --build-arg JAVET_V8_VERSION=13.2.152.16 \
# -f docker/linux-arm64/base_v8.Dockerfile .

ARG JAVET_REPO=sjtucaocao/javet
ARG JAVET_V8_VERSION=13.1.201.8
ARG JAVET_V8_VERSION=13.2.152.16

FROM ${JAVET_REPO}:arm64-base-jvm

Expand Down
2 changes: 1 addition & 1 deletion docker/linux-x86_64/base_all_in_one.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ FROM ubuntu:20.04
WORKDIR /

ARG JAVET_NODE_VERSION=22.12.0
ARG JAVET_V8_VERSION=13.1.201.8
ARG JAVET_V8_VERSION=13.2.152.16

# Update Ubuntu
ENV DEBIAN_FRONTEND=noninteractive
Expand Down
6 changes: 3 additions & 3 deletions docker/linux-x86_64/base_v8.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@
# limitations under the License.

# Usage: docker build \
# -t sjtucaocao/javet:x86_64-base-v8_13.1.201.8 \
# -t sjtucaocao/javet:x86_64-base-v8_13.2.152.16 \
# --build-arg JAVET_REPO=sjtucaocao/javet \
# --build-arg JAVET_V8_VERSION=13.1.201.8 \
# --build-arg JAVET_V8_VERSION=13.2.152.16 \
# -f docker/linux-x86_64/base_v8.Dockerfile .

ARG JAVET_REPO=sjtucaocao/javet
ARG JAVET_V8_VERSION=13.1.201.8
ARG JAVET_V8_VERSION=13.2.152.16

FROM ${JAVET_REPO}:x86_64-base-jvm

Expand Down
2 changes: 1 addition & 1 deletion docker/linux-x86_64/build.env
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
JAVET_REPO=sjtucaocao/javet
JAVET_VERSION=4.1.1
JAVET_V8_VERSION=13.1.201.8
JAVET_V8_VERSION=13.2.152.16
JAVET_NODE_VERSION=22.12.0
2 changes: 1 addition & 1 deletion docker/windows-x86_64/base.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
# Usage: docker build -t sjtucaocao/javet-windows:4.1.1 -m 4G -f docker/windows-x86_64/base.Dockerfile .

ARG JAVET_NODE_VERSION=22.12.0
ARG JAVET_V8_VERSION=13.1.201.8
ARG JAVET_V8_VERSION=13.2.152.16

# https://hub.docker.com/_/microsoft-windows
FROM mcr.microsoft.com/windows:20H2-amd64
Expand Down
1 change: 1 addition & 0 deletions docs/release_notes/release_notes_4_0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Release Notes 4.0.x - 4.1.x
-----

* Upgraded Node.js to ``v22.12.0`` `(2024-12-03) <https://github.com/nodejs/node/blob/main/doc/changelogs/CHANGELOG_V22.md#22.12.0>`_
* Upgraded V8 to ``v13.2.152.16`` (2024-12-05)
* Upgraded Visual Studio 2022 to `v17.12.3 <https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-notes-v17.12>`_
* Added ``getAbsoluteResourceName()`` to ``IV8ModuleResolver``
* Fixed memory leaks in function callback in edge cases
Expand Down
2 changes: 1 addition & 1 deletion scripts/python/change_node_v8_version.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ def update(self) -> None:
def main():
change_node_version = ChangeNodeVersion('22.12.0')
change_node_version.update()
change_v8_version = ChangeV8Version('13.1.201.8')
change_v8_version = ChangeV8Version('13.2.152.16')
change_v8_version.update()
return 0

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/caoccao/javet/enums/JSRuntimeType.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public enum JSRuntimeType {
V8(
"v8",
false,
"13.1.201.8",
"13.2.152.16",
V8RuntimeOptions::new,
o -> o instanceof V8RuntimeOptions),
/**
Expand All @@ -71,7 +71,7 @@ public enum JSRuntimeType {
V8I18n(
"v8",
true,
"13.1.201.8",
"13.2.152.16",
V8RuntimeOptions::new,
o -> o instanceof V8RuntimeOptions);

Expand Down

0 comments on commit cdd5e35

Please sign in to comment.