From 47ac4edd69d6d6279cf5f351e2029b161d706ece Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Sun, 3 Dec 2023 20:56:04 +0100 Subject: [PATCH 01/10] Add argument splitting flag for GNU env --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 85c5a6641..82f5c9247 100644 --- a/build.sbt +++ b/build.sbt @@ -123,7 +123,7 @@ lazy val effekt: CrossProject = crossProject(JSPlatform, JVMPlatform).in(file("e // prepend shebang to make jar file executable val binary = (ThisBuild / baseDirectory).value / "bin" / "effekt" IO.delete(binary) - IO.append(binary, "#! /usr/bin/env java -jar\n") + IO.append(binary, "#!/usr/bin/env -S java -jar\n") IO.append(binary, IO.readBytes(jarfile)) }, From 3dc7bea2c6058e9a80d99a039a264bea72e63411 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Mon, 4 Dec 2023 16:07:55 +0100 Subject: [PATCH 02/10] Experiments with scala-native --- build.sbt | 13 ++++++++++--- project/plugins.sbt | 4 +++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/build.sbt b/build.sbt index 82f5c9247..e89ee53a5 100644 --- a/build.sbt +++ b/build.sbt @@ -51,7 +51,7 @@ lazy val testingDependencies = Seq( "org.scalameta" %% "munit" % "0.7.29" % Test ) -lazy val kiama: CrossProject = crossProject(JSPlatform, JVMPlatform).in(file("kiama")) +lazy val kiama: CrossProject = crossProject(JSPlatform, JVMPlatform, NativePlatform).in(file("kiama")) .settings(commonSettings) .settings(noPublishSettings) .settings( @@ -60,6 +60,9 @@ lazy val kiama: CrossProject = crossProject(JSPlatform, JVMPlatform).in(file("ki .jvmSettings( libraryDependencies ++= (replDependencies ++ lspDependencies) ) + .nativeSettings( + // TODO + ) lazy val root = project.in(file("effekt")) .aggregate(effekt.js, effekt.jvm) @@ -68,7 +71,7 @@ lazy val root = project.in(file("effekt")) Compile / run := (effekt.jvm / Compile / run).evaluated )) -lazy val effekt: CrossProject = crossProject(JSPlatform, JVMPlatform).in(file("effekt")) +lazy val effekt: CrossProject = crossProject(JSPlatform, JVMPlatform, NativePlatform).in(file("effekt")) .settings( name := "effekt", version := effektVersion @@ -123,7 +126,7 @@ lazy val effekt: CrossProject = crossProject(JSPlatform, JVMPlatform).in(file("e // prepend shebang to make jar file executable val binary = (ThisBuild / baseDirectory).value / "bin" / "effekt" IO.delete(binary) - IO.append(binary, "#!/usr/bin/env -S java -jar\n") + IO.append(binary, "#! /usr/bin/env java -jar\n") IO.append(binary, IO.readBytes(jarfile)) }, @@ -168,7 +171,11 @@ lazy val effekt: CrossProject = crossProject(JSPlatform, JVMPlatform).in(file("e // include all resource files in the virtual file system Compile / sourceGenerators += stdLibGenerator.taskValue ) + .nativeSettings( + // TODO + ) +lazy val effektNative = effekt.native lazy val platform = Def.task { val platformString = System.getProperty("os.name").toLowerCase diff --git a/project/plugins.sbt b/project/plugins.sbt index e07b5cb2a..496b3132b 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -5,7 +5,9 @@ addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.10") addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.14.0") // to have separate projects for jvm and js details -addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.2.0") +addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2") +addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.3.2") +addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.14") // build native images using GraalVM // addSbtPlugin("org.scalameta" % "sbt-native-image" % "0.1.2") From e8e5e933070afe6aa6665e8e152752f8dc481fde Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Wed, 6 Dec 2023 13:48:24 +0100 Subject: [PATCH 03/10] Revert to using sbt-native-image using GraalVM --- build.sbt | 28 +++------------------------- project/plugins.sbt | 4 +--- 2 files changed, 4 insertions(+), 28 deletions(-) diff --git a/build.sbt b/build.sbt index 87409e806..d8e641ca0 100644 --- a/build.sbt +++ b/build.sbt @@ -55,7 +55,7 @@ lazy val testingDependencies = Seq( "org.scalameta" %% "munit" % "0.7.29" % Test ) -lazy val kiama: CrossProject = crossProject(JSPlatform, JVMPlatform, NativePlatform).in(file("kiama")) +lazy val kiama: CrossProject = crossProject(JSPlatform, JVMPlatform).in(file("kiama")) .settings(commonSettings) .settings(noPublishSettings) .settings( @@ -64,9 +64,6 @@ lazy val kiama: CrossProject = crossProject(JSPlatform, JVMPlatform, NativePlatf .jvmSettings( libraryDependencies ++= (replDependencies ++ lspDependencies) ) - .nativeSettings( - // TODO - ) lazy val root = project.in(file("effekt")) .aggregate(effekt.js, effekt.jvm) @@ -75,14 +72,14 @@ lazy val root = project.in(file("effekt")) Compile / run := (effekt.jvm / Compile / run).evaluated )) -lazy val effekt: CrossProject = crossProject(JSPlatform, JVMPlatform, NativePlatform).in(file("effekt")) +lazy val effekt: CrossProject = crossProject(JSPlatform, JVMPlatform).in(file("effekt")) .settings( name := "effekt", version := effektVersion ) .settings(commonSettings) .dependsOn(kiama) - // .enablePlugins(NativeImagePlugin) + .enablePlugins(NativeImagePlugin) .jvmSettings( libraryDependencies ++= (replDependencies ++ lspDependencies ++ testingDependencies), @@ -98,20 +95,6 @@ lazy val effekt: CrossProject = crossProject(JSPlatform, JVMPlatform, NativePlat // disable tests for assembly to speed up build assembly / test := {}, - - // Options to compile Effekt with native-image - // ------------------------------------------- - // nativeImageOptions ++= Seq( - // "--no-fallback", - // "--initialize-at-build-time", - // "--report-unsupported-elements-at-runtime", - // "-H:+ReportExceptionStackTraces", - // "-H:IncludeResourceBundles=jline.console.completer.CandidateListCompletionHandler", - // "-H:ReflectionConfigurationFiles=../../native-image/reflect-config.json", - // "-H:DynamicProxyConfigurationFiles=../../native-image/dynamic-proxies.json" - // ), - - // Assembling one big jar-file and packaging it // -------------------------------------------- assembly / mainClass := Some("effekt.Server"), @@ -175,11 +158,6 @@ lazy val effekt: CrossProject = crossProject(JSPlatform, JVMPlatform, NativePlat // include all resource files in the virtual file system Compile / sourceGenerators += stdLibGenerator.taskValue ) - .nativeSettings( - // TODO - ) - -lazy val effektNative = effekt.native lazy val platform = Def.task { val platformString = System.getProperty("os.name").toLowerCase diff --git a/project/plugins.sbt b/project/plugins.sbt index d23236376..e2c33a806 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -6,11 +6,9 @@ addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.14.0") // to have separate projects for jvm and js details addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "1.3.2") -addSbtPlugin("org.portable-scala" % "sbt-scala-native-crossproject" % "1.3.2") -addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.4.14") // build native images using GraalVM -// addSbtPlugin("org.scalameta" % "sbt-native-image" % "0.1.2") +addSbtPlugin("org.scalameta" % "sbt-native-image" % "0.3.4") addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6") From addfc3205fc6f3072bd5fd58b9a0a537b8644ad2 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Wed, 6 Dec 2023 15:06:28 +0100 Subject: [PATCH 04/10] Add missing native-image settings --- build.sbt | 9 +++++++++ project/dynamic-proxies.json | 1 + 2 files changed, 10 insertions(+) create mode 100644 project/dynamic-proxies.json diff --git a/build.sbt b/build.sbt index d8e641ca0..3836476c0 100644 --- a/build.sbt +++ b/build.sbt @@ -95,6 +95,15 @@ lazy val effekt: CrossProject = crossProject(JSPlatform, JVMPlatform).in(file("e // disable tests for assembly to speed up build assembly / test := {}, + // Options to compile Effekt with native-image + // ------------------------------------------- + nativeImageOptions ++= Seq( + "--no-fallback", + "--initialize-at-build-time", + "--report-unsupported-elements-at-runtime", + "-H:DynamicProxyConfigurationFiles=../../../../project/dynamic-proxies.json" + ), + // Assembling one big jar-file and packaging it // -------------------------------------------- assembly / mainClass := Some("effekt.Server"), diff --git a/project/dynamic-proxies.json b/project/dynamic-proxies.json new file mode 100644 index 000000000..20db18665 --- /dev/null +++ b/project/dynamic-proxies.json @@ -0,0 +1 @@ +[["kiama.util.Client", "org.eclipse.lsp4j.jsonrpc.Endpoint"]] From 5928dc5bbfb2688fd1e7a85b2562ca06fa4501e1 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Wed, 6 Dec 2023 15:47:11 +0100 Subject: [PATCH 05/10] Matrix build workflow POC --- .github/workflows/deploy.yml | 96 +++++++++++++++++++++++------------- 1 file changed, 61 insertions(+), 35 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index b61318c67..890be2ad1 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -46,30 +46,77 @@ jobs: name: Generate npm package run: mv $(npm pack) effekt.tgz - - name: Upload Effekt binary - uses: actions/upload-artifact@v1 - with: - name: effekt - path: bin/effekt - - name: Upload the npm package uses: actions/upload-artifact@v1 with: name: effekt-npm-package path: effekt.tgz + build-native: + name: Build native image + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [macOS-13, ubuntu-latest, windows-latest] + include: + - os: macOS-latest + uploaded_filename: effekt-arm64-apple-darwin + local_path: effekt/jvm/target/native-image/effekt + - os: ubuntu-latest + uploaded_filename: effekt-x86_64-pc-linux + local_path: effekt/jvm/target/native-image/effekt + - os: windows-latest + uploaded_filename: effekt-x86_64-pc-win32.exe + local_path: effekt\jvm\target\native-image\effekt.exe + steps: + - uses: actions/checkout@v2 + with: + submodules: 'true' + + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: 11 + + - name: Set up NodeJS + uses: actions/setup-node@v1 + with: + node-version: '12.x' + + - name: Run tests and build native image + run: sbt clean effektJVM/native-image + + - name: Upload Effekt native image + uses: actions/upload-artifact@v2 + with: + path: ${{ matrix.local_path }} + name: ${{ matrix.uploaded_filename }} + release: name: Create Release runs-on: ubuntu-latest - needs: [build-jar] + needs: [build-jar, build-native] steps: - name: Checkout code uses: actions/checkout@master - - name: Download JAR artifact + - name: Download native binary windows artifact + uses: actions/download-artifact@v1 + with: + name: effekt-x86_64-pc-win32.exe + path: distribution/ + + - name: Download native binary macos artifact + uses: actions/download-artifact@v1 + with: + name: effekt-arm64-apple-darwin + path: distribution/ + + - name: Download native binary linux artifact uses: actions/download-artifact@v1 with: - name: effekt + name: effekt-x86_64-pc-linux path: distribution/ - name: Download npm package @@ -78,36 +125,15 @@ jobs: name: effekt-npm-package path: distribution/ - - name: Create Release - id: create_release - uses: actions/create-release@latest + - name: Create release + uses: softprops/action-gh-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - release_name: Prerelease ${{ github.ref }} + name: Prerelease ${{ github.ref }} tag_name: ${{ github.ref }} body: Automatic release for ${{ github.ref }} + files: | + distribution/* draft: false prerelease: true - - - name: Upload jar file - id: upload_jar - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./distribution/effekt - asset_name: effekt.jar - asset_content_type: application/java-archive - - - name: Upload npm package - id: upload_npm - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./distribution/effekt.tgz - asset_name: effekt.tgz - asset_content_type: application/gzip From c19c98a29ef4f00d0bca065821617c35f1eda89f Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Wed, 6 Dec 2023 15:54:39 +0100 Subject: [PATCH 06/10] Formatting and macos target name fix --- .github/workflows/deploy.yml | 129 +++++++++++++++++------------------ 1 file changed, 64 insertions(+), 65 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 890be2ad1..8cb617bb4 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -4,53 +4,52 @@ name: Release Artifacts on: push: tags: - - 'v*' # Push events to matching v*, i.e. v1.0, v20.15.10 + - "v*" # Push events to matching v*, i.e. v1.0, v20.15.10 jobs: build-jar: name: Build Effekt compiler and run tests runs-on: ubuntu-latest steps: + - uses: actions/checkout@v2 + with: + submodules: "true" - - uses: actions/checkout@v2 - with: - submodules: 'true' - - - name: Set up JDK 11 - uses: actions/setup-java@v1 - with: - java-version: 11 - - - name: Set up NodeJS - uses: actions/setup-node@v1 - with: - node-version: '12.x' - - - name: Install MLton - run: | - curl -L https://github.com/MLton/mlton/releases/download/on-20210117-release/mlton-20210117-1.amd64-linux-glibc2.31.tgz --output mlton.tgz - tar -xzf mlton.tgz - mv mlton-20210117-1.amd64-linux-glibc2.31 $GITHUB_WORKSPACE/mlton - chmod +x $GITHUB_WORKSPACE/mlton/bin/mlton - echo "Trying to call directly" - $GITHUB_WORKSPACE/mlton/bin/mlton - echo "Adding mlton to path" - echo "$GITHUB_WORKSPACE/mlton/bin" >> $GITHUB_PATH - - - name: Install Chez Scheme - run: sudo apt-get install chezscheme - - - name: Run tests and assemble jar file - run: sbt clean deploy - - - id: npmpackage - name: Generate npm package - run: mv $(npm pack) effekt.tgz - - - name: Upload the npm package - uses: actions/upload-artifact@v1 - with: - name: effekt-npm-package - path: effekt.tgz + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: 11 + + - name: Set up NodeJS + uses: actions/setup-node@v1 + with: + node-version: "12.x" + + - name: Install MLton + run: | + curl -L https://github.com/MLton/mlton/releases/download/on-20210117-release/mlton-20210117-1.amd64-linux-glibc2.31.tgz --output mlton.tgz + tar -xzf mlton.tgz + mv mlton-20210117-1.amd64-linux-glibc2.31 $GITHUB_WORKSPACE/mlton + chmod +x $GITHUB_WORKSPACE/mlton/bin/mlton + echo "Trying to call directly" + $GITHUB_WORKSPACE/mlton/bin/mlton + echo "Adding mlton to path" + echo "$GITHUB_WORKSPACE/mlton/bin" >> $GITHUB_PATH + + - name: Install Chez Scheme + run: sudo apt-get install chezscheme + + - name: Run tests and assemble jar file + run: sbt clean deploy + + - id: npmpackage + name: Generate npm package + run: mv $(npm pack) effekt.tgz + + - name: Upload the npm package + uses: actions/upload-artifact@v1 + with: + name: effekt-npm-package + path: effekt.tgz build-native: name: Build native image @@ -58,9 +57,9 @@ jobs: strategy: fail-fast: false matrix: - os: [macOS-13, ubuntu-latest, windows-latest] + os: [macos-13, ubuntu-latest, windows-latest] include: - - os: macOS-latest + - os: macos-13 uploaded_filename: effekt-arm64-apple-darwin local_path: effekt/jvm/target/native-image/effekt - os: ubuntu-latest @@ -70,28 +69,28 @@ jobs: uploaded_filename: effekt-x86_64-pc-win32.exe local_path: effekt\jvm\target\native-image\effekt.exe steps: - - uses: actions/checkout@v2 - with: - submodules: 'true' - - - name: Set up JDK 11 - uses: actions/setup-java@v1 - with: - java-version: 11 - - - name: Set up NodeJS - uses: actions/setup-node@v1 - with: - node-version: '12.x' - - - name: Run tests and build native image - run: sbt clean effektJVM/native-image - - - name: Upload Effekt native image - uses: actions/upload-artifact@v2 - with: - path: ${{ matrix.local_path }} - name: ${{ matrix.uploaded_filename }} + - uses: actions/checkout@v2 + with: + submodules: "true" + + - name: Set up JDK 11 + uses: actions/setup-java@v1 + with: + java-version: 11 + + - name: Set up NodeJS + uses: actions/setup-node@v1 + with: + node-version: "12.x" + + - name: Run tests and build native image + run: sbt clean effektJVM/native-image + + - name: Upload Effekt native image + uses: actions/upload-artifact@v2 + with: + path: ${{ matrix.local_path }} + name: ${{ matrix.uploaded_filename }} release: name: Create Release From a6aa17dcab0e4375570177d1240e5d7749a43666 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Thu, 7 Dec 2023 16:56:28 +0100 Subject: [PATCH 07/10] Fix missing reflection options --- build.sbt | 5 ++++- effekt/jvm/native-image/reflect-config.json | 23 +++++++++++---------- project/dynamic-proxies.json | 1 - 3 files changed, 16 insertions(+), 13 deletions(-) delete mode 100644 project/dynamic-proxies.json diff --git a/build.sbt b/build.sbt index 3836476c0..22b216b70 100644 --- a/build.sbt +++ b/build.sbt @@ -101,7 +101,10 @@ lazy val effekt: CrossProject = crossProject(JSPlatform, JVMPlatform).in(file("e "--no-fallback", "--initialize-at-build-time", "--report-unsupported-elements-at-runtime", - "-H:DynamicProxyConfigurationFiles=../../../../project/dynamic-proxies.json" + "-H:DynamicProxyConfigurationFiles=../../native-image/dynamic-proxies.json", + "-H:ReflectionConfigurationFiles=../../native-image/reflect-config.json", + "-H:+ReportExceptionStackTraces", + "-H:IncludeResourceBundles=jline.console.completer.CandidateListCompletionHandler", ), // Assembling one big jar-file and packaging it diff --git a/effekt/jvm/native-image/reflect-config.json b/effekt/jvm/native-image/reflect-config.json index 509fcf221..34ced5254 100644 --- a/effekt/jvm/native-image/reflect-config.json +++ b/effekt/jvm/native-image/reflect-config.json @@ -38,7 +38,8 @@ }, { "name":"kiama.util.SetTraceNotificationParams", - "allDeclaredFields":true + "allDeclaredFields":true, + "allPublicConstructors":true }, { "name":"org.eclipse.lsp4j.CallHierarchyCapabilities", @@ -221,6 +222,11 @@ "allDeclaredFields":true, "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"org.eclipse.lsp4j.DocumentFormattingParams", + "allDeclaredMethods":true, + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"org.eclipse.lsp4j.DocumentHighlightCapabilities", "allDeclaredFields":true, @@ -273,6 +279,11 @@ "allDeclaredFields":true, "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"org.eclipse.lsp4j.ExecuteCommandParams", + "allDeclaredFields":true, + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"org.eclipse.lsp4j.FoldingRangeCapabilities", "allDeclaredFields":true, @@ -420,16 +431,6 @@ "allDeclaredFields":true, "methods":[{"name":"","parameterTypes":[] }] }, -{ - "name":"org.eclipse.lsp4j.SemanticHighlightingCapabilities", - "allDeclaredFields":true, - "methods":[{"name":"","parameterTypes":[] }] -}, -{ - "name":"org.eclipse.lsp4j.SemanticHighlightingServerCapabilities", - "allDeclaredFields":true, - "methods":[{"name":"","parameterTypes":[] }] -}, { "name":"org.eclipse.lsp4j.ServerCapabilities", "allDeclaredFields":true, diff --git a/project/dynamic-proxies.json b/project/dynamic-proxies.json deleted file mode 100644 index 20db18665..000000000 --- a/project/dynamic-proxies.json +++ /dev/null @@ -1 +0,0 @@ -[["kiama.util.Client", "org.eclipse.lsp4j.jsonrpc.Endpoint"]] From 7258a47e5670f65d69cf305c06acdb51a47eb753 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Thu, 7 Dec 2023 18:21:36 +0100 Subject: [PATCH 08/10] Fix NPE by adding missing reflections --- effekt/jvm/native-image/reflect-config.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/effekt/jvm/native-image/reflect-config.json b/effekt/jvm/native-image/reflect-config.json index 34ced5254..1e00906cd 100644 --- a/effekt/jvm/native-image/reflect-config.json +++ b/effekt/jvm/native-image/reflect-config.json @@ -225,6 +225,7 @@ { "name":"org.eclipse.lsp4j.DocumentFormattingParams", "allDeclaredMethods":true, + "allDeclaredFields":true, "methods":[{"name":"","parameterTypes":[] }] }, { @@ -299,6 +300,11 @@ "allDeclaredFields":true, "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"org.eclipse.lsp4j.FormattingOptions", + "allDeclaredFields":true, + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"org.eclipse.lsp4j.HoverCapabilities", "allDeclaredFields":true, From 43908a86bf7ae809e1214f5b3ecafae1dcf9dc56 Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Thu, 8 Feb 2024 18:20:48 +0100 Subject: [PATCH 09/10] Use explicit nativeImage version --- build.sbt | 1 + 1 file changed, 1 insertion(+) diff --git a/build.sbt b/build.sbt index 22b216b70..a15e697e4 100644 --- a/build.sbt +++ b/build.sbt @@ -97,6 +97,7 @@ lazy val effekt: CrossProject = crossProject(JSPlatform, JVMPlatform).in(file("e // Options to compile Effekt with native-image // ------------------------------------------- + nativeImageVersion := "22.3.0", nativeImageOptions ++= Seq( "--no-fallback", "--initialize-at-build-time", From 743b3f6fa6e8750ef349a2c92ec01f54466c995f Mon Sep 17 00:00:00 2001 From: Marvin Borner Date: Thu, 8 Feb 2024 18:21:06 +0100 Subject: [PATCH 10/10] Add missing reflections so #351 works natively --- effekt/jvm/native-image/reflect-config.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/effekt/jvm/native-image/reflect-config.json b/effekt/jvm/native-image/reflect-config.json index 1e00906cd..cd6bb3ffc 100644 --- a/effekt/jvm/native-image/reflect-config.json +++ b/effekt/jvm/native-image/reflect-config.json @@ -51,6 +51,11 @@ "allDeclaredFields":true, "methods":[{"name":"","parameterTypes":[] }] }, +{ + "name":"org.eclipse.lsp4j.ClientInfo", + "allDeclaredFields":true, + "methods":[{"name":"","parameterTypes":[] }] +}, { "name":"org.eclipse.lsp4j.CodeAction", "allDeclaredFields":true, @@ -623,5 +628,9 @@ "name":"sun.misc.Unsafe", "allDeclaredFields":true, "methods":[{"name":"allocateInstance","parameterTypes":["java.lang.Class"] }] +}, +{ + "name":"jline.UnixTerminal", + "methods":[{"name":"","parameterTypes":[] }] } ]