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

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

Для тех, кто не хочет читать, мы подготовили видеоролик с этими основными моментами!

1. Фронтенд компилятора K2 на пути к альфа-версии

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

В настоящее время наша команда сосредоточена на доведении фронтенда компилятора K2 до состояния Альфа. Фронтенд — это часть компилятора, которая отвечает за анализ кода и преобразование его в промежуточное представление, которое впоследствии обрабатывается бэкендами. Новый компилятор уже показывает отличные результаты! Он способен компилировать огромные рабочие проекты JVM, такие как сам Kotlin и IntelliJ IDEA. Для этих проектов скорость компиляции в среднем в два раза выше.

Мы будем продолжать стабилизировать его, компилируя больше проектов и исправляя ошибки и проблемы производительности. Планируется, что публичная предварительная версия компилятора K2/JVM будет запущена к весне 2022 года. Альфа-версия обеспечит превью новой инфраструктуры плагинов, которая позволит сообществу создавать больше инструментов.

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

Исследуйте тикеты дорожной карты:

2. Акцент на стабильности и надежности KMM

KMM переходит в бета-версию весной 2022 года! Это означает, что сейчас мы сосредоточены на поиске и устранении как можно большего количества проблем, которые прерывают рабочие процессы пользователей. Это включает подсветку кода, навигацию и завершение, отладку и стабильность инструментария сборки.

Мы также продолжим улучшать возможности параллелизма. Нами только что был выпущен экспериментальный менеджер памяти Kotlin/Native. Он сглаживает различия между JVM и Native платформами и упрощает написание общего, параллельного кода для платформ iOS и Android. В дальнейшие планы входит повышение стабильности и производительности, чтобы облегчить будущий переход на новый менеджер памяти.

Изучите тикеты дорожной карты:

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

3. Исследование пространств имен и создание прототипов

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

Мы планируем создать прототип решения, основанного на введении новой концепции пространства имен - своего рода эфемерного объекта без инстанса, которым автоматически обладает каждый класс. Члены пространства имен естественным образом компилируются в статические члены на JVM. Это сохраняет статические хелперы сгруппированными вместе в источнике, но удаляет все оверхеды, связанные с объектами. Это должно значительно улучшить взаимодействие Kotlin со статическими методами Java и позволит расширять любые типы Java. В результате это должно способствовать дальнейшему внедрению Kotlin/JVM.

Изучите тикеты дорожной карты:

4. Kover, инструмент покрытия тестов Kotlin

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

Среди наших долгосрочных планов — DSL для правил проверки, стабилизация использования JaCoCo, расширенная фильтрация и поддержка Android. Мы планируем развивать Kover, основываясь на ваших отзывах, поэтому попробуйте его и поделитесь с нами своими отзывами!

Изучите тикеты дорожной карты:

5. Dokka, обновленный инструмент для генерации документов библиотек

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

Следующим шагом будет перевод Dokka в статус Stable с единственным стабильным форматом вывода — HTML. Другие форматы вывода, такие как GitHub Markdown или Jekyll, API для разработчиков плагинов и поддержка Java останутся в альфа версии. Чтобы продвинуть их дальше, мы проведем серию интервью и ждем ваших отзывов!

Изучите тикеты дорожной карты:

Подсказка: Хотите принять участие в UX-исследованиях? Присоединяйтесь!

6. Улучшение адаптации версии плагина Kotlin IDE

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

Изучите тикеты дорожной карты:

7. Улучшения Playground 

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

Если вы начинающий пользователь, то планируется упростить работу с ним, добавив больше примеров и подсказок. Для опытных пользователей мы предоставим возможность синхронизировать прогресс между устройствами, открывать несколько вкладок, экспортировать файлы и многое другое. Кроме того, сделаем Kotlin Playground дружественным к мобильным устройствам, чтобы вечеринка не была испорчена, если вы забудете свой ноутбук!

Изучите тикеты дорожной карты:


Материал подготовлен в рамках курса «Kotlin Developer. Basic».

Всех желающих приглашаем на бесплатное demo-занятие «Kotlin Crash Course». На занятии мы кратко рассмотрим основные структуры и фичи языка Kotlin, которые широко используются при создании различных приложений, и из-за которого его все так любят: переменные и операции, циклы, функции, лямбда-функции, классы, дата-классы, расширения и еще много другого!
>> РЕГИСТРАЦИЯ

Комментарии (5)


  1. Naf2000
    10.12.2021 22:14
    +1

    Не планируется что-то типа Linq из .Net для Kotlin?


    1. marshinov
      11.12.2021 00:14
      +2

      Ну «что-то типа» называется stream api и есть в Java давно. А вот Expression Trees все ещё нет


      1. Naf2000
        11.12.2021 20:07

        Спасибо. Именно Expression Trees и имелось ввиду - ретрансляция их в SQL для различных LINQ to СУБД


    1. Arhamont
      11.12.2021 00:47

      Покажите пример из Linq, аналог которого хотели бы увидеть в Kotlin?


      1. Naf2000
        11.12.2021 20:07

        ретрансляция LINQ в запросы SQL