Releases: JetBrains/kotlin
Releases · JetBrains/kotlin
Kotlin 1.0.0 Beta 2
What's New
- Language
- Single-instantiation inheritance for type parameters
- More precise "smart cast impossible" (the reason is given now)
- "Always null" warningadded
- Library
- Ranges
Double
andFloat
progressions are droppedByte
andShort
progressions are deprecated, the..
operator for bytes and shorts now returnsIntRange
Range<T>
renamed toClosedRange<T>
and itsend
property renamed toendInclusive
Progression<T>
is deprecated in favor of concrete progression implementations instead:IntProgression
,LongProrgession
,CharProgression
start
andend
properties in progressions are renamed tofirst
andlast
kotlin.dom
andkotlin.browser
moved out as a separate library: kotlinx.dom- Strings/CharSequences
- String utility extensions were generalized to take
CharSequence
where possible
- String utility extensions were generalized to take
- Added
- in-place reversing and sorting for
MutableList
s andArray
s naturalOrder
andreverseOrder
comparatorsmapNotNull
,mapIndexedNotNull
,filterIndexed
String.toByte()
- in-place reversing and sorting for
- Сhanged
- Explicit type parameter specification for
filterIsInstance
now is required
- Explicit type parameter specification for
- Deprecated
Function.toGenerator
toLinkedList
- Dropped
join
,merge
Delegates.lazy
FileTreeWalk.filter
,File.recurse
,BufferedReader.lines
andlineIterator
assert
,check
andrequire
with non-lazy message argument
- Ranges
- IDE
- Completion of java static members and members from objects on second
Ctrl-Space
- Intention action to import Java statics, object members or enum entries
- Intention action to import all Java static members from the given class or enum entries from the given enum class
- Completion in string templates works after
"$name."
- Debugger supports choosing where to put a breakpoint: inside or outside a single-lined lambda
- Completion of java static members and members from objects on second
Kotlin 1.0. Beta
Bug fixes
- Semantics of companion object initialization fixed,
INSTANCE
field deprecated for companion objects - Use-site targets fixed for
@JvmName
- Exposing Java package-private types through
internal
declarations is allowed - Access to
Enum.values
from within enums fixed - Issues with Android 4 and
DefaultImpls
classes fixed - Method count optimized for delegated properties on Android
- Two
main()
functions can't appear in the same file
Kotlin 1.0.0 Beta Candidate
Language
- Imports from objects
@Deprecated
supportsERROR
andHIDDEN
levels (@HiddenDeclaration
is deprecated)- Smart casts for captured local
var
's that are not modified in lambdas - Single-file classes can have many
main()
's internal
visibility checked in the compiler- No defensive copying needed for varargs
- All Java methods with matching signatures are operators
- Rename:
unaryMinus
/unaryPlus
for unary operators - Rename:
getValue
/setValue
for delegated properties - Checks for operator signatures at declarations sites
infix
modifier for infix functions- Rename
sparam
annotation target tosetparam
@UnsafeVariance
annotationfun foo<T>()
deprecated in favor offun <T> foo()
- Constraints on type parameters should occur either in
where
or in<…>
x is Array<Foo>
forbidden in favor ofx is Array<*> && x.isArrayOf<Foo>()
- Callable references restricted to support bound references later
PropertyMetadata
deprecated in favor ofKProperty<*>
if
with noelse
in expression position is an error- Letters and digits right before/after string and char literals are prohibited
invoke
convention for extension functions is removed- Visibility requirements for members
- Protected members in objects are prohibited
final
in interfaces is prohibited- Visibility for local classes is prohibited
- Local interfaces are prohibited
- Private setters for non-private lateinit vars are prohibited
- Nothing-returning functions must declare return type explicitly
- Annotations on multi-declarations are prohibited
- Checks for escaped identifiers (backticks) to conform to JVM requirements
- Supertypes of the form
T.() -> Foo
are prohibited Foo<Int>.Bar
is prohibited- Type parameters for properties are prohibited unless they are used in the receiver type
- Parameter annotations and default values in function types are prohibited
inline
properties are prohibited;;
is reserved for future use
Libraries
- Formerly deprecated declarations have been dropped
size()
,length()
etc are made propertiesList.remove(int)
is renamed toremoveAt
Collection<E>.contains(Any?)
,Map<K, V>.get(Any?)
and other similar function are now type-safe:contains(E)
,get(K)
containsRaw
,getRaw
extensions and alike are defined for the Java-like utyped behaviorRegex
API changes:matchEntire
added,match
/matchAll
renamed tofind
/findAll
, alsoregex in string
can be used isntead ofregex.hasMatch(string)
listOf()
doesn't make a defensive copyStringBuilder {}
function deprecated in favor ofbuildString {}
- Rename:
merge
->zip
,join
removed (usejoinToString
),mapNotNull
deprecated to be changed later
Java interop
- Java classes inherit static from supertypes
List<Nothing>
is compiled to raw List to facilitate subtyping in Java- Support "static overrides" for Java fields
- Top-level privates are private to file
- Names of
internal
functions and properties are mangled - Kotlin classes see inherited statics and members of inherited companion objects
@Synchronized
and@Volatile
are inapplicable to unimplemented functionsisFoo()
instead ofgetIsFoo()
for properties namedisFoo
- Old package facades are dropped
- Inheritance rules comply with Java 8
is
distinguishesMutableList
fromList
and supports functions of different aritiesInt
,String
and other basic types areSerializable
@JvmField
is required to make something a fieldINSTANCE
for objects (instead ofINSTANCE$
)- Constant pool stings are resued to reduce metadata sizes
@KotlinSignature
is deprecated- Java sees defaul implementations of methods in the interface
Foo
as statics inFoo.DefaultImpls
class - Constants from Java libraries are inlined into Kotlin byte code
@publicField
is deprecated
Tools
- Compiler daemon enabled by default in the IDE
- Parallel Compilation of Independent Modules in the daemon mode
- External annotations support removed
IDE
- Parameter Info everywhere
- Completion for callable references after
::
- Actions to generated
equals()/hashCode()
- Actions to generate secondary constructors
- '*'-imports configuration
- Unit-testing support
Kotlin M14
What's new
- Language
- New syntax for backing field access
- Operators require a modifier (
operator
) - Compile-time constants are prefixed with
const
- Annotations on file classes supported
private
on the top level is now private to fileinternal
is checked in the compiler (not only IDE)private
in interfaces is truly private nowequals
in data classes compares arrays by calling their.equals()
method (which works by identity)lateinit
val
‘s are prohibited- many cases of inheritance and other degrees of freedom are prohibited for data classed (see this blog post)
protected
andinternal
members are prohibited in interfaces_
,__
,___
are forbidden as in identifiersidentityEquals()
function is deprecated in favor of===
- Standard Library API subdivided into part classes such as
CollectionsKt
- IDE
- Introduce backing property refactoring
- Move property initializer to declaration refactoring
- Add unambiguous imports on-the-fly
- Completion for overridden members
Kotlin M13 bugfix update
Bugfix update to 0.13.1513
- ProGuard issues fixed
Kotlin M13
What's New
- Language
lateinit
propertiessealed
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 defaultprivate
on the top level means private to current source fileinternal
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
- 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
build-0.12.613
M12 bugfix update
build-0.12.412
Kotlin M12
What's New
- Language
- @-based annotation syntax
- New label syntax (
name@
) KClass
instead ofjava.lang.Class
used in annotationsconstructor
keyword in primary constructorstrait
replaced withinterface
- 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
andcontinue
inwhen
- 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
Bugfix update