Вышел Kotlin 1.4: акцент на качестве и производительности

Опубликовано , автор: Oksana Mandryka

Мы рады представить Kotlin 1.4.0! Все эти годы мы стремились сделать эффективный язык, на котором приятно программировать. В этом релизе мы уделили особое внимание улучшению производительности и качества Kotlin и связанных с ним инструментов. Мы также добавили поддержку новых языковых возможностей, включая долгожданные преобразования SAM для интерфейсов Kotlin.

Чтобы вы получили максимум пользы от этих изменений, приглашаем вас на онлайн-конференцию, посвященную Kotlin 1.4. Вас ждут 4 дня докладов о Kotlin, общение с разработчиками языка и много интересного. Участие бесплатное.

Сообщество и экосистема

За последний год более 5,8 миллиона человек редактировали Kotlin-код, и это число постоянно растет:

Нам очень приятно наблюдать такой рост популярности Kotlin. Особенно впечатляет количество активных пользователей: их стало в 1,5 раза больше чем в прошлом году (подробнее об этих цифрах мы расскажем в одном из следующих постов).

По данным StackOverflow Developer Survey 2020, Kotlin поднялся на 13-е место среди самых популярных языков для профессиональной разработки, и, что особенно радует, входит в пятерку самых любимых языков.

Многие компании выбирают Kotlin в качестве основного языка и успешно используют его на всех платформах. Мы очень благодарны компаниям, которые захотели поделиться с сообществом своим опытом успешного применения Kotlin. Вот лишь некоторые примеры отличного ПО, разрабатываемого на Kotlin:

Сообщество пользователей Kotlin стремительно развивается. Более 30 000 Kotlin-разработчиков общаются и обмениваются знаниями на Reddit и в Slack, а в Твиттере нас читают более 90 000 человек. Kotlin-сообщество насчитывает более 200 юзер-групп по всему миру и продолжает расти. Спасибо всем, кто говорит и пишет о Kotlin, делится знаниями и помогает коллегам. В такой дружественной атмосфере Kotlin приятно осваивать и использовать. Без вашего участия нам было бы сложно.

Kotlin 1.4: онлайн-конференция

Мы хотим, чтобы вы получали удовольствие от программирования на Kotlin 1.4 и имели хорошее представление о том, в каком направлении движется развитие языка. Поэтому мы приглашаем всех желающих на четырехдневную онлайн-конференцию, посвященную Kotlin 1.4!

Поделимся знаниями о Kotlin, поговорим о развитии языка и его экосистемы, обсудим изменения и улучшения, которые мы внесли в Kotlin 1.4, и расскажем о планах на будущее. Каждый день будет отведено время на вопросы и ответы. Задать вопрос разработчикам Kotlin можно заранее через эту форму или в Твиттере с хэштегом #kotlin14ask.

Мероприятие будет транслироваться 12–15 октября. Бесплатная регистрация по ссылке:

Зарегистрироваться на онлайн-конференцию Kotlin 1.4

До встречи!

Забота о качестве

Основная задача этого релиза — улучшить общее впечатление от программирования на Kotlin, в том числе за счет высокой производительности и стабильности IDE. Мы стремимся сделать Kotlin-разработку максимально продуктивной и поэтому сосредоточились на улучшении аспектов, наиболее важных для пользователей языка.

Мы исправили более 60 проблем с производительностью, включая те, что вызывали утечки памяти и зависание IDE. На стадии EAP мы получили много положительных отзывов о том, что в целом работать стало намного приятнее.

Теперь, если при работе над проектом вы впервые открываете большой Kotlin-файл, его содержимое будет подсвечено гораздо быстрее. В большинстве случаев подсветка работает от полутора до четырех раз быстрее:

Варианты автодополнения тоже предлагаются гораздо быстрее чем раньше. На следующем графике показано среднее время срабатывания автодополнения у пользователей Kotlin. Количество случаев, в которых автодополнение занимает больше 500 мс, сократилось почти вдвое:

файл

Обратите внимание: эти улучшения, включая ускорение подсветки синтаксиса, доступны в версиях IntelliJ IDEA 2020.1+ и Android Studio 4.1+.

Улучшение производительности — постоянный процесс, и у нас в планах еще много улучшений, в том числе работа над устранением зависаний и эффективностью ввода. Мы уже начали интеграцию с новым экспериментальным фронтэндом компилятора Kotlin, который значительно ускорит работу IDE. Это масштабная работа — требуется переписать многие части плагина, но в результате мы сможем повысить производительность в разных аспектах IDE, включая автодополнение кода, подсветку синтаксиса и сообщение об ошибках компилятора.

Новые возможности IDE

В JetBrains мы стремимся сделать разработку более продуктивной и приятной. Поэтому нам важно, чтобы инструменты для Kotlin были качественными и простыми в использовании.

Чтобы упростить работу с корутинами и обнаружение ошибок в параллельных приложениях, мы реализовали отладчик корутин. Мы планируем расширять его базовую функциональность, добавляя именно то, что нужно пользователям, поэтому очень рассчитываем на вашу обратную связь.

Мы также добавили новый мастер Kotlin-проектов. С его помощью удобно создавать и настраивать разные проекты на Kotlin и проще начинать работу над сложными мультиплатформенными проектами.

В Kotlin 1.4.0 добавлено более 40 новых быстрых исправлений, intention-действий и инспекций: нажмите Alt+Enter при редактировании кода, чтобы посмотреть, какие из них можно применить в текущем контексте.

Новый компилятор

Уже довольно давно мы работаем над новым Kotlin-компилятором, который должен поспособствовать развитию Kotlin с точки зрения производительности и расширяемости. Основная задача — сделать действительно быстрый компилятор для всех поддерживаемых платформ, а также предоставить API для расширений. Мы внедряем новые части постепенно, чтобы они добрались до пользователей максимально быстро. Вот что вошло Kotlin 1.4.0:

Сейчас мы активно работаем над новой реализацией фронтэнда, которая позволит максимально повысить производительность компилятора. Фронтэнд — это часть компилятора, которая анализирует код, разрешает имена, выполняет проверку типов и выполняет много других функций, и поэтому также влияет на производительность. Превью появится уже в ближайших выпусках — следите за обновлениями.

Возможности языка

В Kotlin 1.4 много нового:

Улучшения библиотеки

Основное направление работы над стандартной библиотекой Kotlin — улучшение единообразия как на разных платформах, так и между самими операциями. В этом выпуске в стандартную библиотеку добавлены новые операторы коллекций, улучшения делегированных свойств, реализация двунаправленной очереди ArrayDeque и многое другое.

Стандартной библиотекой можно пользоваться при написании общего кода, используемого совместно разными платформами, например Android и iOS или JVM и JS. Мы постепенно расширяем общую библиотеку и добавляем в нее недостающие функции.

Кроме того, больше не нужно объявлять зависимость от stdlib в проектах Gradle-Kotlin, независимо от того, разрабатываете ли вы под одну платформу или создаете мультиплатформенный проект. Начиная с Kotlin 1.4.0, эта зависимость добавляется по умолчанию.

Мы продолжаем работу и над другими частями экосистемы Kotlin:

Kotlin/JVM

Рекомендуем попробовать новый бэкенд Kotlin/JVM и просим поделиться впечатлениями. Это не только унифицирует процессы компиляции, но и поможет нам быстрее завершить работу над расширениями компилятора, такими как Jetpack Compose.

Новые возможности языка для Kotlin/JVM:

Kotlin/JS

Kotlin 1.4.0 поставляется с обновленным Gradle DSL и альфа-версией IR-бэкенда компилятора Kotlin/JS.

  • Обновленный Gradle DSL поддерживает настройку CSS и загрузчиков стилей из DSL и включает в себя множество улучшений, связанных с управлением npm-зависимостями и интеграцией с Dukat.
  • IR-бэкенд компилятора дает представление о будущем Kotlin/JS. В него входят оптимизации, автоматическая генерация определений TypeScript из Kotlin-кода, двоичные файлы и пакеты меньшего размера, усовершенствованный способ предоставления Kotlin-функциональности JavaScript и многое другое.

Kotlin/Native

В Kotlin/Native тоже много новых возможностей. Мы улучшили:

Текущая реализация автоматического управления памятью в Kotlin/Native имеет ограничения, когда дело касается параллелизма, и мы собираемся ее заменить.

Одна из важных задач в работе над Kotlin/Native — сделать его удобным для Kotlin Multiplatform Mobile.

Kotlin Multiplatform

Kotlin Multiplatform — одно из ключевых направлений нашей работы. На KotlinConf мы анонсировали несколько важных улучшений, и вот что уже готово:

Мы работаем над плагином для Android Studio, который позволит запускать, тестировать и отлаживать Kotlin-код на устройствах и симуляторах iOS. Превью-версия выйдет уже совсем скоро, так что следите за обновлениями.

Вместе с Kotlin-сообществом мы готовим серию материалов о том, как применять технологию Kotlin Multiplatform Mobile (KMM) в конкретных сценариях мобильной разработки, в которых общий код используется платформами Android и iOS.

Несмотря на то, что основное внимание сейчас уделяется мобильным платформам, JetBrains активно использует Kotlin Multiplatform для веб-разработки в продукте JetBrains Space. Веб по-прежнему остается для Kotlin стратегически важным направлением.

Где читать подробнее

Подробное описание новых возможностей языка вы найдете на странице What’s New и в документации. Также можно почитать о переходе на Kotlin 1.4.

Как и во всех крупных релизах, ранее анонсированные циклы прекращения поддержки некоторых возможностей завершаются в Kotlin 1.4. Все эти ситуации были тщательно рассмотрены языковым комитетом и перечислены в нашем

руководстве по совместимости Kotlin 1.4.

Как помочь нам улучшить Kotlin

Kotlin-плагин для IntelliJ IDEA и Android Studio умеет с вашего согласия собирать анонимную статистику об использовании функциональности плагина. Просим вас поучаствовать в сборе этой статистики.

Эти данные помогают нам понять, что нужно разным пользователям, что работает хорошо, а что вызывает трудности и требует внимания. Включить анонимную отправку статистики можно в Preferences: откройте Appearance & Behaviour | System Settings | Data Sharing и поставьте галочку напротив Send usage statistics.

Кто прислал больше всего сообщений об ошибках в Kotlin 1.3

Спасибо всем, кто помог нам сделать Kotlin лучше, сообщая о проблемах в YouTrack. Мы составили список тех, кто отправил нам больше всего сообщений об ошибках. Отдельное спасибо этим пользователям:

Igor Wojda (145 сообщений), Louis CAD (87 сообщений), Marc Knaup (86 сообщений), AndroidDeveloperLB (83 сообщения), Robert Stoll (68 сообщений), Morgan Bartholomew (62 сообщения), Victor Turansky (54 сообщения), Guan Tianyi (51 сообщение), Scott Pierce (38 сообщений), Andreas Malik (37 сообщений), Steven Schäfer (37 сообщений), Björn Kautler (36 сообщений), Róbert Papp (34 сообщения), Toshiaki Kameyama (30 сообщений), Nicholas Bilyk (29 сообщений), Michael Bailey (26 сообщений), Jake Wharton (25 сообщений), Lamberto Basti (24 сообщения), Serge Pro (23 сообщения), Egor Andreevici (21 сообщение).

Переходите на Kotlin 1.4 уже сегодня

Как и всегда, вы можете попробовать Kotlin онлайн на странице play.kotl.in.

В Gradle и Maven используйте номер версии 1.4.0 для компилятора. Подробности — в документации Gradle и Maven.

IntelliJ IDEA и Android Studio автоматически предложат вам обновить Kotlin-плагин до версии 1.4.0. Вы также можете сделать это вручную в разделе Preferences | Plugins.

Компилятор для командной строки можно загрузить на странице выпуска в GitHub.

Вы можете использовать следующие версии библиотек, публикуемых с данным релизом:

Версии библиотек kotlin-wrappers (kotlin-react и др.) вы найдете в соответствующем репозитории.

Улучшения производительности IDE, включая ускорение подсветки, доступны в версиях IntelliJ IDEA 2020.1+ и Android Studio 4.1+.

Если возникнут проблемы, обращайтесь за помощью в Slack-канал (получить приглашение можно здесь) и сообщайте об ошибках в нашем баг-трекере.

Спасибо!

Большое спасибо за обратную связь во время EAP и за комментарии об экспериментальной функциональности. Мы разрабатываем язык вместе с вами и принимаем многие решения на основе ваших отзывов. Нам важно быть на связи с сообществом, чтобы делать Kotlin еще лучше.

Мы благодарим всех внешних контрибьюторов, чьи пулреквесты были включены в этот релиз. Мы очень ценим ваш вклад.

Спасибо всем участникам Kotlin-сообщества, которые создают так много удивительных проектов с помощью Kotlin. Kotlin 1.4: One for all!