From 931f004ab84d2974b4b36be7fb22619e80387d88 Mon Sep 17 00:00:00 2001 From: Florian Hotze Date: Fri, 30 Dec 2022 23:04:43 +0100 Subject: [PATCH] [jsscripting] Upgrade to ECMAScript 2022 & Dependency improvements (#14093) * [jsscripting] Remove asm from dependencies in pom GraalJS >= 20.3.0 doesn't require org.ow2.asm as compile dependency anymore, see https://mvnrepository.com/artifact/org.graalvm.js/js/20.3.0. * [jsscripting] Remove dependency org.graalvm.js/js-launcher as it is not required js-launcher is GraalVM's JavaScript command line interpreter and not required in the addon. See https://www.graalvm.org/22.1/reference-manual/js/RunOnJDK/. * [jsscripting] Add missing com.ibm.icu dependency GraalJS changelog says that it is not required for GraalJS >= 22.0.0 (see https://github.com/oracle/graaljs/blob/685e5873af80a59636b697c949a172d8a7d694c3/CHANGELOG.md#version-2200). But GraalJS 22.3.0 attempts to load classes from it during runtime. * [jsscripting] Update GraalJS engine options Compat, as its additional functionality is not used by openhab-js and user code is not expected to use it. * [jsscripting] Remove com.ibm.icu/icu4j dependency * [jsscripting] Don't disable Nashorn compat mode as openhab-js requires it for accessors Signed-off-by: Florian Hotze --- .../pom.xml | 38 ++----------------- .../internal/OpenhabGraalJSScriptEngine.java | 10 +++-- 2 files changed, 9 insertions(+), 39 deletions(-) diff --git a/bundles/org.openhab.automation.jsscripting/pom.xml b/bundles/org.openhab.automation.jsscripting/pom.xml index a2ed5b9f1..79c4fe899 100644 --- a/bundles/org.openhab.automation.jsscripting/pom.xml +++ b/bundles/org.openhab.automation.jsscripting/pom.xml @@ -22,8 +22,7 @@ !jdk.internal.reflect.*, !jdk.vm.ci.services - 22.0.0.2 - 6.2.1 + 22.0.0.2 ${project.version} openhab@3.1.2 @@ -122,11 +121,6 @@ js-scriptengine ${graal.version} - - org.graalvm.js - js-launcher - ${graal.version} - org.graalvm.sdk graal-sdk @@ -142,33 +136,7 @@ js ${graal.version} - - - - - org.ow2.asm - asm - ${asm.version} - - - org.ow2.asm - asm-commons - ${asm.version} - - - org.ow2.asm - asm-tree - ${asm.version} - - - org.ow2.asm - asm-util - ${asm.version} - - - org.ow2.asm - asm-analysis - ${asm.version} - + diff --git a/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/OpenhabGraalJSScriptEngine.java b/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/OpenhabGraalJSScriptEngine.java index b541819df..7c1c87044 100644 --- a/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/OpenhabGraalJSScriptEngine.java +++ b/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/OpenhabGraalJSScriptEngine.java @@ -113,10 +113,12 @@ public class OpenhabGraalJSScriptEngine .build(), Context.newBuilder("js").allowExperimentalOptions(true).allowAllAccess(true) .allowHostAccess(HOST_ACCESS).option("js.commonjs-require-cwd", JSDependencyTracker.LIB_PATH) - .option("js.nashorn-compat", "true") // to ease migration - .option("js.ecmascript-version", "2021") // nashorn compat will enforce es5 compatibility, we - // want ecma2021 - .option("js.commonjs-require", "true") // enable CommonJS module support + .option("js.nashorn-compat", "true") // Enable Nashorn compat mode as openhab-js relies on + // accessors, see + // https://github.com/oracle/graaljs/blob/master/docs/user/NashornMigrationGuide.md#accessors + .option("js.ecmascript-version", "2022") // If Nashorn compat is enabled, it will enforce ES5 + // compatibility, we want ECMA2022 + .option("js.commonjs-require", "true") // Enable CommonJS module support .hostClassLoader(getClass().getClassLoader()) .fileSystem(new DelegatingFileSystem(FileSystems.getDefault().provider()) { @Override