Author Archives: Andrey Breslav

About Andrey Breslav

Andrey is the lead language designer of Kotlin at JetBrains.

More changes: Enum Syntax, Another Deprecation and More

Enum Syntax Currently the syntax for enums with non-trivial constructors is kind of monstrous:

Posted in Language design | 59 Comments

More Deprecations Coming

There are two more items on the language cleanup list: backing-field syntax and static type assertion operator.

Posted in Language design | 19 Comments

Upcoming Change: Syntax For Annotations

Kotlin’s syntax for annotations was inspired by C#, which surrounds them with square brackets:

But brackets are precious for a language designer, and we would really like to use them later for something else, so we are considering changing … Continue reading

Posted in Language design | 29 Comments

Upcoming Feature Deprecations

As we are finalizing the language design, many things have to be cleaned up, and among these are features that were initially designed and (often partly) implemented, but turned out not to be worth the trouble supporting them. In the … Continue reading

Posted in Language design | 18 Comments

Kotlin M11 is Out!

Today we are releasing a new milestone: Kotlin M11, which brings such long-awaited features as secondary constructors, a first glimpse of true reflection support for Kotlin and much more.

Posted in Releases | 82 Comments

Follow-up: New Class Object Syntax

In the previous post I explained the rethought design of what used to be called “class objects”: they are now more uniform with normal nested objects, have names (name may be omitted, but a default one will be used by … Continue reading

Posted in Language design | 53 Comments

Upcoming Change: “Class Objects” Rethought

Kotlin M11 is coming very soon, and as some of you expressed concerns about being informed about the upcoming changes, I will describe one of the features of M11 and ask you for some feedback.

Posted in Language design | 43 Comments

Kotlin gets support for S-expressions

Kotlin is always happy to learn from other programming languages, and this is why we decided to support S-expressions, the empowering concept of LISP. The main motivation behind this is the compatibility with Clojure, the LISP for the JVM. Clojure … Continue reading

Posted in Language design | 21 Comments

Mixed-Site Variance in Kotlin

Type systems… We all know they are cool. In a static language, like Kotlin, the type system is the one responsible for early detection of errors. Many tools (e.g. an IDE with its refactoring abilities) also rely on the type … Continue reading

Posted in Language design | Tagged | 17 Comments

“Static constants” in Kotlin

Kotlin is designed so that there’s no such thing as a “static member” in a class. If you have a function in a class, it can only be called on instances of this class. If you need something that is not … Continue reading

Posted in Language design | Tagged | 7 Comments