JetBrains, the company behind the popular Kotlin programming language, has announced that it will be dropping several scripting-related technologies from the language due to a lack of user adoption. In a blog post published on November 19, the company revealed that it will be discontinuing support for certain scripting features, including REPL functionality, an obsolete API for Java scripting, the KotlinScriptMojo Maven plugin, and the kotlin-scripting-ide-services library.
The decision to drop these technologies was made after JetBrains conducted research that showed that user needs were already being met by other supported technologies. As a result, the company has deemed it unnecessary to continue investing resources in these scripting features. However, JetBrains has emphasized that Kotlin scripting remains an essential part of the Kotlin infrastructure and will continue to be supported in an experimental state.
One of the technologies being discontinued is the default REPL (Read-Eval-Print Loop) implementation in the Kotlin compiler and IntelliJ IDEA plugin. JetBrains has stated that the functionality is limited and has not been a priority for improvement. Instead, the company will promote the Kotlin Notebook plugin and IDE Scratch files as alternative solutions for interactive Kotlin development. While some REPL-related functionality will be retained in the compiler and the Custom Scripting API, a significant portion of it will be dropped or changed with the final switch to the K2 compiler.
Another technology being dropped is Java Specification Request 223, which provides scripting for the Java platform. Since the original specification was withdrawn, JetBrains believes that supporting an obsolete API no longer makes sense. The existing implementation will continue to function until the release of Kotlin 2.3 in the language version 1.9 compatibility mode.
The KotlinScriptMojo Maven plugin, which supports script execution during a Maven build, will also be discontinued due to a lack of evidence of sufficient usage. Similarly, the kotlin-scripting-ide-services library, which provides code completion functionality for REPL implementations, will be removed from the code base. This library is heavily based on the pre-K2 compiler infrastructure and cannot be easily ported to the K2 version, making it incompatible with future releases of Kotlin.
Despite discontinuing these scripting technologies, JetBrains has emphasized that it will continue to support Gradle Kotlin DSL and the Custom Scripting API. The company will also maintain generalized support for scripting in Kotlin, including compilation and evaluation of basic .kts files, as well as custom scripting. However, JetBrains is not yet prepared to recommend Kotlin scripting as a generally applicable scripting solution or as a replacement for Bash or Python.
The decision to drop these scripting technologies is a significant shift in JetBrains' approach to Kotlin scripting. Scripting was initially introduced into Kotlin as an experiment to explore ways of using the language, and its development has been driven by external and internal adopters, as well as experiments by the Kotlin team. While JetBrains will continue to support scripting in an experimental state, the company's focus will now shift towards more widely adopted technologies.
The implications of this decision are significant for developers who have been using Kotlin scripting technologies. While JetBrains has provided alternative solutions for interactive Kotlin development, the discontinuation of these technologies may require developers to adapt their workflows and find new solutions. As the Kotlin ecosystem continues to evolve, it will be important to monitor how this decision affects the community and the language as a whole.