From 23aba88ee0e2878cf2c65f13fac99a7030c74e07 Mon Sep 17 00:00:00 2001 From: Jonathan Shook Date: Tue, 25 Jul 2023 11:50:28 -0500 Subject: [PATCH] engine and runtime updates for vector branch --- .../engine/cli/BasicScriptBuffer.java | 2 +- .../java/io/nosqlbench/engine/cli/NBCLI.java | 2 +- .../NBCLIScenarioParserTemplateVarTest.java | 6 +- .../lifecycle/activity/ActivityExecutor.java | 5 +- .../activity/ActivityTypeLoader.java | 2 +- .../core/lifecycle/scenario/Scenario.java | 30 +- .../script/graaljs_engine_options.json | 2064 +++++++++++++++++ mvn-defaults/pom.xml | 9 +- .../examples/bindings-cqlvectors.yaml | 7 + .../resources/examples/bindings-vectors.yaml | 53 + 10 files changed, 2152 insertions(+), 28 deletions(-) create mode 100644 engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/graaljs_engine_options.json create mode 100644 nbr/src/main/resources/examples/bindings-cqlvectors.yaml create mode 100644 nbr/src/main/resources/examples/bindings-vectors.yaml diff --git a/engine-cli/src/main/java/io/nosqlbench/engine/cli/BasicScriptBuffer.java b/engine-cli/src/main/java/io/nosqlbench/engine/cli/BasicScriptBuffer.java index bbb63945c..099fb293a 100644 --- a/engine-cli/src/main/java/io/nosqlbench/engine/cli/BasicScriptBuffer.java +++ b/engine-cli/src/main/java/io/nosqlbench/engine/cli/BasicScriptBuffer.java @@ -16,7 +16,7 @@ package io.nosqlbench.engine.cli; -import io.nosqlbench.engine.api.templating.StrInterpolator; +import io.nosqlbench.adapters.api.templating.StrInterpolator; import io.nosqlbench.api.content.Content; import io.nosqlbench.api.content.NBIO; import org.apache.logging.log4j.Logger; diff --git a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java index c71e71d52..315bdb91f 100644 --- a/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java +++ b/engine-cli/src/main/java/io/nosqlbench/engine/cli/NBCLI.java @@ -32,7 +32,7 @@ import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog.CycleLogDu import io.nosqlbench.engine.api.activityapi.cyclelog.outputs.cyclelog.CycleLogImporterUtility; import io.nosqlbench.engine.api.activityapi.input.InputType; import io.nosqlbench.engine.api.activityapi.output.OutputType; -import io.nosqlbench.engine.api.activityconfig.rawyaml.RawOpsLoader; +import io.nosqlbench.adapters.api.activityconfig.rawyaml.RawOpsLoader; import io.nosqlbench.engine.cli.NBCLIOptions.LoggerConfigData; import io.nosqlbench.engine.cli.NBCLIOptions.Mode; import io.nosqlbench.engine.core.annotation.Annotators; diff --git a/engine-cli/src/test/java/io/nosqlbench/engine/cli/NBCLIScenarioParserTemplateVarTest.java b/engine-cli/src/test/java/io/nosqlbench/engine/cli/NBCLIScenarioParserTemplateVarTest.java index cd3bb627b..940e079cd 100644 --- a/engine-cli/src/test/java/io/nosqlbench/engine/cli/NBCLIScenarioParserTemplateVarTest.java +++ b/engine-cli/src/test/java/io/nosqlbench/engine/cli/NBCLIScenarioParserTemplateVarTest.java @@ -16,9 +16,9 @@ package io.nosqlbench.engine.cli; -import io.nosqlbench.engine.api.activityconfig.OpsLoader; -import io.nosqlbench.engine.api.activityconfig.yaml.OpTemplate; -import io.nosqlbench.engine.api.activityconfig.yaml.OpsDocList; +import io.nosqlbench.adapters.api.activityconfig.OpsLoader; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpTemplate; +import io.nosqlbench.adapters.api.activityconfig.yaml.OpsDocList; import org.junit.jupiter.api.Test; import java.util.List; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java index 57bee9d53..1b3ed7df8 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityExecutor.java @@ -15,11 +15,12 @@ */ package io.nosqlbench.engine.core.lifecycle.activity; +import io.nosqlbench.engine.api.activityapi.core.*; +import io.nosqlbench.engine.api.activityimpl.MotorState; import io.nosqlbench.api.annotations.Annotation; import io.nosqlbench.api.annotations.Layer; import io.nosqlbench.api.engine.activityimpl.ActivityDef; import io.nosqlbench.api.engine.activityimpl.ParameterMap; -import io.nosqlbench.engine.api.activityapi.core.*; import io.nosqlbench.engine.api.activityapi.core.progress.ProgressCapable; import io.nosqlbench.engine.api.activityapi.core.progress.ProgressMeterDisplay; import io.nosqlbench.engine.api.activityimpl.motor.RunStateImage; @@ -41,7 +42,7 @@ import java.util.stream.Collectors; * *

In order to allow for dynamic thread management, which is not easily supported as an explicit feature * of most executor services, threads are started as long-running processes and managed via state signaling. - * The {@link RunState} enum, {@link io.nosqlbench.engine.api.activityimpl.MotorState} type, and {@link RunStateTally} + * The {@link RunState} enum, {@link MotorState} type, and {@link RunStateTally} * state tracking class are used together to represent valid states and transitions, contain and transition state atomically, * and provide blocking conditions for observers, respectively.

* diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityTypeLoader.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityTypeLoader.java index 01bc753f8..6cce4bbfc 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityTypeLoader.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/activity/ActivityTypeLoader.java @@ -19,7 +19,7 @@ package io.nosqlbench.engine.core.lifecycle.activity; import io.nosqlbench.api.config.NBLabeledElement; import io.nosqlbench.engine.api.activityapi.core.ActivityType; import io.nosqlbench.api.engine.activityimpl.ActivityDef; -import io.nosqlbench.engine.api.activityimpl.uniform.DriverAdapter; +import io.nosqlbench.adapters.api.activityimpl.uniform.DriverAdapter; import io.nosqlbench.engine.api.activityimpl.uniform.StandardActivityType; import io.nosqlbench.nb.annotations.Maturity; import io.nosqlbench.api.system.NBEnvironment; diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/Scenario.java b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/Scenario.java index 641ec2b16..11be7a761 100644 --- a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/Scenario.java +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/Scenario.java @@ -139,10 +139,10 @@ public class Scenario implements Callable, NBLabeledElem } public static Scenario forTesting(final String name, final Engine engine, final String reportSummaryTo, final Maturity minMaturity) { - return new Scenario(name,null,engine,"console:10s",true,true,reportSummaryTo,"",Path.of("logs"),minMaturity, NBLabeledElement.forKV("test-name","name")); + return new Scenario(name, null, engine, "console:10s", true, true, reportSummaryTo, "", Path.of("logs"), minMaturity, NBLabeledElement.forKV("test-name", "name")); } -// public Scenario(final String name, final Engine engine, final String reportSummaryTo, final Maturity minMaturity) { + // public Scenario(final String name, final Engine engine, final String reportSummaryTo, final Maturity minMaturity) { // scenarioName = name; // this.reportSummaryTo = reportSummaryTo; // this.engine = engine; @@ -199,8 +199,8 @@ public class Scenario implements Callable, NBLabeledElem .allowAllAccess(true) .allowEnvironmentAccess(EnvironmentAccess.INHERIT) .allowPolyglotAccess(PolyglotAccess.ALL) - .option("js.ecmascript-version", "2020") - .option("js.nashorn-compat", "true"); + .option("js.ecmascript-version", "2022") + .option("js.nashorn-compat", "false"); final Builder engineBuilder = org.graalvm.polyglot.Engine.newBuilder(); engineBuilder.option("engine.WarnInterpreterOnly", "false"); @@ -213,15 +213,10 @@ public class Scenario implements Callable, NBLabeledElem if (!"disabled".equals(progressInterval)) this.activityProgressIndicator = new ActivityProgressIndicator(scenarioController, this.progressInterval); - this.scriptEnv = new ScenarioContext(scenarioName,scenarioController); + this.scriptEnv = new ScenarioContext(scenarioName, scenarioController); this.scriptEngine.setContext(this.scriptEnv); this.scriptEngine.put("params", this.scenarioScriptParams); - -// scriptEngine.put("scenario", scenarioController); -// scriptEngine.put("metrics", new PolyglotMetricRegistryBindings(metricRegistry)); -// scriptEngine.put("activities", new NashornActivityBindings(scenarioController)); - this.scriptEngine.put("scenario", new PolyglotScenarioController(scenarioController)); this.scriptEngine.put("metrics", new PolyglotMetricRegistryBindings(metricRegistry)); this.scriptEngine.put("activities", new ActivityBindings(scenarioController)); @@ -280,7 +275,7 @@ public class Scenario implements Callable, NBLabeledElem this.logger.debug("Awaiting completion of scenario and activities for {} millis.", awaitCompletionTime); this.scenarioController.awaitCompletion(awaitCompletionTime); } catch (final Exception e) { - error =e; + error = e; } finally { this.scenarioController.shutdown(); } @@ -293,8 +288,9 @@ public class Scenario implements Callable, NBLabeledElem } public void notifyException(final Thread t, final Throwable e) { - error =new RuntimeException("in thread " + t.getName() + ", " +e, e); + error = new RuntimeException("in thread " + t.getName() + ", " + e, e); } + private void executeScenarioScripts() { for (final String script : this.scripts) try { @@ -383,13 +379,13 @@ public class Scenario implements Callable, NBLabeledElem /** * This should be the only way to get a ScenarioResult for a Scenario. - * + *

* The lifecycle of a scenario includes the lifecycles of all of the following: *

    *
  1. The scenario control script, executing within a graaljs context.
  2. *
  3. The lifecycle of every activity which is started within the scenario.
  4. *
- * + *

* All of these run asynchronously within the scenario, however the same thread that calls * the scenario is the one which executes the control script. A scenario ends when all * of the following conditions are met: @@ -406,12 +402,14 @@ public class Scenario implements Callable, NBLabeledElem try { this.runScenario(); } catch (final Exception e) { - error =e; + error = e; } finally { this.logger.debug("{} scenario run", null == this.error ? "NORMAL" : "ERRORED"); } + if (this.scriptEnv == null) { - final String iolog = this.scriptEnv.getTimedLog(); + } + String iolog = error != null ? error.toString() : this.scriptEnv.getTimedLog(); result = new ExecutionMetricsResult(startedAtMillis, endedAtMillis, iolog, this.error); this.result.reportMetricsSummaryToLog(); this.doReportSummaries(this.reportSummaryTo, this.result); diff --git a/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/graaljs_engine_options.json b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/graaljs_engine_options.json new file mode 100644 index 000000000..eff0e394a --- /dev/null +++ b/engine-core/src/main/java/io/nosqlbench/engine/core/lifecycle/scenario/script/graaljs_engine_options.json @@ -0,0 +1,2064 @@ +[ + { + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.DisableCodeSharing", + "help": "Option to force disable code sharing for this engine, even if the context was created with an explicit engine. This option is intended for testing purposes only.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.ForceCodeSharing", + "help": "Option to force enable code sharing for this engine, even if the context was created with a bound engine. This option is intended for testing purposes only.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "engine.InstrumentExceptionsAreThrown", + "help": "Propagates exceptions thrown by instruments. (default: true)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "String", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": "" + }, + "name": "engine.PreinitializeContexts", + "help": "Preinitialize language contexts for given languages.", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": true, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.RelaxStaticObjectSafetyChecks", + "help": "On property accesses, the Static Object Model does not perform shape checks and uses unsafe casts", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.SafepointALot", + "help": "Repeadly submits thread local actions and collects statistics about safepoint intervals in the process. Prints event and interval statistics when the context is closed for each thread. This option significantly slows down execution and is therefore intended for testing purposes only.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.ShowInternalStackFrames", + "help": "Show internal frames specific to the language implementation in stack traces.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.SpecializationStatistics", + "help": "Enables specialization statistics for nodes generated with Truffle DSL and prints the result on exit. In order for this flag to be functional -Atruffle.dsl.GenerateSpecializationStatistics\u003dtrue needs to be set at build time. Enabling this flag and the compiler option has major implications on the performance and footprint of the interpreter. Do not use in production environments.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "strategy", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": false + }, + "defaultValue": "DEFAULT" + }, + "name": "engine.StaticObjectStorageStrategy", + "help": "Set the storage strategy used by the Static Object Model. Accepted values are: [\u0027default\u0027, \u0027array-based\u0027, \u0027field-based\u0027]", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "default|array-based|field-based" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.TraceCodeSharing", + "help": "Enables printing of code sharing related information to the logger. This option is intended to support debugging language implementations.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Long", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 0 + }, + "name": "engine.TraceStackTraceInterval", + "help": "Prints the stack trace for all threads for a time interval. By default 0, which disables the output.", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "[1, inf)" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.TraceThreadLocalActions", + "help": "Traces thread local events and when they are processed on the individual threads.Prints messages with the [engine] [tl] prefix. ", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.TriggerUncaughtExceptionHandlerForCancel", + "help": "Propagates cancel execution exception into UncaughtExceptionHandler. For testing purposes only.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "engine.UseConservativeContextReferences", + "help": "Enables conservative context references. This allows invalid sharing between contexts. For testing purposes only.", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": true, + "deprecationMessage": "Has no longer any effect. Scheduled for removal in in 22.1.", + "usageSyntax": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "engine.UsePreInitializedContext", + "help": "Use pre-initialized context when it\u0027s available (default: true).", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "engine.WarnInterpreterOnly", + "help": "Print warning when the engine is using a default Truffle runtime (default: true).", + "category": "USER", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.agent-can-block", + "help": "Determines whether agents can block or not. (default:true)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.annex-b", + "help": "Enable ECMAScript Annex B features. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.async-stack-traces", + "help": "Include async function frames in stack traces. (default:true)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.atomics", + "help": "Enable ECMAScript Atomics. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.await-optimization", + "help": "Use PromiseResolve for Await. (default:true)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.bigint", + "help": "Provide an implementation of the BigInt proposal. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.bind-member-functions", + "help": "Bind functions returned by Value.getMember to the receiver object. (default:true)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "CharsetName", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": false + }, + "defaultValue": "" + }, + "name": "js.charset", + "help": "Charset used for decoding/encoding of the input/output streams. (default:)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "UTF-8|UTF-32|\u003cname\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.class-fields", + "help": "Enable the class public and private fields proposal. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "commonjs-require-globals", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": false + }, + "defaultValue": {} + }, + "name": "js.commonjs-core-modules-replacements", + "help": "Npm packages used to replace global Node.js builtins. (default:{})", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cname\u003e:\u003cmodule\u003e,..." +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.commonjs-require", + "help": "Enable CommonJS require emulation. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "String", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": "" + }, + "name": "js.commonjs-require-cwd", + "help": "CommonJS default current working directory. (default:)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cpath\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.console", + "help": "Provide \u0027console\u0027 global property. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.const-as-var", + "help": "Parse const declarations as a var (legacy compatibility option). (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.debug-builtin", + "help": "Provide a non-API Debug builtin. Behaviour will likely change. Don\u0027t depend on this in production code. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "String", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": "Debug" + }, + "name": "js.debug-property-name", + "help": "The name used for the Graal.js debug builtin. (default:Debug)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cname\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.direct-byte-buffer", + "help": "Use direct (off-heap) byte buffer for typed arrays. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.disable-eval", + "help": "User code is not allowed to parse code via e.g. eval(). (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.disable-with", + "help": "User code is not allowed to use the \u0027with\u0027 statement. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "ecmascript-version", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": false + }, + "defaultValue": 13 + }, + "name": "js.ecmascript-version", + "help": "ECMAScript version to be compatible with. Default is \u0027latest\u0027 (latest supported version), staged features are in \u0027staging\u0027. (default:13)", + "category": "USER", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "latest|staging|[5, 13]|[2015, 2022]" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.error-cause", + "help": "Enable the error cause proposal. Allows an error to be chained with a cause using the optional options parameter. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.esm-bare-specifier-relative-lookup", + "help": "Resolve ESM bare specifiers relative to the importing module\u0027s path instead of attempting an absolute path lookup. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.esm-eval-returns-exports", + "help": "Eval of an ES module through the polyglot API returns its exported symbols. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.foreign-hash-properties", + "help": "Allow getting/setting non-JS hash entries using the `[]` and `.` operators. (default:true)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.foreign-object-prototype", + "help": "Non-JS objects have prototype (Object/Function/Array.prototype) set. (default:true)", + "category": "EXPERT", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Long", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 65535 + }, + "name": "js.function-arguments-limit", + "help": "Maximum number of arguments for functions. (default:65535)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 4 + }, + "name": "js.function-cache-limit", + "help": "Maximum allowed size of a function cache. (default:4)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 256 + }, + "name": "js.function-constructor-cache-size", + "help": "Maximum size of the parsing cache used by the Function constructor to avoid re-parsing known sources. (default:256)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.function-statement-error", + "help": "Treat hoistable function statements in blocks as an error (in ES5 mode). (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.global-arguments", + "help": "Provide \u0027arguments\u0027 global property. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.global-property", + "help": "Provide \u0027global\u0027 global property. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.graal-builtin", + "help": "Provide \u0027Graal\u0027 global property. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.import-assertions", + "help": "Enable import assertions (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.interop-complete-promises", + "help": "Resolve promises when crossing a polyglot language boundary. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.intl-402", + "help": "Enable ECMAScript Internationalization API. (default:true)", + "category": "USER", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.java-package-globals", + "help": "Provide Java package globals: Packages, java, javafx, javax, com, org, edu. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.json-modules", + "help": "Enable loading of json modules (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.lazy-translation", + "help": "Translate function bodies lazily. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.load", + "help": "Provide \u0027load\u0027 global function. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.load-from-classpath", + "help": "Allow \u0027load\u0027 to access \u0027classpath:\u0027 URLs. Do not use with untrusted code. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.load-from-url", + "help": "Allow \u0027load\u0027 to access URLs. Do not use with untrusted code. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "String", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": "" + }, + "name": "js.locale", + "help": "Use a specific default locale for locale-sensitive operations. (default:)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003clocale\u003e" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 10000000 + }, + "name": "js.max-apply-argument-length", + "help": "Maximum allowed number of arguments allowed in an apply function. (default:10000000)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 32766 + }, + "name": "js.max-prototype-chain-length", + "help": "Maximum allowed length of a prototype chain. (default:32766)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 1073741823 + }, + "name": "js.max-typed-array-length", + "help": "Maximum allowed length for TypedArrays. (default:1073741823)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.mle-mode", + "help": "Provide a non-API MLE builtin. Behaviour will likely change. Don\u0027t depend on this in production code. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.nashorn-compat", + "help": "Provide compatibility with the OpenJDK Nashorn engine. Do not use with untrusted code. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.new-set-methods", + "help": "Enable new Set methods. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.operator-overloading", + "help": "Enable operator overloading (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.parse-only", + "help": "Only parse source code, do not run it. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.performance", + "help": "Provide \u0027performance\u0027 global property. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.polyglot-builtin", + "help": "Provide \u0027Polyglot\u0027 global property. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.polyglot-evalfile", + "help": "Provide \u0027Polyglot.evalFile\u0027 function. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.print", + "help": "Provide \u0027print\u0027 global function. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.print-no-newline", + "help": "Print function will not print new line char. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.private-fields-in", + "help": "Enable private field in in operator (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.profile-time", + "help": "Enable time profiling. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.profile-time-print-cumulative", + "help": "Print cumulative time when time profiling is enabled. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 5 + }, + "name": "js.property-cache-limit", + "help": "Maximum allowed size of a property cache. (default:5)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 128 + }, + "name": "js.regex-cache-size", + "help": "Maximum size of the regex cache used by the RegExp constructor to avoid re-parsing known sources. (default:128)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cint\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.regex-regression-test-mode", + "help": "Test mode for TRegex. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.regex.always-eager", + "help": "Always match capture groups eagerly. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.regex.dump-automata", + "help": "Produce ASTs and automata in JSON, DOT (GraphViz) and LaTeX formats. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.regex.step-execution", + "help": "Trace the execution of automata in JSON files. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.regexp-match-indices", + "help": "Enable RegExp Match Indices property. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.regexp-static-result", + "help": "Provide last RegExp match in RegExp global var, e.g. RegExp.$1. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.scope-optimization", + "help": "Allow scope optimizations around closures. (default:true)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.script-engine-global-scope-import", + "help": "Enable ScriptEngine-specific global scope import function. (default:false)", + "category": "INTERNAL", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.scripting", + "help": "Enable scripting features (Nashorn compatibility option). (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.shared-array-buffer", + "help": "Enable ECMAScript SharedArrayBuffer. (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.shebang", + "help": "Allow parsing files starting with #!. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.shell", + "help": "Provide global functions for js shell. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 10 + }, + "name": "js.stack-trace-limit", + "help": "Number of stack frames to capture. (default:10)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "[0, inf)" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.strict", + "help": "Enforce strict mode. (default:false)", + "category": "USER", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.string-lazy-substrings", + "help": "Allow lazy substrings. (default:true)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Integer", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 1073741799 + }, + "name": "js.string-length-limit", + "help": "Maximum string length. (default:1073741799)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cchars\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.syntax-extensions", + "help": "Enable Nashorn syntax extensions. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.temporal", + "help": "Enable JavaScript Temporal API. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.test-clone-uninitialized", + "help": "Test uninitialized cloning. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.test262-mode", + "help": "Expose global property $262 needed to run the Test262 harness. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.testV8-mode", + "help": "Expose internals needed to run the TestV8 harness. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Long", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 1000000 + }, + "name": "js.timer-resolution", + "help": "Resolution of timers (performance.now() and Date built-ins) in nanoseconds. Fuzzy time is used when set to 0. (default:1000000)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cnanoseconds\u003e" +}, +{ + "key": { + "type": { + "name": "ZoneId", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": false + }, + "defaultValue": "" + }, + "name": "js.timezone", + "help": "Set custom time zone ID. (default:)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cTimeZoneID\u003e" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.top-level-await", + "help": "Enable top-level-await. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "UnhandledRejectionsTrackingMode", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": "NONE" + }, + "name": "js.unhandled-rejections", + "help": "Configure unhandled promise rejections tracking. Accepted values: \u0027none\u0027, unhandled rejections are not tracked. \u0027warn\u0027, a warning is printed to stderr when an unhandled rejection is detected. \u0027throw\u0027, an exception is thrown when an unhandled rejection is detected. \u0027handler\u0027, the handler function set with Graal.setUnhandledPromiseRejectionHandler will be called with the rejection value and promise respectively as arguments. (default:none)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "none|warn|throw|handler" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.use-utc-for-legacy-dates", + "help": "Determines what time zone (UTC or local time zone) should be used when UTC offset is absent in a parsed date. (default:true)", + "category": "EXPERT", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.v8-compat", + "help": "Provide compatibility with the Google V8 engine. (default:false)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.v8-legacy-const", + "help": "Emulate v8 behavior when trying to mutate const variables in non-strict mode. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.v8-realm-builtin", + "help": "Provide Realm builtin compatible with V8\u0027s d8 shell. (default:false)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.validate-regexp-literals", + "help": "Validate regexp literals at parse time. (default:true)", + "category": "INTERNAL", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": true + }, + "name": "js.wasm-bigint", + "help": "Enable wasm i64 to javascript BigInt support (default:true)", + "category": "USER", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.webassembly", + "help": "Enable WebAssembly JavaScript API. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Boolean", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": false + }, + "name": "js.zone-rules-based-time-zones", + "help": "Use ZoneRulesProvider instead of time-zone data from ICU4J. (default:false)", + "category": "EXPERT", + "stability": "EXPERIMENTAL", + "deprecated": false, + "deprecationMessage": "" +}, +{ + "key": { + "type": { + "name": "Enable", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": false + }, + "defaultValue": { + "enabled": false + } + }, + "name": "cpusampler", + "help": "Enable/Disable the CPU sampler, or enable with specific Output - as specified by the Output option (default: false). Choosing an output with this options defaults to printing the output to std out, except for the flamegraph which is printed to a flamegraph.svg file.", + "category": "USER", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "true|false|\u003cOutput\u003e" +}, +{ + "key": { + "type": { + "name": "Long", + "converter": {}, + "validator": {}, + "isOptionMap": false, + "isDefaultType": true + }, + "defaultValue": 0 + }, + "name": "cpusampler.Delay", + "help": "Delay the sampling for this many milliseconds (default: 0).", + "category": "USER", + "stability": "STABLE", + "deprecated": false, + "deprecationMessage": "", + "usageSyntax": "\u003cms\u003e" +} +] diff --git a/mvn-defaults/pom.xml b/mvn-defaults/pom.xml index 448830453..71d4b9e6d 100644 --- a/mvn-defaults/pom.xml +++ b/mvn-defaults/pom.xml @@ -80,9 +80,9 @@ - org.codehaus.groovy + org.apache.groovy groovy - 3.0.14 + 4.0.13 @@ -352,7 +352,7 @@ org.antlr antlr4-runtime - 4.12.0 + 4.13.0 @@ -734,6 +734,7 @@ **/generated/** + **/jmh_generated/** true Copyright (c) 2022 nosqlbench @@ -812,7 +813,7 @@ org.antlr antlr4-maven-plugin - 4.12.0 + 4.13.0 org.codehaus.mojo diff --git a/nbr/src/main/resources/examples/bindings-cqlvectors.yaml b/nbr/src/main/resources/examples/bindings-cqlvectors.yaml new file mode 100644 index 000000000..32e0d1ee6 --- /dev/null +++ b/nbr/src/main/resources/examples/bindings-cqlvectors.yaml @@ -0,0 +1,7 @@ +scenarios: + default: + vectors: run driver=stdout cycles=10 threads=1 format=readout + +bindings: + hfv768raw: HashedFloatVectors(768); Stringify(); + hfv768cql: HashedFloatVectors(768); ToCqlVector(); diff --git a/nbr/src/main/resources/examples/bindings-vectors.yaml b/nbr/src/main/resources/examples/bindings-vectors.yaml new file mode 100644 index 000000000..a2413470c --- /dev/null +++ b/nbr/src/main/resources/examples/bindings-vectors.yaml @@ -0,0 +1,53 @@ +scenarios: + default: + vectors: run driver=stdout cycles=10 threads=1 format=readout + +bindings: + + # create double and float vectors which high dispersion across the number + # of dimensions specified. These are not yet enumerable, but they are + # deterministic + hdv1: HashedDoubleVectors(13); Stringify(); + hfv1: HashedFloatVectors(13); Stringify(); + + # specify the sizer function and the double function + hdvn2: HashedDoubleVectors(long->HashRange(1,5)->int,long->HashRange(2.0d,3.0d)->double); NormalizeDoubleVector(); Stringify(); + + # specify the sizer function and the range of doubles to use + hdv3: HashedDoubleVectors(long->HashRange(1,5)->int,long->HashRange(2.0d,3.0d)->double); Stringify(); + + hdv4: HashedDoubleVectors(13,0.0d,1.0d); Stringify(); + hfv4: HashedFloatVectors(13,0.0f,1.0f); Stringify(); + + + # create a simple 2-d vector from a step function over the unit interval + # of 10 steps (the maximum number of characters per digit) + v2d: DoubleVectors('0-2*2') + + # use Stringify() to visualize the value of numeric array types + v2d_str: DoubleVectors('0-2*2'); Stringify() + + # normalize! + v2dn: DoubleVectors('0-2*2'); NormalizeDoubleVector(); + + # normalize and stringify + v2dn_str: DoubleVectors('0-2*2'); NormalizeDoubleVector(); Stringify(); + + # create a double vector based on 10 values per digit, by 10 digits. + # this determines that the step function should be 0.1 per step, wrapping, + # then maps this to a combinitoric model based on charset cardinality + v1d: DoubleVectors('0-9*10'); + + v1dn: DoubleVectors('0-9*10'); NormalizeDoubleVector(); + + v1d_str: DoubleVectors('0-9*10'); Stringify(); + v1dn_str: DoubleVectors('0-9*10'); NormalizeDoubleVector(); Stringify(); + v1d_cql: DoubleVectors('0-9*10'); ToCqlVector(); + + v_09_10f: FloatVectors('0-9*10'); + unit_v_f_n: FloatVectors('0-9*10'); NormalizeFloatVector(); + v_az_3: DoubleVectors('a-z*3'); + unit_v_d_n: DoubleVectors('a-z*5'); NormalizeDoubleVector(); + + +