Category Archives: Language design

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

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

Making Platform Interop even smoother

Being 100% interoperable with the JVM, and subsequently with JavaScript, has always been among Kotlin’s top priorities. With the amount of existing code, and a rich JVM ecosystem, having the ability of interoperating and leveraging these is crucial.

Posted in Language design | 31 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

The Dot Operator

Warning: this is an April Fools’ post Point-free style is a big trend in modern functional programming: it allows to manipulate functions without mentioning their arguments which makes the code concise and compositional. Here is an example from Wikipedia:

Continue reading

Posted in Language design | Tagged | 20 Comments

Ranges Reloaded

In Kotlin M5 we have redesigned our ranges a little bit.

Posted in Language design | Tagged | 11 Comments

How do you traverse a map?

It’s been a while since I blogged last time on Kotlin M2. Now, the hot summer has passed, and M3 will be out very soon. In this post I describe two small features added in M3 that make our lives … Continue reading

Posted in Language design | Tagged | 42 Comments