From d3400acba87732b3434197ddf57ed1083a95251d Mon Sep 17 00:00:00 2001 From: Scala Steward Date: Tue, 23 Jun 2026 00:02:33 +0000 Subject: [PATCH 1/2] Update scalajs-linker to 1.22.0 --- build.mill | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.mill b/build.mill index 20fd6e8..68ec7ae 100644 --- a/build.mill +++ b/build.mill @@ -22,7 +22,7 @@ import mill.javalib.publish.{PublishingType, SonatypeCredentials} object Versions { def scala213 = "2.13.18" - def scalaJsVersion = "1.21.0" + def scalaJsVersion = "1.22.0" def jsoniterVersion = "2.38.14" def scalaJsImportMapVersion = "0.1.1" def graalVmVersion = "22.3.1" From cb98dd5f17488d7c12352b7b214545d0cf71953b Mon Sep 17 00:00:00 2001 From: Piotr Chabelski Date: Tue, 23 Jun 2026 10:29:13 +0200 Subject: [PATCH 2/2] Bump default ECMAScript version for Wasm backend to ES2022 --- cli/src/org/scalajs/cli/Scalajsld.scala | 28 +++++++++++++++++-- .../cli/internal/EsVersionParser.scala | 12 +++++++- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/cli/src/org/scalajs/cli/Scalajsld.scala b/cli/src/org/scalajs/cli/Scalajsld.scala index 116d583..0d0a82a 100644 --- a/cli/src/org/scalajs/cli/Scalajsld.scala +++ b/cli/src/org/scalajs/cli/Scalajsld.scala @@ -304,12 +304,36 @@ object Scalajsld { val useClosure = options.fullOpt && options.moduleKind != ModuleKind.ESModule + val logger = new ScalaConsoleLogger(options.logLevel) + + val esFeatures = + if (options.emitWasm) { + val esVersion = + if (options.esFeatures.esVersion >= ESVersion.ES2022) + options.esFeatures.esVersion + else if (options.esFeatures == ESFeatures.Defaults) { + logger.debug( + s"WebAssembly backend requires ECMAScript 2022 or later, defaulting to ${ESVersion.ES2022}" + ) + ESVersion.ES2022 + } + else { + logger.warn( + s"""WebAssembly backend requires ECMAScript 2022 or later, using ${options.esFeatures.esVersion}""" + ) + options.esFeatures.esVersion + } + options.esFeatures.withESVersion(esVersion).withUseWebAssembly(true) + } + else + options.esFeatures + val config = StandardConfig() .withSemantics(semantics) .withModuleKind(options.moduleKind) .withModuleSplitStyle(moduleSplitStyle) .withOutputPatterns(options.outputPatterns) - .withESFeatures(options.esFeatures) + .withESFeatures(esFeatures) .withCheckIR(options.checkIR) .withOptimizer(!options.noOpt) .withParallel(true) @@ -320,10 +344,8 @@ object Scalajsld { .withBatchMode(true) .withJSHeader(options.jsHeader) .withMinify(options.fullOpt) - .withExperimentalUseWebAssembly(options.emitWasm) val linker = StandardImpl.linker(config) - val logger = new ScalaConsoleLogger(options.logLevel) val cache = StandardImpl.irFileCache().newCache val stdinLinesIterator = scala.io.Source.stdin.getLines() diff --git a/cli/src/org/scalajs/cli/internal/EsVersionParser.scala b/cli/src/org/scalajs/cli/internal/EsVersionParser.scala index c7fa369..6310223 100644 --- a/cli/src/org/scalajs/cli/internal/EsVersionParser.scala +++ b/cli/src/org/scalajs/cli/internal/EsVersionParser.scala @@ -15,6 +15,11 @@ object EsVersionParser { case "es2019" => ESVersion.ES2019 case "es2020" => ESVersion.ES2020 case "es2021" => ESVersion.ES2021 + case "es2022" => ESVersion.ES2022 + case "es2023" => ESVersion.ES2023 + case "es2024" => ESVersion.ES2024 + case "es2025" => ESVersion.ES2025 + case "es2026" => ESVersion.ES2026 case unknown => throw new IllegalArgumentException( s"Warning: unrecognized argument: $unknown for --esVersion parameter" @@ -30,6 +35,11 @@ object EsVersionParser { ESVersion.ES2018, ESVersion.ES2019, ESVersion.ES2020, - ESVersion.ES2021 + ESVersion.ES2021, + ESVersion.ES2022, + ESVersion.ES2023, + ESVersion.ES2024, + ESVersion.ES2025, + ESVersion.ES2026 ) }