- KT-44083 Fix NSUInteger size for Watchos x64
- KT-44271 Incorrect linking when targeting linux_x64 from mingw_x64 host
- KT-44219 Non-reified type parameters with recursive bounds are not supported yet
- KT-43599 K/N: Unbound symbols not allowed
- KT-42172 Kotlin/Native: StableRef.dispose race condition on Kotlin deinitRuntime
- KT-42482 Kotlin subclasses of Obj-C classes are incompatible with ISA swizzling (it causes crashes)
- KT-43597 Xcode 12.2 support
- KT-43276 Add watchos_x64 target
- KT-43198 Init blocks inside of inline classes
- KT-42649 Fix secondary constructors of generic inline classes
- KT-38772 Support non-reified type parameters in typeOf
- KT-42428 Inconsistent behavior of map.entries on Kotlin.Native
- Compiler customization
- Runtime
- KT-42822 Kotlin/Native Worker leaks ObjC/Swift autorelease references (and indirectly bridged K/N references) on Darwin targets
- KT-42397 Reverse-C interop usage of companion object reports spurious leaks
- GH-4482 Add a switch to destroy runtime only on shutdown
- GH-4575 Fix unchecked runtime shutdown
- GH-4194 Fix possible race in terminate handler
- C-interop
- Optimizations
- XCode 12 support
- Completely reworked escape analysis for object allocation
- Use ForeignException wrapper to handle native exceptions (GH-3553)
- CocoaPods plugin improvements
- equals/hashCode support for adapted callable references (KT-39800)
- equals/hashCode support for fun interfaces (KT-39798)
- IR-level optimizations
- Constant folding
- String concatenation flattening
- Various fixes/improvements to compiler caches
- Some fixes to samples (calculator, tensorflow)
- Bug fixes
- Fixed a newline handling in @Deprecated annotation in ObjCExport (KT-39206)
- Fixed suspend function types in ObjCExport (KT-40976)
- Fixed support for unsupported C declarations in cinterop (KT-39762)
- Objective-C/Swift interop:
- Added native-specific frontend checkers (implemented in the main Kotlin repository: GH-3293, GH-3091, GH-3172)
- .dSYMs for release binaries on Apple platforms (GH-4085)
- Improved compilation time of builds with interop libraries by reworking cinterop under the hood.
- Experimental mimalloc allocator support (-Xallocator=mimalloc) to improve execution time performance. (GH-3704)
- Tune GC to improve execution time performance
- Various fixes to compiler caches and Gradle daemon usage
- Fix ios_x64 platform libs cache for iOS 11 and 12 (GH-4071)
- Fix
lazy {}
memory leak regression (KT-37232
, GH-3944) - Fix using cached Kotlin subclasses of Objective-C classes (GH-3986)
- Support compiler caches for debug mode (GH-3650)
- Support running Kotlin/Native compiler from Gradle daemon (GH-3442)
- Support multiple independent Kotlin frameworks in the same application (GH-3457)
- Compile-time allocation for some singleton objects (GH-3645)
- Native support for SIMD vector types in compiler and interop (GH-3498)
- API for runtime detector of cyclic garbage (GH-3616)
- Commonized StringBuilder (GH-3593) and Float.rangeTo (KT-35299)
- Fix interop with localized strings (GH-3562)
- Provide utility for user-side generation of platform libraries (GH-3538)
- On-stack allocation using local escape analysis (GH-3625)
- Code coverage support on Linux and Windows (GH-3403)
- Debugging experience improvements (GH-3561, GH-3638, GH-3606)
- Support XCode 11
- Switch to LLVM 8.0
- New compiler targets:
- watchOS targets, watchos_x86, watchos_arm64 and watchos_arm32 (GH-3323, GH-3404, GH-3344)
- tvOS targets tvos_x64 and tvos_arm64 (GH-3303, GH-3363)
- native Android targets android_x86 and android_x64 (GH-3306, GH-3314)
- Standard CLI library kotlinx.cli is shipped with the compiler distribution (GH-3215)
- Improved debug information for inline functions (KT-28929, GH-3292)
- Improved runtime performance of interface calls, up to 5x faster (GH-3377)
- Improved runtime performance of type checks, up to 50x faster (GH-3291)
- Produce native binaries directly from klibs, speeds up large project compilation (GH-3246)
- Supported arbitrary (up to 255 inclusive) function arity (GH-3253)
- Supported callable references to suspend functions (GH-3197)
- Implemented experimental -Xg0 switch, symbolication of release binaries for iOS (GH-3233, GH-3367)
- Interop:
- Allow passing untyped null as variadic function's parameter (GH-3312, KT-33525)
- Standard library:
- Allow scheduling jobs in arbitrary K/N context, not only Worker (GH-3316)
- Important bug fixes:
- Boxed negative values can lead to crashes on ios_arm64 (GH-3296)
- Implemented thread-safe tracking of Objective-C references to Kotlin objects (GH-3267)
- Kotlin/Native versioning now aligned with Kotlin versioning
- Exhaustive platform libraries on macOS (GH-3141)
- Update to Gradle 5.5 (GH-3166)
- Improved debug information correctness (GH-3130)
- Major memory manager refactoring (GH-3129)
- Embed actual bitcode in produced frameworks (GH-2974)
- Compilation speed improvements
- Interop:
- Support kotlin.Deprecated when producing framework (GH-3114)
- Ensure produced Objective-C header does not have warnings (GH-3101)
- Speed up interop stub generator (GH-3082, GH-3050)
- getOriginalKotlinClass() to get KClass for Kotlin classes in Objective-C (GH-3036)
- Supported nullable primitive types in reverse C interop (GH-3198)
- Standard library
- API for delayed job execution on worker (GH-2971)
- API for running via worker's job queue (GH-3078)
- MonoClock and Duration support (GH-3028)
- Support typeOf (KT-29917, KT-28625)
- New zero-terminated utf8 to String conversion API (GH-3116)
- Optimize StringBuilder for certain cases (GH-3202)
- Implemented Array.fill API (GH-3244)
- CoreLocation platform library on macOS (GH-3041)
- Converting Unit type to Void during producing framework for Objective-C/Swift (GH-2549, GH-1271)
- Support linux/arm64 targets (GH-2917)
- Performance improvements of memory manager (GH-2813)
- FreezableAtomicReference prototype (GH-2776)
- Logging and error messages enhancements
- Interop:
- Support nullable String return type in reverse C interop (GH-2956)
- Support setting custom exception hook in reverse C interop (GH-2941)
- Experimental generics support for produced frameworks for Objective-C/Swift implemented by Kevin Galligan (GH-2850)
- Improve support for Objective-C methods clashing with methods of Any (GH-2914)
- Support variadic Objective-C functions (GH-2896)
- Fix Objective-C interop with React (GH-2872)
- Fix “not in vtable” compiler crash when generating frameworks (GH-2865)
- Implement some optimizations (GH-2854)
- Fix release build for 32-bit Windows (GH-2848)
- Fix casts to type parameters with multiple bounds (GH-2888)
- Fix “could not get descriptor uniq id for deserialized class FlagEnum” compiler crash when generating framework (GH-2874)
- New intermediate representation based library format allowing global optimizations
- Exception backtraces in debug mode on macOS and iOS targets contains symbolic information
- Support for 32-bit Windows targets (target mingw_x86)
- Support for cross-compilation to Linux (x86-64 and arm32) from macOS and Windows hosts
- Static Apple frameworks can be produced
- Support Gradle 5.1
- Fix alignment-related issues on ARM32 and MIPS platforms
- Write unhandled exceptions stacktrace on device to iOS crash log
- Fix undefined behavior in some arithmetic operations
- Interop:
- Get rid of libffi dependency
- Support returning struct from C callbacks
- Support passing Kotlin strings to C interop functions accepting UTF-32 arguments
- Fix bool conversion
- Support variable length arrays
- Provide Kotlin access to C compiler intrinsics via platform.builtins package
- Support clang modules (for Objective-C only)
- Experimental integration with CocoaPods
- IDE
- Kotlin/Native plugin is supported in CLion 2018.3 and AppCode/CLion 2019.1
- Basic highlighting support for .def files
- Navigation to source files from exception backtrace
- Performance optimizations:
- runtime: optimization of queue of finalization
- compiler: loop generation optimization
- compiler: reduce RTTI size
- runtime: reduce size of the object header
- Contracts support
- Regex engine: fix quantifier processing
- Bugfixes
- Support Xcode 10.0
- iOS 9.0 is the minimal supported version for all targets
- Swift interop improvements
- Support shared top level values of some immutable types (i.e. String and atomic references)
- Support release Kotlin 1.3.0
- Improve naming in produced Objective-C frameworks. Use ‘Kotlin’ prefix instead of ‘Stdlib’ prefix.
- Improvements in KLIB: Library versioning, IDEA-friendly internal format.
- Support Kotlin 1.3M2
- Note: Common modules of multiplatform projects also should use Kotlin 1.3
- Major standard library (native parts) rework and rename
- New Gradle plugin with multiplatform integration and reworked DSL
- Support unsigned types in Kotlin and interop
- Support non-experimental coroutines API (kotlin.coroutines)
- Top level object var/val can only be accessed from the main thread
- Support lazy properties in singleton objects
- Update LLVM to 6.0.1
- Singleton objects are frozen after creation, and shared between threads
- String and primitives types are frozen by default
- Common stdlib with Kotlin/JVM and Kotlin/JS
- Implemented
kotlin.random.*
andCollection.shuffle
- Implemented atomic integers and atomic references
- Multiple bugfixes in compiler (coroutines, inliner)
- Support 32-bit iOS (target
ios_arm32
) - New experimental Gradle plugin
- Support Xcode 9.4.1
- Optimizations (switch by enum, memory management)
- Bugfixes in the runtime (indexOf, GC for kotlin.Array, enum equality) and the compiler
- Fix NSBlock problem, preventing upload of binaries to the AppStore
- Create primitive type boxes and kotlin.String as frozen by default
- Support Gradle 4.7, provide separate run task for each executable
- Support Xcode 9.4 and CoreML and ClassKit frameworks on Apple platforms
- Improved runtime Kotlin variable examination
- Minor performance optimizations in compiled code and runtime
- Add
disableDesignatedInitializerChecks
definition file support
- Interop with Objective-C/Swift changes:
- Uniform direct and reverse interops (values could be passed in both directions now)
- Interop by exceptions
- Type conversion and checks (
as
,is
) for interop types - Seamless interop on numbers, strings, lists, maps and sets
- Better interop on constructors and initializers
- Switched to Xcode 9.3 on Apple platforms
- Introduced object freezing API, frozen object could be used from multiple threads
- Kotlin enums are frozen by default
- Switch to Gradle 4.6
- Use Gradle native dependency model, allowing to use
.klib
as Maven artifacts - Introduced typed arrays API
- Introduced weak references API
- Activated global devirtualization analysis
- Performance improvements (box caching, bridge inlining, others)
- Support several
expectedBy
-dependencies in Gradle plugin. - Improved interaction between Gradle plugin and IDE.
- Various bugfixes
- Various bugfixes
- Support total ordering in FP comparisons
- Interop generates string constants from string macrodefinitions
- STM32 blinky demo in pure Kotlin/Native
- Top level variables initialization redesign (proper dependency order)
- Support kotlin.math on WebAssembly targets
- Support embedded targets on Windows hosts
- Support multiplatform projects (expect/actual) in compiler and Gradle plugin
- Support first embedded target (STM32 board)
- Support Kotlin 1.2.20
- Support Java 9
- Support Gradle 4.5
- Transparent Objective-C/Kotlin container classes interoperability
- Produce optimized WebAssembly binaries (10x smaller than it used to be)
- Improved APIs for object transfer between threads and workers
- Allow exporting top level C function in reverse interop with @CName annotation
- Supported debugging of code with inline functions
- Multiple bugfixes and performance optimizations
- Reverse interop allowing to call Kotlin/Native code compiled as framework from Objective-C/Swift programs
- Reverse interop allowing to call Kotlin/Native code compiled as shared object from C/C++ programs
- Support generation of shared objects and DLLs by the compiler
- Migration to LLVM 5.0
- Support WebAssembly target on Linux and Windows hosts
- Make string conversions more robust
- Support kotlin.math package
- Refine workers and string conversion APIs
- Objective-C frameworks interop for iOS and macOS targets
- Platform API libraries for Linux, iOS, macOS and Windows
- Kotlin 1.2 supported
val
and function parameters can be inspected in debugger- Experimental support for WebAssembly (wasm32 target)
- Linux MIPS support (little and big endian, mips and mipsel targets)
- Gradle plugin DSL fully reworked
- Support for unit testing annotations and automatic test runner generation
- Final executable size reduced
- Various interop improvements (forward declaration, better handling of unsupported types)
- Workers object subgraph transfer checks implemented
- Optimized low level memory management using more efficient cycle tracing algorithm
- Intermediate release
- Bug fixes
- Improvements in C interop tools (function pointers, bitfields, bugfixes)
- Improvements to Gradle plugin and dependency downloader
- Support for immutable data linked into an executable via ImmutableDataBlob class
- Kotlin 1.1.4 supported
- Basic variable inspection support in the debugger
- Some performance improvements ("for" loops, memory management)
- .klib improvements (keep options from .def file, faster inline handling)
- experimental workers API added (see
sample
)
- Preliminary support for x86-64 Windows hosts and targets
- Support for producing native activities on 32- and 64-bit Android targets
- Extended standard library (bitsets, character classification, regular expression)
- Preliminary support for Kotlin/Native library format (.klib)
- Preliminary source-level debugging support (stepping only, no variable inspection)
- Compiler switch
-entry
to select entry point - Symbolic backtrace in runtime for unstripped binaries, for all supported targets
- Added support for coroutines
- Fixed most stdlib incompatibilities
- Improved memory management performance
- Cross-module inline function support
- Unicode support independent from installed system locales
- Interoperability improvements
- file-based filtering in definition file
- stateless lambdas could be used as C callbacks
- any Unicode string could be passed to C function
- Very basic debugging support
- Improve compilation and linking performance
Initial technical preview of Kotlin/Native