{"id":65244,"date":"2020-08-17T17:18:50","date_gmt":"2020-08-17T17:18:50","guid":{"rendered":"http:\/\/blog.jetbrains.com\/?post_type=kotlin&#038;p=65244"},"modified":"2021-10-04T14:58:54","modified_gmt":"2021-10-04T13:58:54","slug":"kotlin-1-4-released-with-a-focus-on-quality-and-performance","status":"publish","type":"kotlin","link":"https:\/\/blog.jetbrains.com\/ja\/kotlin\/2020\/08\/kotlin-1-4-released-with-a-focus-on-quality-and-performance","title":{"rendered":"Kotlin 1.4 Released with a Focus on Quality and Performance"},"content":{"rendered":"<p>You can read this blog post in other languages:<br \/>\n<a href=\"https:\/\/blog.jetbrains.com\/ja\/kotlin\/2020\/08\/kotlin-1-4-released-with-a-focus-on-quality-and-performance-ja\">\u65e5\u672c\u8a9e<\/a>, <a href=\"https:\/\/blog.jetbrains.com\/ja\/kotlin\/2020\/08\/kotlin-1-4-ist-da\">Deutsch<\/a>, <a href=\"https:\/\/blog.jetbrains.com\/ja\/kotlin\/2020\/08\/kotlin-1-4-est-disponible-et-met-l-accent-sur-la-qualite-et-la-performance\">Fran\u00e7ais<\/a>, <a href=\"https:\/\/blog.jetbrains.com\/ja\/kotlin\/2020\/08\/kotlin-1-4-released-with-a-focus-on-quality-and-performance-ko\">\ud55c\uad6d\uc5b4<\/a>, <a href=\"https:\/\/blog.jetbrains.com\/ja\/kotlin\/2020\/08\/lanzamos-kotlin-1-4-calidad-y-rendimiento\">Espa\u00f1ol<\/a>, <a href=\"https:\/\/blog.jetbrains.com\/ja\/kotlin\/2020\/08\/lancamento-do-kotlin-1-4-com-foco-na-qualidade-e-no-desempenho\">Portugu\u00eas<\/a>, <a href=\"https:\/\/blog.jetbrains.com\/ja\/kotlin\/2020\/08\/kotlin-1-4-released-with-a-focus-on-quality-and-performance\">\u0420\u0443\u0441\u0441\u043a\u0438\u0439<\/a>, <a href=\"https:\/\/blog.jetbrains.com\/ja\/kotlin\/2020\/08\/kotlin-1-4-released-with-a-focus-on-quality-and-performance-zh\">\u7b80\u4f53\u4e2d\u6587<\/a><\/p>\n<p>Today we\u2019re releasing Kotlin 1.4.0! Over the past years, we\u2019ve been working hard on making Kotlin a programming language that is fun, enjoyable, and productive to work with. To continue our pursuit of this goal with this version of Kotlin, we put a lot of energy and effort into improving the performance and quality of Kotlin and its tooling. We are also excited to announce support for several new language features, including the long-awaited SAM conversions for Kotlin interfaces.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/08\/image-1597417083773.png\" alt=\"file\"><\/p>\n<p>To help you get the most out of the changes and improvements introduced in Kotlin 1.4, we\u2019re inviting all of you to the <a href=\"https:\/\/kotlinlang.org\/lp\/event-14\" target=\"_blank\" rel=\"noopener\">Kotlin 1.4 Online Event<\/a>, where you will be able to enjoy four days of Kotlin talks, Q&amp;As with the Kotlin team, and more \u2013 completely free.<\/p>\n<h2>Community and ecosystem {#compiler-and-ecosystem}<\/h2>\n<p>More than 5.8 million people have edited Kotlin code in the last 12 months, and the numbers are constantly growing:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/08\/image-1597316273309.png\" alt=\"file\"><\/p>\n<p>We\u2019re delighted to see how popular Kotlin is becoming! The numbers of active users \u2013 we\u2019ll explain this metric in more detail in a future blog post \u2013 have been especially encouraging. Here, we are seeing a 1.5-fold increase over the previous year\u2019s figures.<\/p>\n<p>According to the <a href=\"https:\/\/insights.stackoverflow.com\/survey\/2020#most-popular-technologies\" target=\"_blank\" rel=\"noopener\">StackOverflow Developer Survey 2020<\/a>, Kotlin has climbed to 13th place among the most popular programming languages for professional developers, and we\u2019re happy to see that Kotlin is one of the top 5 most loved languages.<\/p>\n<p>Many companies have picked Kotlin as their language of choice, and are successfully using it on all platforms. We&#8217;re happy to see this tendency, and we\u2019re tremendously grateful that so many of these companies have made case studies available for the community to read and learn from. Here are just a few amazing examples of software recently developed in Kotlin:<\/p>\n<ul>\n<li>Server-side: <a href=\"https:\/\/www.youtube.com\/watch?v=4GkoB4hZUnw\" target=\"_blank\" rel=\"noopener\">Atlassian<\/a>, <a href=\"https:\/\/medium.com\/adobetech\/streamlining-server-side-app-development-with-kotlin-be8cf9d8b61a\" target=\"_blank\" rel=\"noopener\">Adobe<\/a>, <a href=\"https:\/\/medium.com\/ing-blog\/introducing-kotlin-at-ing-a-long-but-rewarding-story-1bfcd3dc8da0\" target=\"_blank\" rel=\"noopener\">ING Bank<\/a>;<\/li>\n<li>Android: <a href=\"https:\/\/developer.android.com\/stories\/apps\/google-home\" target=\"_blank\" rel=\"noopener\">Google Home<\/a>, <a href=\"https:\/\/developer.android.com\/stories\/apps\/duolingo-kotlin\" target=\"_blank\" rel=\"noopener\">Duolingo<\/a>, <a href=\"https:\/\/www.youtube.com\/watch?v=ao9QvtpszOU\" target=\"_blank\" rel=\"noopener\">Zomato<\/a>;<\/li>\n<li>Multiplatform Mobile: <a href=\"https:\/\/medium.com\/vmware-end-user-computing\/adopting-a-cross-platform-strategy-for-mobile-apps-59495ffa23b0\" target=\"_blank\" rel=\"noopener\">VMware<\/a>, <a href=\"https:\/\/kotlinconf.com\/2019\/talks\/video\/2019\/116027\/\" target=\"_blank\" rel=\"noopener\">PlanGrid and CashApp<\/a>, <a href=\"https:\/\/shift.mirego.com\/en\/trikot\" target=\"_blank\" rel=\"noopener\">Trikot<\/a> by Mirego;<\/li>\n<li>Web: <a href=\"https:\/\/kotlinconf.com\/2019\/talks\/video\/2019\/137062\/\" target=\"_blank\" rel=\"noopener\">Space by JetBrains<\/a>, <a href=\"https:\/\/www.karhoo.com\/\" target=\"_blank\" rel=\"noopener\">Karhoo<\/a>, <a href=\"https:\/\/www.youtube.com\/watch?v=lzsF0NuhS6g\" target=\"_blank\" rel=\"noopener\">VisionForge<\/a> by <a href=\"https:\/\/github.com\/mipt-npm\" target=\"_blank\" rel=\"noopener\">the MIPT Nuclear physics methods laboratory<\/a>.<\/li>\n<\/ul>\n<p>Our Kotlin communities are also growing rapidly. Over 30,000 Kotlin developers are now exchanging knowledge and supporting each other on <a href=\"https:\/\/surveys.jetbrains.com\/s3\/kotlin-slack-sign-up\" target=\"_blank\" rel=\"noopener\">Slack<\/a> and <a href=\"https:\/\/www.reddit.com\/r\/Kotlin\/\" target=\"_blank\" rel=\"noopener\">Reddit<\/a>, and more than 90,000 people follow our official <a href=\"https:\/\/twitter.com\/kotlin\" target=\"_blank\" rel=\"noopener\">Twitter account<\/a> for tips, tricks, and announcements. With over 200 user groups worldwide, the Kotlin community is thriving and growing. We\u2019re thankful to all of you for helping spread the word, sharing your knowledge, and supporting your fellow Kotlin developers. The warm, welcoming atmosphere you create is what makes exploring Kotlin together such a delightful experience. It wouldn\u2019t be the same without you.<\/p>\n<h3>Kotlin 1.4 Online Event {#online-event}<\/h3>\n<p>We want to make sure that you have a great experience using Kotlin 1.4, and we want you to have a good idea of where we are taking the language next. This is why we are happy to invite all of you to our Kotlin 1.4 Online Event!<\/p>\n<p>It consists of four days packed with knowledge about Kotlin and the future of the language and its ecosystem: We\u2019ll discuss the new changes and improvements we made with Kotlin 1.4, and we\u2019ll share our future plans for the language. Our Kotlin team members will answer your questions in daily Q&amp;A sessions. Submit your questions in advance by tweeting them with the <a href=\"https:\/\/twitter.com\/search?q=%23kotlin14ask&amp;src=typed_query\" target=\"_blank\" rel=\"noopener\">#kotlin14ask<\/a> hashtag, or using <a href=\"https:\/\/surveys.jetbrains.com\/s3\/Q-A-Your-question-for-the-Kotlin-team\" target=\"_blank\" rel=\"noopener\">this form<\/a>.<\/p>\n<p>The Kotlin 1.4 Online Event will be streamed on October 12\u201315, and you can register <em>for free<\/em> here:<\/p>\n<p align=\"center\"><a class=\"jb-download-button\" href=\"https:\/\/kotlinlang.org\/lp\/event-14#registration\" target=\"_blank\" rel=\"noopener\"><i class=\"download-icon\"><\/i>Register for Kotlin 1.4 Online Event<\/a><\/p>\n<p>We look forward to seeing all of you there!<\/p>\n<h2>Focusing on quality {#focusing-on-quality}<\/h2>\n<p>Our main focus for this release was improving the overall development experience with Kotlin, including improved IDE performance and stability. Our goal is to make Kotlin users as productive as possible, and we focused on improving the things that are most important to users, so they feel even happier when using it!<\/p>\n<p>We\u2019ve reviewed and fixed <a href=\"https:\/\/youtrack.jetbrains.com\/issues?q=%23%7BPerformance%20Problem%7D%20Subsystems:%20%7BIDE*%7D%20%23Fixed%20resolved%20date:%202019-10%20..%20Today%20and%20Target%20versions:%20-1.4.20\" target=\"_blank\" rel=\"noopener\">more than 60<\/a> performance issues, including many that were causing IDE freezes or memory leaks. During the EAP phase for Kotlin 1.4.0, we gathered a lot of positive feedback indicating that the overall experience is now much more enjoyable!<\/p>\n<p>When you are working with a project and open a large Kotlin file for the first time, you now see its content with highlighting much sooner. In most cases, highlighting is now 1.5-4 times faster:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/08\/image-1596832840332.png\" data-gif-src=\"https:\/\/resources.jetbrains.com\/storage\/products\/blog\/wp-content\/uploads\/Kotlin\/1.4-release-highlighting.gif\" width=\"607\" height=\"454\"><\/p>\n<p>We have also significantly improved the time it takes for autocomplete suggestions to appear. The following graph shows an overview of the average autocomplete response times that Kotlin users experience. The number of cases in which completion takes more than 500 ms has been cut nearly in half:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.jetbrains.com\/wp-content\/uploads\/2020\/08\/image-1597151211621.png\" alt=\"file\"><\/p>\n<p>Note that these latest changes, including the code highlighting speed-up, require IntelliJ IDEA  2020.1+ and Android Studio 4.1+.<\/p>\n<p>Performance improvements are an ongoing process, and we have many more enhancements planned, like continuing to work on eliminating freezing and making typing smoother. We\u2019ve already started integration with the new experimental Kotlin <a href=\"#new-compiler\">compiler frontend<\/a> that will make the IDE a lot faster. This is a huge task that requires many parts of the plugin to be rewritten, but it will boost performance in many areas of the IDE, including code completion, syntax highlighting, and compiler error reporting.<\/p>\n<h3>New IDE functionality {#new-ide-functionality}<\/h3>\n<p>Our mission at JetBrains is to make software development a more productive and enjoyable experience, so we naturally want to make sure that the tooling surrounding Kotlin is excellent and makes coding Kotlin as easy as possible.<\/p>\n<p>To make it easier for you to work with coroutines, and especially to pinpoint bugs in your concurrent applications, we\u2019ve introduced the <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#coroutine-debugger\" target=\"_blank\" rel=\"noopener\">Coroutine Debugger<\/a>. We\u2019re going to expand on its initial feature set to provide the functionality most needed by the community, so please share your feedback with us using one of our channels or in the comments section below.<\/p>\n<p>We are also introducing a new flexible <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#new-flexible-project-wizard\" target=\"_blank\" rel=\"noopener\">Kotlin Project Wizard<\/a>. This new wizard provides a single place for you to create and configure Kotlin projects of different types, making it easy to get started even with more complex structures such as multiplatform projects.<\/p>\n<p>More than <a href=\"https:\/\/youtrack.jetbrains.com\/issues?q=%23Feature%20Subsystems:%20%7BIDE.%20Inspections%20and%20Intentions%7D%20%23Fixed%20resolved%20date:%202019-10%20..%20Today%20and%20Target%20versions:%20-1.4.20\" target=\"_blank\" rel=\"noopener\">40 new quick-fixes<\/a>, intentions, and inspections have been added with Kotlin 1.4.0, and will be available exactly when you need them \u2013 when you modify your code, and <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/intention-actions.html#apply-intention-actions\" target=\"_blank\" rel=\"noopener\">press Alt+Enter<\/a> to see what\u2019s available in your specific context.<\/p>\n<h3>New compiler {#new-compiler}<\/h3>\n<p>For quite some time now, we\u2019ve been working on a new Kotlin compiler that will advance the evolution of Kotlin in terms of performance and extensibility. The main goals for the new compiler are that it should be really fast, unify all the platforms that Kotlin supports, and provide an API for compiler extensions. We\u2019re introducing new parts step by step, so that they reach the user as soon as possible. With Kotlin 1.4.0, we\u2019re releasing several parts from this ongoing effort:<\/p>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#new-more-powerful-type-inference-algorithm\" target=\"_blank\" rel=\"noopener\">New, more powerful type inference algorithm<\/a> is enabled by default. It infers types automatically in more use-cases, supports smart casts even in complicated scenarios, improves inference for delegated properties, and more.<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#unified-backends-and-extensibility\" target=\"_blank\" rel=\"noopener\">New JVM and JS backends<\/a> are available in <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/evolution\/components-stability.html\" target=\"_blank\" rel=\"noopener\">Alpha<\/a> mode. Once stabilized, they will become the new default.<\/li>\n<\/ul>\n<p>We\u2019re actively working on a new frontend implementation, which will provide the biggest performance increase in the compiler pipeline. The frontend is the part of the compiler that parses the code, resolves names, performs type checking, and more, so it affects the IDE performance as well. A preview of it will be available in future releases, stay tuned!<\/p>\n<h2>Language features {#language-features}<\/h2>\n<p>Kotlin 1.4 comes with many new features:<\/p>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#sam-conversions-for-kotlin-interfaces\" target=\"_blank\" rel=\"noopener\">SAM conversions for Kotlin interfaces<\/a><\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#explicit-api-mode-for-library-authors\" target=\"_blank\" rel=\"noopener\">Explicit API mode for library authors<\/a><\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#mixing-named-and-positional-arguments\" target=\"_blank\" rel=\"noopener\">Mixing named and positional arguments<\/a><\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#trailing-comma\" target=\"_blank\" rel=\"noopener\">Trailing comma<\/a><\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#callable-reference-improvements\" target=\"_blank\" rel=\"noopener\">Callable reference improvements<\/a><\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#using-break-and-continue-inside-when-expressions-included-in-loops\" target=\"_blank\" rel=\"noopener\">Using <code>break<\/code> and <code>continue<\/code> inside <code>when<\/code> in loops<\/a><\/li>\n<\/ul>\n<h2>Library improvements {#library-improvements}<\/h2>\n<p>Our general priority for the standard library is to improve consistency, both across different platforms and among the operations themselves. In this release, the Kotlin standard library gets <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#new-functions-for-arrays-and-collections\" target=\"_blank\" rel=\"noopener\">new collection operators<\/a>, <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#delegated-properties-improvements\" target=\"_blank\" rel=\"noopener\">delegated properties improvements<\/a>, <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#arraydeque\" target=\"_blank\" rel=\"noopener\">the double-ended queue implementation <code>ArrayDeque<\/code><\/a>, and much <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#standard-library\" target=\"_blank\" rel=\"noopener\">more<\/a>.<\/p>\n<p>You can use the standard library in \u201ccommon\u201d code \u2013 the code shared between different platforms, be they Android &amp; iOS or JVM &amp; JS. We\u2019re gradually extending the common library and adding or moving missing functionality to it.<\/p>\n<p>It is also no longer necessary to declare a dependency on the <code>stdlib<\/code> in any Gradle Kotlin project, whether you are targeting a single platform or working in a multiplatform project. Starting with Kotlin 1.4.0, this dependency <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#dependency-on-the-standard-library-added-by-default\" target=\"_blank\" rel=\"noopener\">is added by default<\/a>.<\/p>\n<p>We\u2019re working on other parts of the Kotlin ecosystem:<\/p>\n<ul>\n<li>We\u2019re gradually evolving <a href=\"https:\/\/github.com\/Kotlin\/kotlinx.coroutines\" target=\"_blank\" rel=\"noopener\">kotlinx.coroutines<\/a> based on your feedback.<\/li>\n<li>The <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/serialization.html\" target=\"_blank\" rel=\"noopener\">serialization library<\/a> is getting closer to maturity. We\u2019re releasing <a href=\"https:\/\/github.com\/Kotlin\/kotlinx.serialization\/releases\/tag\/1.0.0-RC\" target=\"_blank\" rel=\"noopener\">kotlinx.serialization<\/a> 1.0.0-RC version today!<\/li>\n<li>We\u2019ve already <a href=\"https:\/\/discuss.kotlinlang.org\/t\/kotlinx-datetime-0-1-has-been-published\/18766\" target=\"_blank\" rel=\"noopener\">released<\/a> the preview for the DateTime API, the <a href=\"https:\/\/github.com\/Kotlin\/kotlinx-datetime\" target=\"_blank\" rel=\"noopener\">kotlinx-datetime<\/a> library in an experimental state.<\/li>\n<\/ul>\n<h2>Kotlin\/JVM {#kotlin-jvm}<\/h2>\n<p>We encourage you to try out the new Alpha <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#new-jvm-ir-backend\" target=\"_blank\" rel=\"noopener\">Kotlin\/JVM backend<\/a> for your regular projects and share your feedback! Along with unifying the compiler pipelines, this effort will help us bring compiler extensions like <a href=\"https:\/\/developer.android.com\/jetpack\/compose\" target=\"_blank\" rel=\"noopener\">Jetpack Compose<\/a> to the Kotlin community more quickly.<\/p>\n<p>Language features specific to Kotlin\/JVM:<\/p>\n<ul>\n<li>We\u2019ve added <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#new-modes-for-generating-default-methods\" target=\"_blank\" rel=\"noopener\">new experimental ways for generating default methods<\/a> in interfaces in the bytecode (for the Java 8 target).<\/li>\n<li>We&#8217;ve introduced <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#unified-exception-type-for-null-checks\" target=\"_blank\" rel=\"noopener\">unified exception types for null checks<\/a>.<\/li>\n<li>Kotlin can now generate <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#type-annotations-in-the-jvm-bytecode\" target=\"_blank\" rel=\"noopener\">type annotations<\/a> in the JVM bytecode, so that they become available in Java reflection at runtime. This works for target versions 8 and up, and so far has been released in the experimental state.<\/li>\n<\/ul>\n<h2>Kotlin\/JS {#kotlin-js}<\/h2>\n<p>Kotlin 1.4.0 comes with a new Gradle DSL and an Alpha version of the new Kotlin\/JS compiler backend, among other features.<\/p>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#new-gradle-dsl\" target=\"_blank\" rel=\"noopener\">The new Gradle DSL<\/a> adds support for configuring CSS and style loaders from the DSL, it includes various improvements related to npm dependency management and improves control over the Dukat integration.<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#new-js-ir-backend\" target=\"_blank\" rel=\"noopener\">The new Kotlin\/JS compiler backend<\/a> gives a taste of the future for Kotlin\/JS. It includes optimizations and features such as the automatic generation of TypeScript definitions from Kotlin code, smaller binaries and bundles, a modernized way to expose Kotlin functionality to JavaScript, and more.<\/li>\n<\/ul>\n<h2>Kotlin\/Native {#kotlin-native}<\/h2>\n<p>Kotlin\/Native got a significant number of new features and improvements, including:<\/p>\n<ul>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#performance-improvements\" target=\"_blank\" rel=\"noopener\">Improvements to the overall performance of Kotlin\/Native compilation and execution<\/a>.<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#support-for-kotlins-suspending-functions-in-swift-and-objective-c\" target=\"_blank\" rel=\"noopener\">Improved interoperability between Kotlin\/Native and Swift \/ Obj-C<\/a>.<\/li>\n<li><a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#simplified-management-of-cocoapods-dependencies\" target=\"_blank\" rel=\"noopener\">Simplified management of CocoaPods dependencies<\/a>.<\/li>\n<\/ul>\n<p>The current automatic memory management implementation in Kotlin\/Native has limitations when it comes to concurrency and we are working on a <a href=\"https:\/\/blog.jetbrains.com\/ja\/kotlin\/2020\/07\/kotlin-native-memory-management-roadmap\">replacement<\/a> for it.<\/p>\n<p>An important focus for Kotlin\/Native is making it seamless for <a href=\"https:\/\/www.jetbrains.com\/lp\/mobilecrossplatform\/\" target=\"_blank\" rel=\"noopener\">Kotlin Multiplatform Mobile<\/a>, but it\u2019s not limited to this.<\/p>\n<h2>Kotlin Multiplatform {#kotlin-multiplatform}<\/h2>\n<p>Making Kotlin a great multiplatform solution is one of our top priorities. We <a href=\"https:\/\/kotlinconf.com\/2019\/talks\/video\/2019\/130754\/\" target=\"_blank\" rel=\"noopener\">promised<\/a> some important improvements at KotlinConf, and we\u2019re happy to report on what we\u2019ve delivered:<\/p>\n<ul>\n<li>Thanks to <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#sharing-code-in-several-targets-with-the-hierarchical-project-structure\" target=\"_blank\" rel=\"noopener\">hierarchical project structure<\/a> you can now share code between a specific subset of targets, such as the similar iOS ARM64 devices target and the x64 simulator target.<\/li>\n<li>You can <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#leveraging-native-libs-in-the-hierarchical-structure\" target=\"_blank\" rel=\"noopener\">use platform-dependent libraries from common code shared among several native targets<\/a>.<\/li>\n<li>You can <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#specifying-dependencies-only-once\" target=\"_blank\" rel=\"noopener\">specify a dependency only once<\/a> in the shared source set instead of specifying dependencies on different variants of the same library in shared and platform-specific source sets.<\/li>\n<li>We continue working on the Kotlin library format, Klib, which is used under the hood for sharing the multiplatform libraries.<\/li>\n<\/ul>\n<p>We\u2019re working on an Android Studio plugin for running, testing, and debugging Kotlin code on iOS devices and simulators. The first public preview is going to be released very soon, so please stay tuned.<\/p>\n<p>We\u2019re soon going to release a bunch of materials created with the help of Kotlin community members explaining how you can use Kotlin Multiplatform Mobile (KMM) technology to target specifically mobile use-cases in which code is shared between Android and iOS.<\/p>\n<p>Despite the major focus now being on mobile targets, the Web target for Kotlin Multiplatform is already actively used by JetBrains to build and ship <a href=\"https:\/\/www.jetbrains.com\/space\/\" target=\"_blank\" rel=\"noopener\">JetBrains Space<\/a>. Web target continues to be an important strategic investment for Kotlin.<\/p>\n<h2>More details {#more-details}<\/h2>\n<p>You can find detailed descriptions of new features on the <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html\" target=\"_blank\" rel=\"noopener\">Kotlin 1.4 What\u2019s New page and documentation<\/a>, and read more about <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/whatsnew14.html#migrating-to-kotlin-140\" target=\"_blank\" rel=\"noopener\">migrating to Kotlin 1.4<\/a>.<\/p>\n<p>As in all major releases, some deprecation cycles of previously announced changes are coming to an end with Kotlin 1.4. All of these cases were carefully reviewed by the <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/evolution\/kotlin-evolution.html#decision-making\" target=\"_blank\" rel=\"noopener\">language committee<\/a> and are listed in the <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/compatibility-guide-14.html\" target=\"_blank\" rel=\"noopener\">Compatibility Guide for Kotlin 1.4<\/a>.<\/p>\n<h2>How to help us improve Kotlin {#how-to-help-us}<\/h2>\n<p>The Kotlin plugin in IntelliJ IDEA and Android Studio can collect anonymized statistics about how you use its functionality. We kindly ask you to opt in to these statistics!<\/p>\n<p>This anonymous data greatly helps us understand our users better, see what works, what is causing difficulties, and where we should direct our focus. To enable statistics, go to <em>Preferences<\/em>, open <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/settings-usage-statistics.html\" target=\"_blank\" rel=\"noopener\"><em>Appearance &amp; Behaviour | System Settings | Data Sharing<\/em><\/a> and activate the <em>Send usage statistics<\/em> checkbox.<\/p>\n<h3>Top issue reporters since Kotlin 1.3 {#top-issue-reporters}<\/h3>\n<p>We\u2019d like to thank all the members of the community who helped us make this release better by reporting issues to <a href=\"http:\/\/kotl.in\/issue\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>! We\u2019ve made a list of the top 20 reporters and would like to thank them specifically:<\/p>\n<p><a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20panell\" target=\"_blank\" rel=\"noopener\">Igor Wojda<\/a> (145 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20louis.cad\" target=\"_blank\" rel=\"noopener\">Louis CAD<\/a> (87 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20fluidsonic\" target=\"_blank\" rel=\"noopener\">Marc Knaup<\/a> (86 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20lblb636\" target=\"_blank\" rel=\"noopener\">AndroidDeveloperLB<\/a> (83 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20Robert_Stoll\" target=\"_blank\" rel=\"noopener\">Robert Stoll<\/a> (68 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20kotlinisland\" target=\"_blank\" rel=\"noopener\">Morgan Bartholomew<\/a> (62 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20Turansky\" target=\"_blank\" rel=\"noopener\">Victor Turansky<\/a> (54 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20him188\" target=\"_blank\" rel=\"noopener\">Guan Tianyi<\/a> (51 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20spierce7.1\" target=\"_blank\" rel=\"noopener\">Scott Pierce<\/a> (38 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20gamalik\" target=\"_blank\" rel=\"noopener\">Andreas Malik<\/a> (37 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20stevenschaefer\" target=\"_blank\" rel=\"noopener\">Steven Sch\u00e4fer<\/a> (37 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20Vampire\" target=\"_blank\" rel=\"noopener\">Bj\u00f6rn Kautler<\/a> (36 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20TWiStErRob\" target=\"_blank\" rel=\"noopener\">R\u00f3bert Papp<\/a> (34 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20t-kameyama\" target=\"_blank\" rel=\"noopener\">Toshiaki Kameyama<\/a> (30 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20nbilyk3\" target=\"_blank\" rel=\"noopener\">Nicholas Bilyk<\/a> (29 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20Michael.Bailey\" target=\"_blank\" rel=\"noopener\">Michael Bailey<\/a> (26 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20Jake.Wharton\" target=\"_blank\" rel=\"noopener\">Jake Wharton<\/a> (25 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20lamba92\" target=\"_blank\" rel=\"noopener\">Lamberto Basti<\/a> (24 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20sergepro\" target=\"_blank\" rel=\"noopener\">Serge Pro<\/a> (23 issues); <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT?q=created:%202018-10-29%20..%20*%20created%20by:%20Egorand\" target=\"_blank\" rel=\"noopener\">Egor Andreevici<\/a> (21 issues).<\/p>\n<h2>Start using Kotlin 1.4 right now {#start-using}<\/h2>\n<p>As always, you can try Kotlin online at <a href=\"http:\/\/play.kotl.in\/\" target=\"_blank\" rel=\"noopener\">play.kotl.in<\/a>.<\/p>\n<p>In Gradle and Maven, use 1.4.0 as the compiler version. See the docs for <a href=\"http:\/\/kotlinlang.org\/docs\/reference\/using-gradle.html\" target=\"_blank\" rel=\"noopener\">Gradle<\/a> and for <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/using-maven.html\" target=\"_blank\" rel=\"noopener\">Maven<\/a>.<\/p>\n<p>IntelliJ IDEA and Android Studio automatically <a href=\"https:\/\/kotlinlang.org\/releases.html#updating-to-a-new-release\" target=\"_blank\" rel=\"noopener\">prompt<\/a> you to update the Kotlin plugin to version 1.4.0. You can also open <a href=\"https:\/\/www.jetbrains.com\/help\/idea\/managing-plugins.html\" target=\"_blank\" rel=\"noopener\">Preferences | Plugins<\/a> and update the Kotlin plugin manually.<\/p>\n<p>The command-line compiler can be downloaded from the <a href=\"https:\/\/github.com\/JetBrains\/kotlin\/releases\/tag\/v1.4.0\" target=\"_blank\" rel=\"noopener\">GitHub release page<\/a>.<\/p>\n<p>You can use the following versions of the libraries published together with this release:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/Kotlin\/kotlinx.coroutines\" target=\"_blank\" rel=\"noopener\">kotlinx.coroutines<\/a> version: <code>1.3.9<\/code><\/li>\n<li><a href=\"https:\/\/github.com\/Kotlin\/kotlinx.serialization\" target=\"_blank\" rel=\"noopener\">kotlinx.serialization<\/a> version: <code>1.0.0-RC<\/code><\/li>\n<li><a href=\"https:\/\/ktor.io\/\" target=\"_blank\" rel=\"noopener\">ktor<\/a> version: <code>1.4.0<\/code><\/li>\n<li><a href=\"https:\/\/github.com\/Kotlin\/kotlinx.atomicfu\" target=\"_blank\" rel=\"noopener\">kotlinx.atomicfu<\/a> version: <code>0.14.4<\/code><\/li>\n<li><a href=\"https:\/\/github.com\/Kotlin\/kotlinx.html\" target=\"_blank\" rel=\"noopener\">kotlinx.html<\/a> version: <code>0.7.2<\/code><\/li>\n<li><a href=\"https:\/\/github.com\/Kotlin\/kotlinx-nodejs\" target=\"_blank\" rel=\"noopener\">kotlinx-nodejs<\/a> version: <code>0.0.6<\/code><\/li>\n<\/ul>\n<p>The versions of libraries from <code>kotlin-wrappers<\/code> (<code>kotlin-react<\/code> etc.) can be found in the corresponding <a href=\"https:\/\/github.com\/JetBrains\/kotlin-wrappers\" target=\"_blank\" rel=\"noopener\">repository<\/a>.<\/p>\n<p>The latest IDE performance improvements, including the code highlighting speed-up, require IntelliJ IDEA 2020.1+ and Android Studio 4.1+.<\/p>\n<p>If you run into any problems with the new release, you can find help on <a href=\"http:\/\/kotlinlang.slack.com\/\" target=\"_blank\" rel=\"noopener\">Slack<\/a> (get an invite <a href=\"http:\/\/slack.kotlinlang.org\/\" target=\"_blank\" rel=\"noopener\">here<\/a>) and report issues in our <a href=\"https:\/\/youtrack.jetbrains.com\/issues\/KT\" target=\"_blank\" rel=\"noopener\">YouTrack<\/a>.<\/p>\n<h2>Thank you! {#thank-you}<\/h2>\n<p>We\u2019re really grateful to everyone who has tried out and given us feedback on the Kotlin EAPs and experimental features. We are developing the Kotlin language together with you, and making many design decisions based on your invaluable input. Keeping this fast and effective feedback loop going with the community is really important to help Kotlin become the best it can be!<\/p>\n<p>We want to say a big thank you to all our external contributors whose pull requests were included in this release. You helped us make this release happen!<\/p>\n<p>We\u2019re grateful to all members of our community who are creating so many amazing things with Kotlin. <em>Kotlin 1.4: One for all!<\/em><\/p>\n","protected":false},"author":42,"featured_media":67070,"comment_status":"closed","ping_status":"closed","template":"","categories":[907],"tags":[76,6758,671],"cross-post-tag":[],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/kotlin\/65244"}],"collection":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/kotlin"}],"about":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/types\/kotlin"}],"author":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/users\/42"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/comments?post=65244"}],"version-history":[{"count":8,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/kotlin\/65244\/revisions"}],"predecessor-version":[{"id":181687,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/kotlin\/65244\/revisions\/181687"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/media\/67070"}],"wp:attachment":[{"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/media?parent=65244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/categories?post=65244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/tags?post=65244"},{"taxonomy":"cross-post-tag","embeddable":true,"href":"https:\/\/blog.jetbrains.com\/ja\/wp-json\/wp\/v2\/cross-post-tag?post=65244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}