Kotlin 1.9.20-Beta2
Changelog
Backend. Wasm
KT-59720K/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@AllowDifferentMembersInActualusedKT-61668Put expect/actual diagnostics introduced in 1.9.20 release under 1.9 Language VersionKT-61645K2/KMP: Set stdlib-native before stdlib-commonMain in dependencies for shared native metadata compilationKT-61924Native: problem with abstract fake override from AnyKT-61725KMP: Annotation matching requirement for expect/actual leads to errors for annotations with@OptionalExpectationKT-61784KMP: [DEFAULT_ARGUMENTS_IN_EXPECT_WITH_ACTUAL_TYPEALIAS] checker missed for companion functionsKT-61167Runtime failure: ReferenceError: MyPromise is not definedKT-59094K2: Fix Scripting K2 tests
IDE. Navigation
KT-61894Navigation from java sources leads to Kotlin decompiled code in case of suspend function
Native. C and ObjC Import
KT-56369Hint about «-fmodules» is not shown
Tools. Compiler Plugin API
KT-61872K2: Adding annotations to metadata from backend plugin doesn’t work in the presence of comments on annotated declarationKT-61833K2: annotations added viaaddMetadataVisibleAnnotationsToElementto declarations from common sourceset in MPP project are invisible
Tools. Gradle
KT-61401The reported language version value for KotlinNativeLink tasks in build reports and build scans is inaccurateKT-61950K/Wasm: Add warning about changed sourceSetsKT-61895KotlinTopLevelExtension.useCompilerVersion is not marked as experimental
Tools. Gradle. Multiplatform
KT-59042«Cannot build ‘KotlinProjectStructureMetadata’ during project configuration phase» when configuration cache enabledKT-61652MPP ConcurrentModificationException on transformCommonMainDependenciesMetadataKT-61622Upgrading to Kotlin 1.9 prevents commonMain sourceset classes from being processed by kapt/ksp (dagger/Hilt)
Tools. Gradle. Native
KT-61700Native: linkDebugExecutableNative has duplicated freeCompilerArgs
Tools. Wasm
KT-61971K/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-58834Analysis API: Add source shadowing feature to resolve extensions
Performance Improvements
KT-57515LL FIR: Performance bottleneck inCompositeModificationTracker.getModificationCountKT-59266K2: optimize FirElementBuilder.getOrBuildFir for elements outside bodyKT-59454K2: drop resolve from org.jetbrains.kotlin.analysis.api.fir.components.KtFirVisibilityChecker#collectContainingDeclarationsKT-59453K2: completion regression from org.jetbrains.kotlin.analysis.api.fir.components.KtFirVisibilityChecker#collectContainingDeclarationsKT-59189Analysis API: KtFirKDocReference.resolveToSymbols is slowKT-58125K2: LL FIR:KtToFirMapping.getElementis slow forKtUserTypes due to on-air resolution of types
Fixes
KT-60940K2: Analysis API: Reference shortener incorrectly handles types in vararg parameters declarationsKT-61026K2 Scripts: FirLazyExpression should be calculated before accessing from on-air resolveKT-61009K2 Scripts: KtFirExpressionTypeProvider: Expected FirResolvedTypeRef with ConeKotlinType but was FirImplicitTypeRefImplWithoutSourceKT-60357K2 IDE. Reified types parameters are not resolved in a function bodyKT-60954K2: Analysis API: Reference shortener does not work correctly with variable assignmentsKT-60317K2 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-60728K2: proper support for scripts in LL FIR transformersKT-60706K2 IDE: FirJvmTypeMapper is not found for kotlin.kotlin-stdlib-commonKT-57743K2 IDE: StackOverflowError from LLFirSessionCache for simple JPS project with cyclic dependenciesKT-60552K2: merge StateKeeper and lazy body calculator for ANNOTATIONS_ARGUMENTS_MAPPING transformerKT-60641Analysis API: Scope for class org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl not found exception when stdlib is missingKT-60586K2: forbid analyze from write actionKT-60638K2: Expected FirResolvedTypeRef with ConeKotlinType but was FirImplicitTypeRefImplWithoutSourceKT-54846Analysis API: add isExpect/isActual to KtSymbolKT-59077KtFirExpressionTypeProvider behaviour for KtSimpleNameReferences in function callsKT-60448FirLazyResolveContractViolationException:lazyResolveToPhase(COMPILER_REQUIRED_ANNOTATIONS)cannot be called from a transformer with a phase COMPILER_REQUIRED_ANNOTATIONS from AllOpen pluginKT-59342K2 IDE. FirLazyResolveContractViolationException:lazyResolveToPhase(TYPES)cannot be called from a transformer with a phase TYPESKT-59687K2: Implement proper body update for in-block modificationsKT-60488Analysis API: forbid providing custom KtLifetimeToken for every analyze callKT-59329Resolve Extensions reference resolution breaks Find UsagesKT-60295K2: move checkIsResolved for annotations from LLFirAnnotationArgumentsLazyResolver to LLFirTypeLazyResolverKT-59758K2: Expected is FirResolvedTypeRef, but was FirImplicitTypeRefImplWithoutSource from ReturnTypeCalculatorWithJumpKT-60377K2 IDE: This method will only work on compiled declarations, but this declaration is not compiledKT-59685K2: rewrite on-air resolutionKT-59159K2 IDE: declaration is not found exceptionKT-59297K2: exception from body resolve leads to corrupted state and broken analysisKT-60132K2: properties and functions without a name should be re-analyzable as wellKT-59199K2 IDE: PSI changes which do not cause OOB modifications can be unseen from the FIR elementsKT-59667Analysis API: PsiInvalidElementAccessException from JavaClassifierTypeImpl.substitutorKT-59705KotlinExceptionWithAttachments: No fir element was found for getterKT-59697AA standalone: JRT module paths are not properly populated in WindowsKT-59505K2: implicit type lazy resolution doesn’t work for delegated declaration from other moduleKT-56426K2 IDE: Typealised functional types cannot be renderedKT-59598AA: stackoverflow while simplifying a type with a recursive type parameterKT-58497K2: Expected FirResolvedTypeRef for initializer type of FirPropertyImpl(Source) but FirImplicitTypeRefImplWithoutSource foundKT-59511AA standalone mode creates Application Environment for testsKT-58161Analysis API: Make methods inKtCallResolverMixInmore distinctive based on their receiver/return typeKT-59093Do not throw exception on KtCall resolution,KtCallElement.resolveCallshould returnnullon unknown casesKT-59240K2: FirLazyResolveContractViolationException:lazyResolveToPhase(IMPORTS)cannot be called from a transformer with a phase IMPORTS from superTypesKT-59243K2: FirLazyResolveContractViolationException:lazyResolveToPhase(IMPORTS)cannot be called from a transformer with a phase IMPORTS from permits typesKT-58194K2: Low Level API: use smart pointers to store references to PSI from FIR declarations for JavaElementKT-59133K2: java.lang.IllegalStateException: Fir is not initialized for FirRegularClassSymbolKT-58174K2: LL FIR: Invalid type reference for T & Any typeKT-52615LL FIR: build RAW FIR only by stubsKT-55053K2: Exception «lateinit property diagnostic has not been initialized» in FirBuilderKT-58580K2: LL FIR: Declarations provided by resolve extensions from a dependency module are not visible throughLLFirCombinedKotlinSymbolProviderKT-58992Analysis API: move org.jetbrains.kotlin.analysis.api.fir.utils.addImportToFile out of Analysis APIKT-58727K2: AA FIR: implicit type in delegated function treated as errorKT-58653K2: Analysis API: add functions for KtScope members access by nameKT-57559K2 IDE: KotlinExceptionWithAttachments: Modules are inconsistent on intellij projectKT-58262Analysis API: Declarations from Analysis API Resolve Extensions are not seen from completionKT-57455LL FIR: CombineAbstractFirDeserializedSymbolProviders in session dependencies (optimization)KT-57207LL FIR: CombineJavaSymbolProviders in session dependencies (optimization)KT-58546K2: LL FIR: support name collision in a designation pathKT-58495K2: Lazy calculation is redundantKT-58500K2: null cannot be cast to non-null type org.jetbrains.kotlin.fir.FirPureAbstractElementKT-58493K2: Expected FirResolvedTypeRef for default value type of FirValueParameterImpl(Source) but FirUserTypeRefImpl foundKT-58496K2: Expected FirNamedReference, FirErrorNamedReference or FirFromMissingDependenciesNamedReference, b…
Kotlin 1.9.10
Changelog
Compiler
KT-60769Partially revert KT-58371KT-60659Incorrect ‘unresolved reference: addFirst’ error with JDK 21KT-60371Native custom allocator link errorKT-60986Native: static caches with custom runtime options are broken on LinuxKT-60770Fix false-positive ABSTRACT_MEMBER_NOT_IMPLEMENTED on toArray with JDK 21KT-60231NoClassDefFoundError: $$$$$NON_LOCAL_RETURN$$$$$ after upgrade to Kotlin 1.9.0
JavaScript
KT-60785KJS: Destructured value class in suspend function fails with Uncaught TypeError: can’t convert to primitive type errorKT-60852Kotlin JS(IR): IllegalArgumentException: Cross module dependency resolution failed when updating to Kotlin 1.9.0KT-57509KJS: Compiler generates native JS operator == for comparing values with Any type
Native
KT-60230Native: «unknown options: -ios_simulator_version_min -sdk_version» with Xcode 15 beta 3KT-60758Native: Building for ‘iOS-simulator’, but linking in dylib built for ‘iOS’ in Xcode 15 beta 4
Native. C and ObjC Import
KT-59167Native: cinterop is unable to build interop libraries against the Xcode 15 Beta 1
Tools. Gradle
KT-61147Kotlin Compiler 1.9.0 bundles a stripped unshadowed version of GsonKT-60543NoClassDefFoundError 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-57930Analysis API: provide an API for extending Kotlin resolutionKT-57636K2: Add the return type of K2 reference shortener AAShortenCommand::invokeShortening()e.g.,ShorteningResultInfoto allow callers to access the shortening result PSI
Fixes
KT-58249Analysis API: Disable error logging for FE10 implementation of resolveCall when resolve is not successfulKT-55626Impossible to restore symbol by psi from script fileKT-57314LL FIR: CombineLLFirProvider$SymbolProviders in session dependencies (optimization)KT-55527K2 IDE: Rewrite KtScopeContext class to allow to handle each scope separatelyKT-55329LL FIR: Unexpected ACTUAL_WITHOUT_EXPECT error on constructor and function declarationKT-50732LL API: fix compiler based testsKT-57850K2: contract violation due to SymbolLightAccessorMethod.propertyAccessorSymbolKT-56543LL FIR: rework lazy transformers so transformers modify only declarations they suppose toKT-56721K2: FirExtensionDeclarationsSymbolProvider: java.lang.IllegalStateException: Recursive updateKT-50253Analysis API: Solve issues with ProcessCancelledExceptionKT-56800K2 IDE: optimize deprecation calculation for symbolsKT-55006Analysis API does not transform Java type refs for callable symbol return typesKT-57256AA FIR: Reduce lazy resolve phase for deprecation statusKT-57619K2: CFG for class initializer is not correctly built in reversed resolve modeKT-58141K2: AA FIR: impossible to restore symbol for declaration with annotation with argument inside typeKT-57462Symbol Light Classes: SymbolLightFieldForProperty should retrieve annotations not from KtPropertySymbol, but from the corresponding backing fieldKT-54864Analysis API: add function to get expect KtSymbol list by actual KtSymbolKT-56763Analysis API:.KtSourceModuleImpl is missing in the map.on symbol restore when symbol cannot be seen from the use-site moduleKT-56617Analysis API: optimize KtFirSymbolProviderByJavaPsi.getNamedClassSymbolKT-54430K2: .getAllOverriddenSymbols() returns invalid results
Backend. Native. Debug
KT-55440Kotlin/Native debugger: inline function parameters are not visible during debugging
Backend. Wasm
KT-58293Wasm: ReferenceError: e is not defined in kotlin.test.jsThrowKT-58931Wasm tests are failing to start on Kotlin 1.9.0-BetaKT-58188Restore binary compatibility of PlatformDiagnosticSuppressor.shouldReportUnusedParameterKT-57136K/Wasm: Restrict non-external types in JS interopKT-57060Clarify the lack of support for dynamic in Kotlin/WasmKT-56955K/Wasm: Support restricted version of K/JSjs(code)KT-57276Wasm: «Body not found for function» error when compiling konform library with Kotlin/Wasm supportKT-56976K/Wasm bug with calling override of external function with default parameters
Compiler
New Features
KT-55333Allow secondary constructors in value classes with bodiesKT-54944@Volatilesupport in nativeKT-54746Deprecate with ERROR JvmDefault annotation and old -Xjvm-default modesKT-47902Do not propagate method deprecation through overridesKT-29378K2: rework warnings/errors for equality/identity operators on incompatible typesKT-57477False-positive overload resolution ambiguity in case of lambda without argumentsKT-57010Kotlin/Native: make it possible to compile bitcode in a separate compiler invocationKT-55691K2: Avoid inferring Nothing? in presence of other constraints (beside type parameter bounds)KT-46288Unexpected behavior of extension function on lambda with suspend receiverKT-24779Inconsistent smart cast behavior for bound data flow values
Performance Improvements
KT-23397Optimize out field for property delegate when it’s safe (JVM)KT-56906FIR: Use cached instance of FirImplicitTypeRefImpl in FIR buildersKT-56276LanguageVersion.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-55217K2: support callable reference conversions on top-level expressionsKT-57232K2: build Space JVM (master)KT-59079«AE: SyntheticAccessorLowering should not attempt to modify other files!» with callable reference to constructor with value class parameterKT-58837Partial linkage fails to report any compiler message on Windows when launched through Gradle pluginKT-57602K2: Rework member scope of types having projection arguments for covariant parametersKT-55171Put new contracts syntax under a feature flagKT-58719K2: false-positive INVISIBLE_REFERENCE error in case of importing an internal abstract classKT-56030[K2/N] Support Objective-C overloading by param names onlyKT-57510K2: Data class equals/hashCode/toString methods are not written to Klib metadataKT-56331K2: compiler backend crash on usage of expected function with default argumentsKT-53846K2 / Context receivers: ClassCastException on secondary constructor of class with context receiverKT-58621K2: Private class shadows public function defined in the same packageKT-59102K2: constant evaluator does not provide Long type on shlKT-59066[K2] delegation leads to «IllegalStateException: Expected some types»KT-56074K2: build Space JVM (snapshot 2022.3)KT-58787KAPT: «NullPointerException: null cannot be cast to non-null type» with delegateKT-57022K2 IllegalStateException in signature computationKT-56792K2: build kotlinpoetKT-57373K2: FIR properties synthesized when implementing interface by delegation don’t have accessorsKT-56583K1: Implement opt-in for integer cinterop conversionsKT-59030[PL] Workaround for broken@Deprecatedannotations in c-interop KLIBsKT-58618K2: Local property delegates cannot infer generic return typeKT-36770Prohibit unsafe calls with expected@NotNullT and given Kotlin generic parameter with nullable boundKT-56739K2: build Space iOSKT-57131K2: stdlib test compilation fails on ListTest.kt in FirJvmMangleComputerKT-58137K2: ISE «Usage of default value argument for this annotation is not yet possible» when instan…
Kotlin 1.9.0-RC
Changelog
Backend. Wasm
KT-58188Restore binary compatibility of PlatformDiagnosticSuppressor.shouldReportUnusedParameterKT-58293Wasm: ReferenceError: e is not defined in kotlin.test.jsThrowKT-58931Wasm tests are failing to start on Kotlin 1.9.0-Beta
Compiler
Fixes
KT-58621K2: Private class shadows public function defined in the same packageKT-59102K2: 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-58787KAPT: «NullPointerException: null cannot be cast to non-null type» with delegateKT-58837Partial linkage fails to report any compiler message on Windows when launched through Gradle pluginKT-59030[PL] Workaround for broken@Deprecatedannotations in c-interop KLIBsKT-58618K2: Local property delegates cannot infer generic return typeKT-58897K2: False positive unresolved reference with same-named enum class and its entryKT-56927Enum with secondary constructor can’t be compiled with K2 using JS/Native backendKT-57570Remove source code excerpts from platform type nullability assertion exceptionsKT-52774Resolve unqualified enum constants based on expected type
IDE. Gradle Integration
KT-59034MPP build failed with «Factory type is not known for plugin variants» in kt-231-*
JavaScript
KT-58570KJS: ES6 classes + PL throw java.lang.NullPointerExceptionKT-58835K2/JS: Fix incremental compilation klib testsKT-58794KJS / K2: Assertion failed with Space build
Libraries
KT-58985Update KClass.isData KDocKT-58276Deprecate redundant public declarations in kotlin.native.concurrent
Native. ObjC Export
KT-58839K/N: Exception during HiddenFromObjC marked class extension function compiling
Tools. Compiler plugins. Serialization
KT-58918Serialization: NPE at run time obtaining a serializer for a sealed class with a generic self-referencing propertyKT-58954Serialization: NPE at run time when accessing a delegating property of a deserialized objectKT-59113Serialization: NPE at run time when accessing a delegating property of a deserialized objectKT-57647Serialization: «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-58662Gradle 8.1 + Configuration Cache: custom values data is missing from build reportKT-59063Explicit API mode broken in Kotlin 1.9.0-BetaKT-59191Actual compilation failure exception might be hidden in the case of a Kotlin daemon crashKT-59056FreeCompilerArgs options added using ‘subprojects’ extension override module-level freeCompilerArgs optionsKT-55740Gradle 8: Listener registration using Gradle.addBuildListener() has been deprecatedKT-58251Build 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-58869K2, Gradle: Improve message «100% (2/2) tasks have compiled with Kotlin 2»
Tools. Gradle. JS
KT-59116K/JS npm dependcies are not resolved properly on Kotlin 1.9KT-58970browserTest gradle task fails if karma is used and gradle configuration cache is enabledKT-59004Kotlin JS 1.9.0-Beta, yarn.lock is unstable in multi module project
Tools. Gradle. Multiplatform
KT-57903Prepare for migration to the pluggable android target pluginKT-58661KGP: KotlinJvmTarget: Implement ‘run’ carrier taskKT-59055KotlinJvmRun not respecting jvmToolchain setting
Tools. Gradle. Native
KT-57823KotlinNativeCompileOptions.moduleName value is ignored and replaced with the default one if to set up using compilationsKT-58838KGP/Multiplatform: 1.9.0-Beta with custom cinterops: IllegalStateException: Could not create domain object ‘jni’ (DefaultCInteropSettings)
Tools. Incremental Compile
KT-58986New IC: ISE «The following LookupSymbols are not yet converted to ProgramSymbols: LookupSymbol(name=$$delegatedProperties, …)»
Tools. Parcelize
KT-59112K2: «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-58280org.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-57930Analysis API: provide an API for extending Kotlin resolutionKT-57636K2: Add the return type of K2 reference shortener AAShortenCommand::invokeShortening()e.g.,ShorteningResultInfoto allow callers to access the shortening result PSI
Fixes
KT-55626Impossible to restore symbol by psi from script fileKT-57314LL FIR: CombineLLFirProvider$SymbolProviders in session dependencies (optimization)KT-55527K2 IDE: Rewrite KtScopeContext class to allow to handle each scope separatelyKT-55329LL FIR: Unexpected ACTUAL_WITHOUT_EXPECT error on constructor and function declarationKT-50732LL API: fix compiler based testsKT-57850K2: contract violation due to SymbolLightAccessorMethod.propertyAccessorSymbolKT-56543LL FIR: rework lazy transformers so transformers modify only declarations they suppose toKT-56721K2: FirExtensionDeclarationsSymbolProvider: java.lang.IllegalStateException: Recursive updateKT-50253Analysis API: Solve issues with ProcessCancelledExceptionKT-56800K2 IDE: optimize deprecation calculation for symbolsKT-55006Analysis API does not transform Java type refs for callable symbol return typesKT-57256AA FIR: Reduce lazy resolve phase for deprecation statusKT-58141K2: AA FIR: impossible to restore symbol for declaration with annotation with argument inside typeKT-57462Symbol Light Classes: SymbolLightFieldForProperty should retrieve annotations not from KtPropertySymbol, but from the corresponding backing fieldKT-58249Analysis API: Disable error logging for FE10 implementation of resolveCall when resolve is not successfulKT-54864Analysis API: add function to get expect KtSymbol list by actual KtSymbolKT-56763Analysis API:.KtSourceModuleImpl is missing in the map.on symbol restore when symbol cannot be seen from the use-site moduleKT-56617Analysis API: optimize KtFirSymbolProviderByJavaPsi.getNamedClassSymbolKT-54430K2: .getAllOverriddenSymbols() returns invalid results
Backend. Native. Debug
KT-55440Kotlin/Native debugger: inline function parameters are not visible during debugging
Backend. Wasm
KT-57136K/Wasm: Restrict non-external types in JS interopKT-57060Clarify the lack of support for dynamic in Kotlin/WasmKT-56955K/Wasm: Support restricted version of K/JSjs(code)KT-57276Wasm: «Body not found for function» error when compiling konform library with Kotlin/Wasm supportKT-56976K/Wasm bug with calling override of external function with default parametersKT-56584K/Wasm: Can’t link symbol class
Compiler
New Features
KT-49276Warn about potential overload resolution change if Range/Progression starts implementing CollectionKT-55333Allow secondary constructors in value classes with bodiesKT-54944@Volatilesupport in nativeKT-54746Deprecate with ERROR JvmDefault annotation and old -Xjvm-default modesKT-29378K2: rework warnings/errors for equality/identity operators on incompatible typesKT-57010Kotlin/Native: make it possible to compile bitcode in a separate compiler invocationKT-55691K2: Avoid inferring Nothing? in presence of other constraints (beside type parameter bounds)KT-46288Unexpected behavior of extension function on lambda with suspend receiverKT-24779Inconsistent smart cast behavior for bound data flow values
Performance Improvements
KT-56906FIR: Use cached instance of FirImplicitTypeRefImpl in FIR buildersKT-56276LanguageVersion.getVersionString() allocates 5k objects on project opening
Fixes
KT-56609K2: False positive NULL_FOR_NONNULL_TYPE with -Xjsr305=strict and@Nullableannotation Java parameterKT-56656K1/K2: inconsistent NOTHING_TO_OVERRIDE with complex nullable annotationsKT-58332K2: local fun with suspend type is not marked as suspend in IRKT-57991K2: Modifier ‘suspend’ is not applicable to ‘anonymous function’KT-4113No smartcast for nullable lambda property (functional type) with implicit/operatorinvokecallKT-54294K2: «Not all type variables found» in builder inference with type parameters inferred through a union of two branchesKT-52597Provide Alpha Support for Multiplatform in the K2 platformKT-58523K2: reference is resolved to imported type-alias instead of identically named top-level propertyKT-57098Native: avoid object initialization while accessing const valKT-5797332-th default value in inline classes override function is not usedKT-57714«IllegalStateException: <B::!>» using reified genericsKT-57810toStringof object erroneously considered as constant function in string concatenationKT-58076K2: Incorrect inference of type of labeled receiverKT-57929K2: Arguments of annotations are not calculated in a lot of strange locationsKT-55388Consider enabling ProhibitUsingNullableTypeParameterAgainstNotNullAnnotatedKT-53041NPE in Kotlin 1.7.0 when using RxJava Maybe.doOnEvent with anonymous parametersKT-54829Cleanup local types approximation logicKT-38871Kotlin Gradle DSL, MPP: UNUSED_VARIABLE when configuring a sourceset with delegated propertyKT-58587MUST_BE_INITIALIZED must take into account effectivelly finalKT-58524K2: false-positive overload resolution ambiguity error on invoking a generic class’s member function with id-shaped function-typed parameter on intersection-typed receiverKT-53929Enum.entries: consider changing scope behavior in K1KT-58520K2: FIR2IR: ISE during const evaluation of operator times with exposedKT-56662K1: false negative INVISIBLE_SETTER for a var with internal setter accessed from a derived classKT-57770K2: Support generation of serializer if base class for serializable class declared in different moduleKT-58375Kapt: «wrong number of type arguments. required 1» when more than 22 type argumentsKT-56077K2: build atomicfuKT-56074K2: build Space JVM (snapshot 2022.3)KT-48870[FIR] Different behavior for explicit receiver resolution inside delegated constructorsKT-53865Partial linkage: overriding function with parameter losing vararg: Native is successful, JS fails in runtimeKT-53568Partial linkage: absent class as type parameter bound causes failure ofcompileProductionExecutableKotlinJs- [
KT-53608](https://youtrack.jetbrains.com/iss…
Kotlin 1.8.21
Changelog
Compiler
KT-57848Native: compilation of dynamic/static library fails with Xcode 14.3KT-57875Native compilation failure: Suspend functions should be lowered out at this point, but FUN LOCAL_FUNCTION_FOR_LAMBDAKT-57946KAPT: «RuntimeException: No type for expression» with delegate
JavaScript
KT-57356KJS: StackOverflowException on@JsExportwith type parameters referring to one another
Tools. Commonizer
KT-57796NoSuchFileException in :module-B:commonizeCInterop with Kotlin 1.8.20
Tools. Compiler plugins. Serialization
KT-58067Serialization: NullPointerException caused by@Contextualproperty with type with genericKT-57730Serialization: «IllegalStateException: Serializer for element of type .Foo has not been found» caused by serialization of Java type
Tools. Gradle. JS
KT-57766KJS / Gradle «Module not found: Error: Can’t resolve ‘kotlin-kotlin-stdlib-js-ir'» when using «useEsModules»
Tools. Kapt
KT-58027Kotlin 1.8.20 kapt issue «null: KtCallExpression: build()»
Tools. Maven
KT-58048Maven: «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-55510K2: Lost designation for local classesKT-55191AA: add an API to compare symbol pointersKT-55487K2: symbol pointer restoring doesn’t work for static membersKT-55336K2 IDE: «java.lang.IllegalStateException: Required value was null.» exception while importing a compiled JPS projectKT-55098AA: KtDeclarationRenderer should render a context receiversKT-51181LL API: errors for SAM with suspend function from another moduleKT-50250Analysis API: Implement Analysis API of KtExpression.isUsedAsExpressionKT-54360KtPropertySymbol: support JvmField in javaSetterName and javaGetterName
Analysis API. FE1.0
KT-55825AA FE1.0: stackoverflow when resolution to a function with a recursive type parameter
Analysis API. FIR
KT-54311K2: proper implementation of KtSymbolPointerKT-50238Analysis API: Implement KSymbolPointer for KtSymbol
Analysis API. FIR Low Level API
KT-52160FIR: Substitution overrides on FirValueParameter-s are incorrectly unwrappedKT-55566LL FIR: Tests incompiler/testData/diagnostics/tests/testsWithJava17fail under LL FIRKT-55339LL FIR: Missing RECURSIVE_TYPEALIAS_EXPANSION error in function type aliasKT-55327LL FIR: Diverging UNRESOLVED_REFERENCE errors in recursive local function testKT-54826KtSymbolPointer: migrate from IdSignature to our own solution
Android
KT-54464MPP, Android SSL2: Add a flag for suppressing warning in case of using Android Style folders
Backend. Wasm
KT-38924Wasm support in nodejsKT-56160Getting WebAssembly.CompileError in browsers not supported GC and other required proposalsKT-46773Implement an experimental version of the Kotlin/Wasm compiler backendKT-56584K/Wasm: Can’t link symbol classKT-56166Fix compatibility with Firefox NightlyKT-55589Basic support of WASIKT-53790Reading from «node:module» is not handled by plugins error with Kotlin/Wasm 1.7.20-Beta
Compiler
New Features
KT-54535Implement custom equals and hashCode for value classes in Kotlin/JVMKT-55949Release experimental@Volatilesupport in nativeKT-44698Frontend (K2): print file name/line on compiler crash/exceptionKT-54666K2: Allow to skip specifying type arguments for members from raw type scopeKT-54524Implement Java synthetic property references in compilerKT-54024K2: support -Xlink-via-signatures mode
Performance Improvements
KT-33722JVM: Result API causes unnecessary boxingKT-53330Optimize for-loops and contains over open-ended ranges with until operator (..<) for all backendsKT-54415JVM BE: performance loss related to multi-field inline class loweringKT-48759Infix compareTo boxes inline classesKT-55033Make org.jetbrains.kotlin.resolve.calls.inference.model.NewConstraintSystemImpl#runTransaction an inline functionKT-54501Improve code generation for inline classes with custom equals
Fixes
KT-56965K/N: linkDebugFrameworkIosArm64 tasks failing with UnsupportedOperationException: VAR name:disposables type:com.badoo.reaktive.disposable.CompositeDisposable [val]KT-56611Native: new native caches are broken when KONAN_DATA_DIR is defined to a directory inside ~/.gradleKT-55251Enum.entries compilation error should be more specificKT-56527K2: «AssertionError: Assertion failed» during compilation in SequentialFilePositionFinderKT-56526InvalidProtocolBufferException on reading module metadata compiled by K2 in 1.8.20KT-57388Kapt+JVM_IR: «RuntimeException: No type for expression» for delegated propertyKT-53153Synthetic Enum.entries can be shadowed by user-defined declarationsKT-51290«AssertionError: Parameter indices mismatch at context» with context receiversKT-57242Equals 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-57107Handling of Windows line endings CRLF broken in latest snapshot with K2KT-57117K2: Compiler reports invalid columns in diagnostics in case of crlf line endingsKT-56500The 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-56258VerifyError: Bad local variable type when using -XdebugKT-54455Unexpected result of equality comparison of inline class objectsKT-56251Generic Java synthetic property references don’t work in K2KT-55886K2: Wrong code location mapping with Windows line endingsKT-43296FIR: Complicated interaction between smart cast and inference leads to false-positive diagnosticKT-57053Problem around anonymous objects in inline functionsKT-54950NoSuchMethodError on calling ‘addAll’ on inline class implementing mutable listKT-56815compileKotlin task is stuck with while(true) and suspend functionKT-56847Unresolved reference to Java annotation in Kotlin class with the same name packagesKT-52459Context receivers: AbstractMethodError caused by Interface method with both an extension and a context receiver is overriden incorrectly in subclassesKT-56215JVM: Object extension function nullable receiver null check false negative when object is nullKT-56188K/N: AssertionError when casting SAM wrapper with generic type parameterKT-56033Restore ‘isMostPreciseContravariantArgument’ function signature for compatibilityKT-56407Backend Internal error: Exception during IR lowering during:daemon-common-new:compileKotlinKT-55887K2. «IllegalStateException: org.jetbrains.kotlin.ir.expressions.impl.IrErrorCallExpressionImpl is not expected» on adding kotlin.plugin.jpaKT-56701K2 (with LightTree) reports syntax errors without additional informationKT-56649K2 uses 0-index for line numbers rather than 1-indexKT-54807K2. Support@OnlyInputTypesdiagnostic checks (containslike calls)KT-51247«AssertionError: org.jetbrains.kotlin.ir.expressions.impl.IrFunctionReferenceImpl» caused by context receiver functional typesKT-55436K1: implement warning about shadowing of the derived property by the base class fieldKT-56521Static scope…
Kotlin 1.8.20-RC2
Changelog
Compiler
KT-57388Kapt+JVM_IR: «RuntimeException: No type for expression» for delegated propertyKT-57242Equals 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-56527K2: «AssertionError: Assertion failed» during compilation in SequentialFilePositionFinderKT-57107Handling of Windows line endings CRLF broken in latest snapshot with K2
Tools. Gradle
KT-57296Build statistics sending errors in case of buildSrc directory usage with kotlin-dsl plugin applied
Tools. Gradle. JS
KT-57285KJS / Gradle / MPP: FileNotFoundException on publishing empty KJS sourceset
Tools. Gradle. Multiplatform
KT-57460Kotlin Gradle Plugin: Nullthispointer in transformCommonMainDependenciesMetadataKT-57306[Kotlin 1.8.20-RC] GradleException: Could not load the value of fieldapiConfigurationoforg.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
Pathvariable. 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-58188Restore binary compatibility of PlatformDiagnosticSuppressor.shouldReportUnusedParameter -
KT-58293Wasm: ReferenceError: e is not defined in kotlin.test.jsThrow -
KT-58931Wasm tests are failing to start on Kotlin 1.9.0-Beta
Compiler
Fixes
-
KT-58621K2: Private class shadows public function defined in the same package -
KT-59102K2: 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-58787KAPT: «NullPointerException: null cannot be cast to non-null type» with delegate -
KT-58837Partial linkage fails to report any compiler message on Windows when launched through Gradle plugin -
KT-59030[PL] Workaround for broken@Deprecatedannotations in c-interop KLIBs -
KT-58618K2: Local property delegates cannot infer generic return type -
KT-58897K2: False positive unresolved reference with same-named enum class and its entry -
KT-56927Enum with secondary constructor can’t be compiled with K2 using JS/Native backend -
KT-57570Remove source code excerpts from platform type nullability assertion exceptions -
KT-52774Resolve unqualified enum constants based on expected type
IDE. Gradle Integration
-
KT-59034MPP build failed with «Factory type is not known for plugin variants» in kt-231-*
JavaScript
-
KT-58570KJS: ES6 classes + PL throw java.lang.NullPointerException -
KT-58835K2/JS: Fix incremental compilation klib tests -
KT-58794KJS / K2: Assertion failed with Space build
Libraries
-
KT-58985Update KClass.isData KDoc -
KT-58276Deprecate redundant public declarations in kotlin.native.concurrent
Native. ObjC Export
-
KT-58839K/N: Exception during HiddenFromObjC marked class extension function compiling
Tools. Compiler plugins. Serialization
-
KT-58918Serialization: NPE at run time obtaining a serializer for a sealed class with a generic self-referencing property -
KT-58954Serialization: NPE at run time when accessing a delegating property of a deserialized object -
KT-59113Serialization: NPE at run time when accessing a delegating property of a deserialized object -
KT-57647Serialization: «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-58662Gradle 8.1 + Configuration Cache: custom values data is missing from build report -
KT-59063Explicit API mode broken in Kotlin 1.9.0-Beta -
KT-59191Actual compilation failure exception might be hidden in the case of a Kotlin daemon crash -
KT-59056FreeCompilerArgs options added using ‘subprojects’ extension override module-level freeCompilerArgs options -
KT-55740Gradle 8: Listener registration using Gradle.addBuildListener() has been deprecated -
KT-58251Build 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-58869K2, Gradle: Improve message «100% (2/2) tasks have compiled with Kotlin 2»
Tools. Gradle. JS
-
KT-59116K/JS npm dependcies are not resolved properly on Kotlin 1.9 -
KT-58970browserTest gradle task fails if karma is used and gradle configuration cache is enabled -
KT-59004Kotlin JS 1.9.0-Beta, yarn.lock is unstable in multi module project
Tools. Gradle. Multiplatform
-
KT-57903Prepare for migration to the pluggable android target plugin -
KT-58661KGP: KotlinJvmTarget: Implement ‘run’ carrier task -
KT-59055KotlinJvmRun not respecting jvmToolchain setting
Tools. Gradle. Native
-
KT-57823KotlinNativeCompileOptions.moduleName value is ignored and replaced with the default one if to set up using compilations -
KT-58838KGP/Multiplatform: 1.9.0-Beta with custom cinterops: IllegalStateException: Could not create domain object ‘jni’ (DefaultCInteropSettings)
Tools. Incremental Compile
-
KT-58986New IC: ISE «The following LookupSymbols are not yet converted to ProgramSymbols: LookupSymbol(name=$$delegatedProperties, …)»
Tools. Parcelize
-
KT-59112K2: «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-58280org.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-57848Native: compilation of dynamic/static library fails with Xcode 14.3 -
KT-57875Native compilation failure: Suspend functions should be lowered out at this point, but FUN LOCAL_FUNCTION_FOR_LAMBDA -
KT-57946KAPT: «RuntimeException: No type for expression» with delegate
JavaScript
-
KT-57356KJS: StackOverflowException on@JsExportwith type parameters referring to one another
Tools. Commonizer
-
KT-57796NoSuchFileException in :module-B:commonizeCInterop with Kotlin 1.8.20
Tools. Compiler plugins. Serialization
-
KT-58067Serialization: NullPointerException caused by@Contextualproperty with type with generic -
KT-57730Serialization: «IllegalStateException: Serializer for element of type .Foo has not been found» caused by serialization of Java type
Tools. Gradle. JS
-
KT-57766KJS / Gradle «Module not found: Error: Can’t resolve ‘kotlin-kotlin-stdlib-js-ir'» when using «useEsModules»
Tools. Kapt
-
KT-58027Kotlin 1.8.20 kapt issue «null: KtCallExpression: build()»
Tools. Maven
-
KT-58048Maven: «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-57388Kapt+JVM_IR: «RuntimeException: No type for expression» for delegated property -
KT-57242Equals 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-56527K2: «AssertionError: Assertion failed» during compilation in SequentialFilePositionFinder -
KT-57107Handling of Windows line endings CRLF broken in latest snapshot with K2
Tools. Gradle
-
KT-57296Build statistics sending errors in case of buildSrc directory usage with kotlin-dsl plugin applied
Tools. Gradle. JS
-
KT-57285KJS / Gradle / MPP: FileNotFoundException on publishing empty KJS sourceset
Tools. Gradle. Multiplatform
-
KT-57460Kotlin Gradle Plugin: Nullthispointer in transformCommonMainDependenciesMetadata -
KT-57306[Kotlin 1.8.20-RC] GradleException: Could not load the value of fieldapiConfigurationoforg.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-56584K/Wasm: Can’t link symbol class
Compiler
Fixes
-
KT-57053Problem around anonymous objects in inline functions -
KT-56965K/N: linkDebugFrameworkIosArm64 tasks failing with UnsupportedOperationException: VAR name:disposables type:com.badoo.reaktive.disposable.CompositeDisposable [val] -
KT-56815compileKotlin task is stuck with while(true) and suspend function -
KT-56258VerifyError: Bad local variable type when using -Xdebug -
KT-56847Unresolved reference to Java annotation in Kotlin class with the same name packages -
KT-56526InvalidProtocolBufferException on reading module metadata compiled by K2 in 1.8.20 -
KT-56500The 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-56611Native: new native caches are broken when KONAN_DATA_DIR is defined to a directory inside ~/.gradle -
KT-56215JVM: Object extension function nullable receiver null check false negative when object is null -
KT-56033Restore ‘isMostPreciseContravariantArgument’ function signature for compatibility -
KT-56407Backend Internal error: Exception during IR lowering during:daemon-common-new:compileKotlin -
KT-56701K2 (with LightTree) reports syntax errors without additional information -
KT-56649K2 uses 0-index for line numbers rather than 1-index -
KT-56521Static scope initializers sometimes not called when first accessed from interop -
KT-49182Strange cast from Unit to String -
KT-55125Difference in generated bytecode for open suspend functions of generic classes
IDE. Gradle. Script
-
KT-56941Gradle KTS / Navigation: Go to declaration for Java types doesn’t work
JavaScript
-
KT-56602KJS / Serialization: polymorphicDefaultDeserializer unbound on Kotlin 1.8.20-Beta -
KT-56580KJS: languageVersionSettings string is unstable -
KT-56581KJS: Lock file for incremental cache -
KT-56582KJS: Function type interface reflection crashes the compiler in incremental build -
KT-56469KJS: BE Incremental rebuild spoils source map comment
Libraries
-
KT-55935[Kotlin/JVM] Path.copyToRecursively does not work across file systems
Native
-
KT-56443Native link task reports w: Cached libraries will not be used for optimized compilation
Tools. CLI
-
KT-56789Metaspace memory leak in CoreJrtFileSystem -
KT-56992Performance test regression in Gradle when switching to Kotlin 1.8.20 -
KT-56925Remove warning about assignment plugin -
KT-570771.8.20-RC-243shows Java 19 warnings even if configured with Java 17 toolchain
Tools. Compiler Plugins
-
KT-56487Add more methods to DescriptorSerializerPlugin
Tools. Compiler plugins. Serialization
-
KT-56738Unexpected SERIALIZER_NOT_FOUND when compiling against binary with enum -
KT-56990«AssertionError: SyntheticAccessorLowering should not attempt to modify other files» in kotlinx-serialization using@Serializerand List argument
Tools. Gradle
-
KT-56221Gradle KTS: False positiveVal cannot be reassignedwhen using an extension and its property with an implicitsetoperator -
KT-55452Values of the compiler arguments set via KotlinCompile task configuration are duplicated by the KaptGenerateStubs task -
KT-56645Gradle: KGP reports an incorrect resources processing task name for JVM projects -
KT-55565Consider de-duping or blocking standard addition of freeCompilerArgs to KaptGenerateStubsTask -
KT-56414Dependency locking and failed builds with Kotlin 1.8.10
Tools. Gradle. JS
-
KT-57068KJS / Gradle: «Unable to find method ‘kotlin.gradle.targets.js.dsl.KotlinJsBrowserDsl.testTask'» after updating to 1.8.20-Beta -
KT-56999K/JS: KotlinJsIrLink::rootCacheDirectory property must be public -
KT-56765K/JS: Several binaries use same cache directory -
KT-56488Debugger won’t stop on breakpoints of JS browser test -
KT-56719KJS / Gradle: Compile sync task has to sync only changed files
Tools. Gradle. Multiplatform
-
KT-56729commonizeCInterop: Duplicated libraries: co.touchlab:sqliter-driver-cinterop-sqlite3 -
KT-56510Import with included plugin build may fail with OverlappingFileLockException during commonizeNativeDistribution
Tools. Kapt
-
KT-56635KAPT / IR: «Unresolved reference: DaggerGeneratedCodeTest_AppComponent » caused by stub generation with Kotlin 1.8.20-Beta -
KT-56360Kapt 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-55510K2: Lost designation for local classes -
KT-55191AA: add an API to compare symbol pointers -
KT-55487K2: symbol pointer restoring doesn’t work for static members -
KT-55336K2 IDE: «java.lang.IllegalStateException: Required value was null.» exception while importing a compiled JPS project -
KT-55098AA: KtDeclarationRenderer should render a context receivers -
KT-51181LL API: errors for SAM with suspend function from another module -
KT-50250Analysis API: Implement Analysis API of KtExpression.isUsedAsExpression -
KT-54360KtPropertySymbol: support JvmField in javaSetterName and javaGetterName
Analysis API. FIR
-
KT-54311K2: proper implementation of KtSymbolPointer -
KT-50238Analysis API: Implement KSymbolPointer for KtSymbol
Analysis API. FIR Low Level API
-
KT-52160FIR: Substitution overrides on FirValueParameter-s are incorrectly unwrapped -
KT-54826KtSymbolPointer: migrate from IdSignature to our own solution
Android
-
KT-54464MPP, Android SSL2: Add a flag for suppressing warning in case of using Android Style folders
Backend. Wasm
-
KT-56160Getting WebAssembly.CompileError in browsers not supported GC and other required proposals -
KT-56166Fix compatibility with Firefox Nightly -
KT-55589Basic support of WASI -
KT-46773Implement an experimental version of the Kotlin/Wasm compiler backend -
KT-53790Reading from «node:module» is not handled by plugins error with Kotlin/Wasm 1.7.20-Beta
Compiler
New Features
-
KT-55949Release experimental@Volatilesupport in native -
KT-44698Frontend (K2): print file name/line on compiler crash/exception -
KT-54666K2: Allow to skip specifying type arguments for members from raw type scope -
KT-54535Implement custom equals and hashCode for value classes in Kotlin/JVM -
KT-54524Implement Java synthetic property references in compiler -
KT-54024K2: support -Xlink-via-signatures mode
Performance Improvements
-
KT-53330Optimize for-loops and contains over open-ended ranges with until operator (..<) for all backends -
KT-48759Infix compareTo boxes inline classes -
KT-55033Make org.jetbrains.kotlin.resolve.calls.inference.model.NewConstraintSystemImpl#runTransaction an inline function -
KT-33722JVM: Result API causes unnecessary boxing
Fixes
-
KT-53153Synthetic Enum.entries can be shadowed by user-defined declarations -
KT-54140SOE atIrBasedDescriptorsKt.makeKotlinTypewith mixing recursive definitely not nullable type with nullability -
KT-56224Clarify message «Secondary constructors with bodies are reserved for for future releases» for secondary constructors in value classes with bodies -
KT-54662K2: Assign operator ambiguity on synthetic property from java -
KT-54507K2: WrongimplicitModalityfor interface inFirHelpers -
KT-55912«UnsupportedOperationException: Unsupported const element type kotlin.Any» caused bykotlinfqn in annotation -
KT-55251Enum.entries compilation error should be more specific -
KT-43296FIR: Complicated interaction between smart cast and inference leads to false-positive diagnostic -
KT-55483K2: Fir is not initialized for FirRegularClassSymbol java/lang/invoke/LambdaMetafactory -
KT-56188K/N: AssertionError when casting SAM wrapper with generic type parameter -
KT-54209K2: false positive deprecation on a class literal with deprecated companion -
KT-55408K2: can’t access indirectly inherited from a package-private class Java members through a type alias -
KT-55116K2: store static qualifiers in dispatch receiver field -
KT-55436K1: implement warning about shadowing of the derived property by the base class field -
KT-55368K2/MPP: Metadata compiler -
KT-53846K2 / Context receivers: ClassCastException on secondary constructor of class with context receiver -
KT-54305K1: implement warning «synthetic setter projected out» -
KT-52027«NullPointerException» when using context receivers with inline fun -
KT-55984Stack allocated array is not cleaned between loop iterations -
KT-52593Provide Alpha support for JS in the K2 platform -
KT-54656NoSuchMethodError on invoking Java constructor which takes an inline value class as a parameter -
KT-55606K2. Infix operator «in» works on ConcurrentHashMap when it’s declared through another class -
KT-53884K2: «IllegalStateException: Fir is not initialized for FirRegularClassSymbol com/appodeal/consent/Consent.a» when importing this class -
KT-54502Synthetic extensions on raw types work differently from regular getter calls -
KT-49351FIR: Raw type scopes are unsupported -
KT-49345FIR: Properly support raw types in type parameter upper bounds -
KT-55887K2. «IllegalStateException: org.jetbrains.kotlin.ir.expressions.impl.IrErrorCallExpressionImpl is not expected» on adding kotlin.plugin.jpa -
KT-55733K2. Reference resolve works incorrectly for classes declared through typealias -
KT-46369FIR: Investigate raw types for arrays -
KT-41794[FIR] Implement raw type based scope -
KT-55181K2. No compilation error on throwing not throwable -
KT-55398Kotlin inline nested inline lambda’s inline variable will inline not correctly -
KT-55359K2. No error when secondary constructor does not delegate to primary one -
KT-55759K2: Unresolved reference ofserializerif library linking is used (with kotlinx.serialization plugin) -
KT-54705Kotlin scripting doesn’t support files with UTF-8 BOM -
KT-51753FIR: various errors due to expect/actual mapping absence in translator -
KT-44515FIR DFA: extract non-null info from anonymous object’s initialization -
KT-55018K2 / serialization: FIR2IR fails on local companion -
KT-55284Refactor org.jetbrains.kotlin.diagnostics.KtDiagnosticReportContextHelpersKt#reportOn(…) -
KT-55693K2. Type inference changed in k2 -
KT-54332Add deprecation warning for false-negative TYPE_MISMATCH for KT-49404 -
KT-55597K2.This type has a constructor, and thus must be initialized hereerror is missed for anonymous object inherits class with no-arg constructor -
KT-52459Context 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-54905KLIB check on compiled with pre-release version -
KT-55615K2 often does not expand type aliases in annotation position -
KT-54522K2: ambiguity between operator candidates on += (plusAssign) to reassigned var of MutableList type -
KT-54300K2: No «Projections are not allowed for immediate arguments of a supertype» for projection in supertypes of an anonymous object -
KT-55495K2: support lateinit intrinsic applicability checker -
KT-33132Cannot override the equals operator twice (in a class and its subclass) unless omitting the operator keyword in the subclass -
KT-55288False negative WRONG_ANNOTATION_TARGET on type under a nullability qualifier -
KT-54730K2: type aliases to generic functional interfaces attempt to re-infer explicitly specified type parameters -
KT-55611IC / MPP: Optional internal annotations are not visible on incremental builds -
KT-55656K2: 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-52791Class with multiple context receivers fails -Xvalidate-ir with «Validation failed in file» -
KT-55071Shared Native Compilation: Calls from intermediate common source set cannot use default parameters declared in expect common functions -
KT-54573K2: untouched implicit types in delegated constructor call of data class with@JvmRecord -
KT-55037Support jspecify annotations moved to the new package org.jspecify.annotations in jspecify 0.3 -
KT-48989JVM / 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-55231K2: Contract declarations are not passed to checkers -
KT-54411False positive: INFERRED_TYPE_VARIABLE_INTO_POSSIBLE_EMPTY_INTERSECTION on kotlinx.coroutines code -
KT-55005Inconsistent behavior of array set operation in Kotlin 1.7.21 -
KT-44625Property backing/delegate field annotations are not serialized/deserialized for non-JVM targets -
KT-42490Receiver annotations are not serialized/deserialized for non-JVM targets -
KT-53441K2: cannot access static method of package-private Java grandparent class -
KT-54197[K2] Exception from inliner for inline function with context receiver -
KT-55246Disable ‘CustomEqualsInValueClasses’ feature in 1.9 language version -
KT-55247Disable ‘InlineLateinit’ feature in 1.9 language version -
KT-53957K2 and -Xlambdas=indy: LambdaConversionException on reference to method with both context and extension receivers -
KT-55421K2: get rid of potentially redundant call of preCacheBuiltinClassMembers from getIrClassSymbol -
KT-52815Compiler option -Xjdk-release fails to compile mixed projects -
KT-52236Different modality in psi and fir -
KT-54921K2: cannot access static field of package-private Java parent class -
KT-53698K2: FIR2IR fails on call of inivisble extension function with Suppress -
KT-53920K2: «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-52373Context receivers: ClassCastException: function with dispatch, context, and extension receivers produces this when a parameter’s default is included -
KT-54807K2. Support@OnlyInputTypesdiagnostic checks (containslike calls) -
KT-54824K2: missing smartcast after two levels of aliasing and a reassignment -
KT-53368Out of bounds read in sse version of String::hashCode -
KT-51863ClassCastException when using context receivers with named argument. -
KT-55123JvmSerializableLambda is not applicable in common code in multiplatform projects -
KT-45970Missing deprecation warnings for constant operators calls in property initializers -
KT-54851K2: analysis of as/is contains multiple errors that result in missing diagnostics -
KT-54668K2: Inference error in body of lazy property with elvis with Nothing in RHS -
KT-53070Update intellij testdata fixes for FIR and merge it to master -
KT-54950NoSuchMethodError on calling ‘addAll’ on inline class implementing mutable list -
KT-53492No parameter null check generated for constructor taking an inline class type -
KT-55160Kotlin’s fragment element types must not extendIStubFileElementType -
KT-55143K2: INAPPLICABLE_JVM_NAME in JVM does not work for inline classes -
KT-47933Report warning if kotlin.annotation.Repeatable is used together with java.lang.annotation.Repeatable -
KT-55035FIR: do not use FirValueParameter for FirFunctionalTypeRef -
KT-55095Wrong containingDeclarationSymbol in type parameter from Enhancement -
KT-53946K2: don’t resolve Enum.declaringClass and Enum.getDeclaringClass -
KT-55074OptIn false negative: constructor call with default argument value -
KT-54260K2: «AssertionError: No modifier list, but modifier has been found by the analyzer» when annotated annotation and AllOpen plugin -
KT-55034FIR: provide information about containing function/constructor to FirValueParameter -
KT-53988K2: False negative «The expression cannot be a selector (occur after a dot)» -
KT-53983K2 crashes with NPE when ‘this’ is used inside enum class constructor -
KT-53371Properly resolve FIR to get fully resolved annotations -
KT-53519FIR: argument mapping for annotations on value parameter is not properly built -
KT-54827MPP: «java.lang.IndexOutOfBoundsException: Index: 0» during compilation ofandroidMaintarget -
KT-54417K2: move receiver-targeted annotations to KtReceiverParameterSymbol and remove it from FirProperty receiver type -
KT-54762Private constructor is accessible from a public inline function via@PublishedAPIannotation -
KT-54732DirectedGraphCondensationBuilder.paint fails with StackOverflowError during linkReleaseFrameworkIos64 -
KT-54897K2: value class with private constructor stripped by jvm-abi-gen cannot be used in another module -
KT-54784NPE from IrSourceCompilerForInlineKt.nonLocalReturnLabel on non-local break and continue in anonymous initializers and in scripts -
KT-54840Field for const property on interface companion object loses deprecated status when copied to interface -
KT-53825class files are generated when compilation fails with platform declaration clash -
KT-52157Annotation on type parameter isn’t present in the symbol loaded from the library -
KT-54654K2: Implicit types leaks into delegated member -
KT-53255[FIR2IR] StackOverflowError with long when-expression conditions -
KT-48861No warning on incorrect usage of array type annotated as Nullable in Java -
KT-54539@Deprecatedon members of private companion object is no longer needed -
KT-54401Unhandled exception on compilation inline class with ‘equals’ from ‘Any’ returning ‘Nothing’ -
KT-54455Unexpected result of equality comparison of inline class objects -
KT-54378K2: smart cast breaks subtyping in case with complex projections -
KT-53761Reified type not propagated to supertype token through two inline functions -
KT-53876Manually instantiated annotations with unsigned arrays are not equal -
KT-51740NO_VALUE_FOR_PARAMETER: Consider increasing error highlighting range -
KT-54084ClassCastException when trying to call a context receiver’s method -
KT-51282IllegalAccessError: Compiler for JVM 1.8+ makes lambdas access unaccessible classes when using@JvmMultifileClasses -
KT-53479False positive «Cannot access ‘runCatching’ before superclass constructor has been called» -
KT-50950JVM 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-55445KtUltraLightClassModifierList.hasModifierProperty requires resolve for PsiModifier.PRIVATE
Fixes
-
KT-55862Can’t resolve kotlin-stdlib-js sources in IDE -
KT-55743K2 SLC: SymbolLightClassForClassOrObject must have a name -
KT-55604Descriptor leak -
KT-55502SLC: drop redundant ‘final’ modifier from synthetic static enum members -
KT-55497LC: drop@NotNullannotation from parameter from synthetic Enum.valueOf -
KT-55496SLC: generated synthetic enum methods by symbols instead of manual creation -
KT-55481SLC: implement correct java annotations for annotation classes (Retention, Target, etc.) -
KT-55470SLC: implement light class for RepeatableContainer -
KT-55442SLC: ‘isInheritor’ for ‘DefaultImpls’ should work correctly -
KT-40609IDE: False positive «Exception is never thrown…» in Java when Kotlin getter is annotated with Throws -
KT-54051Migrate symbol light classes from KtSymbol to KtElement
JavaScript
New Features
-
KT-35655Investigate could we use «names» field in SourceMaps to improve debug experience -
KT-54118Kotlin/JS IR: keep declarations with non-minified names
Fixes
-
KT-55720KJS:ReferenceError: SuspendFunction1 is not definedwith 1.8 when importingkotlin.coroutines.SuspendFunction1 -
KT-55930KJS: A recursive callable reference of the inline function leads broken cross module references -
KT-31888Kotlin/JS: make possible to callmain()in main run tasks, but not in test tasks -
KT-51581FIR: support JS backend -
KT-55786KJS: Rewriting of secondary constructors if they are protected -
KT-52563KJS / IR: Invalid TypeScript generated for class extending base class with private constructor -
KT-55367KJS / IR + IC: Moving an external declaration between different JsModules() doesn’t rebuild the JS code -
KT-55240KJS: «NoSuchElementException: No element of given type found» caused by@JsExportandThrowable'schild class -
KT-54398KJS / IR + IC: Support *.d.ts generation -
KT-55144KJS / IR + IC: Modifying an inline function which is used as a default param in another inline function doesn’t invalidate a caller -
KT-54134KJS / IR: «TypeError: Cannot read properties of undefined» in js block wrapped with suspend functions around -
KT-54911KJS / IR + IC: invalidate all klib dependencies after removing it -
KT-54912KJS / IR + IC: Commit cache header only in the end (after lowering) -
KT-52677Native: StackOverFlow during «kotlin.ir.util.RenderIrElementVisitor$renderTypeAnnotations$1.invoke» -
KT-54480KJS: «Exported declaration contains non-consumable identifier» warning when exporting modules as default -
KT-41294KJS: Weird behaviour of j2v8 in test infra
Language Design
-
KT-55344Deprecate@Synchronizedin platforms except JVM
Libraries
-
KT-55978Provide Common Base64 encoding in stdlib -
KT-46211[Kotlin/Native] Stack overflow crash in Regex classes with simple pattern and very large input -
KT-31066Add Closeable & use to common stdlib -
KT-55609Introduce experimental kotlin.concurrent.Volatile annotation -
KT-39789Segfault in Kotlin/Native regex interpreter -
KT-35508EXC_BAD_ACCESS(code=2, address=0x16d8dbff0) crashes on iOS when using a sequence (from map() etc.) -
KT-53310Native: 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-55303Objective-C import: improve-fmodulesflag discoverability. -
KT-39120Cinterop tool doesn’t support the -fmodules compiler argument -
KT-40426Incorrect Objective-C extensions importing that prevents UIKit usage -
KT-55653Since Kotlin 1.8.0 NSView.resetCursorRects doesn’t exist anymore and cannot override it -
KT-54284Kotlin/Native: cinterop produces non-deterministic metadata
Native. ObjC Export
-
KT-56350Kotlin/Native: restore «use Foundation» in generated Objective-C frameworks -
KT-53638Native: support disabling mangling globally for Swift names in generated Objective-C header -
KT-53069SOE on K/N framework build for Arm64 -
KT-53317ObjCName annotation is not applied to an extension receiver in Objective-C export
Native. Stdlib
-
KT-53064Native: provide stdlib API to obtain memory management statistics
Reflection
-
KT-27585Flaky IllegalPropertyDelegateAccessException: Cannot obtain the delegate of a non-accessible property. Use «isAccessible = true» to make the property accessible -
KT-55178Improve performance of KCallable.callBy -
KT-53279Reflection: «KotlinReflectionInternalError: Method is not supported» caused by@Repeatableannotation deserialization at runtime if it’s repeated and contains arrays -
KT-44977Reflection: ClassCastException caused by annotations with «AnnotationTarget.TYPE» usage on array attributes access
Tools. CLI
-
KT-54652Enable -Xuse-fir-lt by default when -Xuse-k2 is turned on, provide way to disable -
KT-55784Unable to format compilation errors with ansi colors in compilation server -
KT-54337CLI: compiling module-info.java without explicitly specified JDK home leads to a weird error
Tools. Commonizer
-
KT-47429[Commonizer] OKIO support -
KT-51517C Interop Commonizer Fails On Classifier That Doesn’t Exist
Tools. Compiler Plugins
-
KT-53590K2 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@ AllArgsConstructorannotation and an empty list is set as a constructor param value -
KT-53096Create a pack of compiler utilities for generating declarations from plugins -
KT-55248K2/PluginAPI: getCallableNamesForClass/generateClassLikeDeclaration are not called for synthetic companions of local classes -
KT-54756Deprecate «legacy» mode of jvm-abi-gen plugin -
KT-55233jvm-abi-gen strips out InnerClass attributes -
KT-54500Private type aliases can be referenced from public declarations, but are stripped by jvm-abi-gen
Tools. Compiler plugins. Serialization
-
KT-49983Implement prototype of kotlinx.serialization for K2 compiler -
KT-54441Prohibit 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-54297Regression in serializable classes with star projections
Tools. Gradle
New Features
-
KT-54492Send gradle build errors from idea -
KT-55540Add compilation speed metric in build reports -
KT-54691Kotlin Gradle Plugin libraries alignment platform -
KT-55541Validate FUS metrics values on Gradle side
Performance Improvements
-
KT-55995Add ability to perform precise compilation task outputs backup -
KT-54836Kotlin/JVM Gradle plugin creates task eagerly on Gradle 7.3+ -
KT-54579Kapt tasks slow down significantly on Windows when running with JDK 17 compared to JDK 11 -
KT-54588KotlinCompile: Avoid callingFileCollection.getFiles()multiple times
Fixes
-
KT-52625Compatibility with Gradle 7.4 release -
KT-55544Gradle: add more debugging information for finding usages of kotlinOptions.freeCompilerArgs -
KT-52149Gradle: declare shared build services usages withTask#usesService -
KT-53811Compatibility with Gradle 7.6 release -
KT-52998Compatibility with Gradle 7.5 release -
KT-55741Gradle 8: Build service ‘‘ is being used by task ‘‘ without the corresponding declaration via ‘Task#usesService’. -
KT-55174KotlinCompile task produces deprecation «Build service ‘variant_impl_factories_…’ is being used by task» -
KT-54425Kotlin Gradle Plugin should not use deprecated UsageContext#getUsage() -
KT-54998«kotlin.gradle.performance» FUS collector reports data twice -
KT-55520Add required configuration for Kotlin Gradle Plugin API reference publication -
KT-52963Build report code breaks Gradle project isolation. -
KT-55164KGP: «Cannot access project ‘:’ from project ‘:list'» JVM — Project Isolation with Multi Modules and Configuration Cache fails -
KT-52490Gradle: [org.jetbrains.kotlin.gradle.testing.internal] TestReport.destinationDir and TestReport.reportOn deprecation warnings -
KT-55000Include information about the new IC into «kotlin.gradle.performance» FUS collector -
KT-45748Migrate all Kotlin Gradle plugin Android tests to new test setup -
KT-54029Validate Binary Compatibility for kotlin-gradle-plugin-api
Tools. Gradle. Cocoapods
-
KT-41830CocoaPods integration: Support link-only mode for pods -
KT-55801Deprecate useLibraries -
KT-55790Improper 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-33518Allow specifying command line args for node in nodejs or mocha tests -
KT-46163KJS / Ktor: Support run on the next free port if default one is occupied
Performance Improvements
-
KT-39108Kotlin multiplatform plugin targeting js takes too long compared to the old kotlin-frontend plugin -
KT-45411Investigate memory consumption in npm package -
KT-55476KotlinWebpack should be cacheable -
KT-51376KJS / Gradle: Dukat tasks make impact on build time even if there’s no npm dependencies
Fixes
-
KT-56131KJS / Gradle: Could not create an instance of type org.jetbrains.kotlin.gradle.targets.js.subtargets.KotlinNodeJs when task configuration avoidance is broken -
KT-37668Kotlin/JS: nodeTest failure due to main() function fail is reported as «BUILD SUCCESSFUL» -
KT-35285Kotlin/JS + Gradle: browserDevelopementWebpack and browserProductionWebpack could write to different locations -
KT-55593KotlinJsCompilerType and KotlinJsCompilerTypeHolder LEGACY and BOTH constants should be marked as@Deprecatedin 1.8 -
KT-33291JS: No build result with gradle parallel build in multiproject build -
KT-40925KJS: need a way to configure extra environment variables for the test task -
KT-47236KJS:kotlinNpmInstallfails if no yarn is downloaded -
KT-53288KJS / Gradle: FileNotFoundException when customising moduleName -
KT-54445KJS Remove dukat integration -
KT-54421KJS / Legacy: Kotlin 1.7.20 fails when running tests on Node 14 -
KT-54418KJS: Change test running with kotlin-test adapter -
KT-54132KJS IR: Sometimes karma failed on teamcity because of uninitialized browser
Tools. Gradle. Multiplatform
New Features
-
KT-53570multiplatform ‘natural hierarchy’ prototype
Fixes
-
KT-55873Unrequested dependencies leaking into common source sets: Regression after 703fd0f2 -
KT-55891Deprecate pre-HMPP flags -
KT-56285TCS: Gradle Sync: IdeProjectToProjectCInteropDependencyResolver: Ensure lenient resolution -
KT-56115Multiplatform;Composite Builds: Support import with cinterop commonization enabled -
KT-56204KotlinTargetHierarchy: Changing naming from ‘any’ to ‘with’ prefix -
KT-54974TCS: Gradle Sync: Implement IdeKotlinDependencyResolvers -
KT-38712Gradle configuration’s name with word «implementation» is camelcased to «İmplementation» if default locale is Turkish -
KT-54975TCS: Gradle Sync: Implement stdlib-common filter for platform source sets -
KT-36943Gradle Plugin (multiplatform) — Consider publishing a ‘sourcesElements’ variant for the sources.jar -
KT-48839Sources.jar of the root artifact of MPP library includes source files from test sourcesets -
KT-55492TCS: Gradle Sync: Sources and Documentation as extra ‘classpath’ -
KT-55237TCS: Gradle Sync: Support stdlib-native sources -
KT-55475TCS: Gradle Sync: Fine tune jvmAndAndroid source sets -
KT-55189TCS: Gradle Sync: Support icons (native, js) and global libraries -
KT-55218KotlinTargetHierarchy: Disambiguate declaring targets vs including targets -
KT-55112TCS: Gradle Sync: Resolve Source Dependencies -
KT-54977TCS: Gradle Sync: Implement debugging tools -
KT-54948TCS: Gradle Sync: Port IdeaKpmPlatformDependencyResolver to TCS -
KT-55289TCS: Gradle Sync: Prototypical sources jar resolution -
KT-55238TCS: Gradle Sync: Support commonized native distribution -
KT-55230Remove metadata dependencies transformation for runtimeOnly scope -
KT-53338Prettify the message about incompatible AGP and KGP versions -
KT-54506Test tasks are considered up-to-date after a failure when triggered byallTests -
KT-54787Test tasks are not up-to-date when an individual test task called after aggregating test task -
KT-54033Multiplatform/Android Source Set Layout 1: Also support setting source dirs using AGP Apis -
KT-54202CInterop Commonization fails on first run when native distribution is not yet commonizied -
KT-54135Add documentation with examples to CompositeMetadataArtifact
Tools. Gradle. Native
-
KT-55650Pass through errors from Gradle to Xcode -
KT-56205Shared Native Compilation: False positive ‘w: Could not find’ warnings on metadata klibs -
KT-54969Support podspec generation for the new K/N artifact DSL
Tools. Incremental Compile
-
KT-53832Enable new incremental compilation by default in Gradle -
KT-55309IC: Get rid ofNonCachingLazyStorage -
KT-53402Incremental compilation tries to compile resources
Tools. JPS
-
KT-56165Language version 1.9 and 2.0 is absent in Kotlin Compiler settings -
KT-51536[JPS] Recompile module on facet settings change -
KT-53735JPS / IC: «IOException: The system cannot find the file specified» on Windows -
KT-47983[JPS] Adding compilerSettings to Facet should initiate rebuild of module -
KT-54449Cyrillic characters in a filename break builds on linux
Tools. Kapt
New Features
-
KT-53135Enable JVM IR for KAPT stub generation by default -
KT-41129kotlin-maven-plugin + kapt — allow aptMode to be set according to docs
Fixes
-
KT-54380Kapt / IR: Build failed when inheritance by functional interface with suspend modifier -
KT-55490Kapt + JVM IR: «annotation@Foois missing default values» -
KT-43786KAPT: IllegalStateException: SimpleTypeImpl should not be created for error type: ErrorScope -
KT-43117Kapt: «System is already defined in this compilation unit» -
KT-46966Kapt: correctErrorTypes: receiver type is NonExistentClass -
KT-46965Kapt: correctErrorTypes: custom setter gets Object parameter type -
KT-51087KAPT:@JvmRepeatableannotations are present in inverse order in KAPT stubs -
KT-54245JVM IR / Kapt / Serialization: NullPointerException in SerializableIrGenerator.kt -
KT-54870KAPT stub generation with JVM_IR backend throws exception for delegated properties -
KT-44350Kapt Gradle integration tests failing with Android Gradle plugin 7.0 -
KT-33847Kapt does not included Filer-generated class files on compilation classpath -
KT-54030Kapt: annotation processor warnings are displayed as errors on JDK 17+ -
KT-32596kapt replaces class generated by annotation processor with error.NonExistentClass when the class is used as an annotation -
KT-37586KAPT: When delegated property use an unknown type (to-be-generated class),correctTypeErrorwill mess up the$delegatefield type
Tools. Maven
-
KT-29346Add components.xml to automatically compile kotlin maven projects -
KT-13995Maven: Kotlin compiler plugin should respect model’s compile source roots -
KT-54822Maven: 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-47110Disable jdk8-specific warnings in kotlin-maven-plugin
Tools. Scripts
-
KT-54461Warnings and stack traces when executing scripts via kotlin-maven-plugin -
KT-54733Scripts: ConcurrentModificationException in *.main.kts scripts -
KT-53283Scripts: main-kts JAR does not relocate embedded SLF4J and jsoup libraries -
KT-54095It 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-55483K2: 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-55308InnerClass attributes should be sorted (innermost last)
JavaScript
-
KT-56282KJS: Invalidate incremental cache in case of compiler internal errors -
KT-55852JS: «IllegalStateException: Unexpected ir type argument» caused by List with star projection type -
KT-55716KJS / IC: «Cannot read properties of undefined» with overriding variables with 1.8.0 -
KT-55758KJS / IR: Checking implemented interface on a class implementing a @JsExport interface returns the wrong result
Reflection
-
KT-56093Metaspace 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-55681Serialization: NullPointerException after update to 1.8.0 caused by@Serializer(forClass= ..) -
KT-56244kotlinx.serialization compiler intrinsic does not work with encodeToString function in 1.8.0 -
KT-55683Serialization: «IllegalStateException: Expected to have a primary constructor» with expect class and companion object -
KT-55682Serialization: «IllegalStateException: Function has no body: FUN name:serializer» with 1.8.0
Tools. Gradle
-
KT-55697KGP 1.8.0 adds compileOnly dependencies to unit test compile classpath
Tools. Gradle. Multiplatform
-
KT-55730MPP / Gradle: compileKotlinMetadata fails to resolve symbols in additional source sets
Tools. Gradle. Native
-
KT-56280Gradle: freeCompilerArgs are no longer propagated from compilations to Native binaries
Tools. Kapt
-
KT-48013Kapt 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.
























