blob: 1466849cdcd056e6de1071d860111499b6845a22 [file] [log] [blame] [view] [edit]
# 1.4.31 (Feb 2021)
* [KT-44295](https://youtrack.jetbrains.com/issue/KT-44295) Fix Kotlin/Native compiler crash on Android NDK
* [KT-44826](https://youtrack.jetbrains.com/issue/KT-44826) Fix failing build with "Backend Internal error: Exception during IR lowering"
* [KT-44764](https://youtrack.jetbrains.com/issue/KT-44764) Fix failing build with "AssertionError: FUN name:onError_6 visibility:public modality:OPEN"
* [GH-4588](https://github.com/JetBrains/kotlin-native/pull/4588) Fix runtime crash in createTypeInfo in release framework binaries
# 1.4.30 (Feb 2021)
* [KT-44083](https://youtrack.jetbrains.com/issue/KT-44083) Fix NSUInteger size for Watchos x64
# 1.4.30-RC (Jan 2021)
* [KT-44271](https://youtrack.jetbrains.com/issue/KT-44271) Incorrect linking when targeting linux_x64 from mingw_x64 host
* [KT-44219](https://youtrack.jetbrains.com/issue/KT-44219) Non-reified type parameters with recursive bounds are not supported yet
* [KT-43599](https://youtrack.jetbrains.com/issue/KT-43599) K/N: Unbound symbols not allowed
* [KT-42172](https://youtrack.jetbrains.com/issue/KT-42172) Kotlin/Native: StableRef.dispose race condition on Kotlin deinitRuntime
* [KT-42482](https://youtrack.jetbrains.com/issue/KT-42482) Kotlin subclasses of Obj-C classes are incompatible with ISA swizzling (it causes crashes)
# 1.4.30-M1 (Dec 2020)
* [KT-43597](https://youtrack.jetbrains.com/issue/KT-43597) Xcode 12.2 support
* [KT-43276](https://youtrack.jetbrains.com/issue/KT-43276) Add watchos_x64 target
* [KT-43198](https://youtrack.jetbrains.com/issue/KT-43198) Init blocks inside of inline classes
* [KT-42649](https://youtrack.jetbrains.com/issue/KT-42649) Fix secondary constructors of generic inline classes
* [KT-38772](https://youtrack.jetbrains.com/issue/KT-38772) Support non-reified type parameters in typeOf
* [KT-42428](https://youtrack.jetbrains.com/issue/KT-42428) Inconsistent behavior of map.entries on Kotlin.Native
* Compiler customization
* [KT-40584](https://youtrack.jetbrains.com/issue/KT-40584) Untie Kotlin/Native from the fixed LLVM distribution
* [KT-42234](https://youtrack.jetbrains.com/issue/KT-42234) Move LLVM optimization parameters into konan.properties
* [KT-40670](https://youtrack.jetbrains.com/issue/KT-40670) Allow to override konan.properties via CLI
* Runtime
* [KT-42822](https://youtrack.jetbrains.com/issue/KT-42822) Kotlin/Native Worker leaks ObjC/Swift autorelease references (and indirectly bridged K/N references) on Darwin targets
* [KT-42397](https://youtrack.jetbrains.com/issue/KT-42397) Reverse-C interop usage of companion object reports spurious leaks
* [GH-4482](https://github.com/JetBrains/kotlin-native/pull/4482) Add a switch to destroy runtime only on shutdown
* [GH-4575](https://github.com/JetBrains/kotlin-native/pull/4575) Fix unchecked runtime shutdown
* [GH-4194](https://github.com/JetBrains/kotlin-native/pull/4194) Fix possible race in terminate handler
* C-interop
* [KT-42412](https://youtrack.jetbrains.com/issue/KT-42412) Modality of generated property accessors is always FINAL
* [KT-38530](https://youtrack.jetbrains.com/issue/KT-38530) values() method of enum classes is not exposed to Objective-C/Swift
* [GH-4572](https://github.com/JetBrains/kotlin-native/pull/4572) Fix for interop enum and struct generation
* Optimizations
* [KT-42294](https://youtrack.jetbrains.com/issue/KT-42294) Significantly improved compilation time
* [KT-42942](https://youtrack.jetbrains.com/issue/KT-42942) Optimize peak backend memory by clearing BindingContext after psi2ir
* [KT-31072](https://youtrack.jetbrains.com/issue/KT-31072) Don't use non-reified arguments to specialize type operations in IR inliner
# 1.4.21 (Dec 2020)
* Fixed [KT-43517](https://youtrack.jetbrains.com/issue/KT-43517)
* Fixed [KT-43530](https://youtrack.jetbrains.com/issue/KT-43530)
* Fixed [KT-43265](https://youtrack.jetbrains.com/issue/KT-43265)
# 1.4.20 (Nov 2020)
* XCode 12 support
* Completely reworked escape analysis for object allocation
* Use ForeignException wrapper to handle native exceptions ([GH-3553](https://github.com/JetBrains/kotlin-native/issues/3553))
* CocoaPods plugin improvements
* equals/hashCode support for adapted callable references ([KT-39800](https://youtrack.jetbrains.com/issue/KT-39800))
* equals/hashCode support for fun interfaces ([KT-39798](https://youtrack.jetbrains.com/issue/KT-39798))
* IR-level optimizations
* Constant folding
* String concatenation flattening
* Various fixes/improvements to compiler caches
* Some fixes to samples (calculator, tensorflow)
* Bug fixes
* Eliminate recursive GC calls ([KT-42275](https://youtrack.jetbrains.com/issue/KT-42275))
* Fix support for @OverrideInit constructors with default arguments ([KT-41910](https://youtrack.jetbrains.com/issue/KT-41910))
* Fix support for forward declarations ([KT-41655](https://youtrack.jetbrains.com/issue/KT-41655))
* [KT-41394](https://youtrack.jetbrains.com/issue/KT-41394)
* [KT-41811](https://youtrack.jetbrains.com/issue/KT-41811)
* [KT-41716](https://youtrack.jetbrains.com/issue/KT-41716)
* [KT-41250](https://youtrack.jetbrains.com/issue/KT-41250)
* [KT-42000](https://youtrack.jetbrains.com/issue/KT-42000)
* [KT-41907](https://youtrack.jetbrains.com/issue/KT-41907)
# 1.4.10 (Sep 2020)
* Fixed a newline handling in @Deprecated annotation in ObjCExport ([KT-39206](https://youtrack.jetbrains.com/issue/KT-39206))
* Fixed suspend function types in ObjCExport ([KT-40976](https://youtrack.jetbrains.com/issue/KT-40976))
* Fixed support for unsupported C declarations in cinterop ([KT-39762](https://youtrack.jetbrains.com/issue/KT-39762))
# v1.4.0 (Aug 2020)
* Objective-C/Swift interop:
* Reworked exception handling ([GH-3822](https://github.com/JetBrains/kotlin-native/pull/3822), [GH-3842](https://github.com/JetBrains/kotlin-native/pull/3842))
* Enabled support for Objective-C generics by default ([GH-3778](https://github.com/JetBrains/kotlin-native/pull/3778))
* Support for Kotlins suspending functions ([GH-3915](https://github.com/JetBrains/kotlin-native/pull/3915))
* Handle variadic block types in ObjC interop ([`KT-36766`](https://youtrack.jetbrains.com/issue/KT-36766))
* Added native-specific frontend checkers (implemented in the main Kotlin repository: [GH-3293](https://github.com/JetBrains/kotlin/pull/3293), [GH-3091](https://github.com/JetBrains/kotlin/pull/3091), [GH-3172](https://github.com/JetBrains/kotlin/pull/3172))
* .dSYMs for release binaries on Apple platforms ([GH-4085](https://github.com/JetBrains/kotlin-native/pull/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](https://github.com/JetBrains/kotlin-native/pull/3704))
* Tune GC to improve execution time performance
* Various fixes to compiler caches and Gradle daemon usage
# v1.3.72 (April 2020)
* Fix ios_x64 platform libs cache for iOS 11 and 12 (GH-4071)
# v1.3.71 (March 2020)
* Fix `lazy {}` memory leak regression ([`KT-37232`](https://youtrack.jetbrains.com/issue/KT-37232), GH-3944)
* Fix using cached Kotlin subclasses of Objective-C classes (GH-3986)
# v1.3.70 (Dec 2019)
* 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)
# v1.3.60 (Oct 2019)
* 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)
# v1.3.50 (Aug 2019)
* 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)
# v1.3.0 (Jun 2019)
* 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)
# v1.2.1 (Apr 2019)
* 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)
# v1.2.0 (Apr 2019)
* 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
## v1.1.0 (Dec 2018)
* 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
## v0.9.3 (Sep 2018)
* Bugfixes
## v0.9.2 (Sep 2018)
* 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
## v0.9.1 (Sep 2018)
* Improve naming in produced Objective-C frameworks. Use Kotlin prefix instead of Stdlib prefix.
* Improvements in KLIB: Library versioning, IDEA-friendly internal format.
# v0.9 (Sep 2018)
* 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
## v0.8 (Jul 2018)
* 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.*` and `Collection.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)
## v0.7.1 (Jun 2018)
* 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
## v0.7 (May 2018)
* 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)
## v0.6.2 (Mar 2018)
* Support several `expectedBy`-dependencies in Gradle plugin.
* Improved interaction between Gradle plugin and IDE.
* Various bugfixes
## v0.6.1 (Mar 2018)
* 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
## v0.6 (Feb 2018)
* 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
## v0.5 (Dec 2017)
* 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
## v0.4 (Nov 2017) ##
* 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
## v0.3.4 (Oct 2017) ##
* Intermediate release
## v0.3.2 (Sep 2017) ##
* Bug fixes
## v0.3.1 (Aug 2017) ##
* 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`](https://github.com/JetBrains/kotlin-native/blob/master/samples/workers))
## v0.3 (Jun 2017) ##
* 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
## v0.2 (May 2017) ##
* 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
## v0.1 (Mar 2017) ##
Initial technical preview of Kotlin/Native