The latest updates on all JetBrains products and topics
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. (more…)…
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. (more…)…
Please note that this post is an April Fool's Day joke. 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. Cl…
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 system. We also know that type systems are hard: many computer scientists…
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 attached to an instance of any class, you define it in a package, outside any class (we call it pac…
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: mf = (. map) . (.) . filter This function…
In Kotlin M5 we have redesigned our ranges a little bit. (more…)…
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 easier and will lead to simplification of the language. How do you traverse a map? Assume you have a ma…
As the first public preview of Kotlin is approaching (it will be announced on Jan 10th, 2012, which is less than a week from now!), we are putting some things in order... In particular, we have reviewed syntactic forms available in the language, and decided to change a few. These changes are incomp…
A post about good books, language design and JIT compilation, in which one bug turns into another and than back... Recently I started looking through an excellent book "Java™ Puzzlers", where Joshua Bloch and Neal Gafter provide a list of Java's "Traps, Pitfalls, and Corner Cases", i.e. programs t…
If you have a very nice API, it is the fashion nowadays to call it an internal DSL, because the code that uses such an API reads almost like a language inside your language of choice. Fluent interfaces serve as one of the most popular examples. Many modern languages provide some advanced means for …
In the previous post in this series we discussed the disadvantages of the inheritance model we initially planned for Kotlin. Today we will talk about alternative designs. Note that these posts are intended to provoke a discussion, so that we can benefit from your feedback and come up with a better …