Kotlin 1.9.20-Beta2
Changelog
Backend. Wasm
KT-59720
K/Wasm: update to final opcodes
Compiler
KT-62027
«java.lang.IndexOutOfBoundsException: Empty list doesn’t contain element at index 0» caused by ClassicExpectActualMatchingContext.kt when annotation@AllowDifferentMembersInActual
usedKT-61668
Put expect/actual diagnostics introduced in 1.9.20 release under 1.9 Language VersionKT-61645
K2/KMP: Set stdlib-native before stdlib-commonMain in dependencies for shared native metadata compilationKT-61924
Native: problem with abstract fake override from AnyKT-61725
KMP: Annotation matching requirement for expect/actual leads to errors for annotations with@OptionalExpectation
KT-61784
KMP: [DEFAULT_ARGUMENTS_IN_EXPECT_WITH_ACTUAL_TYPEALIAS] checker missed for companion functionsKT-61167
Runtime failure: ReferenceError: MyPromise is not definedKT-59094
K2: Fix Scripting K2 tests
IDE. Navigation
KT-61894
Navigation from java sources leads to Kotlin decompiled code in case of suspend function
Native. C and ObjC Import
KT-56369
Hint about «-fmodules» is not shown
Tools. Compiler Plugin API
KT-61872
K2: Adding annotations to metadata from backend plugin doesn’t work in the presence of comments on annotated declarationKT-61833
K2: annotations added viaaddMetadataVisibleAnnotationsToElement
to declarations from common sourceset in MPP project are invisible
Tools. Gradle
KT-61401
The reported language version value for KotlinNativeLink tasks in build reports and build scans is inaccurateKT-61950
K/Wasm: Add warning about changed sourceSetsKT-61895
KotlinTopLevelExtension.useCompilerVersion is not marked as experimental
Tools. Gradle. Multiplatform
KT-59042
«Cannot build ‘KotlinProjectStructureMetadata’ during project configuration phase» when configuration cache enabledKT-61652
MPP ConcurrentModificationException on transformCommonMainDependenciesMetadataKT-61622
Upgrading to Kotlin 1.9 prevents commonMain sourceset classes from being processed by kapt/ksp (dagger/Hilt)
Tools. Gradle. Native
KT-61700
Native: linkDebugExecutableNative has duplicated freeCompilerArgs
Tools. Wasm
KT-61971
K/Wasm: wasmWasiTest should depends on kotlinNodeJsSetup
Checksums
File | Sha256 |
---|---|
kotlin-compiler-1.9.20-Beta2.zip | 2ec2dd53daae4acc1fd04fe95d42332e21a350a6f3384c63a18b079e90ab5576 |
kotlin-native-linux-x86_64-1.9.20-Beta2.tar.gz | f51bca5632e60910fb5fb8a3c08bf29c0e56fa413efd43944dd7b8e80f2fb8db |
kotlin-native-macos-x86_64-1.9.20-Beta2.tar.gz | 13a7ed1505e751860516b6729bba533861ad5d640bac1864702b5b098157e4b8 |
kotlin-native-macos-aarch64-1.9.20-Beta2.tar.gz | 4f7b4096bfe0245be3ed18d73fb3c8f8f9687444852e7397c0329dc9a0b516e9 |
kotlin-native-windows-x86_64-1.9.20-Beta2.zip | d2ac8d34bd0e4ef651969e3db9c65c9f9ed7db23a3b66f4d2f8f1aefc0120cb1 |
Kotlin 1.9.20-Beta
Changelog
Analysis API
New Features
KT-58834
Analysis API: Add source shadowing feature to resolve extensions
Performance Improvements
KT-57515
LL FIR: Performance bottleneck inCompositeModificationTracker.getModificationCount
KT-59266
K2: optimize FirElementBuilder.getOrBuildFir for elements outside bodyKT-59454
K2: drop resolve from org.jetbrains.kotlin.analysis.api.fir.components.KtFirVisibilityChecker#collectContainingDeclarationsKT-59453
K2: completion regression from org.jetbrains.kotlin.analysis.api.fir.components.KtFirVisibilityChecker#collectContainingDeclarationsKT-59189
Analysis API: KtFirKDocReference.resolveToSymbols is slowKT-58125
K2: LL FIR:KtToFirMapping.getElement
is slow forKtUserType
s due to on-air resolution of types
Fixes
KT-60940
K2: Analysis API: Reference shortener incorrectly handles types in vararg parameters declarationsKT-61026
K2 Scripts: FirLazyExpression should be calculated before accessing from on-air resolveKT-61009
K2 Scripts: KtFirExpressionTypeProvider: Expected FirResolvedTypeRef with ConeKotlinType but was FirImplicitTypeRefImplWithoutSourceKT-60357
K2 IDE. Reified types parameters are not resolved in a function bodyKT-60954
K2: Analysis API: Reference shortener does not work correctly with variable assignmentsKT-60317
K2 IDE. IAE «This method will only work on compiled declarations, but this declaration is not compiled» on invoking Find Usages for enum method in libraryKT-60728
K2: proper support for scripts in LL FIR transformersKT-60706
K2 IDE: FirJvmTypeMapper is not found for kotlin.kotlin-stdlib-commonKT-57743
K2 IDE: StackOverflowError from LLFirSessionCache for simple JPS project with cyclic dependenciesKT-60552
K2: merge StateKeeper and lazy body calculator for ANNOTATIONS_ARGUMENTS_MAPPING transformerKT-60641
Analysis API: Scope for class org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl not found exception when stdlib is missingKT-60586
K2: forbid analyze from write actionKT-60638
K2: Expected FirResolvedTypeRef with ConeKotlinType but was FirImplicitTypeRefImplWithoutSourceKT-54846
Analysis API: add isExpect/isActual to KtSymbolKT-59077
KtFirExpressionTypeProvider behaviour for KtSimpleNameReferences in function callsKT-60448
FirLazyResolveContractViolationException:lazyResolveToPhase(COMPILER_REQUIRED_ANNOTATIONS)
cannot be called from a transformer with a phase COMPILER_REQUIRED_ANNOTATIONS from AllOpen pluginKT-59342
K2 IDE. FirLazyResolveContractViolationException:lazyResolveToPhase(TYPES)
cannot be called from a transformer with a phase TYPESKT-59687
K2: Implement proper body update for in-block modificationsKT-60488
Analysis API: forbid providing custom KtLifetimeToken for every analyze callKT-59329
Resolve Extensions reference resolution breaks Find UsagesKT-60295
K2: move checkIsResolved for annotations from LLFirAnnotationArgumentsLazyResolver to LLFirTypeLazyResolverKT-59758
K2: Expected is FirResolvedTypeRef, but was FirImplicitTypeRefImplWithoutSource from ReturnTypeCalculatorWithJumpKT-60377
K2 IDE: This method will only work on compiled declarations, but this declaration is not compiledKT-59685
K2: rewrite on-air resolutionKT-59159
K2 IDE: declaration is not found exceptionKT-59297
K2: exception from body resolve leads to corrupted state and broken analysisKT-60132
K2: properties and functions without a name should be re-analyzable as wellKT-59199
K2 IDE: PSI changes which do not cause OOB modifications can be unseen from the FIR elementsKT-59667
Analysis API: PsiInvalidElementAccessException from JavaClassifierTypeImpl.substitutorKT-59705
KotlinExceptionWithAttachments: No fir element was found for getterKT-59697
AA standalone: JRT module paths are not properly populated in WindowsKT-59505
K2: implicit type lazy resolution doesn’t work for delegated declaration from other moduleKT-56426
K2 IDE: Typealised functional types cannot be renderedKT-59598
AA: stackoverflow while simplifying a type with a recursive type parameterKT-58497
K2: Expected FirResolvedTypeRef for initializer type of FirPropertyImpl(Source) but FirImplicitTypeRefImplWithoutSource foundKT-59511
AA standalone mode creates Application Environment for testsKT-58161
Analysis API: Make methods inKtCallResolverMixIn
more distinctive based on their receiver/return typeKT-59093
Do not throw exception on KtCall resolution,KtCallElement.resolveCall
should returnnull
on unknown casesKT-59240
K2: FirLazyResolveContractViolationException:lazyResolveToPhase(IMPORTS)
cannot be called from a transformer with a phase IMPORTS from superTypesKT-59243
K2: FirLazyResolveContractViolationException:lazyResolveToPhase(IMPORTS)
cannot be called from a transformer with a phase IMPORTS from permits typesKT-58194
K2: Low Level API: use smart pointers to store references to PSI from FIR declarations for JavaElementKT-59133
K2: java.lang.IllegalStateException: Fir is not initialized for FirRegularClassSymbolKT-58174
K2: LL FIR: Invalid type reference for T & Any typeKT-52615
LL FIR: build RAW FIR only by stubsKT-55053
K2: Exception «lateinit property diagnostic has not been initialized» in FirBuilderKT-58580
K2: LL FIR: Declarations provided by resolve extensions from a dependency module are not visible throughLLFirCombinedKotlinSymbolProvider
KT-58992
Analysis API: move org.jetbrains.kotlin.analysis.api.fir.utils.addImportToFile out of Analysis APIKT-58727
K2: AA FIR: implicit type in delegated function treated as errorKT-58653
K2: Analysis API: add functions for KtScope members access by nameKT-57559
K2 IDE: KotlinExceptionWithAttachments: Modules are inconsistent on intellij projectKT-58262
Analysis API: Declarations from Analysis API Resolve Extensions are not seen from completionKT-57455
LL FIR: CombineAbstractFirDeserializedSymbolProvider
s in session dependencies (optimization)KT-57207
LL FIR: CombineJavaSymbolProvider
s in session dependencies (optimization)KT-58546
K2: LL FIR: support name collision in a designation pathKT-58495
K2: Lazy calculation is redundantKT-58500
K2: null cannot be cast to non-null type org.jetbrains.kotlin.fir.FirPureAbstractElementKT-58493
K2: Expected FirResolvedTypeRef for default value type of FirValueParameterImpl(Source) but FirUserTypeRefImpl foundKT-58496
K2: Expected FirNamedReference, FirErrorNamedReference or FirFromMissingDependenciesNamedReference, b…
Kotlin 1.9.10
Changelog
Compiler
KT-60769
Partially revert KT-58371KT-60659
Incorrect ‘unresolved reference: addFirst’ error with JDK 21KT-60371
Native custom allocator link errorKT-60986
Native: static caches with custom runtime options are broken on LinuxKT-60770
Fix false-positive ABSTRACT_MEMBER_NOT_IMPLEMENTED on toArray with JDK 21KT-60231
NoClassDefFoundError: $$$$$NON_LOCAL_RETURN$$$$$ after upgrade to Kotlin 1.9.0
JavaScript
KT-60785
KJS: Destructured value class in suspend function fails with Uncaught TypeError: can’t convert to primitive type errorKT-60852
Kotlin JS(IR): IllegalArgumentException: Cross module dependency resolution failed when updating to Kotlin 1.9.0KT-57509
KJS: Compiler generates native JS operator == for comparing values with Any type
Native
KT-60230
Native: «unknown options: -ios_simulator_version_min -sdk_version» with Xcode 15 beta 3KT-60758
Native: Building for ‘iOS-simulator’, but linking in dylib built for ‘iOS’ in Xcode 15 beta 4
Native. C and ObjC Import
KT-59167
Native: cinterop is unable to build interop libraries against the Xcode 15 Beta 1
Tools. Gradle
KT-61147
Kotlin Compiler 1.9.0 bundles a stripped unshadowed version of GsonKT-60543
NoClassDefFoundError for com/gradle/scan/plugin/BuildScanExtension
Checksums
File | Sha256 |
---|---|
kotlin-compiler-1.9.10.zip | 7d74863deecf8e0f28ea54c3735feab003d0eac67e8d3a791254b16889c20342 |
kotlin-native-linux-x86_64-1.9.10.tar.gz | 1db3679919f4449514e9d82451e7dfa73558ac9bc80b82579cd74d452c8faa5b |
kotlin-native-macos-x86_64-1.9.10.tar.gz | f5650f2560438a692803d8fe07124529c19f1972f84fe09cfa2329b93f43828d |
kotlin-native-macos-aarch64-1.9.10.tar.gz | d2cf5a484ac0808ab29fd3f6099df7c07330f81f3cbab949947e42e36138c3de |
kotlin-native-windows-x86_64-1.9.10.zip | a34d56661455e94e1ba4dd09ec3c1adac6148fdedcf55eefb9a79c8ed01ff02c |
Kotlin 1.9.0
Changelog
Analysis API
New Features
KT-57930
Analysis API: provide an API for extending Kotlin resolutionKT-57636
K2: Add the return type of K2 reference shortener AAShortenCommand::invokeShortening()
e.g.,ShorteningResultInfo
to allow callers to access the shortening result PSI
Fixes
KT-58249
Analysis API: Disable error logging for FE10 implementation of resolveCall when resolve is not successfulKT-55626
Impossible to restore symbol by psi from script fileKT-57314
LL FIR: CombineLLFirProvider$SymbolProvider
s in session dependencies (optimization)KT-55527
K2 IDE: Rewrite KtScopeContext class to allow to handle each scope separatelyKT-55329
LL FIR: Unexpected ACTUAL_WITHOUT_EXPECT error on constructor and function declarationKT-50732
LL API: fix compiler based testsKT-57850
K2: contract violation due to SymbolLightAccessorMethod.propertyAccessorSymbolKT-56543
LL FIR: rework lazy transformers so transformers modify only declarations they suppose toKT-56721
K2: FirExtensionDeclarationsSymbolProvider: java.lang.IllegalStateException: Recursive updateKT-50253
Analysis API: Solve issues with ProcessCancelledExceptionKT-56800
K2 IDE: optimize deprecation calculation for symbolsKT-55006
Analysis API does not transform Java type refs for callable symbol return typesKT-57256
AA FIR: Reduce lazy resolve phase for deprecation statusKT-57619
K2: CFG for class initializer is not correctly built in reversed resolve modeKT-58141
K2: AA FIR: impossible to restore symbol for declaration with annotation with argument inside typeKT-57462
Symbol Light Classes: SymbolLightFieldForProperty should retrieve annotations not from KtPropertySymbol, but from the corresponding backing fieldKT-54864
Analysis API: add function to get expect KtSymbol list by actual KtSymbolKT-56763
Analysis API:.KtSourceModuleImpl is missing in the map.
on symbol restore when symbol cannot be seen from the use-site moduleKT-56617
Analysis API: optimize KtFirSymbolProviderByJavaPsi.getNamedClassSymbolKT-54430
K2: .getAllOverriddenSymbols() returns invalid results
Backend. Native. Debug
KT-55440
Kotlin/Native debugger: inline function parameters are not visible during debugging
Backend. Wasm
KT-58293
Wasm: ReferenceError: e is not defined in kotlin.test.jsThrowKT-58931
Wasm tests are failing to start on Kotlin 1.9.0-BetaKT-58188
Restore binary compatibility of PlatformDiagnosticSuppressor.shouldReportUnusedParameterKT-57136
K/Wasm: Restrict non-external types in JS interopKT-57060
Clarify the lack of support for dynamic in Kotlin/WasmKT-56955
K/Wasm: Support restricted version of K/JSjs(code)
KT-57276
Wasm: «Body not found for function» error when compiling konform library with Kotlin/Wasm supportKT-56976
K/Wasm bug with calling override of external function with default parameters
Compiler
New Features
KT-55333
Allow secondary constructors in value classes with bodiesKT-54944
@Volatile
support in nativeKT-54746
Deprecate with ERROR JvmDefault annotation and old -Xjvm-default modesKT-47902
Do not propagate method deprecation through overridesKT-29378
K2: rework warnings/errors for equality/identity operators on incompatible typesKT-57477
False-positive overload resolution ambiguity in case of lambda without argumentsKT-57010
Kotlin/Native: make it possible to compile bitcode in a separate compiler invocationKT-55691
K2: Avoid inferring Nothing? in presence of other constraints (beside type parameter bounds)KT-46288
Unexpected behavior of extension function on lambda with suspend receiverKT-24779
Inconsistent smart cast behavior for bound data flow values
Performance Improvements
KT-23397
Optimize out field for property delegate when it’s safe (JVM)KT-56906
FIR: Use cached instance of FirImplicitTypeRefImpl in FIR buildersKT-56276
LanguageVersion.getVersionString() allocates 5k objects on project opening
Fixes
KT-57784
«NullPointerException: Parameter specified as non-null is null:» with enum, companion object, ‘entries’ and mapKT-55217
K2: support callable reference conversions on top-level expressionsKT-57232
K2: build Space JVM (master)KT-59079
«AE: SyntheticAccessorLowering should not attempt to modify other files!» with callable reference to constructor with value class parameterKT-58837
Partial linkage fails to report any compiler message on Windows when launched through Gradle pluginKT-57602
K2: Rework member scope of types having projection arguments for covariant parametersKT-55171
Put new contracts syntax under a feature flagKT-58719
K2: false-positive INVISIBLE_REFERENCE error in case of importing an internal abstract classKT-56030
[K2/N] Support Objective-C overloading by param names onlyKT-57510
K2: Data class equals/hashCode/toString methods are not written to Klib metadataKT-56331
K2: compiler backend crash on usage of expected function with default argumentsKT-53846
K2 / Context receivers: ClassCastException on secondary constructor of class with context receiverKT-58621
K2: Private class shadows public function defined in the same packageKT-59102
K2: constant evaluator does not provide Long type on shlKT-59066
[K2] delegation leads to «IllegalStateException: Expected some types»KT-56074
K2: build Space JVM (snapshot 2022.3)KT-58787
KAPT: «NullPointerException: null cannot be cast to non-null type» with delegateKT-57022
K2 IllegalStateException in signature computationKT-56792
K2: build kotlinpoetKT-57373
K2: FIR properties synthesized when implementing interface by delegation don’t have accessorsKT-56583
K1: Implement opt-in for integer cinterop conversionsKT-59030
[PL] Workaround for broken@Deprecated
annotations in c-interop KLIBsKT-58618
K2: Local property delegates cannot infer generic return typeKT-36770
Prohibit unsafe calls with expected@NotNull
T and given Kotlin generic parameter with nullable boundKT-56739
K2: build Space iOSKT-57131
K2: stdlib test compilation fails on ListTest.kt in FirJvmMangleComputerKT-58137
K2: ISE «Usage of default value argument for this annotation is not yet possible» when instan…
Kotlin 1.9.0-RC
Changelog
Backend. Wasm
KT-58188
Restore binary compatibility of PlatformDiagnosticSuppressor.shouldReportUnusedParameterKT-58293
Wasm: ReferenceError: e is not defined in kotlin.test.jsThrowKT-58931
Wasm tests are failing to start on Kotlin 1.9.0-Beta
Compiler
Fixes
KT-58621
K2: Private class shadows public function defined in the same packageKT-59102
K2: constant evaluator does not provide Long type on shlKT-59079
«AE: SyntheticAccessorLowering should not attempt to modify other files!» with callable reference to constructor with value class parameterKT-58787
KAPT: «NullPointerException: null cannot be cast to non-null type» with delegateKT-58837
Partial linkage fails to report any compiler message on Windows when launched through Gradle pluginKT-59030
[PL] Workaround for broken@Deprecated
annotations in c-interop KLIBsKT-58618
K2: Local property delegates cannot infer generic return typeKT-58897
K2: False positive unresolved reference with same-named enum class and its entryKT-56927
Enum with secondary constructor can’t be compiled with K2 using JS/Native backendKT-57570
Remove source code excerpts from platform type nullability assertion exceptionsKT-52774
Resolve unqualified enum constants based on expected type
IDE. Gradle Integration
KT-59034
MPP build failed with «Factory type is not known for plugin variants» in kt-231-*
JavaScript
KT-58570
KJS: ES6 classes + PL throw java.lang.NullPointerExceptionKT-58835
K2/JS: Fix incremental compilation klib testsKT-58794
KJS / K2: Assertion failed with Space build
Libraries
KT-58985
Update KClass.isData KDocKT-58276
Deprecate redundant public declarations in kotlin.native.concurrent
Native. ObjC Export
KT-58839
K/N: Exception during HiddenFromObjC marked class extension function compiling
Tools. Compiler plugins. Serialization
KT-58918
Serialization: NPE at run time obtaining a serializer for a sealed class with a generic self-referencing propertyKT-58954
Serialization: NPE at run time when accessing a delegating property of a deserialized objectKT-59113
Serialization: NPE at run time when accessing a delegating property of a deserialized objectKT-57647
Serialization: «IllegalAccessError: Update to static final field» caused by serializable value class
Tools. Gradle
KT-59256
[1.9.0-Beta] ServiceLoader does not pick up classes defined in the same projectKT-58662
Gradle 8.1 + Configuration Cache: custom values data is missing from build reportKT-59063
Explicit API mode broken in Kotlin 1.9.0-BetaKT-59191
Actual compilation failure exception might be hidden in the case of a Kotlin daemon crashKT-59056
FreeCompilerArgs options added using ‘subprojects’ extension override module-level freeCompilerArgs optionsKT-55740
Gradle 8: Listener registration using Gradle.addBuildListener() has been deprecatedKT-58251
Build Statistics. Kotlin-specific tags are missing in build scans if projects use Gradle 8+KT-58916
[1.9.0-Beta] PLUGIN_CLASSPATH_CONFIGURATION_NAME and NATIVE_COMPILER_PLUGIN_CLASSPATH_CONFIGURATION_NAME should stay public or offer an alternative APIKT-58869
K2, Gradle: Improve message «100% (2/2) tasks have compiled with Kotlin 2»
Tools. Gradle. JS
KT-59116
K/JS npm dependcies are not resolved properly on Kotlin 1.9KT-58970
browserTest gradle task fails if karma is used and gradle configuration cache is enabledKT-59004
Kotlin JS 1.9.0-Beta, yarn.lock is unstable in multi module project
Tools. Gradle. Multiplatform
KT-57903
Prepare for migration to the pluggable android target pluginKT-58661
KGP: KotlinJvmTarget: Implement ‘run’ carrier taskKT-59055
KotlinJvmRun not respecting jvmToolchain setting
Tools. Gradle. Native
KT-57823
KotlinNativeCompileOptions.moduleName value is ignored and replaced with the default one if to set up using compilationsKT-58838
KGP/Multiplatform: 1.9.0-Beta with custom cinterops: IllegalStateException: Could not create domain object ‘jni’ (DefaultCInteropSettings)
Tools. Incremental Compile
KT-58986
New IC: ISE «The following LookupSymbols are not yet converted to ProgramSymbols: LookupSymbol(name=$$delegatedProperties, …)»
Tools. Parcelize
KT-59112
K2: «IllegalStateException: Function has no body with@Parcelize
» on nested sealed class hierarchies
Checksums
File | Sha256 |
---|---|
kotlin-compiler-1.9.0-RC.zip | d00312caa89de1dd3f62d80d5b31724efc333101616ba4a22caf4458862315e7 |
kotlin-native-linux-x86_64-1.9.0-RC.tar.gz | 2dc30ef2b73bcc561decd5efc7b78b7431cfe2fb982c471baaa6762c5022ce5a |
kotlin-native-macos-x86_64-1.9.0-RC.tar.gz | a4b9b2dbb6793ee6857e3cbdecceb2d972aba1c1055e64bd7cce90fe0c776afc |
kotlin-native-macos-aarch64-1.9.0-RC.tar.gz | 1ca609007c2cbc587b4ce5e689064867ec18a377ce0ca24a777edf8d74cb7df9 |
kotlin-native-windows-x86_64-1.9.0-RC.zip | b3e35851992132fea2608fa6be87f0fda4b613bca2a4417e5dc3bf1509128a2d |
Kotlin 1.8.22
Changelog
Tools. Gradle
KT-58280
org.jetbrains.kotlin.jvm Gradle plugin contributes build directories to the test compile classpath
Checksums
File | Sha256 |
---|---|
kotlin-compiler-1.8.22.zip | 91f50fe25c9edfb1e79ae1fe2ede85fa4728f7f4b0587644a4eee40252cdfaa6 |
kotlin-native-linux-x86_64-1.8.22.tar.gz | a1fb41fc010b347d5d9a5449ebb48ad200c59ec2a9121b01db5165db6697e58b |
kotlin-native-macos-x86_64-1.8.22.tar.gz | 0d6e6b12569a4b8ff2f301f827192dd715a29962cc01eed05557aa8e6eb7c20d |
kotlin-native-macos-aarch64-1.8.22.tar.gz | 29805af3220eab3c163ac54f02a6097436d4ddfa83eca7815eb053517093e417 |
kotlin-native-windows-x86_64-1.8.22.zip | 91b04aa9f3dc3d5968c75d8e7f163e542458867915777e995162864cc805b2e5 |
Kotlin 1.9.0-Beta
Changelog
Analysis API
New Features
KT-57930
Analysis API: provide an API for extending Kotlin resolutionKT-57636
K2: Add the return type of K2 reference shortener AAShortenCommand::invokeShortening()
e.g.,ShorteningResultInfo
to allow callers to access the shortening result PSI
Fixes
KT-55626
Impossible to restore symbol by psi from script fileKT-57314
LL FIR: CombineLLFirProvider$SymbolProvider
s in session dependencies (optimization)KT-55527
K2 IDE: Rewrite KtScopeContext class to allow to handle each scope separatelyKT-55329
LL FIR: Unexpected ACTUAL_WITHOUT_EXPECT error on constructor and function declarationKT-50732
LL API: fix compiler based testsKT-57850
K2: contract violation due to SymbolLightAccessorMethod.propertyAccessorSymbolKT-56543
LL FIR: rework lazy transformers so transformers modify only declarations they suppose toKT-56721
K2: FirExtensionDeclarationsSymbolProvider: java.lang.IllegalStateException: Recursive updateKT-50253
Analysis API: Solve issues with ProcessCancelledExceptionKT-56800
K2 IDE: optimize deprecation calculation for symbolsKT-55006
Analysis API does not transform Java type refs for callable symbol return typesKT-57256
AA FIR: Reduce lazy resolve phase for deprecation statusKT-58141
K2: AA FIR: impossible to restore symbol for declaration with annotation with argument inside typeKT-57462
Symbol Light Classes: SymbolLightFieldForProperty should retrieve annotations not from KtPropertySymbol, but from the corresponding backing fieldKT-58249
Analysis API: Disable error logging for FE10 implementation of resolveCall when resolve is not successfulKT-54864
Analysis API: add function to get expect KtSymbol list by actual KtSymbolKT-56763
Analysis API:.KtSourceModuleImpl is missing in the map.
on symbol restore when symbol cannot be seen from the use-site moduleKT-56617
Analysis API: optimize KtFirSymbolProviderByJavaPsi.getNamedClassSymbolKT-54430
K2: .getAllOverriddenSymbols() returns invalid results
Backend. Native. Debug
KT-55440
Kotlin/Native debugger: inline function parameters are not visible during debugging
Backend. Wasm
KT-57136
K/Wasm: Restrict non-external types in JS interopKT-57060
Clarify the lack of support for dynamic in Kotlin/WasmKT-56955
K/Wasm: Support restricted version of K/JSjs(code)
KT-57276
Wasm: «Body not found for function» error when compiling konform library with Kotlin/Wasm supportKT-56976
K/Wasm bug with calling override of external function with default parametersKT-56584
K/Wasm: Can’t link symbol class
Compiler
New Features
KT-49276
Warn about potential overload resolution change if Range/Progression starts implementing CollectionKT-55333
Allow secondary constructors in value classes with bodiesKT-54944
@Volatile
support in nativeKT-54746
Deprecate with ERROR JvmDefault annotation and old -Xjvm-default modesKT-29378
K2: rework warnings/errors for equality/identity operators on incompatible typesKT-57010
Kotlin/Native: make it possible to compile bitcode in a separate compiler invocationKT-55691
K2: Avoid inferring Nothing? in presence of other constraints (beside type parameter bounds)KT-46288
Unexpected behavior of extension function on lambda with suspend receiverKT-24779
Inconsistent smart cast behavior for bound data flow values
Performance Improvements
KT-56906
FIR: Use cached instance of FirImplicitTypeRefImpl in FIR buildersKT-56276
LanguageVersion.getVersionString() allocates 5k objects on project opening
Fixes
KT-56609
K2: False positive NULL_FOR_NONNULL_TYPE with -Xjsr305=strict and@Nullable
annotation Java parameterKT-56656
K1/K2: inconsistent NOTHING_TO_OVERRIDE with complex nullable annotationsKT-58332
K2: local fun with suspend type is not marked as suspend in IRKT-57991
K2: Modifier ‘suspend’ is not applicable to ‘anonymous function’KT-4113
No smartcast for nullable lambda property (functional type) with implicit/operatorinvoke
callKT-54294
K2: «Not all type variables found» in builder inference with type parameters inferred through a union of two branchesKT-52597
Provide Alpha Support for Multiplatform in the K2 platformKT-58523
K2: reference is resolved to imported type-alias instead of identically named top-level propertyKT-57098
Native: avoid object initialization while accessing const valKT-57973
32-th default value in inline classes override function is not usedKT-57714
«IllegalStateException: <B::!>» using reified genericsKT-57810
toString
of object erroneously considered as constant function in string concatenationKT-58076
K2: Incorrect inference of type of labeled receiverKT-57929
K2: Arguments of annotations are not calculated in a lot of strange locationsKT-55388
Consider enabling ProhibitUsingNullableTypeParameterAgainstNotNullAnnotatedKT-53041
NPE in Kotlin 1.7.0 when using RxJava Maybe.doOnEvent with anonymous parametersKT-54829
Cleanup local types approximation logicKT-38871
Kotlin Gradle DSL, MPP: UNUSED_VARIABLE when configuring a sourceset with delegated propertyKT-58587
MUST_BE_INITIALIZED must take into account effectivelly finalKT-58524
K2: false-positive overload resolution ambiguity error on invoking a generic class’s member function with id-shaped function-typed parameter on intersection-typed receiverKT-53929
Enum.entries: consider changing scope behavior in K1KT-58520
K2: FIR2IR: ISE during const evaluation of operator times with exposedKT-56662
K1: false negative INVISIBLE_SETTER for a var with internal setter accessed from a derived classKT-57770
K2: Support generation of serializer if base class for serializable class declared in different moduleKT-58375
Kapt: «wrong number of type arguments. required 1» when more than 22 type argumentsKT-56077
K2: build atomicfuKT-56074
K2: build Space JVM (snapshot 2022.3)KT-48870
[FIR] Different behavior for explicit receiver resolution inside delegated constructorsKT-53865
Partial linkage: overriding function with parameter losing vararg: Native is successful, JS fails in runtimeKT-53568
Partial linkage: absent class as type parameter bound causes failure ofcompileProductionExecutableKotlinJs
- [
KT-53608
](https://youtrack.jetbrains.com/iss…
Kotlin 1.8.21
Changelog
Compiler
KT-57848
Native: compilation of dynamic/static library fails with Xcode 14.3KT-57875
Native compilation failure: Suspend functions should be lowered out at this point, but FUN LOCAL_FUNCTION_FOR_LAMBDAKT-57946
KAPT: «RuntimeException: No type for expression» with delegate
JavaScript
KT-57356
KJS: StackOverflowException on@JsExport
with type parameters referring to one another
Tools. Commonizer
KT-57796
NoSuchFileException in :module-B:commonizeCInterop with Kotlin 1.8.20
Tools. Compiler plugins. Serialization
KT-58067
Serialization: NullPointerException caused by@Contextual
property with type with genericKT-57730
Serialization: «IllegalStateException: Serializer for element of type .Foo has not been found» caused by serialization of Java type
Tools. Gradle. JS
KT-57766
KJS / Gradle «Module not found: Error: Can’t resolve ‘kotlin-kotlin-stdlib-js-ir'» when using «useEsModules»
Tools. Kapt
KT-58027
Kotlin 1.8.20 kapt issue «null: KtCallExpression: build()»
Tools. Maven
KT-58048
Maven: «Too many source module declarations found» after upgrading to 1.8.20KT-58101
‘Unable to access class’ in kotlin-maven-plugin after updating to Kotlin 1.8.20
Checksums
File | Sha256 |
---|---|
kotlin-compiler-1.8.21.zip | 6e43c5569ad067492d04d92c28cdf8095673699d81ce460bd7270443297e8fd7 |
kotlin-native-linux-x86_64-1.8.21.tar.gz | 0fc854641dd6d88dce3cc044bb5bc99b9035480474e23541eff03771690c68cf |
kotlin-native-macos-x86_64-1.8.21.tar.gz | e73bfdac0461ee0c84f25e61063c243bf8d4eb8e0ff5da250456d6a23c677fd6 |
kotlin-native-macos-aarch64-1.8.21.tar.gz | 0a97957921ed55458f3e6cc9117643914ccf3663d8ad7eb161a4a03035a7521b |
kotlin-native-windows-x86_64-1.8.21.zip | f23d3288a47ee580f82f862d55452a75074fce3d26fe7e7f55e27b6015226d8d |
Kotlin 1.8.20
Changelog
Analysis API
KT-55510
K2: Lost designation for local classesKT-55191
AA: add an API to compare symbol pointersKT-55487
K2: symbol pointer restoring doesn’t work for static membersKT-55336
K2 IDE: «java.lang.IllegalStateException: Required value was null.» exception while importing a compiled JPS projectKT-55098
AA: KtDeclarationRenderer should render a context receiversKT-51181
LL API: errors for SAM with suspend function from another moduleKT-50250
Analysis API: Implement Analysis API of KtExpression.isUsedAsExpressionKT-54360
KtPropertySymbol: support JvmField in javaSetterName and javaGetterName
Analysis API. FE1.0
KT-55825
AA FE1.0: stackoverflow when resolution to a function with a recursive type parameter
Analysis API. FIR
KT-54311
K2: proper implementation of KtSymbolPointerKT-50238
Analysis API: Implement KSymbolPointer for KtSymbol
Analysis API. FIR Low Level API
KT-52160
FIR: Substitution overrides on FirValueParameter-s are incorrectly unwrappedKT-55566
LL FIR: Tests incompiler/testData/diagnostics/tests/testsWithJava17
fail under LL FIRKT-55339
LL FIR: Missing RECURSIVE_TYPEALIAS_EXPANSION error in function type aliasKT-55327
LL FIR: Diverging UNRESOLVED_REFERENCE errors in recursive local function testKT-54826
KtSymbolPointer: migrate from IdSignature to our own solution
Android
KT-54464
MPP, Android SSL2: Add a flag for suppressing warning in case of using Android Style folders
Backend. Wasm
KT-38924
Wasm support in nodejsKT-56160
Getting WebAssembly.CompileError in browsers not supported GC and other required proposalsKT-46773
Implement an experimental version of the Kotlin/Wasm compiler backendKT-56584
K/Wasm: Can’t link symbol classKT-56166
Fix compatibility with Firefox NightlyKT-55589
Basic support of WASIKT-53790
Reading from «node:module» is not handled by plugins error with Kotlin/Wasm 1.7.20-Beta
Compiler
New Features
KT-54535
Implement custom equals and hashCode for value classes in Kotlin/JVMKT-55949
Release experimental@Volatile
support in nativeKT-44698
Frontend (K2): print file name/line on compiler crash/exceptionKT-54666
K2: Allow to skip specifying type arguments for members from raw type scopeKT-54524
Implement Java synthetic property references in compilerKT-54024
K2: support -Xlink-via-signatures mode
Performance Improvements
KT-33722
JVM: Result API causes unnecessary boxingKT-53330
Optimize for-loops and contains over open-ended ranges with until operator (..<
) for all backendsKT-54415
JVM BE: performance loss related to multi-field inline class loweringKT-48759
Infix compareTo boxes inline classesKT-55033
Make org.jetbrains.kotlin.resolve.calls.inference.model.NewConstraintSystemImpl#runTransaction an inline functionKT-54501
Improve code generation for inline classes with custom equals
Fixes
KT-56965
K/N: linkDebugFrameworkIosArm64 tasks failing with UnsupportedOperationException: VAR name:disposables type:com.badoo.reaktive.disposable.CompositeDisposable [val]KT-56611
Native: new native caches are broken when KONAN_DATA_DIR is defined to a directory inside ~/.gradleKT-55251
Enum.entries compilation error should be more specificKT-56527
K2: «AssertionError: Assertion failed» during compilation in SequentialFilePositionFinderKT-56526
InvalidProtocolBufferException on reading module metadata compiled by K2 in 1.8.20KT-57388
Kapt+JVM_IR: «RuntimeException: No type for expression» for delegated propertyKT-53153
Synthetic Enum.entries can be shadowed by user-defined declarationsKT-51290
«AssertionError: Parameter indices mismatch at context» with context receiversKT-57242
Equals behaviour for value classes implementing interfaces is different between 1.8.10 and 1.8.20-RCKT-57261
«IllegalArgumentException was thrown at: MemoizedInlineClassReplacements.getSpecializedEqualsMethod» when comparing non-inline class instance with an inline class instanceKT-57107
Handling of Windows line endings CRLF broken in latest snapshot with K2KT-57117
K2: Compiler reports invalid columns in diagnostics in case of crlf line endingsKT-56500
The type parameter TYPE_PARAMETER name:E index:0 variance: superTypes:[kotlin.Any?] reified:false is not defined in the referenced function FUN LOCAL_FUNCTION_FOR_LAMBDAKT-56258
VerifyError: Bad local variable type when using -XdebugKT-54455
Unexpected result of equality comparison of inline class objectsKT-56251
Generic Java synthetic property references don’t work in K2KT-55886
K2: Wrong code location mapping with Windows line endingsKT-43296
FIR: Complicated interaction between smart cast and inference leads to false-positive diagnosticKT-57053
Problem around anonymous objects in inline functionsKT-54950
NoSuchMethodError on calling ‘addAll’ on inline class implementing mutable listKT-56815
compileKotlin task is stuck with while(true) and suspend functionKT-56847
Unresolved reference to Java annotation in Kotlin class with the same name packagesKT-52459
Context receivers: AbstractMethodError caused by Interface method with both an extension and a context receiver is overriden incorrectly in subclassesKT-56215
JVM: Object extension function nullable receiver null check false negative when object is nullKT-56188
K/N: AssertionError when casting SAM wrapper with generic type parameterKT-56033
Restore ‘isMostPreciseContravariantArgument’ function signature for compatibilityKT-56407
Backend Internal error: Exception during IR lowering during:daemon-common-new:compileKotlin
KT-55887
K2. «IllegalStateException: org.jetbrains.kotlin.ir.expressions.impl.IrErrorCallExpressionImpl is not expected» on adding kotlin.plugin.jpaKT-56701
K2 (with LightTree) reports syntax errors without additional informationKT-56649
K2 uses 0-index for line numbers rather than 1-indexKT-54807
K2. Support@OnlyInputTypes
diagnostic checks (contains
like calls)KT-51247
«AssertionError: org.jetbrains.kotlin.ir.expressions.impl.IrFunctionReferenceImpl» caused by context receiver functional typesKT-55436
K1: implement warning about shadowing of the derived property by the base class fieldKT-56521
Static scope…
Kotlin 1.8.20-RC2
Changelog
Compiler
KT-57388
Kapt+JVM_IR: «RuntimeException: No type for expression» for delegated propertyKT-57242
Equals behaviour for value classes implementing interfaces is different between 1.8.10 and 1.8.20-RCKT-57261
«IllegalArgumentException was thrown at: MemoizedInlineClassReplacements.getSpecializedEqualsMethod» when comparing non-inline class instance with an inline class instanceKT-56527
K2: «AssertionError: Assertion failed» during compilation in SequentialFilePositionFinderKT-57107
Handling of Windows line endings CRLF broken in latest snapshot with K2
Tools. Gradle
KT-57296
Build statistics sending errors in case of buildSrc directory usage with kotlin-dsl plugin applied
Tools. Gradle. JS
KT-57285
KJS / Gradle / MPP: FileNotFoundException on publishing empty KJS sourceset
Tools. Gradle. Multiplatform
KT-57460
Kotlin Gradle Plugin: Nullthis
pointer in transformCommonMainDependenciesMetadataKT-57306
[Kotlin 1.8.20-RC] GradleException: Could not load the value of fieldapiConfiguration
oforg.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationConfigurationsContainer
Checksums
File | Sha256 |
---|---|
kotlin-compiler-1.8.20-RC2.zip | 0db23d86962bece7577c19b76ec6b27611e5c4b7c70e93d71451d289e6a7741b |
kotlin-native-linux-x86_64-1.8.20-RC2.tar.gz | e38429bd0f778689c3953d4c3d5aa67c30fc9c39c0fa4d75463fa645356aa97b |
kotlin-native-macos-x86_64-1.8.20-RC2.tar.gz | 0939c73f2d30b0eaed826d2dd3eb6ce0a4720ccaa48a8fed2b9439b3168273ef |
kotlin-native-macos-aarch64-1.8.20-RC2.tar.gz | 536fb2d6f26d4f9ed351a07c8673fe3c8d669cedc983b6151ef1d36f8bd564b4 |
kotlin-native-windows-x86_64-1.8.20-RC2.zip | 2fd80c2f59125469d17d35a79c7711302875f8dd4a0403d6e0885e678a099ece |
So you want to download and install Kotlin on Windows?
Then look no further!
In this guide, you’ll learn how to download the compiler…
…and how to configure it so you can use it from command line.
So let’s fire away:
What is Kotlin?
Kotlin is a programming language. It runs on the Java Virtual Machine (JVM) but also provides the ability to target JavaScript.
A key aspect of Kotlin is the interoperability with Java. You can write Kotlin and Java code in the same project and they’ll work hand in hand.
Kotlin originated at JetBrains and has been open source since 2012.
Step #1: Check Prerequisites
Kotlin needs a JDK to work. So let’s check if you have one configured on your system.
Click on the search button. Then type “cmd” (without quotes).
On Windows 7 click on the Windows button.
Click on the Command Prompt
shortcut.
Wait for the command prompt to open.
Type “javac -version” and press ENTER
.
The above command prints the installed JDK version.
For Kotlin you need JDK version 1.6 or higher.
If you do not have a Java Development Kit installed on your system. Check following post which details how to install a JDK on Windows 10.
Step #2: Download
Go to the Kotlin Latest Release page on GitHub.
Click on the kotlin-compiler-X.X.X.zip
link under the Assets
section.
At the time of writing the latest stable Kotlin release was version 1.2.61
.
Wait for the download to complete.
Step #3: Install
Open the location of the downloaded installer.
Right-click the ZIP archive file. Select Extract All…
.
Select an extract destination for the Kotlin files.
In this example, we extract in C:\Users\Downlinko\tools\kotlin
.
Click on Extract
. This extracts all kotlin files under C:\Users\Downlinko\tools\kotlin\kotlinc
.
From now on we refer to this location as
[KOTLIN_INSTALL_DIR]
.
Step #4: Setup
We need to set up an environment variable that will point to our Kotlin installation.
Click on the search button. Then type “env”.
On Windows 7 click on the Windows button.
Click on the Edit environment variables for your account
shortcut.
Wait for the environment variables window to open.
Click on New…
.
Enter “KOTLIN_HOME” as variable name. Enter the [KOTLIN_INSTALL_DIR]
as variable value.
In this tutorial the installation directory is: C:\Users\Downlinko\tools\kotlin\kotlinc
.
Click OK
.
Next, we need to configure the PATH environment variable so we can run Kotlin from a command prompt.
Select the PATH
variable. Click on Edit…
.
Click on New
and type “%KOTLIN_HOME%\bin” as shown below.
Click OK
.
Click OK
once more to close the environment variables window.
On Windows 7 you cannot add extra values for an existing
Path
variable. You need to append “;%KOTLIN_HOME%\bin” at the end of the variable value instead.
Step #5: Test
To test the setup click on the search button. Then type “cmd”.
Click on the Command Prompt
shortcut.
Wait for the command prompt to open.
Type “kotlinc -version” and press ENTER
.
The above command prints the installed Kotlin version.
Congratulations, you have installed Kotlin on Windows 10!
Now get started and write your first lines of Kotlin code.
Be sure to leave a comment if you liked this post.
Thanks!
The Kotlin Programming Language.
- Overview
- Versions
- Reviews
- Resources
Changelog
Backend. Wasm
-
KT-58188
Restore binary compatibility of PlatformDiagnosticSuppressor.shouldReportUnusedParameter -
KT-58293
Wasm: ReferenceError: e is not defined in kotlin.test.jsThrow -
KT-58931
Wasm tests are failing to start on Kotlin 1.9.0-Beta
Compiler
Fixes
-
KT-58621
K2: Private class shadows public function defined in the same package -
KT-59102
K2: constant evaluator does not provide Long type on shl -
KT-59079
«AE: SyntheticAccessorLowering should not attempt to modify other files!» with callable reference to constructor with value class parameter -
KT-58787
KAPT: «NullPointerException: null cannot be cast to non-null type» with delegate -
KT-58837
Partial linkage fails to report any compiler message on Windows when launched through Gradle plugin -
KT-59030
[PL] Workaround for broken@Deprecated
annotations in c-interop KLIBs -
KT-58618
K2: Local property delegates cannot infer generic return type -
KT-58897
K2: False positive unresolved reference with same-named enum class and its entry -
KT-56927
Enum with secondary constructor can’t be compiled with K2 using JS/Native backend -
KT-57570
Remove source code excerpts from platform type nullability assertion exceptions -
KT-52774
Resolve unqualified enum constants based on expected type
IDE. Gradle Integration
-
KT-59034
MPP build failed with «Factory type is not known for plugin variants» in kt-231-*
JavaScript
-
KT-58570
KJS: ES6 classes + PL throw java.lang.NullPointerException -
KT-58835
K2/JS: Fix incremental compilation klib tests -
KT-58794
KJS / K2: Assertion failed with Space build
Libraries
-
KT-58985
Update KClass.isData KDoc -
KT-58276
Deprecate redundant public declarations in kotlin.native.concurrent
Native. ObjC Export
-
KT-58839
K/N: Exception during HiddenFromObjC marked class extension function compiling
Tools. Compiler plugins. Serialization
-
KT-58918
Serialization: NPE at run time obtaining a serializer for a sealed class with a generic self-referencing property -
KT-58954
Serialization: NPE at run time when accessing a delegating property of a deserialized object -
KT-59113
Serialization: NPE at run time when accessing a delegating property of a deserialized object -
KT-57647
Serialization: «IllegalAccessError: Update to static final field» caused by serializable value class
Tools. Gradle
-
KT-59256
[1.9.0-Beta] ServiceLoader does not pick up classes defined in the same project -
KT-58662
Gradle 8.1 + Configuration Cache: custom values data is missing from build report -
KT-59063
Explicit API mode broken in Kotlin 1.9.0-Beta -
KT-59191
Actual compilation failure exception might be hidden in the case of a Kotlin daemon crash -
KT-59056
FreeCompilerArgs options added using ‘subprojects’ extension override module-level freeCompilerArgs options -
KT-55740
Gradle 8: Listener registration using Gradle.addBuildListener() has been deprecated -
KT-58251
Build Statistics. Kotlin-specific tags are missing in build scans if projects use Gradle 8+ -
KT-58916
[1.9.0-Beta] PLUGIN_CLASSPATH_CONFIGURATION_NAME and NATIVE_COMPILER_PLUGIN_CLASSPATH_CONFIGURATION_NAME should stay public or offer an alternative API -
KT-58869
K2, Gradle: Improve message «100% (2/2) tasks have compiled with Kotlin 2»
Tools. Gradle. JS
-
KT-59116
K/JS npm dependcies are not resolved properly on Kotlin 1.9 -
KT-58970
browserTest gradle task fails if karma is used and gradle configuration cache is enabled -
KT-59004
Kotlin JS 1.9.0-Beta, yarn.lock is unstable in multi module project
Tools. Gradle. Multiplatform
-
KT-57903
Prepare for migration to the pluggable android target plugin -
KT-58661
KGP: KotlinJvmTarget: Implement ‘run’ carrier task -
KT-59055
KotlinJvmRun not respecting jvmToolchain setting
Tools. Gradle. Native
-
KT-57823
KotlinNativeCompileOptions.moduleName value is ignored and replaced with the default one if to set up using compilations -
KT-58838
KGP/Multiplatform: 1.9.0-Beta with custom cinterops: IllegalStateException: Could not create domain object ‘jni’ (DefaultCInteropSettings)
Tools. Incremental Compile
-
KT-58986
New IC: ISE «The following LookupSymbols are not yet converted to ProgramSymbols: LookupSymbol(name=$$delegatedProperties, …)»
Tools. Parcelize
-
KT-59112
K2: «IllegalStateException: Function has no body with@Parcelize
» on nested sealed class hierarchies
Checksums
File | Sha256 |
---|---|
kotlin-compiler-1.9.0-RC.zip | d00312caa89de1dd3f62d80d5b31724efc333101616ba4a22caf4458862315e7 |
kotlin-native-linux-x86_64-1.9.0-RC.tar.gz | 2dc30ef2b73bcc561decd5efc7b78b7431cfe2fb982c471baaa6762c5022ce5a |
kotlin-native-macos-x86_64-1.9.0-RC.tar.gz | a4b9b2dbb6793ee6857e3cbdecceb2d972aba1c1055e64bd7cce90fe0c776afc |
kotlin-native-macos-aarch64-1.9.0-RC.tar.gz | 1ca609007c2cbc587b4ce5e689064867ec18a377ce0ca24a777edf8d74cb7df9 |
kotlin-native-windows-x86_64-1.9.0-RC.zip | b3e35851992132fea2608fa6be87f0fda4b613bca2a4417e5dc3bf1509128a2d |
Changelog
Tools. Gradle
-
KT-58280
org.jetbrains.kotlin.jvm Gradle plugin contributes build directories to the test compile classpath
Checksums
File | Sha256 |
---|---|
kotlin-compiler-1.8.22.zip | 91f50fe25c9edfb1e79ae1fe2ede85fa4728f7f4b0587644a4eee40252cdfaa6 |
kotlin-native-linux-x86_64-1.8.22.tar.gz | a1fb41fc010b347d5d9a5449ebb48ad200c59ec2a9121b01db5165db6697e58b |
kotlin-native-macos-x86_64-1.8.22.tar.gz | 0d6e6b12569a4b8ff2f301f827192dd715a29962cc01eed05557aa8e6eb7c20d |
kotlin-native-macos-aarch64-1.8.22.tar.gz | 29805af3220eab3c163ac54f02a6097436d4ddfa83eca7815eb053517093e417 |
kotlin-native-windows-x86_64-1.8.22.zip | 91b04aa9f3dc3d5968c75d8e7f163e542458867915777e995162864cc805b2e5 |
Changelog
Compiler
-
KT-57848
Native: compilation of dynamic/static library fails with Xcode 14.3 -
KT-57875
Native compilation failure: Suspend functions should be lowered out at this point, but FUN LOCAL_FUNCTION_FOR_LAMBDA -
KT-57946
KAPT: «RuntimeException: No type for expression» with delegate
JavaScript
-
KT-57356
KJS: StackOverflowException on@JsExport
with type parameters referring to one another
Tools. Commonizer
-
KT-57796
NoSuchFileException in :module-B:commonizeCInterop with Kotlin 1.8.20
Tools. Compiler plugins. Serialization
-
KT-58067
Serialization: NullPointerException caused by@Contextual
property with type with generic -
KT-57730
Serialization: «IllegalStateException: Serializer for element of type .Foo has not been found» caused by serialization of Java type
Tools. Gradle. JS
-
KT-57766
KJS / Gradle «Module not found: Error: Can’t resolve ‘kotlin-kotlin-stdlib-js-ir'» when using «useEsModules»
Tools. Kapt
-
KT-58027
Kotlin 1.8.20 kapt issue «null: KtCallExpression: build()»
Tools. Maven
-
KT-58048
Maven: «Too many source module declarations found» after upgrading to 1.8.20 -
KT-58101
‘Unable to access class’ in kotlin-maven-plugin after updating to Kotlin 1.8.20
Checksums
File | Sha256 |
---|---|
kotlin-compiler-1.8.21.zip | 6e43c5569ad067492d04d92c28cdf8095673699d81ce460bd7270443297e8fd7 |
kotlin-native-linux-x86_64-1.8.21.tar.gz | 0fc854641dd6d88dce3cc044bb5bc99b9035480474e23541eff03771690c68cf |
kotlin-native-macos-x86_64-1.8.21.tar.gz | e73bfdac0461ee0c84f25e61063c243bf8d4eb8e0ff5da250456d6a23c677fd6 |
kotlin-native-macos-aarch64-1.8.21.tar.gz | 0a97957921ed55458f3e6cc9117643914ccf3663d8ad7eb161a4a03035a7521b |
kotlin-native-windows-x86_64-1.8.21.zip | f23d3288a47ee580f82f862d55452a75074fce3d26fe7e7f55e27b6015226d8d |
Changelog
Compiler
-
KT-57388
Kapt+JVM_IR: «RuntimeException: No type for expression» for delegated property -
KT-57242
Equals behaviour for value classes implementing interfaces is different between 1.8.10 and 1.8.20-RC -
KT-57261
«IllegalArgumentException was thrown at: MemoizedInlineClassReplacements.getSpecializedEqualsMethod» when comparing non-inline class instance with an inline class instance -
KT-56527
K2: «AssertionError: Assertion failed» during compilation in SequentialFilePositionFinder -
KT-57107
Handling of Windows line endings CRLF broken in latest snapshot with K2
Tools. Gradle
-
KT-57296
Build statistics sending errors in case of buildSrc directory usage with kotlin-dsl plugin applied
Tools. Gradle. JS
-
KT-57285
KJS / Gradle / MPP: FileNotFoundException on publishing empty KJS sourceset
Tools. Gradle. Multiplatform
-
KT-57460
Kotlin Gradle Plugin: Nullthis
pointer in transformCommonMainDependenciesMetadata -
KT-57306
[Kotlin 1.8.20-RC] GradleException: Could not load the value of fieldapiConfiguration
oforg.jetbrains.kotlin.gradle.plugin.mpp.compilationImpl.DefaultKotlinCompilationConfigurationsContainer
Checksums
File | Sha256 |
---|---|
kotlin-compiler-1.8.20-RC2.zip | 0db23d86962bece7577c19b76ec6b27611e5c4b7c70e93d71451d289e6a7741b |
kotlin-native-linux-x86_64-1.8.20-RC2.tar.gz | e38429bd0f778689c3953d4c3d5aa67c30fc9c39c0fa4d75463fa645356aa97b |
kotlin-native-macos-x86_64-1.8.20-RC2.tar.gz | 0939c73f2d30b0eaed826d2dd3eb6ce0a4720ccaa48a8fed2b9439b3168273ef |
kotlin-native-macos-aarch64-1.8.20-RC2.tar.gz | 536fb2d6f26d4f9ed351a07c8673fe3c8d669cedc983b6151ef1d36f8bd564b4 |
kotlin-native-windows-x86_64-1.8.20-RC2.zip | 2fd80c2f59125469d17d35a79c7711302875f8dd4a0403d6e0885e678a099ece |
Changelog
Backend. Wasm
-
KT-56584
K/Wasm: Can’t link symbol class
Compiler
Fixes
-
KT-57053
Problem around anonymous objects in inline functions -
KT-56965
K/N: linkDebugFrameworkIosArm64 tasks failing with UnsupportedOperationException: VAR name:disposables type:com.badoo.reaktive.disposable.CompositeDisposable [val] -
KT-56815
compileKotlin task is stuck with while(true) and suspend function -
KT-56258
VerifyError: Bad local variable type when using -Xdebug -
KT-56847
Unresolved reference to Java annotation in Kotlin class with the same name packages -
KT-56526
InvalidProtocolBufferException on reading module metadata compiled by K2 in 1.8.20 -
KT-56500
The type parameter TYPE_PARAMETER name:E index:0 variance: superTypes:[kotlin.Any?] reified:false is not defined in the referenced function FUN LOCAL_FUNCTION_FOR_LAMBDA -
KT-56611
Native: new native caches are broken when KONAN_DATA_DIR is defined to a directory inside ~/.gradle -
KT-56215
JVM: Object extension function nullable receiver null check false negative when object is null -
KT-56033
Restore ‘isMostPreciseContravariantArgument’ function signature for compatibility -
KT-56407
Backend Internal error: Exception during IR lowering during:daemon-common-new:compileKotlin
-
KT-56701
K2 (with LightTree) reports syntax errors without additional information -
KT-56649
K2 uses 0-index for line numbers rather than 1-index -
KT-56521
Static scope initializers sometimes not called when first accessed from interop -
KT-49182
Strange cast from Unit to String -
KT-55125
Difference in generated bytecode for open suspend functions of generic classes
IDE. Gradle. Script
-
KT-56941
Gradle KTS / Navigation: Go to declaration for Java types doesn’t work
JavaScript
-
KT-56602
KJS / Serialization: polymorphicDefaultDeserializer unbound on Kotlin 1.8.20-Beta -
KT-56580
KJS: languageVersionSettings string is unstable -
KT-56581
KJS: Lock file for incremental cache -
KT-56582
KJS: Function type interface reflection crashes the compiler in incremental build -
KT-56469
KJS: BE Incremental rebuild spoils source map comment
Libraries
-
KT-55935
[Kotlin/JVM] Path.copyToRecursively does not work across file systems
Native
-
KT-56443
Native link task reports w: Cached libraries will not be used for optimized compilation
Tools. CLI
-
KT-56789
Metaspace memory leak in CoreJrtFileSystem -
KT-56992
Performance test regression in Gradle when switching to Kotlin 1.8.20 -
KT-56925
Remove warning about assignment plugin -
KT-57077
1.8.20-RC-243
shows Java 19 warnings even if configured with Java 17 toolchain
Tools. Compiler Plugins
-
KT-56487
Add more methods to DescriptorSerializerPlugin
Tools. Compiler plugins. Serialization
-
KT-56738
Unexpected SERIALIZER_NOT_FOUND when compiling against binary with enum -
KT-56990
«AssertionError: SyntheticAccessorLowering should not attempt to modify other files» in kotlinx-serialization using@Serializer
and List argument
Tools. Gradle
-
KT-56221
Gradle KTS: False positiveVal cannot be reassigned
when using an extension and its property with an implicitset
operator -
KT-55452
Values of the compiler arguments set via KotlinCompile task configuration are duplicated by the KaptGenerateStubs task -
KT-56645
Gradle: KGP reports an incorrect resources processing task name for JVM projects -
KT-55565
Consider de-duping or blocking standard addition of freeCompilerArgs to KaptGenerateStubsTask -
KT-56414
Dependency locking and failed builds with Kotlin 1.8.10
Tools. Gradle. JS
-
KT-57068
KJS / Gradle: «Unable to find method ‘kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl.testTask'» after updating to 1.8.20-Beta -
KT-56999
K/JS: KotlinJsIrLink::rootCacheDirectory property must be public -
KT-56765
K/JS: Several binaries use same cache directory -
KT-56488
Debugger won’t stop on breakpoints of JS browser test -
KT-56719
KJS / Gradle: Compile sync task has to sync only changed files
Tools. Gradle. Multiplatform
-
KT-56729
commonizeCInterop: Duplicated libraries: co.touchlab:sqliter-driver-cinterop-sqlite3 -
KT-56510
Import with included plugin build may fail with OverlappingFileLockException during commonizeNativeDistribution
Tools. Kapt
-
KT-56635
KAPT / IR: «Unresolved reference: DaggerGeneratedCodeTest_AppComponent » caused by stub generation with Kotlin 1.8.20-Beta -
KT-56360
Kapt with JVM IR changes fields order
Checksums
File | Sha256 |
---|---|
kotlin-compiler-1.8.20-RC.zip | cd90d3fef3608f8866520c84f4fe729e6733b13cfa18bf93ebb52a2cf3f37b7b |
kotlin-native-linux-x86_64-1.8.20-RC.tar.gz | 35296775617118bc2e703f3e226bbb827885765be7001a9ebcd5cb68783ce323 |
kotlin-native-macos-x86_64-1.8.20-RC.tar.gz | f76faf8063d9d170db2dc5bb1b5d442787b0cf69983aa0605c1da22f31ef33b7 |
kotlin-native-macos-aarch64-1.8.20-RC.tar.gz | 45694d385d09eb0eb075fa08b1bbf5000289120e6de677b71504481010a170a7 |
kotlin-native-windows-x86_64-1.8.20-RC.zip | 9a0ce3887a4fc188b209a3ceff2b9235b2bd5ac965b1259b62ac91b9ea914b0f |
v1.8.20-Beta
8 months ago
Changelog
Analysis API
-
KT-55510
K2: Lost designation for local classes -
KT-55191
AA: add an API to compare symbol pointers -
KT-55487
K2: symbol pointer restoring doesn’t work for static members -
KT-55336
K2 IDE: «java.lang.IllegalStateException: Required value was null.» exception while importing a compiled JPS project -
KT-55098
AA: KtDeclarationRenderer should render a context receivers -
KT-51181
LL API: errors for SAM with suspend function from another module -
KT-50250
Analysis API: Implement Analysis API of KtExpression.isUsedAsExpression -
KT-54360
KtPropertySymbol: support JvmField in javaSetterName and javaGetterName
Analysis API. FIR
-
KT-54311
K2: proper implementation of KtSymbolPointer -
KT-50238
Analysis API: Implement KSymbolPointer for KtSymbol
Analysis API. FIR Low Level API
-
KT-52160
FIR: Substitution overrides on FirValueParameter-s are incorrectly unwrapped -
KT-54826
KtSymbolPointer: migrate from IdSignature to our own solution
Android
-
KT-54464
MPP, Android SSL2: Add a flag for suppressing warning in case of using Android Style folders
Backend. Wasm
-
KT-56160
Getting WebAssembly.CompileError in browsers not supported GC and other required proposals -
KT-56166
Fix compatibility with Firefox Nightly -
KT-55589
Basic support of WASI -
KT-46773
Implement an experimental version of the Kotlin/Wasm compiler backend -
KT-53790
Reading from «node:module» is not handled by plugins error with Kotlin/Wasm 1.7.20-Beta
Compiler
New Features
-
KT-55949
Release experimental@Volatile
support in native -
KT-44698
Frontend (K2): print file name/line on compiler crash/exception -
KT-54666
K2: Allow to skip specifying type arguments for members from raw type scope -
KT-54535
Implement custom equals and hashCode for value classes in Kotlin/JVM -
KT-54524
Implement Java synthetic property references in compiler -
KT-54024
K2: support -Xlink-via-signatures mode
Performance Improvements
-
KT-53330
Optimize for-loops and contains over open-ended ranges with until operator (..<
) for all backends -
KT-48759
Infix compareTo boxes inline classes -
KT-55033
Make org.jetbrains.kotlin.resolve.calls.inference.model.NewConstraintSystemImpl#runTransaction an inline function -
KT-33722
JVM: Result API causes unnecessary boxing
Fixes
-
KT-53153
Synthetic Enum.entries can be shadowed by user-defined declarations -
KT-54140
SOE atIrBasedDescriptorsKt.makeKotlinType
with mixing recursive definitely not nullable type with nullability -
KT-56224
Clarify message «Secondary constructors with bodies are reserved for for future releases» for secondary constructors in value classes with bodies -
KT-54662
K2: Assign operator ambiguity on synthetic property from java -
KT-54507
K2: WrongimplicitModality
for interface inFirHelpers
-
KT-55912
«UnsupportedOperationException: Unsupported const element type kotlin.Any» caused bykotlin
fqn in annotation -
KT-55251
Enum.entries compilation error should be more specific -
KT-43296
FIR: Complicated interaction between smart cast and inference leads to false-positive diagnostic -
KT-55483
K2: Fir is not initialized for FirRegularClassSymbol java/lang/invoke/LambdaMetafactory -
KT-56188
K/N: AssertionError when casting SAM wrapper with generic type parameter -
KT-54209
K2: false positive deprecation on a class literal with deprecated companion -
KT-55408
K2: can’t access indirectly inherited from a package-private class Java members through a type alias -
KT-55116
K2: store static qualifiers in dispatch receiver field -
KT-55436
K1: implement warning about shadowing of the derived property by the base class field -
KT-55368
K2/MPP: Metadata compiler -
KT-53846
K2 / Context receivers: ClassCastException on secondary constructor of class with context receiver -
KT-54305
K1: implement warning «synthetic setter projected out» -
KT-52027
«NullPointerException» when using context receivers with inline fun -
KT-55984
Stack allocated array is not cleaned between loop iterations -
KT-52593
Provide Alpha support for JS in the K2 platform -
KT-54656
NoSuchMethodError on invoking Java constructor which takes an inline value class as a parameter -
KT-55606
K2. Infix operator «in» works on ConcurrentHashMap when it’s declared through another class -
KT-53884
K2: «IllegalStateException: Fir is not initialized for FirRegularClassSymbol com/appodeal/consent/Consent.a» when importing this class -
KT-54502
Synthetic extensions on raw types work differently from regular getter calls -
KT-49351
FIR: Raw type scopes are unsupported -
KT-49345
FIR: Properly support raw types in type parameter upper bounds -
KT-55887
K2. «IllegalStateException: org.jetbrains.kotlin.ir.expressions.impl.IrErrorCallExpressionImpl is not expected» on adding kotlin.plugin.jpa -
KT-55733
K2. Reference resolve works incorrectly for classes declared through typealias -
KT-46369
FIR: Investigate raw types for arrays -
KT-41794
[FIR] Implement raw type based scope -
KT-55181
K2. No compilation error on throwing not throwable -
KT-55398
Kotlin inline nested inline lambda’s inline variable will inline not correctly -
KT-55359
K2. No error when secondary constructor does not delegate to primary one -
KT-55759
K2: Unresolved reference ofserializer
if library linking is used (with kotlinx.serialization plugin) -
KT-54705
Kotlin scripting doesn’t support files with UTF-8 BOM -
KT-51753
FIR: various errors due to expect/actual mapping absence in translator -
KT-44515
FIR DFA: extract non-null info from anonymous object’s initialization -
KT-55018
K2 / serialization: FIR2IR fails on local companion -
KT-55284
Refactor org.jetbrains.kotlin.diagnostics.KtDiagnosticReportContextHelpersKt#reportOn(…) -
KT-55693
K2. Type inference changed in k2 -
KT-54332
Add deprecation warning for false-negative TYPE_MISMATCH for KT-49404 -
KT-55597
K2.This type has a constructor, and thus must be initialized here
error is missed for anonymous object inherits class with no-arg constructor -
KT-52459
Context receivers: AbstractMethodError caused by Interface method with both an extension and a context receiver is overriden incorrectly in subclasses -
KT-54357
«ClassCastException: class org.jetbrains.kotlin.resolve.scopes.receivers.ExtensionReceiver cannot be cast to class org.jetbrains.kotlin.resolve.scopes.receivers.ContextClassReceiver» with anonymous object extending a class with a context receiver -
KT-51397
«VerifyError: Bad type on operand stack» with context receivers -
KT-54905
KLIB check on compiled with pre-release version -
KT-55615
K2 often does not expand type aliases in annotation position -
KT-54522
K2: ambiguity between operator candidates on += (plusAssign) to reassigned var of MutableList type -
KT-54300
K2: No «Projections are not allowed for immediate arguments of a supertype» for projection in supertypes of an anonymous object -
KT-55495
K2: support lateinit intrinsic applicability checker -
KT-33132
Cannot override the equals operator twice (in a class and its subclass) unless omitting the operator keyword in the subclass -
KT-55288
False negative WRONG_ANNOTATION_TARGET on type under a nullability qualifier -
KT-54730
K2: type aliases to generic functional interfaces attempt to re-infer explicitly specified type parameters -
KT-55611
IC / MPP: Optional internal annotations are not visible on incremental builds -
KT-55656
K2: PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED being a warning causes a NPE in runtime -
KT-51277
«NoSuchElementException: Collection contains no element matching the predicate» with context receivers and star projection -
KT-52791
Class with multiple context receivers fails -Xvalidate-ir with «Validation failed in file» -
KT-55071
Shared Native Compilation: Calls from intermediate common source set cannot use default parameters declared in expect common functions -
KT-54573
K2: untouched implicit types in delegated constructor call of data class with@JvmRecord
-
KT-55037
Support jspecify annotations moved to the new package org.jspecify.annotations in jspecify 0.3 -
KT-48989
JVM / IR: «IllegalStateException: Bad exception handler end» when first parameter of inline function is nullable with «try/catch/finally» default value and second parameter tries to call toString() on the first -
KT-55231
K2: Contract declarations are not passed to checkers -
KT-54411
False positive: INFERRED_TYPE_VARIABLE_INTO_POSSIBLE_EMPTY_INTERSECTION on kotlinx.coroutines code -
KT-55005
Inconsistent behavior of array set operation in Kotlin 1.7.21 -
KT-44625
Property backing/delegate field annotations are not serialized/deserialized for non-JVM targets -
KT-42490
Receiver annotations are not serialized/deserialized for non-JVM targets -
KT-53441
K2: cannot access static method of package-private Java grandparent class -
KT-54197
[K2] Exception from inliner for inline function with context receiver -
KT-55246
Disable ‘CustomEqualsInValueClasses’ feature in 1.9 language version -
KT-55247
Disable ‘InlineLateinit’ feature in 1.9 language version -
KT-53957
K2 and -Xlambdas=indy: LambdaConversionException on reference to method with both context and extension receivers -
KT-55421
K2: get rid of potentially redundant call of preCacheBuiltinClassMembers from getIrClassSymbol -
KT-52815
Compiler option -Xjdk-release fails to compile mixed projects -
KT-52236
Different modality in psi and fir -
KT-54921
K2: cannot access static field of package-private Java parent class -
KT-53698
K2: FIR2IR fails on call of inivisble extension function with Suppress -
KT-53920
K2: «NoSuchElementException: Key org.jetbrains.kotlin.fir.resolve.dfa.cfg.ClassExitNode is missing in the map» with unreachable code and anonymous object -
KT-51290
«AssertionError: Parameter indices mismatch at context» with context receivers -
KT-51475
«ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4» with context(Any) on inline function with contract -
KT-51247
«AssertionError: org.jetbrains.kotlin.ir.expressions.impl.IrFunctionReferenceImpl» caused by context receiver functional types -
KT-51951
«IllegalStateException: No receiver» caused by implicit invoke on typealias context receiver -
KT-52373
Context receivers: ClassCastException: function with dispatch, context, and extension receivers produces this when a parameter’s default is included -
KT-54807
K2. Support@OnlyInputTypes
diagnostic checks (contains
like calls) -
KT-54824
K2: missing smartcast after two levels of aliasing and a reassignment -
KT-53368
Out of bounds read in sse version of String::hashCode -
KT-51863
ClassCastException when using context receivers with named argument. -
KT-55123
JvmSerializableLambda is not applicable in common code in multiplatform projects -
KT-45970
Missing deprecation warnings for constant operators calls in property initializers -
KT-54851
K2: analysis of as/is contains multiple errors that result in missing diagnostics -
KT-54668
K2: Inference error in body of lazy property with elvis with Nothing in RHS -
KT-53070
Update intellij testdata fixes for FIR and merge it to master -
KT-54950
NoSuchMethodError on calling ‘addAll’ on inline class implementing mutable list -
KT-53492
No parameter null check generated for constructor taking an inline class type -
KT-55160
Kotlin’s fragment element types must not extendIStubFileElementType
-
KT-55143
K2: INAPPLICABLE_JVM_NAME in JVM does not work for inline classes -
KT-47933
Report warning if kotlin.annotation.Repeatable is used together with java.lang.annotation.Repeatable -
KT-55035
FIR: do not use FirValueParameter for FirFunctionalTypeRef -
KT-55095
Wrong containingDeclarationSymbol in type parameter from Enhancement -
KT-53946
K2: don’t resolve Enum.declaringClass and Enum.getDeclaringClass -
KT-55074
OptIn false negative: constructor call with default argument value -
KT-54260
K2: «AssertionError: No modifier list, but modifier has been found by the analyzer» when annotated annotation and AllOpen plugin -
KT-55034
FIR: provide information about containing function/constructor to FirValueParameter -
KT-53988
K2: False negative «The expression cannot be a selector (occur after a dot)» -
KT-53983
K2 crashes with NPE when ‘this’ is used inside enum class constructor -
KT-53371
Properly resolve FIR to get fully resolved annotations -
KT-53519
FIR: argument mapping for annotations on value parameter is not properly built -
KT-54827
MPP: «java.lang.IndexOutOfBoundsException: Index: 0» during compilation ofandroidMain
target -
KT-54417
K2: move receiver-targeted annotations to KtReceiverParameterSymbol and remove it from FirProperty receiver type -
KT-54762
Private constructor is accessible from a public inline function via@PublishedAPI
annotation -
KT-54732
DirectedGraphCondensationBuilder.paint fails with StackOverflowError during linkReleaseFrameworkIos64 -
KT-54897
K2: value class with private constructor stripped by jvm-abi-gen cannot be used in another module -
KT-54784
NPE from IrSourceCompilerForInlineKt.nonLocalReturnLabel on non-local break and continue in anonymous initializers and in scripts -
KT-54840
Field for const property on interface companion object loses deprecated status when copied to interface -
KT-53825
class files are generated when compilation fails with platform declaration clash -
KT-52157
Annotation on type parameter isn’t present in the symbol loaded from the library -
KT-54654
K2: Implicit types leaks into delegated member -
KT-53255
[FIR2IR] StackOverflowError with long when-expression conditions -
KT-48861
No warning on incorrect usage of array type annotated as Nullable in Java -
KT-54539
@Deprecated
on members of private companion object is no longer needed -
KT-54401
Unhandled exception on compilation inline class with ‘equals’ from ‘Any’ returning ‘Nothing’ -
KT-54455
Unexpected result of equality comparison of inline class objects -
KT-54378
K2: smart cast breaks subtyping in case with complex projections -
KT-53761
Reified type not propagated to supertype token through two inline functions -
KT-53876
Manually instantiated annotations with unsigned arrays are not equal -
KT-51740
NO_VALUE_FOR_PARAMETER: Consider increasing error highlighting range -
KT-54084
ClassCastException when trying to call a context receiver’s method -
KT-51282
IllegalAccessError: Compiler for JVM 1.8+ makes lambdas access unaccessible classes when using@JvmMultifileClasses
-
KT-53479
False positive «Cannot access ‘runCatching’ before superclass constructor has been called» -
KT-50950
JVM IR: «AssertionError: FUN SYNTHETIC_GENERATED_SAM_IMPLEMENTATION» when using bound reference to suspend SAM function -
KT-49364
«VerifyError: Bad type on operand stack» on cast which «can never succeed» from ULong to Int
IDE
Performance Improvements
-
KT-55445
KtUltraLightClassModifierList.hasModifierProperty requires resolve for PsiModifier.PRIVATE
Fixes
-
KT-55862
Can’t resolve kotlin-stdlib-js sources in IDE -
KT-55743
K2 SLC: SymbolLightClassForClassOrObject must have a name -
KT-55604
Descriptor leak -
KT-55502
SLC: drop redundant ‘final’ modifier from synthetic static enum members -
KT-55497
LC: drop@NotNull
annotation from parameter from synthetic Enum.valueOf -
KT-55496
SLC: generated synthetic enum methods by symbols instead of manual creation -
KT-55481
SLC: implement correct java annotations for annotation classes (Retention, Target, etc.) -
KT-55470
SLC: implement light class for RepeatableContainer -
KT-55442
SLC: ‘isInheritor’ for ‘DefaultImpls’ should work correctly -
KT-40609
IDE: False positive «Exception is never thrown…» in Java when Kotlin getter is annotated with Throws -
KT-54051
Migrate symbol light classes from KtSymbol to KtElement
JavaScript
New Features
-
KT-35655
Investigate could we use «names» field in SourceMaps to improve debug experience -
KT-54118
Kotlin/JS IR: keep declarations with non-minified names
Fixes
-
KT-55720
KJS:ReferenceError: SuspendFunction1 is not defined
with 1.8 when importingkotlin.coroutines.SuspendFunction1
-
KT-55930
KJS: A recursive callable reference of the inline function leads broken cross module references -
KT-31888
Kotlin/JS: make possible to callmain()
in main run tasks, but not in test tasks -
KT-51581
FIR: support JS backend -
KT-55786
KJS: Rewriting of secondary constructors if they are protected -
KT-52563
KJS / IR: Invalid TypeScript generated for class extending base class with private constructor -
KT-55367
KJS / IR + IC: Moving an external declaration between different JsModules() doesn’t rebuild the JS code -
KT-55240
KJS: «NoSuchElementException: No element of given type found» caused by@JsExport
andThrowable's
child class -
KT-54398
KJS / IR + IC: Support *.d.ts generation -
KT-55144
KJS / IR + IC: Modifying an inline function which is used as a default param in another inline function doesn’t invalidate a caller -
KT-54134
KJS / IR: «TypeError: Cannot read properties of undefined» in js block wrapped with suspend functions around -
KT-54911
KJS / IR + IC: invalidate all klib dependencies after removing it -
KT-54912
KJS / IR + IC: Commit cache header only in the end (after lowering) -
KT-52677
Native: StackOverFlow during «kotlin.ir.util.RenderIrElementVisitor$renderTypeAnnotations$1.invoke» -
KT-54480
KJS: «Exported declaration contains non-consumable identifier» warning when exporting modules as default -
KT-41294
KJS: Weird behaviour of j2v8 in test infra
Language Design
-
KT-55344
Deprecate@Synchronized
in platforms except JVM
Libraries
-
KT-55978
Provide Common Base64 encoding in stdlib -
KT-46211
[Kotlin/Native] Stack overflow crash in Regex classes with simple pattern and very large input -
KT-31066
Add Closeable & use to common stdlib -
KT-55609
Introduce experimental kotlin.concurrent.Volatile annotation -
KT-39789
Segfault in Kotlin/Native regex interpreter -
KT-35508
EXC_BAD_ACCESS(code=2, address=0x16d8dbff0) crashes on iOS when using a sequence (from map() etc.) -
KT-53310
Native: HashMap/HashSet doesn’t reclaim storage after removing elements
Native
-
KT-55938
[Kotlin/Native] Inline functions accessing ObjC class companion cause compiler to crash when building static caches in 1.8.20 dev build
Native. C and ObjC Import
-
KT-55303
Objective-C import: improve-fmodules
flag discoverability. -
KT-39120
Cinterop tool doesn’t support the -fmodules compiler argument -
KT-40426
Incorrect Objective-C extensions importing that prevents UIKit usage -
KT-55653
Since Kotlin 1.8.0 NSView.resetCursorRects doesn’t exist anymore and cannot override it -
KT-54284
Kotlin/Native: cinterop produces non-deterministic metadata
Native. ObjC Export
-
KT-56350
Kotlin/Native: restore «use Foundation» in generated Objective-C frameworks -
KT-53638
Native: support disabling mangling globally for Swift names in generated Objective-C header -
KT-53069
SOE on K/N framework build for Arm64 -
KT-53317
ObjCName annotation is not applied to an extension receiver in Objective-C export
Native. Stdlib
-
KT-53064
Native: provide stdlib API to obtain memory management statistics
Reflection
-
KT-27585
Flaky IllegalPropertyDelegateAccessException: Cannot obtain the delegate of a non-accessible property. Use «isAccessible = true» to make the property accessible -
KT-55178
Improve performance of KCallable.callBy -
KT-53279
Reflection: «KotlinReflectionInternalError: Method is not supported» caused by@Repeatable
annotation deserialization at runtime if it’s repeated and contains arrays -
KT-44977
Reflection: ClassCastException caused by annotations with «AnnotationTarget.TYPE» usage on array attributes access
Tools. CLI
-
KT-54652
Enable -Xuse-fir-lt by default when -Xuse-k2 is turned on, provide way to disable -
KT-55784
Unable to format compilation errors with ansi colors in compilation server -
KT-54337
CLI: compiling module-info.java without explicitly specified JDK home leads to a weird error
Tools. Commonizer
-
KT-47429
[Commonizer] OKIO support -
KT-51517
C Interop Commonizer Fails On Classifier That Doesn’t Exist
Tools. Compiler Plugins
-
KT-53590
K2 Allopen does not look for transitive meta-annotations -
KT-54020
[K2] [NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER] error in case ‘static Name’ param was added to@ AllArgsConstructor
annotation and an empty list is set as a constructor param value -
KT-53096
Create a pack of compiler utilities for generating declarations from plugins -
KT-55248
K2/PluginAPI: getCallableNamesForClass/generateClassLikeDeclaration are not called for synthetic companions of local classes -
KT-54756
Deprecate «legacy» mode of jvm-abi-gen plugin -
KT-55233
jvm-abi-gen strips out InnerClass attributes -
KT-54500
Private type aliases can be referenced from public declarations, but are stripped by jvm-abi-gen
Tools. Compiler plugins. Serialization
-
KT-49983
Implement prototype of kotlinx.serialization for K2 compiler -
KT-54441
Prohibit implicit serializer customization via companion object -
KT-48733
«AssertionError: Unexpected IR element found during code generation» caused by Serialization and annotation with default parameter -
KT-54297
Regression in serializable classes with star projections
Tools. Gradle
New Features
-
KT-54492
Send gradle build errors from idea -
KT-55540
Add compilation speed metric in build reports -
KT-54691
Kotlin Gradle Plugin libraries alignment platform -
KT-55541
Validate FUS metrics values on Gradle side
Performance Improvements
-
KT-55995
Add ability to perform precise compilation task outputs backup -
KT-54836
Kotlin/JVM Gradle plugin creates task eagerly on Gradle 7.3+ -
KT-54579
Kapt tasks slow down significantly on Windows when running with JDK 17 compared to JDK 11 -
KT-54588
KotlinCompile: Avoid callingFileCollection.getFiles()
multiple times
Fixes
-
KT-52625
Compatibility with Gradle 7.4 release -
KT-55544
Gradle: add more debugging information for finding usages of kotlinOptions.freeCompilerArgs -
KT-52149
Gradle: declare shared build services usages withTask#usesService
-
KT-53811
Compatibility with Gradle 7.6 release -
KT-52998
Compatibility with Gradle 7.5 release -
KT-55741
Gradle 8: Build service ‘‘ is being used by task ‘‘ without the corresponding declaration via ‘Task#usesService’. -
KT-55174
KotlinCompile task produces deprecation «Build service ‘variant_impl_factories_…’ is being used by task» -
KT-54425
Kotlin Gradle Plugin should not use deprecated UsageContext#getUsage() -
KT-54998
«kotlin.gradle.performance» FUS collector reports data twice -
KT-55520
Add required configuration for Kotlin Gradle Plugin API reference publication -
KT-52963
Build report code breaks Gradle project isolation. -
KT-55164
KGP: «Cannot access project ‘:’ from project ‘:list'» JVM — Project Isolation with Multi Modules and Configuration Cache fails -
KT-52490
Gradle: [org.jetbrains.kotlin.gradle.testing.internal] TestReport.destinationDir and TestReport.reportOn deprecation warnings -
KT-55000
Include information about the new IC into «kotlin.gradle.performance» FUS collector -
KT-45748
Migrate all Kotlin Gradle plugin Android tests to new test setup -
KT-54029
Validate Binary Compatibility for kotlin-gradle-plugin-api
Tools. Gradle. Cocoapods
-
KT-41830
CocoaPods integration: Support link-only mode for pods -
KT-55801
Deprecate useLibraries -
KT-55790
Improper sdk selected for watchosDeviceArm64 target
Tools. Gradle. JS
New Features
-
KT-37759
[Gradle, JS] Support arguments of command line for webpack and nodejs task -
KT-33518
Allow specifying command line args for node in nodejs or mocha tests -
KT-46163
KJS / Ktor: Support run on the next free port if default one is occupied
Performance Improvements
-
KT-39108
Kotlin multiplatform plugin targeting js takes too long compared to the old kotlin-frontend plugin -
KT-45411
Investigate memory consumption in npm package -
KT-55476
KotlinWebpack should be cacheable -
KT-51376
KJS / Gradle: Dukat tasks make impact on build time even if there’s no npm dependencies
Fixes
-
KT-56131
KJS / Gradle: Could not create an instance of type org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinNodeJs when task configuration avoidance is broken -
KT-37668
Kotlin/JS: nodeTest failure due to main() function fail is reported as «BUILD SUCCESSFUL» -
KT-35285
Kotlin/JS + Gradle: browserDevelopementWebpack and browserProductionWebpack could write to different locations -
KT-55593
KotlinJsCompilerType and KotlinJsCompilerTypeHolder LEGACY and BOTH constants should be marked as@Deprecated
in 1.8 -
KT-33291
JS: No build result with gradle parallel build in multiproject build -
KT-40925
KJS: need a way to configure extra environment variables for the test task -
KT-47236
KJS:kotlinNpmInstall
fails if no yarn is downloaded -
KT-53288
KJS / Gradle: FileNotFoundException when customising moduleName -
KT-54445
KJS Remove dukat integration -
KT-54421
KJS / Legacy: Kotlin 1.7.20 fails when running tests on Node 14 -
KT-54418
KJS: Change test running with kotlin-test adapter -
KT-54132
KJS IR: Sometimes karma failed on teamcity because of uninitialized browser
Tools. Gradle. Multiplatform
New Features
-
KT-53570
multiplatform ‘natural hierarchy’ prototype
Fixes
-
KT-55873
Unrequested dependencies leaking into common source sets: Regression after 703fd0f2 -
KT-55891
Deprecate pre-HMPP flags -
KT-56285
TCS: Gradle Sync: IdeProjectToProjectCInteropDependencyResolver: Ensure lenient resolution -
KT-56115
Multiplatform;Composite Builds: Support import with cinterop commonization enabled -
KT-56204
KotlinTargetHierarchy: Changing naming from ‘any’ to ‘with’ prefix -
KT-54974
TCS: Gradle Sync: Implement IdeKotlinDependencyResolvers -
KT-38712
Gradle configuration’s name with word «implementation» is camelcased to «İmplementation» if default locale is Turkish -
KT-54975
TCS: Gradle Sync: Implement stdlib-common filter for platform source sets -
KT-36943
Gradle Plugin (multiplatform) — Consider publishing a ‘sourcesElements’ variant for the sources.jar -
KT-48839
Sources.jar of the root artifact of MPP library includes source files from test sourcesets -
KT-55492
TCS: Gradle Sync: Sources and Documentation as extra ‘classpath’ -
KT-55237
TCS: Gradle Sync: Support stdlib-native sources -
KT-55475
TCS: Gradle Sync: Fine tune jvmAndAndroid source sets -
KT-55189
TCS: Gradle Sync: Support icons (native, js) and global libraries -
KT-55218
KotlinTargetHierarchy: Disambiguate declaring targets vs including targets -
KT-55112
TCS: Gradle Sync: Resolve Source Dependencies -
KT-54977
TCS: Gradle Sync: Implement debugging tools -
KT-54948
TCS: Gradle Sync: Port IdeaKpmPlatformDependencyResolver to TCS -
KT-55289
TCS: Gradle Sync: Prototypical sources jar resolution -
KT-55238
TCS: Gradle Sync: Support commonized native distribution -
KT-55230
Remove metadata dependencies transformation for runtimeOnly scope -
KT-53338
Prettify the message about incompatible AGP and KGP versions -
KT-54506
Test tasks are considered up-to-date after a failure when triggered byallTests
-
KT-54787
Test tasks are not up-to-date when an individual test task called after aggregating test task -
KT-54033
Multiplatform/Android Source Set Layout 1: Also support setting source dirs using AGP Apis -
KT-54202
CInterop Commonization fails on first run when native distribution is not yet commonizied -
KT-54135
Add documentation with examples to CompositeMetadataArtifact
Tools. Gradle. Native
-
KT-55650
Pass through errors from Gradle to Xcode -
KT-56205
Shared Native Compilation: False positive ‘w: Could not find’ warnings on metadata klibs -
KT-54969
Support podspec generation for the new K/N artifact DSL
Tools. Incremental Compile
-
KT-53832
Enable new incremental compilation by default in Gradle -
KT-55309
IC: Get rid ofNonCachingLazyStorage
-
KT-53402
Incremental compilation tries to compile resources
Tools. JPS
-
KT-56165
Language version 1.9 and 2.0 is absent in Kotlin Compiler settings -
KT-51536
[JPS] Recompile module on facet settings change -
KT-53735
JPS / IC: «IOException: The system cannot find the file specified» on Windows -
KT-47983
[JPS] Adding compilerSettings to Facet should initiate rebuild of module -
KT-54449
Cyrillic characters in a filename break builds on linux
Tools. Kapt
New Features
-
KT-53135
Enable JVM IR for KAPT stub generation by default -
KT-41129
kotlin-maven-plugin + kapt — allow aptMode to be set according to docs
Fixes
-
KT-54380
Kapt / IR: Build failed when inheritance by functional interface with suspend modifier -
KT-55490
Kapt + JVM IR: «annotation@Foo
is missing default values» -
KT-43786
KAPT: IllegalStateException: SimpleTypeImpl should not be created for error type: ErrorScope -
KT-43117
Kapt: «System is already defined in this compilation unit» -
KT-46966
Kapt: correctErrorTypes: receiver type is NonExistentClass -
KT-46965
Kapt: correctErrorTypes: custom setter gets Object parameter type -
KT-51087
KAPT:@JvmRepeatable
annotations are present in inverse order in KAPT stubs -
KT-54245
JVM IR / Kapt / Serialization: NullPointerException in SerializableIrGenerator.kt -
KT-54870
KAPT stub generation with JVM_IR backend throws exception for delegated properties -
KT-44350
Kapt Gradle integration tests failing with Android Gradle plugin 7.0 -
KT-33847
Kapt does not included Filer-generated class files on compilation classpath -
KT-54030
Kapt: annotation processor warnings are displayed as errors on JDK 17+ -
KT-32596
kapt replaces class generated by annotation processor with error.NonExistentClass when the class is used as an annotation -
KT-37586
KAPT: When delegated property use an unknown type (to-be-generated class),correctTypeError
will mess up the$delegate
field type
Tools. Maven
-
KT-29346
Add components.xml to automatically compile kotlin maven projects -
KT-13995
Maven: Kotlin compiler plugin should respect model’s compile source roots -
KT-54822
Maven: Too low-level error message «Parameter specified as non-null is null: method kotlin.text.StringsKt__StringsJVMKt.startsWith, parameter » from Kotlin Maven plugin invoking compiler when tags are empty -
KT-47110
Disable jdk8-specific warnings in kotlin-maven-plugin
Tools. Scripts
-
KT-54461
Warnings and stack traces when executing scripts via kotlin-maven-plugin -
KT-54733
Scripts: ConcurrentModificationException in *.main.kts scripts -
KT-53283
Scripts: main-kts JAR does not relocate embedded SLF4J and jsoup libraries -
KT-54095
It is difficult (if not impossible) to use kotlin compiler plugins with scripting
Checksums
File | Sha256 |
---|---|
kotlin-compiler-1.8.20-Beta.zip | ed487b3555967bb09ca46c1ccd2fca8d6ce8a813fcbd7ab31c74887a5826370a |
kotlin-native-linux-x86_64-1.8.20-Beta.tar.gz | 388df4048fa53d1137ce7ca1036d049061b6b7a5111f450dfbc6680d8bca30ed |
kotlin-native-macos-x86_64-1.8.20-Beta.tar.gz | b6856aeecf104c92dfedf23a603477e45711e064db10174cf863b94d0cff92e5 |
kotlin-native-macos-aarch64-1.8.20-Beta.tar.gz | eb8001fb8bf10ff599b749cf17761e4fe737b898b08bbbde07e03c082de6e856 |
kotlin-native-windows-x86_64-1.8.20-Beta.zip | f7d8f466f142ea0c4ca4692353d09efa1e86689e12906f27ddf604675feb188b |
Changelog
Compiler
-
KT-55483
K2: Fir is not initialized for FirRegularClassSymbol java/lang/invoke/LambdaMetafactory -
KT-55729
«None of the following functions can be called with the arguments supplied:» in 1.8.0 -
KT-55769
«ERROR: Could not find accessor»: Android DataBinding fails with Kotlin 1.8.0 -
KT-55308
InnerClass attributes should be sorted (innermost last)
JavaScript
-
KT-56282
KJS: Invalidate incremental cache in case of compiler internal errors -
KT-55852
JS: «IllegalStateException: Unexpected ir type argument» caused by List with star projection type -
KT-55716
KJS / IC: «Cannot read properties of undefined» with overriding variables with 1.8.0 -
KT-55758
KJS / IR: Checking implemented interface on a class implementing a @JsExport interface returns the wrong result
Reflection
-
KT-56093
Metaspace leak in a Gradle plugin built with Kotlin 1.8.0
Tools. Compiler plugins. Serialization
-
KT-56347
[Kotlin 1.8] Regression kotlinx.serialization compiler plugin internal error -
KT-55681
Serialization: NullPointerException after update to 1.8.0 caused by@Serializer(forClass= ..)
-
KT-56244
kotlinx.serialization compiler intrinsic does not work with encodeToString function in 1.8.0 -
KT-55683
Serialization: «IllegalStateException: Expected to have a primary constructor» with expect class and companion object -
KT-55682
Serialization: «IllegalStateException: Function has no body: FUN name:serializer» with 1.8.0
Tools. Gradle
-
KT-55697
KGP 1.8.0 adds compileOnly dependencies to unit test compile classpath
Tools. Gradle. Multiplatform
-
KT-55730
MPP / Gradle: compileKotlinMetadata fails to resolve symbols in additional source sets
Tools. Gradle. Native
-
KT-56280
Gradle: freeCompilerArgs are no longer propagated from compilations to Native binaries
Tools. Kapt
-
KT-48013
Kapt generates illegal stubs for private interface methods
Checksums
File | Sha256 |
---|---|
kotlin-compiler-1.8.10.zip | 4c3fa7bc1bb9ef3058a2319d8bcc3b7196079f88e92fdcd8d304a46f4b6b5787 |
kotlin-native-linux-x86_64-1.8.10.tar.gz | 4c5c8a82a63a3a9845be2514d536ca407340db7fc558b97c43ed003f866a9742 |
kotlin-native-macos-x86_64-1.8.10.tar.gz | 52ea7cf2dfaae058fc00fc4e00ec89fefe5a7e4c83abeadb7531cc9346ff18db |
kotlin-native-macos-aarch64-1.8.10.tar.gz | 08cef514e9d582b0e7bcf3f592dd853270b535a4b765555db97381aeb8c92a85 |
kotlin-native-windows-x86_64-1.8.10.zip | e8b9a04f0df3cdec6fa360a6781723fc8551e93c70dfd1aaffbd282b7cddc19d |
Last updated on August 30, 2023
Kotlin is a cross-platform statistically-typed programming language that runs on the JVM. It helps to reduce the time spent writing and maintaining the same code for different platforms while retaining the flexibility and benefits of native programming.
The fact that it is statistically-typed means that variable types are known at compile time. The types are solved during compilation. If you’re looking to create Android and iOS applications or libraries targeting JVM, JavaScript, and other platforms, give Kotlin a try.
Follow the instructions below and I’ll show you how to download and install Kotlin on your PC for free.
Note that Kotlin requires Java to run. So, the first thing you want to do is to download and install Java on your PC.
Secondly, you need to set the environment variables for Java. To do this, copy the path to your Java JDK folder for binaries (C:\Program Files\Java\jdk-19\bin) and add it to your environment variables.
- Click on the download button on the sidebar to go directly to the Kotlin download page.
- Click the “Get Started” button to proceed.
- On the next page, go to the left pane and navigate to Tools>Compiler>Command-line compiler.
- Click on the “GitHub Releases” button as shown above. Scroll to the bottom of the page, under Assets, click on the link for the latest version of Kotlin compiler for your preferred OS and wait for the download to complete.
- Go to your download folder and extract the zip file into a new folder. Move the extracted folder to your local disk.
- Next, you need to set the environment variable for Kotlin. To do this, go to the Kotlin folder and copy the path to the bin folder (C:\kotlin-compiler-1.7.20\0kotlinc\bin). Go to your Windows search button and type “ENV”, then click Enter.
Select Path under “System Variables”, then click on New to paste the bin path you copied earlier. Click OK to exit the window. Now that the Kotlin environment variable has been set, you’re ready to use the Kotlin Command-line to create and run applications.
To confirm that Kotlin has been installed, open Command Prompt and run “Kotlin -version”. If you have a similar result as shown below, then you can be sure that Kotlin has been installed successfully. Note that the version here is the latest Kotlin release as of the time of creating this guide.
You do not necessarily need to install the command-line compiler before you can start using Kotlin. You can also write Kotlin applications using an IDE, such as IntelliJ IDEA or Android Studio. They offer full Kotlin support.
How to uninstall Kotlin from your PC
If you are no longer interested in using Kotlin, you basically have to undo all that you did during the installation process above. Follow the simple instructions below and I’ll show you how to remove the application from your computer:
- Go to your local disk and delete the Kotlin folder.
- Also open Environment Variables again and delete the bin path you added under Path in System Variables.
- Once you’ve completed the two steps above, you can go back to Command Prompt to confirm if Kotlin is still installed by running “Kotlin -version”. The message below tells you that Kotlin has been removed.
If you would like to try other similar programming languages, check out the free alternatives below.
Kotlin is a modern open-source and statistically typed programming language commonly used by Android developers. It is designed to boost productivity and code safety. Kotlin supports multiplatform programming and specifically targets JVM, Android, JavaScript, and Native. Compared to the Java programming language, Kotlin is known to drastically cut down the number of lines of code to about 40%.
Kotlin is also 100% compatible with the Java programming language. Kotlin can be used for any kind of development, including server-side apps, client-side with JavaScript or JavaFX, and Android development. Kotlin is also very beneficial for web and desktop development. It is fully supported by IDEs like IntelliJ IDEA and Android Studio. Generally, the features of Kotlin indicate that it is inspired by prior languages like Java, C#, Groovy, and Scala.
Features of Kotlin
Multiplatform Programming
Kotlin’s endorsement of multiplatform programming stands out as a key feature that greatly benefits developers. This capability effectively minimizes the effort and resources required to create and manage identical code across diverse platforms, while also preserving the adaptability and advantages of native programming.
Open-objected and Functional Construct
While Kotlin is open-source, it has both object-oriented and functional constructs, meaning that you can use it in either styles or mixed together. These features make Kotlin a great choice for functional programming.
Less Lines of Code
Compared to the Java programming language, Kotlin brings about a roughly 40% cut in the number of lines of code. It is type-safe, making your apps less prone to NullPointerExceptions (NPE’s). You can also use Kotlin to write expressive codes, based on features like extension function, lambdas, and high-order functions.
Interoperable with Java
Kotlin is highly interoperable with the Java language, such that your existing codebase (Spring Boot, vert.x, or JSF) can interact well with Kotlin. Adoption is, therefore, less risky, and easier.
Useful for Multiple Developments
Kotlin is ideal for development projects of virtually any type. This includes mobile and server-side applications, client-side developments, and web and android development. In fact, Kolin is supported as a first-class language on Android.
Desktop and Web Development
For desktop development, Kotlin is compatible with Java UI frameworks, such as JavaFx, Swing, and Kotlin-specific frameworks like Tornado. Kotlin also works for backend web and client-side development. The language even supports native app development. This compiles Kotlin to native code that runs without a virtual machine.
Accessible via IDEs
IntelliJ IDEA and Android Studio are two IDEs that provide complete support for Kotlin. So without the Command-line compiler option, you can run Kotlin through these environments. It is also supported by other IDEs and source code editors like Eclipse, Visual Studio Code, and Atom. Also, build tools like Gradle, Maven, and Ant support Kotlin.
Flutter: Flutter is an open-source UI SDK designed to enable developers to build cross-platform apps for Android, iOS, Linux, macOS, Windows, Google Fuchsia, and the web using a single codebase. Flutter runs on the Dart platform, which is an open-source, client-side programming language for app development.
Swift: The Apple Swift programming language is designed for developers building applications for iOS, iPadOS, macOS, tvOS, and watchOS. Swift makes it flexible for you to write code in Applescript, C, C++, Objective-C, Objective-C++, Java, Python, React.js, and Ruby.
Groovy: Groovy is a Java-syntax-compatible, multifaceted, and object-oriented programming language for the Java platform. It is both an open-source language and comes with features similar to those of Python and Ruby.
Is Kotlin free?
Yes, Kotlin is free! Its source code is on GitHub. Follow the guide above and I’ll show you how to download and install Kotlin for free on your computer.
Is Kotlin secure?
Yes, Kotlin is secure. Compared to a universal programming language like Java, Kotlin is generally considered more secure and preferred in terms of compatibility, syntax, data classes, functional programming, and type preference. Kotlin’s security also prevents NPE through a Null safe technology. You can safely download and install Kotlin from the official website. This way, you avoid exposure to viruses and malware.
What is Kotlin best suited for?
You can use Kotlin for different kinds of app development projects, such as android, web, desktop, server-side, and client-side, to name a few.
Download Kotlin now!
It is an open-source, statically typed programming language supported and developed by JetBrains and open-source contributors. Support for multiplatform programming is one of Kotlin’s key benefits. It reduces time spent writing and maintaining the same code for different platforms while retaining the flexibility and benefits of native programming. Kotlin plugin is intended to work with several recent versions of IntelliJ IDEA and Android Studio. Each platform is allowed to have a different set of features and might provide a slightly different API. Instead of using several parallel Git branches, the project stores everything in a single branch, but files may have counterparts with version extensions (*.as32, *.172, *.181). The primary file is expected to be replaced with its counterpart when targeting a non-default platform.
Features
- Modern, concise and safe programming language
- Easy to pick up, so you can create powerful applications immediately
- Compatible with the Java ecosystem
- A productive way to write server‑side applications
- Use your favorite JVM frameworks and libraries
- Natural way to share code between mobile platforms
Project Samples
License
Apache License V2.0
Deploy secure Home Office in a minimum of time with the Remote Work solution: a unique kind of Remote Access to allow your employees to connect and work directly on their office workstations without leaving the safety of their home.