Skip to content

Releases: JetBrains/kotlin

Kotlin M13

16 Sep 14:03
Compare
Choose a tag to compare
Kotlin M13 Pre-release
Pre-release

What's New

  • Language
    • lateinit properties
    • sealed classes
    • all annotations require @
    • annotation classes named starting with capital letter
    • some former annotations turned into modifiers (data, inline, noinline, tailrec, external, etc.)
    • annotation options: @Target, @Retention, @Repeatable, @MustBeDocumented
    • no requirement to specify return type explicitly for public
    • public by default
    • private on the top level means private to current source file
    • internal visibility checked between modules
    • overload resolution on callable references
    • unambiguous super-calls do not require angle brackets
  • Java interop
    • Java get/set pairs are now seen as properties
    • New layout of class files: each source file is compiled to FileNameKt.class by default
    • @file:JvmName("ClassName") to customize the name of the class
    • @file:JvmMultifileClass to share the same class name across many files in the same package
    • @NotNull and @Nullable types loaded from Java
  • Library
    • fully functional reflection
    • + and - for sets and other collections
    • improved delegates for properties
  • Tools
    • compiler daemon keeps the compiler in memory between builds
    • incremental compilation is smarter with inline functions and privates
    • Java2Kotlin converter supports method references
  • IntelliJ IDEA plugin
    • Pull Members Up/Down refactoring
    • Debugger support for lambdas and inline functions
    • Completion for parameter names and types
    • Highlighting for unused imports
    • Imports are optimized on-the-fly
    • New intentions for for loops

M12 bugfix update

29 Jun 14:49
Compare
Choose a tag to compare
M12 bugfix update Pre-release
Pre-release
build-0.12.613

M12 bugfix update

10 Jun 11:49
Compare
Choose a tag to compare
M12 bugfix update Pre-release
Pre-release
build-0.12.412

Kotlin M12

29 May 12:27
Compare
Choose a tag to compare
Kotlin M12 Pre-release
Pre-release

What's New

  • Language
    • @-based annotation syntax
    • New label syntax (name@)
    • KClass instead of java.lang.Class used in annotations
    • constructor keyword in primary constructors
    • trait replaced with interface
    • New syntax for enums: delimiters and constructor calls
    • Unified Function types
    • Smart casts for local var's
    • Smart casts for public/protected val's within the same module
    • Inlining and non-local returns for function expressions
    • Deprecations/Removals:
      • break and continue in when
      • interfaces that extend classes
      • covariant supertype specialization
      • static type assertions
  • Java Interop
    • Source maps (JSR-45) for better debugging of inline functions
    • Initial support for Annotation Processing (JSR-269)
    • [deprecation] Only value can be passed as positional to Java annotations
  • JavaScript
    • Inlining works between modules
    • Reified parameters
    • Function expressions
    • Secondary constructors
  • JUnit support in Gradle plugin for Android
  • Standard Library
    • kotlin.io
    • new text utilities
    • regular expressions API unified across JVM and JS
    • new collections utilities
    • full list available here
  • IntelliJ IDEA Plugin
    • Introduce Parameter
    • Introduce Lambda Parameter
    • Rename for related declarations (variables, subclasses)
    • @ReplaceWith annotation for deprecated declarations
    • Debugger
      • Evaluate expression for local functions
      • Field Watch Points (only for properties with backing field)
    • Change Package Intention
    • Highlighting exit points of functions
    • Gutter Marks for recursive calls
    • Unused receiver parameter
    • Code style settings for imports (e.g. we can now always import specified packages with '*')
    • Java2Kotlin Converter now offers to update usages in other files
    • Typing '!' when completion list is open inserts negated call (e.g. !foo.isEmpty())
    • Intention actions to change visibility modifiers
    • Intention actions have much better scope of availability now
    • Quick-fix to add parameters from the base class when the superclass' constructor has parameters

Kotlin M11.1

27 Mar 18:16
Compare
Choose a tag to compare
Kotlin M11.1 Pre-release
Pre-release

Bugfix update

Kotlin M11

19 Mar 13:26
Compare
Choose a tag to compare
Kotlin M11 Pre-release
Pre-release
  • Language
  • Reflection
    • Class Literals
    • API for retrieving properties of a class
    • API for converting java.lang.Class <-> KClass etc
  • Java Interop
    • Warnings for annotated Java types
    • Int.MAX_VALUE etc
  • IDE
    • Unused Declarations
    • Change Signature: receiver <-> parameter
    • Function <-> Property
    • Create From Usage: Java interop
    • Create constructor parameter from usage
    • Introduce Property
    • KDoc support
    • Optimize/sort imports
    • Debugger: Evaluate Expression
      • Lambdas
      • Anonymous objects
  • Gradle
    • Java and Kotlin in the same source root
  • Libraries
  • JS
    • Binary Libraries
    • Inlining from linaries
  • Android
    • kotlin-android-extensions eliminate the need in findViewById()

M10.1

26 Dec 10:41
Compare
Choose a tag to compare
M10.1 Pre-release
Pre-release

Bugfix update

  • Multiple fixes and performance tweaks in the IDE
  • Gradle plugin now supports JavaScript
  • Minor tweaks and additions to the Standard Library
  • Better crash reports in the compiler

See M10 release notes here

Kotlin M10

17 Dec 10:58
Compare
Choose a tag to compare
Kotlin M10 Pre-release
Pre-release

What's new:

  • Language
    • Dynamic types (supported only when compiled to JavaScript)
    • Type inference supports capture for use-site variance
    • [breaking change] Reified type parameters for inline-functions
    • [breaking change] varargs are translated to Array<out T> instead of Array<T>
  • Java Interop
    • Static backing fields for properties in objects
    • [platformStatic] supported for properties
    • [native] annotation and JNI supported
    • HotSwap fixed in debugger (used to break because of lambdas)
    • Support for safe calls in assignments: a?.b = c
  • JavaScript Interop
    • Dynamic types (mentioned above)
    • js("string") function to write inline JS code
    • [nativeInvoke], [nativeGetter] and [nativeSetter] annotations
    • Escaping JS-keywords in generated code
    • No "unused" warnings in native declarations
    • -no-stdlib CLI option
  • Standard Library
    • [potentially breaking change] Array.size() and CharSeqence.length() are functions now
    • [potentially breaking change] CharSequence: charAt() and subsequence() introduced, get() is now an extension
    • mapIndexed, withIndex, forEachIndexed
    • [deprecation] size/length/first/head/tail/last properties
    • empty list/set/map singletons
    • comparator functions (compareBy, thenBy)
    • reified API (filterIsInstance, …)
    • componentN functions on collections: val (x, y) = “a=b”.split(“=”)
  • IDE/Compiler
    • Incremental compilation in mixed Kotlin/Java projects
    • Completion inserts casts to run-time types in Evaluate Expression
    • Copy Reference supported for Kotlin classes
    • Create From Usage supports type arguments, classes and packages
    • Change Signature interoperates with Java and supports type parameters
    • Applications runner supports main() function in objects
    • Automatic stdlib updates for JS, support for using library from plugin
    • Maven projects configuration for JS
    • Code Coverage information in editor (in IntelliJ IDEA 14)
    • Completion improvements: inheritors, sorting and highlighting members
    • Performance optimizations: memory in the IDE, parsing time
  • Build Tools
    • Support for new versions of Gradle and Android Studio

Kotlin M9

15 Oct 14:33
Compare
Choose a tag to compare
Kotlin M9 Pre-release
Pre-release

What's new:

  • Language
    • Platform Types
    • [breaking change] Local objects prohibited
    • Non-local returns from inline functions
    • type is no longer a keyword
  • JVM
    • [platformStatic] annotations
    • Byte code size improvements
    • Useless boxing/unboxing elimination
  • JavaScript
    • Language features supported: delegation, callable references, Long and Char, inline functions, multiple catch-blocks
    • [breaking change] Native traits exist only at compile time
    • [breaking change] New name mangling strategy
    • [breaking change] Packages renamed: js.* and js.debug.* -> kotlin.js.*, kotlin.query.* -> jquery.*
    • [breaking change] Changes in println() behavior
  • Incremental compilation in IntelliJ IDEA (experimental)
  • IDE plugin changes
    • Code Duplication detection in Extract Function
    • Create From Usage
    • Completion takes IDE modules into account
    • Find Usage and Rename respect conventions for operator overloading
    • Delegated properties in debugger
    • Completion improvements
  • CLI
    • [breaking change] Command Line options reworked

Kotlin M8

02 Jul 13:13
Compare
Choose a tag to compare
Kotlin M8 Pre-release
Pre-release

What's new:

  • JVM
    • Reflection for properties introduced
    • Inline functions
      • Inlines into objects are supported
      • Default parameter values supported for inline functions
    • Generated code speedups
      • delegated properties work faster now
      • when's with constants are faster due to dedicated bytecode instructions used
    • breaking change Reporting platform signature clashes
      • [platformName] annotation to resolve signature conflicts
    • transient, synchronized and strictfp supported on the JVM
  • JS
    • data classes supported
    • LinkedHashSet/LinkedHashMap supported
  • Language
    • breaking change private in a package now means "in this package and subpackages in the same module"
    • breaking change extension properties can't have backing fields
    • breaking change Bare @ and @@ are no longer available
  • Standard library
    • slice()
    • collection-like operations on strings
    • Map.contains
    • join() for rendering separated lists
    • String.substringBefore/After[Last]
    • String.replaceBefore/After[Last]
    • Appendable.appendln()
    • StringBuilder {}
    • Iterable.merge(other) { (v1,v2)→v }
    • set operations (union, intersect, subtract)
  • IDE
    • IntelliJ IDEA 14 EAP supported
    • Debugger
      • Evaluate expression
      • Smart step into
    • Refactorings
      • Move toplevel declarations to separate file
      • Extract function (not finished, but some cases working)
      • Extract local function
    • Intentions
      • DeMorgan law
      • Flip binary expression (== etc)
      • Split if
      • Replace with operator sign
      • Replace with traditional assignment
      • Replace with infix call
      • Simplify boolean expressions
      • Add/Remove explicit type arguments
      • assert <-> if with throw
      • if <-> ?:
      • !! <-> if
      • make types explicit/implicit in lambda
      • forEach { } <-> for loop
      • string concatenation <-> interpolation
    • Smart completion
      • smarter on overloads
      • callable references (::functionName)
      • lambdas
      • !! and ?: for nullable members
      • anonymous classes (object expressions)
      • constants in when()
    • Formatter improved
    • Structure view shows members of supertypes
    • J2K converter improved
    • Speedups in highlighting and completion
  • Support for new versions of Gradle/Android (0.10, 0.11, 0.12)