Skip to content

Commit 90547cb

Browse files
committed
[GR-59182] Begin feature freeze for the 24.2 release.
PullRequest: js/3389
2 parents a8c4ccf + f2f4c66 commit 90547cb

File tree

15,436 files changed

+1637487
-935486
lines changed

Some content is hidden

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

15,436 files changed

+1637487
-935486
lines changed

3rd_party_licenses.txt

Lines changed: 487 additions & 87 deletions
Large diffs are not rendered by default.

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,24 @@ Changelog may include unreleased versions.
66
See [release calendar](https://www.graalvm.org/release-calendar/) for release dates.
77

88
## Version 24.2.0
9-
* Updated Node.js to version 20.15.1.
9+
* Updated Node.js to version 22.13.1.
1010
* Implemented the [`Error.isError`](https://github.com/tc39/proposal-is-error) proposal. It is available in ECMAScript staging mode (`--js.ecmascript-version=staging`).
11+
* Implemented the [`Math.sumPrecise`](https://github.com/tc39/proposal-math-sum) proposal. It is available in ECMAScript staging mode (`--js.ecmascript-version=staging`).
1112
* Implemented the [`Promise.try`](https://github.com/tc39/proposal-promise-try) proposal. It is available in ECMAScript staging mode (`--js.ecmascript-version=staging`).
1213
* Implemented the [`Atomics.pause`](https://github.com/tc39/proposal-atomics-microwait) proposal. It is available in ECMAScript staging mode (`--js.ecmascript-version=staging`).
1314
* Implemented the [Uint8Array to/from base64 and hex](https://github.com/tc39/proposal-arraybuffer-base64) proposal. It is available in ECMAScript staging mode (`--js.ecmascript-version=staging`).
1415
* Implemented the [Source Phase Imports](https://github.com/tc39/proposal-source-phase-imports) proposal. It is available behind the experimental option (`--js.source-phase-imports`).
16+
* Implemented the [WebAssembly/ES Module Integration](https://github.com/WebAssembly/esm-integration) proposal, allowing `.wasm` modules to be loaded via `import` statements.
1517
* Implemented basic Worker API (resembling the API available in `d8`). It is available behind the experimental option `--js.worker`.
1618
* Added option `js.stack-trace-api` that enables/disables `Error.captureStackTrace`, `Error.prepareStackTrace` and `Error.stackTraceLimit`. These non-standard extensions are disabled by default (unless `js.v8-compat` or `js.nashorn-compat` is used).
1719
* Made option `js.webassembly` stable.
1820
* Made options `js.load`, `js.print`, and `js.graal-builtin` stable and allowed in `SandboxPolicy.UNTRUSTED`.
1921
* Made option `js.locale` stable and allowed in `SandboxPolicy.UNTRUSTED`. Its value, if non-empty, must be a well-formed Unicode BCP 47 locale identifier and is now validated.
2022
* Added an experimental `java.util.concurrent.Executor` that can be used to post tasks into the event loop thread in `graal-nodejs`. It is available as `require('node:graal').eventLoopExecutor`.
2123
* Implemented the `TextDecoder` and `TextEncoder` APIs of the [WHATWG Encoding Standard](https://encoding.spec.whatwg.org/). They are available behind the experimental option (`--js.text-encoding`).
24+
* Implemented the [`RegExp.escape`](https://github.com/tc39/proposal-regex-escaping) proposal. It is available in ECMAScript staging mode (`--js.ecmascript-version=staging`).
25+
* Implemented the [Regular Expression Pattern Modifiers](https://github.com/tc39/proposal-regexp-modifiers) proposal.
26+
* Implemented the [Iterator Sequencing](https://github.com/tc39/proposal-iterator-sequencing) proposal. It is available in ECMAScript staging mode (`--js.ecmascript-version=staging`).
2227

2328
## Version 24.1.0
2429
* ECMAScript 2024 mode/features enabled by default.

ci.jsonnet

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ local graalNodeJs = import 'graal-nodejs/ci.jsonnet';
5656
+ self.cd_run
5757
+ self.graalvmtests_run
5858
+ (if std.length(self.cd_run) > 0 then [['mx', 'sversions']] else []),
59-
timelimit: error "timelimit not set for '" + (if std.objectHasAll(self, 'name') then self.name else '') + "'",
59+
timelimit: error "timelimit not set for '" + self.name + "'",
60+
defined_in: error "defined_in not set for '" + self.name + "'",
6061
diskspace_required: '30GB',
6162
environment+: (if 'os' in self && self.os == 'darwin' then {'SYSTEM_VERSION_COMPAT': '0'} else {}), # ensure correct platform.mac_ver()
6263
},
@@ -151,6 +152,7 @@ local graalNodeJs = import 'graal-nodejs/ci.jsonnet';
151152
targets: ['ondemand'],
152153
timelimit: if 'os' in self && (self.os == 'darwin' && self.arch == 'amd64') then '1:30:00' else '1:00:00',
153154
notify_groups: ['javascript'],
155+
defined_in: std.thisFile,
154156
},
155157

156158
local use_js_graalvm_artifact(build) =

ci/common.jsonnet

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,12 @@ local common_json = import "../common.json";
203203
},
204204
},
205205

206+
gradle:: {
207+
downloads+: {
208+
GRADLE_JAVA_HOME: jdks_data["oraclejdk21"],
209+
}
210+
},
211+
206212
local code_tools = {
207213
downloads+: if 'jdk_version' in self && self.jdk_version > 21 then {
208214
TOOLS_JAVA_HOME: jdks_data['oraclejdk21'],
@@ -251,7 +257,7 @@ local common_json = import "../common.json";
251257
} else {},
252258
},
253259

254-
graalpy:: {
260+
graalpy:: self.gradle + {
255261
packages+: if (self.os == "linux") then {
256262
libffi: '>=3.2.1',
257263
bzip2: '>=1.0.6',

common.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
"Jsonnet files should not include this file directly but use ci/common.jsonnet instead."
55
],
66

7-
"mx_version": "7.34.1",
7+
"mx_version": "7.38.2",
88

99
"COMMENT.jdks": "When adding or removing JDKs keep in sync with JDKs in ci/common.jsonnet",
1010
"jdks": {
11-
"galahad-jdk": {"name": "jpg-jdk", "version": "24", "build_id": "jdk-24+25-3126", "platformspecific": true, "extrabundles": ["static-libs"]},
11+
"galahad-jdk": {"name": "jpg-jdk", "version": "24", "build_id": "jdk-24+26-3309", "platformspecific": true, "extrabundles": ["static-libs"]},
1212

1313
"oraclejdk17": {"name": "jpg-jdk", "version": "17.0.7", "build_id": "jdk-17.0.7+8", "platformspecific": true, "extrabundles": ["static-libs"]},
1414
"labsjdk-ce-17": {"name": "labsjdk", "version": "ce-17.0.7+4-jvmci-23.1-b02", "platformspecific": true },
@@ -45,13 +45,13 @@
4545

4646
"oraclejdk23": {"name": "jpg-jdk", "version": "23", "build_id": "jdk-23+37", "platformspecific": true, "extrabundles": ["static-libs"]},
4747

48-
"oraclejdk-latest": {"name": "jpg-jdk", "version": "24", "build_id": "jdk-24+25", "platformspecific": true, "extrabundles": ["static-libs"]},
49-
"labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-24+25-jvmci-b01", "platformspecific": true },
50-
"labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-24+25-jvmci-b01-debug", "platformspecific": true },
51-
"labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-24+25-jvmci-b01-sulong", "platformspecific": true },
52-
"labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-24+25-jvmci-b01", "platformspecific": true },
53-
"labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-24+25-jvmci-b01-debug", "platformspecific": true },
54-
"labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-24+25-jvmci-b01-sulong", "platformspecific": true }
48+
"oraclejdk-latest": {"name": "jpg-jdk", "version": "24", "build_id": "jdk-24+32", "platformspecific": true, "extrabundles": ["static-libs"]},
49+
"labsjdk-ce-latest": {"name": "labsjdk", "version": "ce-24+32-jvmci-b01", "platformspecific": true },
50+
"labsjdk-ce-latestDebug": {"name": "labsjdk", "version": "ce-24+32-jvmci-b01-debug", "platformspecific": true },
51+
"labsjdk-ce-latest-llvm": {"name": "labsjdk", "version": "ce-24+32-jvmci-b01-sulong", "platformspecific": true },
52+
"labsjdk-ee-latest": {"name": "labsjdk", "version": "ee-24+32-jvmci-b01", "platformspecific": true },
53+
"labsjdk-ee-latestDebug": {"name": "labsjdk", "version": "ee-24+32-jvmci-b01-debug", "platformspecific": true },
54+
"labsjdk-ee-latest-llvm": {"name": "labsjdk", "version": "ee-24+32-jvmci-b01-sulong", "platformspecific": true }
5555
},
5656

5757
"eclipse": {

common.jsonnet

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,11 +112,10 @@ targets +
112112
timelimit: if 'timelimit' in super then super.timelimit else '45:00',
113113
},
114114

115-
gateStyleFullBuild:: common.deps.pylint + common.deps.black + common.deps.eclipse + common.deps.jdt + {
115+
gateStyleFullBuild:: common.deps.pylint + common.deps.black + common.deps.eclipse + common.deps.jdt + common.deps.spotbugs + {
116116
local is_jdk_latest = 'jdk_name' in self && self.jdk_name == 'jdk-latest',
117117
local strict = !is_jdk_latest,
118-
// Add JDK21 to EXTRA_JAVA_HOMES for SpotBugs.
119-
downloads+: if is_jdk_latest then {EXTRA_JAVA_HOMES: jdks.jdk21.downloads['JAVA_HOME']} else {},
118+
components+: ['style'],
120119
environment+: {
121120
TAGS: 'style,fullbuild',
122121
},

graal-js/ci.jsonnet

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ local ci = import '../ci.jsonnet';
55
local graalJs = ci.jobtemplate + {
66
cd:: 'graal-js',
77
suite_prefix:: 'js', # for build job names
8+
components+: ['js'],
89
// increase default timelimit on windows and darwin-amd64
910
timelimit: if 'os' in self && (self.os == 'windows' || (self.os == 'darwin' && self.arch == 'amd64')) then '1:30:00' else '45:00',
11+
defined_in: std.thisFile,
1012
},
1113

1214
local compiler = {suiteimports+:: ['compiler']},
@@ -97,6 +99,7 @@ local ci = import '../ci.jsonnet';
9799
run+: [
98100
['mx', 'gate', '--all-suites', '--no-warning-as-error', '--strict-mode', '--tags', 'build,${TAGS}'],
99101
],
102+
timelimit: '1:00:00',
100103
},
101104

102105
local interopJmhBenchmarks = common.buildCompiler + {
@@ -153,7 +156,8 @@ local ci = import '../ci.jsonnet';
153156

154157
// downstream graal gate
155158
graalJs + downstreamGraal + {name: 'downstream-graal'} +
156-
promoteToTarget(common.gate, [common.jdk21 + common.linux_amd64]),
159+
promoteToTarget(common.gate, [common.jdk21 + common.linux_amd64]) +
160+
excludePlatforms([common.jdklatest]), # GR-60309: fails on JDK 24
157161
graalJs + downstreamSubstratevmEE + {environment+: {TAGS: 'downtest_js'}} + {name: 'downstream-substratevm-enterprise'} + gateOnMain +
158162
excludePlatforms([common.darwin_amd64]) + # Too slow
159163
excludePlatforms([common.linux_aarch64]), # Fails on Linux AArch64 with "Creation of the VM failed."
@@ -163,7 +167,7 @@ local ci = import '../ci.jsonnet';
163167
promoteToTarget(common.postMerge, [ci.mainGatePlatform]),
164168

165169
// PGO profiles
166-
graalJs + downstreamSubstratevmEE + {environment+: {TAGS: 'pgo_collect_js'}} + {name: 'pgo-profiles', timelimit: '1:00:00'} +
170+
graalJs + downstreamSubstratevmEE + {environment+: {TAGS: 'pgo_collect_js'}} + {name: 'pgo-profiles'} +
167171
promoteToTarget(common.postMerge, [ci.mainGatePlatform]) +
168172
excludePlatforms([common.darwin_amd64]), # Too slow
169173
], defaultTarget=common.weekly),

graal-js/mx.graal-js/mx_graal_js.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#
22
# ----------------------------------------------------------------------------------------------------
33
#
4-
# Copyright (c) 2007, 2024, Oracle and/or its affiliates. All rights reserved.
4+
# Copyright (c) 2007, 2025, Oracle and/or its affiliates. All rights reserved.
55
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
66
#
77
# This code is free software; you can redistribute it and/or modify it
@@ -47,7 +47,7 @@
4747
TEST262_REPO = "https://" + "github.com/tc39/test262.git"
4848

4949
# Git revision of Test262 to checkout
50-
TEST262_REV = "0add42b556ee5bb4ec64aa82d2e234375f39fd2f"
50+
TEST262_REV = "d0bda4d26f16558698b3f11deba74f7cc4f8afda"
5151

5252
# Git repository of V8
5353
TESTV8_REPO = "https://" + "github.com/v8/v8.git"
@@ -166,6 +166,7 @@ def apply(self, config):
166166
vmArgs += ['-Dpolyglot.engine.AssertProbes=true']
167167
vmArgs += ['-Dpolyglotimpl.DisableClassPathIsolation=true']
168168
vmArgs += ['--enable-native-access=org.graalvm.truffle']
169+
vmArgs = mx_truffle.enable_sun_misc_unsafe(vmArgs)
169170
mainClassArgs += ['-JUnitOpenPackages', 'org.graalvm.js/*=com.oracle.truffle.js.test']
170171
mainClassArgs += ['-JUnitOpenPackages', 'org.graalvm.js/*=com.oracle.truffle.js.snapshot']
171172
mainClassArgs += ['-JUnitOpenPackages', 'org.graalvm.js/*=ALL-UNNAMED']
@@ -265,6 +266,7 @@ def _append_default_js_vm_args(vm_args, min_heap='2g', max_heap='2g', stack_size
265266
vm_args += ['-Dpolyglot.engine.WarnInterpreterOnly=false']
266267

267268
vm_args += ['--enable-native-access=org.graalvm.truffle']
269+
vm_args = mx_truffle.enable_sun_misc_unsafe(vm_args)
268270
return vm_args
269271

270272
def _js_cmd_line(args, main_class, runtime_jvm_args=None, append_default_args=True):

graal-js/mx.graal-js/suite.py

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# pylint: disable=line-too-long
12
suite = {
23
"mxversion" : "7.27.0",
34

@@ -6,12 +7,12 @@
67
"version" : "24.2.0",
78
"release" : False,
89
"groupId" : "org.graalvm.js",
9-
"url" : "http://www.graalvm.org/",
10+
"url" : "https://www.graalvm.org/javascript",
1011
"developer" : {
1112
"name" : "GraalVM Development",
1213
"email" : "[email protected]",
1314
"organization" : "Oracle Corporation",
14-
"organizationUrl" : "http://www.graalvm.org/",
15+
"organizationUrl" : "https://www.graalvm.org/",
1516
},
1617
"scm" : {
1718
"url" : "https://github.com/graalvm/graaljs",
@@ -24,7 +25,7 @@
2425
{
2526
"name" : "regex",
2627
"subdir" : True,
27-
"version" : "721a7073cee864518d98bfb0ed01afd383a9801f",
28+
"version" : "9c68a2c6e0ae88ed0af8a511d89beb3f0e6226db",
2829
"urls" : [
2930
{"url" : "https://github.com/oracle/graal.git", "kind" : "git"},
3031
]
@@ -121,7 +122,7 @@
121122
"jacoco" : "include",
122123
"spotbugs" : "true",
123124
"javaCompliance" : "17+",
124-
"checkstyleVersion" : "10.7.0",
125+
"checkstyleVersion" : "10.21.0",
125126
"workingSets" : "Truffle,JavaScript",
126127
},
127128

@@ -148,7 +149,7 @@
148149
"jacoco" : "include",
149150
"spotbugs" : "true",
150151
"javaCompliance" : "17+",
151-
"checkstyleVersion" : "10.7.0",
152+
"checkstyleVersion" : "10.21.0",
152153
"workingSets" : "Truffle,JavaScript",
153154
},
154155

@@ -470,9 +471,9 @@
470471
],
471472
"exclude" : [
472473
],
473-
"description" : "Graal JavaScript implementation",
474-
"maven" : {
475-
"artifactId" : "js-language",
474+
"description": "GraalJS, a high-performance embeddable JavaScript runtime for Java. This artifact includes the core language runtime without standard libraries. It is not recommended to depend on the artifact directly. Instead, use \'org.graalvm.polyglot:js\' or \'org.graalvm.polyglot:js-community\' to ensure all dependencies are pulled in correctly.",
475+
"maven": {
476+
"artifactId": "js-language",
476477
"tag": ["default", "public"],
477478
},
478479
"license": [
@@ -489,7 +490,8 @@
489490
"GRAALJS",
490491
"truffle:TRUFFLE_RUNTIME",
491492
],
492-
"description": "Graal JavaScript engine.",
493+
"description": "GraalJS, a high-performance embeddable JavaScript runtime for Java. This POM dependency pulls in GraalJS dependencies and Truffle Community Edition.",
494+
"descriptionGFTC": "GraalJS, a high-performance embeddable JavaScript runtime for Java. This POM dependency pulls in GraalJS dependencies and Truffle.",
493495
"maven": {
494496
"artifactId": "js-community",
495497
"tag": ["default", "public"],
@@ -517,7 +519,7 @@
517519
"sdk:LAUNCHER_COMMON",
518520
"sdk:JLINE3",
519521
],
520-
"description" : "Graal JavaScript Launcher",
522+
"description" : "GraalJS, a high-performance embeddable JavaScript runtime for Java. This artifact provides a command-line launcher for GraalJS.",
521523
"maven" : {
522524
"artifactId" : "js-launcher",
523525
"tag": ["default", "public"],
@@ -542,7 +544,7 @@
542544
"distDependencies" : [
543545
"sdk:POLYGLOT"
544546
],
545-
"description" : "Graal JavaScript ScriptEngine",
547+
"description" : "GraalJS, a high-performance embeddable JavaScript runtime for Java. This artifact provides an implementation of javax.script.ScriptEngine (JSR-223) based on GraalJS. Note that this is provided for legacy reasons to allow easier migration for implementations currently based on a ScriptEngine. We strongly encourage users to only use \'org.graalvm.polyglot:js\' or \'org.graalvm.polyglot:js-community\' via org.graalvm.polyglot.Context to control many of the settings directly and benefit from fine-grained security settings in GraalVM.",
546548
"maven" : {
547549
"artifactId" : "js-scriptengine",
548550
"tag": ["default", "public"],
@@ -644,7 +646,7 @@
644646
"UPL",
645647
],
646648
"maven" : False,
647-
"description" : "Graal JavaScript Tests",
649+
"description" : "GraalJS Tests.",
648650
"allowsJavadocWarnings": True,
649651
"useModulePath": True,
650652
"unittestConfig": "js",
@@ -680,7 +682,7 @@
680682
"sdk:POLYGLOT_TCK",
681683
"GRAALJS",
682684
],
683-
"description" : "Truffle TCK provider for JavaScript language.",
685+
"description" : "Truffle TCK provider for GraalJS.",
684686
"license": "UPL",
685687
"testDistribution": False,
686688
"maven": {
@@ -693,7 +695,7 @@
693695
"GRAALJS_GRAALVM_SUPPORT" : {
694696
"native" : True,
695697
"platformDependent" : True,
696-
"description" : "Graal.js support distribution for the GraalVM",
698+
"description" : "GraalJS support distribution for GraalVM.",
697699
"layout" : {
698700
"native-image.properties": "file:mx.graal-js/native-image.properties",
699701
"./": [
@@ -708,7 +710,7 @@
708710
"GRAALJS_GRAALVM_LICENSES" : {
709711
"fileListPurpose": 'native-image-resources',
710712
"native" : True,
711-
"description" : "Graal.js license files for the GraalVM",
713+
"description" : "GraalJS license files for GraalVM.",
712714
"layout" : {
713715
"LICENSE_GRAALJS.txt" : "file:LICENSE_GRAALJS",
714716
"THIRD_PARTY_LICENSE_GRAALJS.txt": "file:THIRD_PARTY_LICENSE_GRAALJS.txt",
@@ -717,7 +719,7 @@
717719

718720
"JS_INTEROP_MICRO_BENCHMARKS" : {
719721
"subDir" : "src",
720-
"description" : "Graal.js JMH Interop Suite",
722+
"description" : "GraalJS JMH Interop Suite.",
721723
"dependencies" : ["com.oracle.truffle.js.jmh"],
722724
"exclude" : [
723725
"mx:JUNIT"

graal-js/mx.graal-js/truffle.tck.permissions/icu_excludes.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@
1515
]
1616
},
1717
{
18-
"name" : "org.graalvm.shadowed.com.ibm.icu.impl.ICUResourceBundle$2",
18+
"name" : "org.graalvm.shadowed.com.ibm.icu.impl.ICUResourceBundle",
1919
"methods" : [
20-
{ "name" : "run",
21-
"justification" : "The ICUResourceBundle#addBundleBaseNamesFromClassLoader loads resources using class loader, dynamic classloading is not supported by SVM.",
20+
{ "name" : "addBundleBaseNamesFromClassLoader",
21+
"justification" : "Loads resources using class loader, dynamic classloading is not supported by SVM.",
2222
"parameterTypes" : [
23+
"java.lang.String",
24+
"java.lang.ClassLoader",
25+
"java.util.Set"
2326
]}
2427
]
2528
},

0 commit comments

Comments
 (0)