https://kotlinlang.org logo
#decompose
Title
# decompose
c

cb

09/29/2023, 8:50 AM
Hey! I'm currently migrating to CMP 1.5.10-beta02, which needs Kotlin 1.9.20-Beta2, which forces Decompose 2.2.0-alpha01. I've migrated most of the components to use Serializable, but it looks like the iOS sample hasn't been updated to show to store the state? https://github.com/arkivanov/Decompose/blob/master/sample/app-ios/app-ios/app_iosApp.swift
a

Arkadii Ivanov

09/29/2023, 9:08 AM
There are no changes required to store the state, yet. For binary and source compatibility, this version still interops via Parcelable. Version 3.0 will require changes, though.
c

cb

09/29/2023, 9:09 AM
Ahhhh cool! So Decompose to storing the serializable state in a parcelable under the hood?
a

Arkadii Ivanov

09/29/2023, 9:12 AM
Currently yes. This version is kinda for smoother transition. 😀
In version 3.0 there will be no Parcelable traces.
If this interop bothers, you could just update to 2.2.x without changing the code.
c

cb

09/29/2023, 9:28 AM
That didn't work for me. I was getting Compiler errors
a

Arkadii Ivanov

09/29/2023, 9:29 AM
What kind of errors? There should be no breaking changes.
Otherwise I would fix 😀
c

cb

09/29/2023, 9:29 AM
Let me get this working and I'll checkout the previous commit and re-run
👍 1
This is the error I got:
Copy code
Compilation failed: Back-end: Please report this problem <https://kotl.in/issue>
FooComponent.kt:-1:-1
Details: Internal error in file lowering: java.lang.NoSuchMethodError: 'java.lang.String org.jetbrains.kotlin.ir.util.RenderIrElementKt.render(org.jetbrains.kotlin.ir.IrElement)'

 * Source files: FooComponent.kt
 * Compiler version: 1.9.20-Beta2
 * Output kind: LIBRARY

	at org.jetbrains.kotlin.backend.common.LowerKt.lower(Lower.kt:76)
	at com.arkivanov.parcelize.darwin.ParcelizeGenerationExtension.generate(ParcelizeGenerationExtension.kt:20)
	at org.jetbrains.kotlin.backend.konan.PsiToIrKt.psiToIr$lambda$16(PsiToIr.kt:212)
	at org.jetbrains.kotlin.psi2ir.Psi2IrTranslator.generateModuleFragment(Psi2IrTranslator.kt:107)
	at org.jetbrains.kotlin.psi2ir.Psi2IrTranslator.generateModuleFragment$default(Psi2IrTranslator.kt:84)
	at org.jetbrains.kotlin.backend.konan.PsiToIrKt.psiToIr(PsiToIr.kt:217)
	at org.jetbrains.kotlin.backend.konan.driver.phases.PsiToIrKt$PsiToIrPhase$2.invoke(PsiToIr.kt:102)
	at org.jetbrains.kotlin.backend.konan.driver.phases.PsiToIrKt$PsiToIrPhase$2.invoke(PsiToIr.kt:97)
	at org.jetbrains.kotlin.backend.konan.driver.phases.PhaseBuildersKt$createSimpleNamedCompilerPhase$1.phaseBody(PhaseBuilders.kt:32)
	at org.jetbrains.kotlin.backend.common.phaser.SimpleNamedCompilerPhase.phaseBody(CompilerPhase.kt:207)
	at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedCompilerPhase.invoke(CompilerPhase.kt:94)
	at org.jetbrains.kotlin.backend.konan.driver.PhaseEngine.runPhase(Machinery.kt:139)
	at org.jetbrains.kotlin.backend.konan.driver.PhaseEngine.runPhase$default(Machinery.kt:130)
	at org.jetbrains.kotlin.backend.konan.driver.phases.TopLevelPhasesKt.runPsiToIr(TopLevelPhases.kt:52)
	at org.jetbrains.kotlin.backend.konan.driver.phases.TopLevelPhasesKt.runPsiToIr(TopLevelPhases.kt:40)
	at org.jetbrains.kotlin.backend.konan.driver.DynamicCompilerDriver.serializeKlibK1(DynamicCompilerDriver.kt:125)
	at org.jetbrains.kotlin.backend.konan.driver.DynamicCompilerDriver.produceKlib(DynamicCompilerDriver.kt:95)
	at org.jetbrains.kotlin.backend.konan.driver.DynamicCompilerDriver.access$produceKlib(DynamicCompilerDriver.kt:31)
	at org.jetbrains.kotlin.backend.konan.driver.DynamicCompilerDriver$run$1$1$1.invoke(DynamicCompilerDriver.kt:43)
	at org.jetbrains.kotlin.backend.konan.driver.DynamicCompilerDriver$run$1$1$1.invoke(DynamicCompilerDriver.kt:36)
	at org.jetbrains.kotlin.backend.konan.driver.PhaseEngine$Companion$startTopLevel$topLevelPhase$1.phaseBody(Machinery.kt:98)
	at org.jetbrains.kotlin.backend.konan.driver.PhaseEngine$Companion$startTopLevel$topLevelPhase$1.phaseBody(Machinery.kt:92)
	at org.jetbrains.kotlin.backend.common.phaser.SimpleNamedCompilerPhase.phaseBody(CompilerPhase.kt:207)
	at org.jetbrains.kotlin.backend.common.phaser.AbstractNamedCompilerPhase.invoke(CompilerPhase.kt:94)
	at org.jetbrains.kotlin.backend.konan.driver.PhaseEngine$Companion.startTopLevel(Machinery.kt:105)
	at org.jetbrains.kotlin.backend.konan.driver.DynamicCompilerDriver.run(DynamicCompilerDriver.kt:36)
	at org.jetbrains.kotlin.backend.konan.KonanDriver.run(KonanDriver.kt:118)
	at org.jetbrains.kotlin.cli.bc.K2Native.runKonanDriver(K2Native.kt:151)
	at org.jetbrains.kotlin.cli.bc.K2Native.doExecute(K2Native.kt:69)
	at org.jetbrains.kotlin.cli.bc.K2Native.doExecute(K2Native.kt:36)
	at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:104)
	at org.jetbrains.kotlin.cli.common.CLICompiler.execImpl(CLICompiler.kt:48)
	at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:101)
	at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:79)
	at org.jetbrains.kotlin.cli.common.CLITool.exec(CLITool.kt:43)
	at org.jetbrains.kotlin.cli.common.CLITool$Companion.doMainNoExit(CLITool.kt:180)
	at org.jetbrains.kotlin.cli.bc.K2Native$Companion$mainNoExitWithRenderer$1.invoke(K2Native.kt:188)
	at org.jetbrains.kotlin.cli.bc.K2Native$Companion$mainNoExitWithRenderer$1.invoke(K2Native.kt:187)
	at org.jetbrains.kotlin.util.UtilKt.profileIf(Util.kt:22)
	at org.jetbrains.kotlin.util.UtilKt.profile(Util.kt:16)
	at org.jetbrains.kotlin.cli.bc.K2Native$Companion.mainNoExitWithRenderer(K2Native.kt:187)
	at org.jetbrains.kotlin.cli.bc.K2NativeKt.mainNoExitWithGradleRenderer(K2Native.kt:205)
	at org.jetbrains.kotlin.cli.utilities.MainKt$daemonMain$1.invoke(main.kt:51)
	at org.jetbrains.kotlin.cli.utilities.MainKt$daemonMain$1.invoke(main.kt:51)
	at org.jetbrains.kotlin.cli.utilities.MainKt.mainImpl(main.kt:20)
	at org.jetbrains.kotlin.cli.utilities.MainKt.inProcessMain(main.kt:58)
	at org.jetbrains.kotlin.cli.utilities.MainKt.daemonMain(main.kt:51)
a

Arkadii Ivanov

09/29/2023, 9:44 AM
Oh, it seems that Kotlin 1.9.20-Beta2 broke binary compatibility for compiler plugins. I would need to update
parcelize-darwin
to Kotlin 1.9.20-Beta2. Though Decompose is still on Kotlin 1.9.10.
👍 1