sdeleuze
12/26/2021, 10:27 AMMarcin Wisniowski
01/11/2022, 4:30 AMnfrankel
01/21/2022, 5:44 PMSvyatoslav Kuzmich [JB]
02/15/2022, 6:32 PMMatt Butcher
02/17/2022, 10:02 PMConrad Kramer
05/06/2022, 5:31 AMcinterop
support in Kotlin/Wasm – is that still the case?spierce7
05/13/2022, 4:00 AMBig Chungus
06/06/2022, 8:34 PMwasm32
Big Chungus
06/10/2022, 8:14 PMsdeleuze
06/10/2022, 9:27 PMdarkmoon_uk
06/11/2022, 5:20 AMsdeleuze
06/20/2022, 11:33 AMsdeleuze
07/14/2022, 11:19 AMsdeleuze
07/28/2022, 5:21 PMMatt Butcher
08/01/2022, 4:51 PMspierce7
08/05/2022, 6:38 AMsdeleuze
08/14/2022, 9:07 AM1.7.20-Beta
that "exports" fun add(a: Int, b: Int): Int = a + b
. I don't care about JavaScript here, I just want to specify that the generated Wasm should be shipped with this function and everything else removed (tree shaking). I have no main()
in my project. How should I specify that in my code and/or how my build configuration kotlin { wasm { binaries.library() } }
should be customized? Is @JsExport
the way to go for now?sdeleuze
08/14/2022, 9:28 AM1.7.20-dev-1406
is not available anymore. When I update it with Kotlin 1.7.20-Beta
I get the following error:
> Task :wasmBrowserProductionWebpack FAILED
Module not found: Error: Can't resolve '.' in '/home/seb/wasm/wasm-languages/kotlin/browser-hello-world/build/js/packages/wasm-example-wasm/kotlin'
Module build failed: UnhandledSchemeError: Reading from "node:module" is not handled by plugins (Unhandled scheme).
Webpack supports "data:" and "file:" URIs by default.
You may need an additional plugin to handle "node:" URIs.
at /home/seb/wasm/wasm-languages/kotlin/browser-hello-world/build/js/node_modules/webpack/lib/NormalModule.js:832:25
at Hook.eval [as callAsync] (eval at create (/home/seb/wasm/wasm-languages/kotlin/browser-hello-world/build/js/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:1)
at Hook.CALL_ASYNC_DELEGATE [as _callAsync] (/home/seb/wasm/wasm-languages/kotlin/browser-hello-world/build/js/node_modules/tapable/lib/Hook.js:18:14)
at Object.processResource (/home/seb/wasm/wasm-languages/kotlin/browser-hello-world/build/js/node_modules/webpack/lib/NormalModule.js:829:8)
at processResource (/home/seb/wasm/wasm-languages/kotlin/browser-hello-world/build/js/node_modules/loader-runner/lib/LoaderRunner.js:220:11)
at iteratePitchingLoaders (/home/seb/wasm/wasm-languages/kotlin/browser-hello-world/build/js/node_modules/loader-runner/lib/LoaderRunner.js:171:10)
at runLoaders (/home/seb/wasm/wasm-languages/kotlin/browser-hello-world/build/js/node_modules/loader-runner/lib/LoaderRunner.js:398:2)
at NormalModule._doBuild (/home/seb/wasm/wasm-languages/kotlin/browser-hello-world/build/js/node_modules/webpack/lib/NormalModule.js:819:3)
at NormalModule.build (/home/seb/wasm/wasm-languages/kotlin/browser-hello-world/build/js/node_modules/webpack/lib/NormalModule.js:963:15)
at /home/seb/wasm/wasm-languages/kotlin/browser-hello-world/build/js/node_modules/webpack/lib/Compilation.js:1371:12
Any hint to fix that?sdeleuze
08/14/2022, 12:19 PM1.7.20-Beta
, I try to use Binaryen to optimize the generated Wasm but it fails:
wasm-opt build/compileSync/main/productionExecutable/kotlin/add-wasm.wasm -o build/compileSync/main/productionExecutable/kotlin/add-wasm-opt.wasm --enable-nontrapping-float-to-int --enable-typed-function-references --enable-gc --enable-reference-types --enable-exception-handling -O3 --inline-functions-with-loops --traps-never-happen --fast-math
[parse exception: Recursion groups not allowed with equirecursive typing (at 0:15)]
Fatal: error parsing wasm
Could you please share what version/parameters I should use?
The related sample is available on https://github.com/sdeleuze/wasm-footprint/tree/main/kotlin.Poulad
09/10/2022, 12:31 AMprintln
works and i see the message in browser console.
how can i use alert()
JS function from WASM with this setup?
i was looking at various docs e.g. https://kotlinlang.org/docs/js-interop.html#external-modifier
code:
https://github.com/poulad/poulardo.kt/blob/28ed3fb8ee9867f528aa91a38f21deb34d6bee2[…]-wasm/src/nativeMain/kotlin/io/github/poulad/webappwasm/Main.kt
build error:
$ ./gradlew nativeBinaries
Starting a Gradle Daemon, 1 incompatible and 6 stopped Daemons could not be reused, use --status for details
Configuration cache is an incubating feature.
Configuration on demand is an incubating feature.
Calculating task graph as configuration cache cannot be reused because file 'webapp-wasm\build.gradle.kts' has changed.
> Task :webapp-wasm:linkDebugExecutableNative
e: Compilation failed: external function <root>.alert must have @TypedIntrinsic, @SymbolName, @GCUnsafeCall or @ObjCMethod annotation
* Source files:
* Compiler version info: Konan: 1.6.21 / Kotlin: 1.6.21
* Output kind: PROGRAM
e: java.lang.Error: external function <root>.alert must have @TypedIntrinsic, @SymbolName, @GCUnsafeCall or @ObjCMethod annotation
at org.jetbrains.kotlin.backend.konan.descriptors.DescriptorUtilsKt.externalSymbolOrThrow(DescriptorUtils.kt:309)
at org.jetbrains.kotlin.backend.konan.llvm.KonanBinaryInterface.funSymbolNameImpl(BinaryInterface.kt:58)
at org.jetbrains.kotlin.backend.konan.llvm.KonanBinaryInterface.getSymbolName(BinaryInterface.kt:41)
at org.jetbrains.kotlin.backend.konan.llvm.BinaryInterfaceKt.computeSymbolName(BinaryInterface.kt:119)
at org.jetbrains.kotlin.backend.konan.llvm.DeclarationsGeneratorVisitor.visitFunction(LlvmDeclarations.kt:355)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitSimpleFunction(IrElementVisitorVoid.kt:52)
at org.jetbrains.kotlin.backend.konan.llvm.DeclarationsGeneratorVisitor.visitSimpleFunction(LlvmDeclarations.kt:97)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitSimpleFunction(IrElementVisitorVoid.kt:53)
at org.jetbrains.kotlin.backend.konan.llvm.DeclarationsGeneratorVisitor.visitSimpleFunction(LlvmDeclarations.kt:97)
at org.jetbrains.kotlin.backend.konan.llvm.DeclarationsGeneratorVisitor.visitSimpleFunction(LlvmDeclarations.kt:97)
at org.jetbrains.kotlin.ir.declarations.IrSimpleFunction.accept(IrSimpleFunction.kt:28)
at org.jetbrains.kotlin.ir.declarations.impl.IrFileImpl.acceptChildren(IrFileImpl.kt:84)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoidKt.acceptChildrenVoid(IrElementVisitorVoid.kt:287)
at org.jetbrains.kotlin.backend.konan.llvm.DeclarationsGeneratorVisitor.visitElement(LlvmDeclarations.kt:148)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitPackageFragment(IrElementVisitorVoid.kt:30)
at org.jetbrains.kotlin.backend.konan.llvm.DeclarationsGeneratorVisitor.visitPackageFragment(LlvmDeclarations.kt:97)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitFile(IrElementVisitorVoid.kt:37)
at org.jetbrains.kotlin.backend.konan.llvm.DeclarationsGeneratorVisitor.visitFile(LlvmDeclarations.kt:97)
at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitFile(IrElementVisitorVoid.kt:38)
spierce7
09/16/2022, 8:49 PMbashor
09/20/2022, 7:02 PMClaude Brisson
10/21/2022, 11:37 AMkang wang
10/25/2022, 3:22 PMCause 1: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.7.20-dev-1406.
Searched in the following locations:
- file:/Users/kylewong/.m2/repository/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.20-dev-1406/kotlin-gradle-plugin-api-1.7.20-dev-1406.pom
- https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.20-dev-1406/kotlin-gradle-plugin-api-1.7.20-dev-1406.pom
- https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.20-dev-1406/kotlin-gradle-plugin-api-1.7.20-dev-1406.pom
Required by:
project : > org.jetbrains.kotlin.multiplatformorg.jetbrains.kotlin.multiplatform.gradle.plugin1.7.20-dev-1406 > org.jetbrains.kotlinkotlin gradle plugin1.7.20-dev-1406
Cause 2: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find org.jetbrains.kotlinkotlin gradle plugin api1.7.20-dev-1406.
Searched in the following locations:
- file:/Users/kylewong/.m2/repository/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.20-dev-1406/kotlin-gradle-plugin-api-1.7.20-dev-1406.pom
- https://plugins.gradle.org/m2/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.20-dev-1406/kotlin-gradle-plugin-api-1.7.20-dev-1406.pom
- https://maven.pkg.jetbrains.space/kotlin/p/kotlin/dev/org/jetbrains/kotlin/kotlin-gradle-plugin-api/1.7.20-dev-1406/kotlin-gradle-plugin-api-1.7.20-dev-1406.pom
Required by:
project : > org.jetbrains.kotlin.multiplatformorg.jetbrains.kotlin.multiplatform.gradle.plugin1.7.20-dev-1406 > org.jetbrains.kotlinkotlin gradle plugin1.7.20-dev-1406jw
10/26/2022, 2:12 AMkotlinc-js
binary with -Xwasm
but still getting JSkang wang
10/26/2022, 3:56 AMkang wang
10/26/2022, 8:54 AMopen -a Google\ Chrome\ Canary --args --js-flags="--experimental-wasm-gc --experimental-wasm-typed-funcref --experimental-wasm-eh"
Anyone knows where the problem is?Svyatoslav Kuzmich [JB]
10/26/2022, 7:47 PMbashor
11/02/2022, 2:25 PMRobert Jaros
11/02/2022, 3:07 PM