+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

Kotlin 1.4.30: JVM-бекенд, нові можливості мови

Kotlin 1.4.30: бекенд JVM, нові мовні можливості

JetBrains випустили Kotlin 1.4.30. Це останній інкрементний випуск напередодні випуску Kotlin 1.5.0, і він включає в себе безліч нових експериментальних функцій, які JetBrains планує стабілізувати у версії 1.5.0.

Що нового:

  • Мовні можливості та компілятор
    • Новий бекенд JVM вийшов на бета-стадію.
    • Класи значень, записи JVM та запечатані інтерфейси.
  • Інструменти збірки
    • Підтримка кешу конфігурації в плагіні Gradle.
  • Котлін/Рідний
    • Більш швидка компіляція.
    • Підтримка 64-бітного симулятора watchOS.
    • Підтримка Xcode 12.2.
  • Котлін/JS
    • Затримка ініціалізації властивостей верхнього рівня.
  • Стандартна бібліотека
    • API для зміни регістру тексту незалежно від локалізації.
    • Інтуїтивно зрозумілий API для трансформацій Char.

Мовні можливості та компілятор

Компілятор

Новий бекенд JVM вийшов на бета-стадію  і тепер створює стабільні двійкові файли. А значить, ви можете сміливо використовувати його в своїх проектах.

Нові мовні можливості. Попередній перегляд

У Kotlin 1.5.0 JetBrains планує додати вбудовані класи значень, записи  JVM та запечатані інтерфейси.

Вбудовані класи.  Вбудовані класи раніше були окремою мовною конструкцією, але тепер вони являють собою спеціальну JVM оптимізацію однопараметричного класу значень. Ціннісні класи - це більш широке поняття, і вони будуть підтримувати різні оптимізації в майбутньому. В даний час вони підтримують вбудовані класи, а пізніше будуть підтримувати примітивні класи Valhalla, коли проект Valhalla буде завершено.

Записи Java . Ще одним майбутнім поліпшенням екосистеми СПМ є рекорди. Вони схожі на класи data в Kotlin і в основному використовуються як прості носії інформації. Сумісність з Java завжди була для нас пріоритетом. Код Kotlin «розуміє» новий синтаксис Java і розглядає записи як класи з властивостями Kotlin.

Герметичні інтерфейси.  Як і класи, інтерфейси можуть бути оголошені запечатаними. Запечатаний модифікатор працює точно так же чином: на момент компіляції відомі всі реалізації герметичного інтерфейсу. Після компіляції модуля з герметичним інтерфейсом нові реалізації з'являтися не можуть.

Інструменти збірки

Підтримка кешу конфігурації в плагіні Gradle

Починаючи з Kotlin 1.4.30, плагін Kotlin Gradle сумісний з кешем конфігурації Gradle. Це прискорює процес складання. Наприклад, команда Square використовує Kotlin для Android, а їх збірка складається з 1800 модулів (Android, Java, Kotlin). Вони розповіли нам такі цифри:

  • Найперша збірка зайняла 16 хвилин 30 секунд.
  • Другий був набагато коротшим – 5 хвилин 45 секунд.
    У випадку з Square кеш конфігурації економить 1 хвилину і 10 секунд для створення конфігурації і побудови графіка завдань на кожній збірці.

Коли ви запускаєте команду, Gradle виконує фазу конфігурації та будує графік завдань. Результати кешуються і повторно використовуються в наступних збірках, заощаджуючи ваш час.

Щоб спробувати, скористайтеся командою Gradle або налаштуйте свою IDE. 

Зауважимо, що для мультиплатформної розробки ця функція все ще знаходиться на альфа-стадії .

Котлін/Рідний

Швидша компіляція

У версії 1.4.30 JetBrains прискорила компіляцію. Час перебудови тестового фреймворку KMM Networking and Data Storage було скорочено з 9,5 секунди (у версії 1.4.10) до 4,5 секунди (у версії 1.4.30).

JetBrains продовжить оптимізувати компілятор – стежте за завданням в YouTrack.

Підтримка 64-бітного симулятора watchOS

У жовтні 2018 року у версії 1.3.60 JetBrains представила підтримку розробки додатків Kotlin для симуляторів Apple Watch. У листопаді минулого року симулятор Apple Watch був переведений з архітектури i386 в x86_64, що викликало ряд проблем у розробників. Щоб запустити симулятор watchOS на 64-бітній архітектурі в Kotlin/Native, ви можете використовувати нову ціль watchosX64. Це працює на WatchOS, починаючи з версії 7.0.

Підтримка Xcode 12.2

Kotlin/Native тепер підтримує Xcode 12.2. З новою версією Kotlin ви можете використовувати фреймворки macOS, що підтримуються в Xcode 12.2. Наприклад, MLCompute тепер доступний для розробників macOS.

Котлін/JS

Затримка ініціалізації властивостей верхнього рівня

Відкладена ініціалізація властивостей верхнього рівня тепер доступна як експериментальна функціональність.

Стандартна бібліотека

API для зміни регістру тексту незалежно від локалізації

JetBrains додав експериментальний, незалежний від локалей API для зміни регістру рядків і символів. Поточні функції toLowerCase(), ,toUpperCase()capitalize()  ,decapitalize()  залежать від локалізації, що в деяких випадках незручно. Відмінності в налаштуваннях платформи локалі впливають на поведінку коду: наприклад, в турецькій мові, якщо конвертувати рядок "kotlin" за допомогою toUpperCase, ви отримаєте "KOTLİN", а не "KOTLIN". Зараз використовується коренева локаль, тому конвертація буде виконана правильно.

Повний список змін функцій обробки тексту дивіться в репозиторії KEEP. Цей API є експериментальним, будь ласка, поділіться своїми враженнями в YouTrack.

Очистити API для трансформацій Char

Поточні функції перетворення символу в число, які повертають код цього символу UTF-16 у різних числових типах, часто плутають з перетворенням String-to-Int, яке повертає числове значення рядка.

Щоб уникнути плутанини, JetBrains вирішив розділити перетворення Char на два набори чітко визначених функцій: функції для отримання цілочисельного коду  і відновленняChar  з існуючого коду, і функції для перетворенняChar  цифри , яку він представляє, в числове значення.Char

Поки що це експериментальний функціонал - JetBrains планує зробити його стабільним у версії 1.5.0. Для отримання додаткової інформації дивіться репозиторій KEEP.

Щоб дізнатися більше про версію 1.4.30, перегляньте статті про бекенд  і мовні функції JVM.

Як оновити

IntelliJ IDEA запропонує оновити плагін Kotlin до версії 1.4.30 автоматично, але ви можете зробити це вручну згідно з інструкцією. Плагін для Android Studio Arctic Fox вийде пізніше.

Якщо ви працюєте над проектами, створеними з попередніми версіями Kotlin, в конфігурації проекту вкажіть Kotlin версії 1.4.30. Детальніше дивіться теми документації Gradle та Maven.

Завантажити компілятор для командного рядка можна зі сторінки випуску GitHub.

Якщо у вас виникли проблеми, зверніться за допомогою до каналу  Slack і повідомте про помилки баг-трекера .

Перш ніж оновити проекти до останньої версії мови, спробуйте нові можливості Kotlin і стандартної бібліотеки на play.kotl.in .

Інші новини

Найкраща ціна