Kotlin
A concise multiplatform language developed by JetBrains
Публикации и ответы на комментарии в блогах JetBrains не выходят на русском языке с 2022 года.
Приносим извинения за неудобства.
Kotlin 1.5.0 — первый крупный релиз 2021 года
Встречайте Kotlin 1.5.0 — первый функциональный релиз в соответствии с нашим новым графиком релизов!
Kotlin 1.5.0 включает стабильные версии таких возможностей языка, как JVM-записи (records), sealed-интерфейсы, inline-классы, а также использование нового IR-компилятора для JVM по умолчанию. Ваша обратная связь по превью-версиям этой функциональности в релизах Kotlin 1.4.30 и Kotlin 1.5.0 EAP очень помогла нам в доработке стабильных версий.
Мы очень благодарны вам за помощь, спасибо!
Более 25 000 разработчиков уже попробовали новый IR-компилятор для JVM в IntelliJ IDEA.
Его преимущества станут заметны со временем. Новый компилятор использует тот же унифицированный пайплайн и ту же бизнес-логику, что и IR-компиляторы Kotlin/Native и Kotlin/JS — это позволит нам реализовывать большинство возможностей, оптимизаций и исправлений сразу для всех платформ. Это также позволит вам добавлять свои виды обработок и преобразований, которые будут автоматически работать на всех платформах.
Хотите задать вопрос по Kotlin 1.5.0? Роман Елизаров, Светлана Исакова и другие члены команды Kotlin будут рады ответить на ваши вопросы в ходе онлайн-встречи, посвященной Kotlin 1.5, которая состоится 25 мая (на англ. яз.).
Ниже мы рассмотрим:
- Новые стабильные возможности языка: JVM-записи (records), sealed-интерфейсы, inline-классы.
- Улучшения стандартной и тестовой библиотек, в том числе стабильные целочисленные типы без знака, расширения для
java.nio.file.Path
, а также улучшения API String, Char и Duration. - Улучшения Kotlin/JVM, включая использование нового IR-компилятора для JVM по умолчанию.
- Улучшения Kotlin/Native, в том числе повышение скорости компиляции с отладкой для Linux и iOS.
- Улучшения Kotlin/JS, в том числе миграция JS-библиотек на новый IR-компилятор Kotlin/JS.
Автоматическое обновление
Если вы пользуетесь IntelliJ IDEA или Android Studio, вы сможете автоматически обновиться до новой версии Kotlin, как только она выйдет.
Подробнее об установке Kotlin 1.5.0.
Стабильные версии возможностей языка
Kotlin 1.5.0 включает стабильные версии новых возможностей языка, которые были доступны для превью в версии 1.4.30:
- Поддержка записей (records) JVM обеспечит совместимость с новыми классами Record из Java.
Если при написании кода на Java вы хотите использовать класс Kotlin в качестве записи, сделайте его классом данных и отметьте аннотацией@JvmRecord
:Читайте подробнее о правилах использования записей JVM.
- Sealed-интерфейсы. Принцип работы модификатора
sealed
с интерфейсами — такой же, как при работе с классами: все реализации sealed-интерфейса известны во время компиляции. - Улучшения для sealed-классов. Раньше все подклассы необходимо было размещать в одном файле с sealed-классами. Теперь они могут располагаться в любом файле той же единицы компиляции и того же пакета.
- Inline-классы — это подмножество классов значений (классов, хранящих только значения). Вы можете использовать такой класс в качестве обертки для значения определенного типа, избегая накладных расходов, связанных с выделением памяти. Для объявления используйте модификатор
value
.
Узнайте подробнее о возможностях языка в Kotlin 1.5.0
Улучшения стандартной и тестовой библиотек
Стандартная библиотека обеспечивает множество полезных возможностей, включая:
- Новое стабильное API для целочисленных типов без знака, а также для их диапазонов, прогрессий и функций. Читайте подробнее о целочисленных типах без знака.
- Функции-расширения для java.nio.file.Path, использующие современный неблокирующий ввод/вывод Java в Kotlin-идиоматическом стиле.
- Улучшения в API для String и Char, в том числе новый API для изменения регистра строк и символов, не зависящий от локали, набор новых функций для преобразования символов в их целочисленные коды и числовые значения, а также мультиплатформенную поддержку других функций для работы с символами.
- Изменения в API класса Duration, в том числе использование значений
Long
для внутреннего представления и появление новых свойств для получения продолжительности в виде значения типаLong
.
Несколько важных улучшений вошло и в тестовую библиотеку:
- Единая зависимость
kotlin-test
в общем исходном наборе в мультиплатформенных проектах. - Автоматический выбор тестового фреймворка для исходных наборов Kotlin/JVM при указании единственной зависимости —
kotlin-test
. - Ряд обновлений для функций утверждения (assert).
Подробнее об улучшениях библиотек
- Читайте блог-пост о улучшениях для библиотек с примерами
- Читайте о новых возможностях Kotlin 1.5.0
- Посмотрите это видео
Kotlin/JVM
Kotlin 1.5.0 предлагает:
- Стабильную версию IR-компилятора для JVM, впервые представленного в Kotlin 1.4.0. Теперь она используется по умолчанию. Подробнее о новом компиляторе читайте в этом блог-посте и документации.
- Компиляцию SAM-адаптеров и лямбда-функций в динамические вызовы (invokedynamic), улучшенную за счет новых возможностей JVM. Компиляция обычных лямбда-функций Kotlin доступна в виде экспериментальной функциональности.
- Новую целевую платформу JVM по умолчанию — 1.8. Целевая платформа
1.6
будет считаться устаревшей. - Улучшенную обработку предоставляемой Java информации о допустимости значения null.
- Прекращение поддержки аннотации @JvmDefault и старых режимов Xjvm-default.
Kotlin/Native
Kotlin 1.5.0 предлагает:
- Поддержку кэшей компилятора в режиме отладки для целевых платформ
linuxX64
иiosArm64
. Включение кэшей компилятора позволит значительно ускорить компиляцию для отладки (за исключением первой). Измерения, проведенные нами на тестовых проектах, показали увеличение скорости на 200%. - Выключение встроенных проверок на утечку памяти, позволяющее избежать проблем, вызывающих падение приложения. Подробнее о включении проверок на утечку памяти можно узнать здесь.
Kotlin/JS
С Kotlin/JS мы делаем шаг в сторону бета-версии нового IR-компилятора Kotlin/JS. Для IR-компилятора уже доступны многие популярные библиотеки: KVision, fritz2, doodle и другие.
Если у вас есть своя библиотека, вы можете добавить ее, выполнив для нее миграцию и обеспечив обратную совместимость.
Еще одно улучшение — использование webpack 5 вместо webpack 4 для сборки Kotlin/JS-проектов.
Как установить Kotlin 1.5.0
Если вы уже пользуетесь IntelliJ IDEA или Android Studio, IDE сама предложит вам обновиться до версии 1.5.0, как только она выйдет. Также вы можете обновить версию вручную — следуйте этой инструкции. Обратите внимание, что Kotlin 1.5.0 поддерживается только в Android Studio 4.2.0, Arctic Fox Canary 15 и новее.
Для полной поддержки Kotlin вы всегда можете скачать последние версии этих IDE:
- IntelliJ IDEA — разработка приложений на Kotlin для разных платформ.
- Android Studio — разработка приложений под Android и кросс-платформенных мобильных приложений.
Также проверьте, что вы обновили библиотеки kotlinx до совместимых версий и указали версию Kotlin 1.5.0
в билд-скриптах ваших проектов.
Скачать компилятор для командной строки можно с GitHub-страницы релиза.
Если вы столкнулись с проблемами
- Получите помощь в Slack (по приглашению).
- Сообщите о проблеме в наш баг-трекер, YouTrack.
Kotlin 1.5: онлайн-мероприятие
Приглашаем на онлайн-встречу, посвященную Kotlin 1.5, которая состоится 25 мая. Команда Kotlin ответит на все ваши вопросы о последнем релизе, но присоединиться стоит, даже если у вас нет вопросов. Мероприятие продлится 1,5 часа.
Задавайте ваши вопросы в Twitter с хэштегом #kotlin15ask
либо в регистрационной форме.
27-28 мая мы также проведем сессию Ask Me Anything (AMA) на Reddit, чтобы обсудить оставшиеся вопросы, а также любые новые (на англ. яз.).
Совместимость
Как и при выходе всех релизов, включающих новые функции, с выходом Kotlin 1.5.0 завершаются ранее анонсированные циклы прекращения поддержки некоторых возможностей. Все эти ситуации были тщательно рассмотрены языковым комитетом и перечислены в нашем руководстве по совместимости Kotlin 1.5. Вы также можете ознакомиться с подробностями этих изменений в YouTrack.
Рекомендуемые материалы
Kotlin на YouTube:
- Плейлист Kotlin 1.5.0
- Подписывайтесь на Kotlin YouTube, чтобы не пропустить видео об улучшениях корутин и библиотек сериализации
Блог Kotlin:
- Новые возможности Kotlin 1.5.0. Превью
- Улучшения стандартной и тестовой библиотек в Kotlin 1.5.0
- Новый бэкенд JVM IR
- Улучшенная поддержка Kotlin в IntelliJ IDEA
Документация Kotlin:
Внешние контрибьюторы
Мы очень благодарны всем внешним контрибьюторам, чьи пул-реквесты были включены в этот релиз:
Jinseong Jeon, Mads Ager, Ivan Gavrilovic, pyos, Steven Schäfer, Iaroslav Postovalov, scaventz, Kristoffer Andersen, Bingran, Stefan Wolf, Victor Turansky, fjjohnchen, justin.wei, Nelson Osacky, Mikhail Galanin, Michael Hoisie, Kris Hall, Kevin Bierhoff, Jiaxiang Chen, Hung Nguyen, Cedric Champeau.
От кого мы узнавали об ошибках
Спасибо всем, кто помог нам сделать Kotlin лучше, сообщая о проблемах в YouTrack! Мы составили список тех, кто отправил нем больше всего сообщений об ошибках. Отдельное спасибо этим пользователям:
Morgan Bartholomew (118 задач); Marc Knaup (78 задач); Ryan Nett (61 задача); Louis CAD (48 задач); Daniil Stepanov (44 задачи); AndroidDeveloperLB (39 задач); Victor Turansky (38 задач); Jinseong Jeon (35 задач); Zac Sweers (25 задач); Łukasz Wasylkowski (22 задачи); Tianyi Guan (21 задача); Christoph Sturm (20 задач); Axel Fontaine (19 задач); Alexander Nozik (18 задач); Robert Stoll (18 задач); Björn Kautler (18 задач); Róbert Papp (14 задач); Andreas Malik (14 задач); Lorenzo Neumann (14 задач);
Iaroslav Postovalov (14 задач).
Устанавливайте Kotlin 1.5.0 и регистрируйтесь на онлайн-встречу, посвященную Kotlin 1.5!
Ваша команда Kotlin
The Drive to Develop