Releases: JetBrains/kotlin
Releases · JetBrains/kotlin
Kotlin M9
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
andChar
, inline functions, multiplecatch
-blocks - [breaking change] Native traits exist only at compile time
- [breaking change] New name mangling strategy
- [breaking change] Packages renamed:
js.*
andjs.debug.*
->kotlin.js.*
,kotlin.query.*
->jquery.*
- [breaking change] Changes in println() behavior
- Language features supported: delegation, callable references,
- 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
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
andstrictfp
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
- breaking change
- Standard library
slice()
- collection-like operations on strings
Map.contains
join()
for rendering separated listsString.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)
Dot Operator
Release date: April 1, 2014
What's new
Limitations:
The following things are NOT implemented:
- The higher-order dots. I find this feature quite specific and less useful in practice so I guess it can be put off for a while
- Dot flavours. For me this feature looks rather confusing, so I suggest reconsidering whether it's worth implementing at all
Kotlin M7
What's new:
- Language
- Inline functions
- [breaking change]
jet
package renamed tokotlin
- [breaking change] toString(), equals() and hashCode() are now members of Any
- References to local functions
- Interop
- [throws] annotation for JVM target
- Overloading supported for JS target
- Standard Library
- [breaking change] Streams introduced
- IDE enhancements
- Rename/move refactorings improved
- Safe delete
- New intention actions
- Performance improvements
Kotlin M6.2
What's new:
- Language features
- Tail-call optimization with
[tailRecursive]
- Constant expression evaluation
- Suffixes for Longs and Floats:
1L
and1.0F
- Tail-call optimization with
- Compilation to JavaScript
- Default arguments
- Super-constructor calls
- Class-objects in traits
- Java Inteoperability
@ReadOnly
and@Mutable
for collections
- Android
- Better annotations for Android SDK
- IDE
- Support for IntelliJ IDEA 13
- Find Usages
- Compiler preferences
- Smart completion (
Ctrl+Shift+Space
) - Rename from Java
- IDE warns on misusing Kotlin APIs from Java
- Ant
- Integration with
<javac>
- Support for compilation to JavaScript
- Integration with
Kotlin M6.1
What's new:
- Language features
else
is not required inwhen
-statements- Type argument inference uses smart casts
- Ability to suppress warnings with
[suppress("...")]
annotation - Local returns in lambda expressions
- Compilation to JavaScript
- Enums
- Class Objects
- Delegated properties
- Multi-Declarations
- SourceMaps
- IntelliJ Plugin Improvements
- Automatic configuration of Maven and Gradle projects
- Convert member function to extension function
- Navigation to getters and setters of a delegated property
- Navigation to iterator/next/hasNext in a for loop
- Navigation to invoke() from a call site
- Improvements on Find Usages including support for constructors and overrides
Read more in this blog post
Kotlin M6
What's new:
- Language features
- SAM Conversions
- Annotation improvements
- Static fields visible from Java
- Android
- Integration with Gradle for Android
- Integration with Android Studio
- IDE features
- Inline variable, Safe delete and other refactorings
- TestNG support
- Faster code completion
See a detailed description in this blog post.