Kotlin 1.1 beta adds JavaScript compilation

The new version of the language also adds experimental support for coroutines on the JVM, Android, and JavaScript

Kotlin, JetBrains' statically typed language, is bolstering its JavaScript and Java standing with the 1.1 beta release this week, adding JavaScript compilation and coroutines on both the JVM and JavaScript.

JavaScript compilation had been in an incomplete, experimental phase, even as builders have had JavaScript ambitions for Kotlin for several years. "There were many things missing from the standard library and things such as proper interop with package systems weren't production-ready," said Hadi Hariri, vice president of developer advocacy at JetBrains. "With 1.1, there was a focus to make all of this happen."

The language now has proper support for different types of modules in JavaScript as well as having the standard library in part with the JVM. The compilation capability means developers can use Kotlin strings, collections, sequences, arrays, and other core APIs on JavaScript as well as JVM/Android, said Antony Breslav, lead language designer for Kotlin at JetBrains. "Numerous popular JS libraries will be available through typed headers (converted from DefinitelyTyped)," Breslav said.

JetBrains is supporting popular runtime module systems for JavaScript as well as webpack and other important tools. With Kotlin 1.2 and beyond, JetBrains plans to improve JavaScript tooling. "Our goal is to enable pleasant full-stack development with Kotlin," Breslav said.

The beta also has experimental support of coroutines (functions that can be suspended and resumed) on the JVM, Android, and JavaScript. This means developers can use future/await, yield, and similar programming patterns. With Kotlin's design, the implementation of coroutines is part of the libraries rather than the language, meaning developers are not bound to a specific programming paradigm or concurrency library.

Type aliases in version 1.1 enable developers to define an alternative name for a type. This is useful for generic types, such as collections, and also for function types. Bound callable references in the beta, meanwhile, allow use of the : : operator to access a member reference that points to a method or property of a specific object instance. This previously was reserved for lambdas.

Compiler plugins are featured to make classes open by default, generation of no-arg constructors, also by default, and extending SAM (single abstract method) conversions. Also, some restrictions on sealed and data classes were removed; developers now can define subclasses of a sealed subclass in the same file and not just as nested classes of the sealed class. Data classes can extend other classes and be used to define a hierarchy of expressions "nicely and cleanly," JetBrains said. Verson 1.1 deprecates the name mod that was used for the % operator and replaces it with the name ram, which is semantically correct and agrees with libraries like java.math.BigInteger.

Kotlin joined the fray on the JVM early in the decade. Recently, it has taken hold on the Tiobe language popularity index, reaching into the top 100 of that list. It was ranked 87th this month. Kotlin 1.1 is expected to reach a general release stage this quarter. 

Join the newsletter!

Error: Please check your email address.

More about

Show Comments

Market Place