Trying out 2.1.0 and seeing some build issues........
# webassembly
j
Trying out 2.1.0 and seeing some build issues......could be that somer other dependencies still need to be updated but posting details in 🧵 in case some known issue....
Copy code
KLIB resolver: The same 'unique_name=kotlin' found in more than one library: /Users/joreilly/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-wasm-js/2.1.0/b96271506fb37f4d8d1c63db7a57384ab16ae218/kotlin-stdlib-wasm-js-2.1.0.klib, /Users/joreilly/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-wasm/1.9.10/834185c1765a20be76d8ffb6eeecf2b0068baf61/kotlin-stdlib-wasm-1.9.10.klib
Please file an issue to <https://kotl.in/issue> and meanwhile use CLI flag `-Xklib-duplicated-unique-name-strategy` with one of the following values:
allow-all-with-warning: Use all KLIB dependencies, even when they have same `unique_name` property.
allow-first-with-warning: Use the first KLIB dependency with clashing `unique_name` property. No order guarantees are given though.
deny: Fail a compilation with the error.
also
Copy code
e: org.jetbrains.kotlin.backend.common.CompilationException: Back-end: Please report this problem <https://kotl.in/issue>
/Users/joreilly/dev/github/ClimateTraceKMP/composeApp/src/commonMain/kotlin/dev/johnoreilly/climatetrace/remote/ClimateTraceApi.kt:9:1
Problem with `@Serializable
@StabilityInferred(parameters = 0)
data class AssetsResult {
  constructor(assets: List<Asset>) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  val assets: List<Asset>
    field = assets
    get

  companion object Companion {
    private constructor() /* primary */ {
      super/*Any*/()
      /* <init>() */

    }

    fun serializer(): KSerializer<AssetsResult>

    /* fake */ override operator fun equals(other: Any?): Boolean

    /* fake */ override fun hashCode(): Int

    /* fake */ override fun toString(): String

    val $childSerializers: Array<KSerializer<Any>>
      private get(): Array<KSerializer<Any>> {
        return <this>.#$childSerializers
      }

  }

  @Deprecated(message = "This synthesized declaration should not be used directly", level = DeprecationLevel.HIDDEN)
  @StabilityInferred(parameters = 0)
  object $serializer : GeneratedSerializer<AssetsResult> {
    private constructor() /* primary */ {
      super/*Any*/()
      /* <init>() */

    }

    override fun serialize(encoder: Encoder, value: AssetsResult)

    override fun deserialize(decoder: Decoder): AssetsResult

    override val descriptor: SerialDescriptor
      override get

    override fun childSerializers(): Array<KSerializer<*>>

    /* fake */ override fun typeParametersSerializers(): Array<KSerializer<*>>

    /* fake */ override operator fun equals(other: Any?): Boolean

    /* fake */ override fun hashCode(): Int

    /* fake */ override fun toString(): String

  }

  operator fun component1(): List<Asset> {
    return <this>.#assets
  }

  fun copy(assets: List<Asset> = <this>.#assets): AssetsResult {
    return AssetsResult(assets = assets)
  }

  override fun toString(): String {
    return "AssetsResult(" + "assets=" + <this>.#assets + ")"
  }

  override fun hashCode(): Int {
    return <this>.#assets.hashCode()
  }

  override operator fun equals(other: Any?): Boolean {
    when {
      EQEQEQ(arg0 = <this>, arg1 = other) -> return true
    }
    when {
      other !is AssetsResult -> return false
    }
    val tmp0_other_with_cast: AssetsResult = other as AssetsResult
    when {
      EQEQ(arg0 = <this>.#assets, arg1 = tmp0_other_with_cast.#assets).not() -> return false
    }
    return true
  }

  internal constructor(seen0: Int, assets: List<Asset>?, serializationConstructorMarker: SerializationConstructorMarker?)

}

`
Details: kotlinx.serialization compiler plugin internal error: unable to transform declaration, see cause
	at org.jetbrains.kotlinx.serialization.compiler.extensions.SerializerClassLowering.lower(SerializationLoweringExtension.kt:230)
	at org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationLoweringExtensionKt$runOnFileInOrder$1.visitClass(SerializationLoweringExtension.kt:46)
	at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitClass(IrElementVisitorVoid.kt:48)
	at org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationLoweringExtensionKt$runOnFileInOrder$1.visitClass(SerializationLoweringExtension.kt:40)
	at org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationLoweringExtensionKt$runOnFileInOrder$1.visitClass(SerializationLoweringExtension.kt:40)
	at org.jetbrains.kotlin.ir.declarations.IrClass.accept(IrClass.kt:72)
	at org.jetbrains.kotlin.ir.declarations.IrFile.acceptChildren(IrFile.kt:34)
	at org.jetbrains.kotlin.ir.visitors.IrVisitorsKt.acceptChildrenVoid(IrVisitors.kt:15)
	at org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationLoweringExtensionKt$runOnFileInOrder$1.visitElement(SerializationLoweringExtension.kt:42)
	at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitPackageFragment(IrElementVisitorVoid.kt:172)
	at org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationLoweringExtensionKt$runOnFileInOrder$1.visitPackageFragment(SerializationLoweringExtension.kt:40)
	at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitFile(IrElementVisitorVoid.kt:188)
	at org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationLoweringExtensionKt$runOnFileInOrder$1.visitFile(SerializationLoweringExtension.kt:40)
	at org.jetbrains.kotlin.ir.visitors.IrElementVisitorVoid$DefaultImpls.visitFile(IrElementVisitorVoid.kt:184)
	at org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationLoweringExtensionKt$runOnFileInOrder$1.visitFile(SerializationLoweringExtension.kt:40)
	at org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationLoweringExtensionKt$runOnFileInOrder$1.visitFile(SerializationLoweringExtension.kt:40)
	at org.jetbrains.kotlin.ir.declarations.IrFile.accept(IrFile.kt:28)
	at org.jetbrains.kotlin.ir.visitors.IrVisitorsKt.acceptVoid(IrVisitors.kt:11)
	at org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationLoweringExtensionKt.runOnFileInOrder(SerializationLoweringExtension.kt:40)
	at org.jetbrains.kotlinx.serialization.compiler.extensions.SerializationLoweringExtension.generate(SerializationLoweringExtension.kt:194)
	at org.jetbrains.kotlin.fir.pipeline.ConvertToIrKt.applyIrGenerationExtensions(convertToIr.kt:472)
	at org.jetbrains.kotlin.fir.pipeline.Fir2IrPipeline.runActualizationPipeline(convertToIr.kt:241)
	at org.jetbrains.kotlin.fir.pipeline.Fir2IrPipeline.convertToIrAndActualize(convertToIr.kt:130)
	at org.jetbrains.kotlin.fir.pipeline.ConvertToIrKt.convertToIrAndActualize(convertToIr.kt:100)
	at org.jetbrains.kotlin.cli.js.klib.JsCompilerPipelineKt.transformFirToIr(jsCompilerPipeline.kt:233)
	at org.jetbrains.kotlin.cli.js.K2JSCompiler.processSourceModuleWithK2(K2JSCompiler.kt:695)
	at org.jetbrains.kotlin.cli.js.K2JSCompiler.produceSourceModule(K2JSCompiler.kt:560)
	at org.jetbrains.kotlin.cli.js.K2JSCompiler.doExecute(K2JSCompiler.kt:345)
	at org.jetbrains.kotlin.cli.js.K2JSCompiler.doExecute(K2JSCompiler.kt:105)
	at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:102)
	at org.jetbrains.kotlin.cli.common.CLICompiler.exec(CLICompiler.kt:316)
	at org.jetbrains.kotlin.incremental.IncrementalJsCompilerRunner.runCompiler(IncrementalJsCompilerRunner.kt:199)
	at org.jetbrains.kotlin.incremental.IncrementalJsCompilerRunner.runCompiler(IncrementalJsCompilerRunner.kt:74)
	at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.doCompile(IncrementalCompilerRunner.kt:506)
	at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileImpl(IncrementalCompilerRunner.kt:423)
	at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compileNonIncrementally(IncrementalCompilerRunner.kt:301)
	at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile(IncrementalCompilerRunner.kt:129)
	at org.jetbrains.kotlin.incremental.IncrementalCompilerRunner.compile$default(IncrementalCompilerRunner.kt:113)
	at org.jetbrains.kotlin.daemon.CompileServiceImplBase.execJsIncrementalCompiler(CompileServiceImpl.kt:608)
	at org.jetbrains.kotlin.daemon.CompileServiceImplBase.access$execJsIncrementalCompiler(CompileServiceImpl.kt:91)
	at org.jetbrains.kotlin.daemon.CompileServiceImpl.compile(CompileServiceImpl.kt:1757)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at java.rmi/sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
	at java.rmi/sun.rmi.transport.Transport$1.run(Unknown Source)
	at java.rmi/sun.rmi.transport.Transport$1.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.rmi/sun.rmi.transport.Transport.serviceCall(Unknown Source)
	at java.rmi/sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
	at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
	at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Unknown Source)
	at java.rmi/sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.IllegalArgumentException: List has more than one element.
	at kotlin.collections.CollectionsKt___CollectionsKt.single(_Collections.kt:618)
	at org.jetbrains.kotlin.fir.backend.IrBuiltInsOverFir.arrayOf_delegate$lambda$63(IrBuiltInsOverFir.kt:287)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:83)
	at org.jetbrains.kotlin.fir.backend.IrBuiltInsOverFir.getArrayOf(IrBuiltInsOverFir.kt:284)
	at org.jetbrains.kotlinx.serialization.compiler.backend.ir.IrBuilderWithPluginContext.createArrayOfExpression(IrBuilderWithPluginContext.kt:243)
	at org.jetbrains.kotlinx.serialization.compiler.backend.ir.BaseIrGenerator.addCachedChildSerializersProperty$lambda$23(BaseIrGenerator.kt:424)
	at org.jetbrains.kotlinx.serialization.compiler.backend.ir.IrBuilderWithPluginContext.addValPropertyWithJvmFieldInitializer(IrBuilderWithPluginContext.kt:190)
	at org.jetbrains.kotlinx.serialization.compiler.backend.ir.IrBuilderWithPluginContext.addValPropertyWithJvmFieldInitializer$default(IrBuilderWithPluginContext.kt:175)
	at org.jetbrains.kotlinx.serialization.compiler.backend.ir.BaseIrGenerator.addCachedChildSerializersProperty$kotlinx_serialization_compiler_plugin_backend(BaseIrGenerator.kt:423)
	at org.jetbrains.kotlinx.serialization.compiler.backend.ir.SerializableIrGenerator.<init>(SerializableIrGenerator.kt:63)
	at org.jetbrains.kotlinx.serialization.compiler.backend.ir.SerializableIrGenerator$Companion.generate(SerializableIrGenerator.kt:399)
	at org.jetbrains.kotlinx.serialization.compiler.extensions.SerializerClassLowering.lower(SerializationLoweringExtension.kt:146)
	... 55 more
so, maybe ktor/kotlinx serialization related
d
I have those exact errors
I'm seeing this as well. Seems like there is no serialization update yet for 2.1
The klib resolver thing I believe just became an error in 2.1 while it was just a warning prior. I added the compiler flags to get past that. I think I have dependencies that pull in the old Kotlin std lib still
Maybe it's related
d
As for the duplicate klib. I think it's because koin relies on statley collections lib which is on 1.9.10
j
updated a number of dependencies and working now.....in particular following for iOS build issue https://youtrack.jetbrains.com/issue/CMP-7089/FileAnalysisException-NoClassDefFoundError-org-jetbrains-kotlin-fir-symbols-ConeClassLikeLookupTag
d
You got past the kotlinx serialization error for wasm builds?
j
yeah, seems to be.....haven't isolated yet to which dependency update fixed it
for iOS part am seeing following for some reason https://kotlinlang.slack.com/archives/C9JM6Q2UX/p1732886825944849
d
Nice! I'll start going through my dependencies. Lmk if you end up finding out what the culprit was.
j
are you using kmp-nativecoroutines library?
d
Nope, is that what did it for you?
j
I guess that should have only affected ios build anyway
so, changes merged to https://github.com/joreilly/ClimateTraceKMP now if you want to compare anything
130 Views