Welcome to Kotlin! Some handy links:
In order to build Kotlin distribution you need to have:
Apache Ant 1.9.4 and higher
JDK 1.6, 1.7 and 1.8
Setup environment variables as following:
JAVA_HOME="path to JDK 1.8" JDK_16="path to JDK 1.6" JDK_17="path to JDK 1.7" JDK_18="path to JDK 1.8"
Note: The JDK 6 for MacOS is not available on Oracle's site. You can download it here.
To build this project, first time you try to build you need to run this:
ant -f update_dependencies.xml
which will setup the dependencies on
intellij-coreis a part of command line compiler and contains only necessary APIs.
idea-fullis a full blown IntelliJ IDEA Community Edition to be used in the plugin module.
Then, you need to run
ant -f build.xml
which will build the binaries of the compiler and put them into the
dist directory. You may need to increase the heap size for Ant using ANT_OPTS.
OPTIONAL: Maven artifact distribution is built separately, go into
libraries directory after building the compiler and run:
./gradlew build install mvn install
Note: on Windows type
gradlewwithout the leading
Refer to libraries/ReadMe.md for details.
The root kotlin project already has an IntelliJ IDEA project, you can just open it in IntelliJ IDEA.
You may need to set the Project SDK (
File -> Project Structure -> Project). You may also need to add
tools.jar to your SDK:
File -> Project Structure -> SDKs -> <Your JDK> -> Classpath
then choose the
tools.jar in the JDK's
If you are not dealing with Android, you may need to disable the Android Plugin in order to compile the project.
Since Kotlin project contains code written in Kotlin itself, you will also need a Kotlin plugin to build the project in IntelliJ IDEA.
You probably want to have locally the same version of plugin that build server is using for building. As this version is constantly moving, the best way to always be updated is to let IntelliJ IDEA notify you when it is time to renew your plugin.
To keep the plugin version in sync with the rest of the team and our Continuous Integration server you should setup IDEA to update the plugin directly from the build server.
Preferences -> Plugins -> Browse Repositories -> Manage Repositories...
and add the following URL to your repositories:
Then update the list of plugins in “Browse Repositories”, you'll see two versions of Kotlin there, install the one with the higher version number.
If you want to keep an IntelliJ IDEA installation with that bleeding edge Kotlin plugin for working Kotlin project sources only separate to your default IntelliJ IDEA installation with the stable Kotlin plugin see this document, which describes how to have multiple IntelliJ IDEA installations using different configurations and plugin directories.
From this root project there are Run/Debug Configurations for running IDEA or the Compiler Tests for example; so if you want to try out the latest and greatest IDEA plugin
We love contributions! There‘s lots to do on Kotlin and on the standard library so why not chat with us about what you’re interested in doing? Please join the #kontributors channel in our Slack chat and let us know about your plans.
If you want to find some issues to start off with, try this query which should find all Kotlin issues that marked as “up-for-grabs”.
Currently only committers can assign issues to themselves so just add a comment if you're starting work on it.
A nice gentle way to contribute would be to review the standard library docs and find classes or functions which are not documented very well and submit a patch.
In particular it‘d be great if all functions included a nice example of how to use it such as for the
hashMapOf() function. This is implemented using the
@sample macro to include code from a test function. The benefits of this approach are twofold; First, the API’s documentation is improved via beneficial examples that help new users and second, the code coverage is increased.
The Kotlin compiler is written in Java and Kotlin (we gradually migrate more and more of it to pure Kotlin). So the easiest way to work on the compiler or IntelliJ IDEA plugin is
You can now run the various Run/Debug Configurations such as
Then build via
cd libraries ./gradlew build install mvn install
Note: on Windows type
gradlewwithout the leading
Some of the code in the standard library is created by generating code from templates. See the README in the stdlib section for how run the code generator. The existing templates can be used as examples for creating new ones.
The best way to submit a patch is to fork the project on github then send us a pull request via github.
If you create your own fork, it might help to enable rebase by default when you pull by executing
git config --global pull.rebase true
This will avoid your local repo having too many merge commits which will help keep your pull request simple and easy to apply.
If you include in your comment this text (where KT-1234 is the Issue ID in the Issue Tracker), the issue will get automatically marked as fixed.