Создание среды выполнения

Фундаментальные строительные блоки модели программирования Compose и управления состоянием, а также основная среда выполнения для целевого подключаемого модуля Compose Compiler.
Последнее обновление Стабильный выпуск Кандидат на выпуск Бета-версия Альфа-релиз
26 февраля 2025 г. 1.7.8 - 1.8.0-бета03 -

Структура

Compose — это комбинация 7 идентификаторов групп Maven в androidx . Каждая группа содержит целевой подмножество функций, каждая из которых имеет свой собственный набор примечаний к выпуску.

В этой таблице описаны группы и ссылки на каждый набор примечаний к выпуску.

Группа Описание
сочинить.анимацию Создавайте анимацию в своих приложениях Jetpack Compose, чтобы улучшить взаимодействие с пользователем.
compose.compiler Преобразуйте функции @Composable и включите оптимизацию с помощью плагина компилятора Kotlin.
compose.foundation Создавайте приложения Jetpack Compose с готовыми к использованию стандартными блоками и расширяйте основу для создания собственных элементов системы проектирования.
составить.материал Создавайте пользовательские интерфейсы Jetpack Compose с готовыми к использованию компонентами Material Design. Это точка входа более высокого уровня в Compose, предназначенная для предоставления компонентов, соответствующих описанным на сайте www.material.io.
Compose.material3 Создавайте пользовательские интерфейсы Jetpack Compose с помощью компонентов Material Design 3 — следующего этапа развития Material Design. Material 3 включает в себя обновленные темы и компоненты, а также функции персонализации Material You, такие как динамический цвет, и разработан с учетом нового визуального стиля Android 12 и системного пользовательского интерфейса.
Compose.runtime Фундаментальные строительные блоки модели программирования Compose и управления состоянием, а также основная среда выполнения для целевого подключаемого модуля Compose Compiler.
Compose.ui Фундаментальные компоненты пользовательского интерфейса, необходимые для взаимодействия с устройством, включая макет, рисование и ввод.

Объявление зависимостей

Чтобы добавить зависимость от Compose, вам необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .

Добавьте зависимости для нужных вам артефактов в файл build.gradle для вашего приложения или модуля:

dependencies {
    implementation "androidx.compose.runtime:runtime:1.7.5"
    implementation "androidx.compose.runtime:runtime-livedata:1.7.5"
    implementation "androidx.compose.runtime:runtime-rxjava2:1.7.5"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}
dependencies {
    implementation("androidx.compose.runtime:runtime:1.7.5")
    implementation("androidx.compose.runtime:runtime-livedata:1.7.5")
    implementation("androidx.compose.runtime:runtime-rxjava2:1.7.5")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .

Обратная связь

Ваши отзывы помогают сделать Jetpack лучше. Дайте нам знать, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.

Создать новую задачу

Дополнительную информацию см. в документации по системе отслеживания проблем .

Трассировка времени выполнения версии 1.7

Версия 1.7.0-rc01

18 сентября 2024 г.

Выпущен androidx.compose.runtime:runtime-tracing:1.7.0-rc01 . Версия 1.7.0-rc01 содержит эти коммиты .

Трассировка времени выполнения, версия 1.0

Версия 1.0.0-бета01

29 ноября 2023 г.

Выпущен androidx.compose.runtime:runtime-tracing:1.0.0-beta01 . Версия 1.0.0-beta01 содержит эти коммиты.

Версия 1.0.0-альфа05

15 ноября 2023 г.

Выпущен androidx.compose.runtime:runtime-tracing:1.0.0-alpha05 . Версия 1.0.0-alpha05 содержит эти коммиты.

Исправления ошибок

  • Закреплены зависимости к самым низким поддерживаемым стабильным версиям (т. е. Compose-runtime и Tracing-perfetto) — исправлена ​​проблема, из-за которой Compose-runtime-tracing приводила к добавлению в приложение более новой версии Compose-runtime.

Версия 1.0.0-альфа04

23 августа 2023 г.

Выпущен androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 . Версия 1.0.0-alpha04 содержит эти коммиты.

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

  • Совместимость с последними версиями Benchmark и Tracing Perfetto, обеспечивающая поддержку трассировки композиции при запуске приложения (холодный запуск), например, в AndroidX Benchmark и Android Studio (начиная с Hedgehog Beta 2).

Изменения API

  • Переименован androidx.tracing.perfetto.Trace в androidx.tracing.perfetto.PerfettoSdkTrace . ( I44af8 )
  • Приведение API-интерфейсов Tracing Perfetto SDK в соответствие с android.os.Trace . ( I73ba0 , б/282199917 )
  • Предварительные условия для отслеживания при запуске приложения. ( Иад890 )
  • Объединены экспериментальные и общедоступные файлы API ( I0f2e1 , b/278769092 ).

Версия 1.0.0-альфа02

8 февраля 2023 г.

Выпущен androidx.compose.runtime:runtime-tracing:1.0.0-alpha02 . Версия 1.0.0-alpha02 содержит эти коммиты.

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

  • Никаких функциональных изменений. Множественная оптимизация производительности в последующих зависимостях androidx.tracing:tracing-perfetto* .

Версия 1.0.0-альфа01

7 сентября 2022 г.

Выпущен androidx.compose.runtime:runtime-tracing:1.0.0-alpha01 . Версия 1.0.0-alpha01 содержит эти коммиты.

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

  • androidx.compose.runtime:runtime-tracing — это библиотека, которая — при наличии поддерживающих ее инструментов (скоро) — позволяет осуществлять расширенную трассировку в приложении Compose. Этот первоначальный выпуск — 1.0.0-alpha01.

Версия 1.8

Версия 1.8.0-бета03

26 февраля 2025 г.

Выпущен androidx.compose.runtime:runtime-*:1.8.0-beta03 . Версия 1.8.0-beta03 содержит эти коммиты .

Версия 1.8.0-бета02

12 февраля 2025 г.

Выпущен androidx.compose.runtime:runtime-*:1.8.0-beta02 . Версия 1.8.0-beta02 содержит эти коммиты .

Исправления ошибок

  • Rethrow поймал исключение в композиции с возможностью паузы.( 384486d )

Версия 1.8.0-бета01

29 января 2025 г.

Выпущен androidx.compose.runtime:runtime-*:1.8.0-beta01 . Версия 1.8.0-beta01 содержит эти коммиты .

Изменения API

  • Устраняет проблему, из-за которой создание объекта throw во время композиции, который не расширяется от Exception, может привести к ошибке «Ожидание композиции не применено». ( I356be , б/382094412 )

Версия 1.8.0-альфа08

15 января 2025 г.

Выпущен androidx.compose.runtime:runtime-*:1.8.0-alpha08 . Версия 1.8.0-alpha08 содержит эти коммиты .

Версия 1.8.0-альфа07

11 декабря 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.8.0-alpha07 . Версия 1.8.0-alpha07 содержит эти коммиты .

Изменения API

  • Добавлен API инструментов, который помогает инспектору макета сопоставлять подкомпозиции с родительской композицией в тех случаях, когда узел не используется для соединения композиций вместе. ( I4ce3d )
  • Сделаны арифметические и специальные константы для SnapshotId внутренними, а не общедоступными. При необходимости арифметические действия можно выполнить над SnasphotId путем преобразования его в Int или Long с помощью toInt() или toLong() соответственно. ( Ic3a57 )

Внешний вклад

  • Оптимизируйте хранилище для параметров movableContentOf . ( ed87177 )

Версия 1.8.0-альфа06

13 ноября 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.8.0-alpha06 . Версия 1.8.0-alpha06 содержит эти коммиты .

Изменения API

  • Изменения в API PausableComposition . Эти критические изменения по сравнению с предыдущими выпусками 1.8.0-альфа (начиная с 1.8.0-alpha02), но, поскольку это новые API в версии 1.8.0, обратная совместимость не поддерживается, поскольку API все еще находятся в альфа-версии. ( I39819 )
  • Добавляет API-интерфейсы инструментов для наблюдения за созданием новых композиций в Recomposer ( Iaeb7e ).
  • Добавлен snapshotId типа Long в Snapshot и устаревший id . Идентификатор снимка изменен с Int на Long , чтобы избежать переполнения идентификатора снимка в системах с очень высокой частотой кадров и длительной анимацией. Тип был сделан ожидаемым/фактическим, чтобы позволить этому типу быть Int или другим типом на платформах, которые не имеют собственного типа Long . Платформам, у которых нет собственного Long , например JavaScript, следует избегать высокой частоты кадров (более 1000 кадров в секунду), которая может привести к переполнению Int примерно каждые 24 дня. ( I38ac3 , б/374821679 )

Исправления ошибок

Версия 1.8.0-альфа05

30 октября 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.8.0-alpha05 . Версия 1.8.0-alpha05 содержит эти коммиты .

Исправления ошибок

  • Исправлено переполнение стека, добавив Int.MAX_VALUE в SnapshotIdSet . ( б/370536104 , Ic4179f6 )
  • Микрооптимизация времени выполнения ( I50c60 )
  • Разрешить R8 удалять отладочные вызовы runtimeCheck ( I8c44 )
  • Сделайте compoundKeyOf итеративным, а не рекурсивным ( I5817f ).

Внешний вклад

  • Реализация стеков со списками коллекций ( I7d47c )

Версия 1.8.0-альфа04

16 октября 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.8.0-alpha04 . Версия 1.8.0-alpha04 содержит эти коммиты .

Улучшения производительности

  • Укажите идентификатор снимка для записей состояния в конструкторе ( 85c00f ).
  • Рефакторинг SnapshotState*** , чтобы избежать ошибок проверки класса ( 6ee4a6 ).
  • Исправьте правила R8, чтобы предотвратить встраивание бросков ( 5beb92 ).
  • Микрооптимизация операций ( d73c5c )
  • Оптимизация распределения SynchronizedObject на JVM ( 2b043f )

Версия 1.8.0-альфа03

2 октября 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.8.0-alpha03 . Версия 1.8.0-alpha03 содержит эти коммиты .

Улучшения производительности

  • Ленивое создание дочернего контекста для rememberCoroutineScope ( f61464 )
    • rememberCoroutineScope обычно используется для запуска сопрограмм в ответ на события, которые происходят после композиции. В некоторых сценариях эти события могут никогда не произойти, что приведет к дополнительным затратам на создание и отмену заданий без какой-либо выгоды.
    • Заставьте область, возвращаемую rememberCoroutineScope , лениво создавать свой coroutineContext при доступе, полностью избегая создания и отмены заданий, если область никогда не используется.

Версия 1.8.0-альфа02

18 сентября 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.8.0-alpha02 . Версия 1.8.0-alpha02 содержит эти коммиты .

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

  • Добавлен PausableComposition , который позволяет создавать подкомпозицию, которую можно приостанавливать во время композиции и асинхронно применять к композиции. Для приостановки требуется поддержка компилятора, которая в настоящее время находится в разработке. ( I3394b )

Версия 1.8.0-альфа01

4 сентября 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.8.0-alpha01 . Версия 1.8.0-alpha01 содержит эти коммиты .

Версия 1.7

Версия 1.7.8

12 февраля 2025 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.8 . Версия 1.7.8 содержит эти коммиты .

Версия 1.7.7

29 января 2025 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.7 . Никаких изменений с 1.7.6.

Выпущен androidx.compose.runtime:runtime-*:1.7.6 . Версия 1.7.6 содержит эти коммиты .

Версия 1.7.5

30 октября 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.5 . Версия 1.7.5 содержит эти коммиты .

Версия 1.7.4

16 октября 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.4 . Версия 1.7.4 содержит эти коммиты .

Версия 1.7.3

2 октября 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.3 . Версия 1.7.3 содержит эти коммиты .

Версия 1.7.2

18 сентября 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.2 . Версия 1.7.2 содержит эти коммиты .

Версия 1.7.1

10 сентября 2024 г.

  • Никаких изменений в артефактах Android. Артефакты -desktop были удалены и добавлены артефакты -jvmStubs и -linuxx64Stubs . Ни одна из этих целей не предназначена для использования, они являются заполнителями, помогающими Jetbrains Compose.

Версия 1.7.0

4 сентября 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0 . Версия 1.7.0 содержит эти коммиты .

Важные изменения с версии 1.6.0

  • Добавлена ​​возможность предоставления локального значения композиции, которое вычисляется на основе значений других локальных значений композиции либо по умолчанию, с помощью compositionLocalWithComputedDefault() , либо путем предоставления лямбда-выражения, которое будет использоваться для вычисления значения, используя providesComputed вместо provides .
  • Значение локальной композиции можно получить с помощью свойства currentValue локальной композиции, доступного из лямбда-выражения, вычисляющего значение. Он используется вместо current , который доступен только в функциях @Composable . ( Iadbc0 )
  • Вновь созданные объекты состояния сразу же доступны из других снимков, включая глобальный снимок, с их исходным состоянием. Любые последующие изменения не будут видны до тех пор, пока не будет применен снимок, в котором был создан объект.
  • Начальное состояние mutableStateOf() , а также их примитивные версии — это значение, передаваемое в качестве параметра в mutableStateOf() . Начальное состояние mutableStateListOf() и mutableStateMapOf() пусто.
  • Добавлены Snapshot.isInSnapshot и Snapshot.PreexistingSnapshotId , которые используются для того, чтобы объект состояния поддерживал немедленный доступ к глобальному снимку после его создания.
  • Объекты пользовательского состояния могут поддерживать немедленный доступ, следуя шаблону изменений, внесенных во встроенные объекты моментальных снимков. ( I84a17 )
  • Включите nonSkippingGroupOptimization для составных библиотек. Это приводит к тому, что сгенерированный код для всех неперезапускаемых составных функций в androidx становится более эффективным. В будущем мы планируем включить это по умолчанию. Я ( acbc08 )
  • Делать недействительными составные лямбды в подкомпозициях в одном кадре. ( 98301с )
  • Вызовите обратный вызов onRelease в том же порядке, что и onForgotten . ( 2cd790 )
  • Включить режим сильного пропуска ( ed1766 )
  • В большинстве случаев сделайте currentCompoundHashKey уникальным ( d4a872 ).

Версия 1.7.0-rc01

21 августа 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-rc01 . Версия 1.7.0-rc01 содержит эти коммиты .

Версия 1.7.0-beta07

7 августа 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-beta07 . Версия 1.7.0-beta07 содержит эти коммиты .

Версия 1.7.0-beta06

24 июля 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-beta06 . Версия 1.7.0-beta06 содержит эти коммиты .

Версия 1.7.0-бета05

10 июля 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-beta05 . Версия 1.7.0-beta05 содержит эти коммиты .

Версия 1.7.0-beta04

26 июня 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-beta04 . Версия 1.7.0-beta04 содержит эти коммиты .

Версия 1.7.0-бета03

12 июня 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-beta03 . Версия 1.7.0-beta03 содержит эти коммиты .

Версия 1.7.0-бета02

29 мая 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-beta02 . Версия 1.7.0-beta02 содержит эти коммиты .

Версия 1.7.0-бета01

14 мая 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-beta01 . Версия 1.7.0-beta01 содержит эти коммиты .

Версия 1.7.0-альфа08

1 мая 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-alpha08 . Версия 1.7.0-alpha08 содержит эти коммиты .

Версия 1.7.0-альфа07

17 апреля 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-alpha07 . Версия 1.7.0-alpha07 содержит эти коммиты .

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

  • Добавлена ​​возможность предоставления локального значения композиции, которое вычисляется на основе значений других локальных значений композиции либо по умолчанию, с помощью compositionLocalWithComputedDefault() , либо путем предоставления лямбда-выражения, которое будет использоваться для вычисления значения, используя providesComputed вместо provides .
  • Значение локальной композиции можно получить с помощью свойства currentValue локальной композиции, доступного из лямбда-выражения, вычисляющего значение. Он используется вместо current , который доступен только в функциях @Composable . ( Iadbc0 )

Изменения API

  • Вновь созданные объекты состояния сразу же доступны из других снимков, включая глобальный снимок, с их исходным состоянием. Любые последующие изменения не будут видны до тех пор, пока не будет применен снимок, в котором был создан объект.
  • Начальное состояние mutableStateOf() , а также их примитивные версии — это значение, передаваемое в качестве параметра в mutableStateOf() . Начальное состояние mutableStateListOf() и mutableStateMapOf() пусто.
  • Добавлены Snapshot.isInSnapshot и Snapshot.PreexistingSnapshotId , которые используются для того, чтобы объект состояния поддерживал немедленный доступ из глобального моментального снимка после его создания.
  • Объекты пользовательского состояния могут поддерживать немедленный доступ, следуя шаблону изменений, внесенных во встроенные объекты моментальных снимков. ( I84a17 )

Исправления ошибок

  • Исправлено слияние readObserver во вложенных снимках. Это приводило к тому, что вложенные производные состояния становились недействительными при использовании внутри snapshotFlow . ( Idf138 )

Версия 1.7.0-альфа06

3 апреля 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-alpha06 . Версия 1.7.0-alpha06 содержит эти коммиты .

Исправления ошибок

  • Исправление предоставления обработки отдельных значений providesDefault ( 538f45 ).
  • Избегайте тупиковой ситуации в Recomposer при доступе к тактовой частоте кадров ( 07e5c6 ).

Версия 1.7.0-альфа05

20 марта 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-alpha05 . Версия 1.7.0-alpha05 содержит эти коммиты .

Исправления ошибок

  • Очистить поздние изменения в деактивированной композиции ( 5950bc ).

Версия 1.7.0-альфа04

6 марта 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-alpha04 . Версия 1.7.0-alpha04 содержит эти коммиты .

Улучшения производительности

  • Вызов Snapshot.current один раз для каждой оценки производного состояния ( ee7daf ).
  • Прочитайте currentRecord один раз для каждого наблюдения в композиции ( b882b2 )
  • Удалить случайное выделение итератора в snapshotFlow ( 231e56 ).
  • Включите nonSkippingGroupOptimization для составных библиотек. Это приводит к тому, что сгенерированный код для всех неперезапускаемых составных функций в androidx становится более эффективным. В будущем мы планируем включить это по умолчанию. Я ( acbc08 )

Версия 1.7.0-альфа03

21 февраля 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-alpha03 . Версия 1.7.0-alpha03 содержит эти коммиты.

Изменения API

  • Ввести группы замены для улучшения обнаружения изменений ( 0941b5 ).

Улучшения производительности

  • Улучшение распределения памяти при обнаружении изменений ( 53e7fd )
  • Исправлена ​​утечка памяти в композиторе ( 0e097d ).
  • Используйте ScopeMap для передачи недействительности при перекомпоновке ( e19a7e )
  • Оптимизировать карту недействительности, чтобы сохранять только производные состояния ( f11c44 ).
  • Замените использование IdentityArraySet на ScatterSet ( db572e )
  • Оптимизация removeScope в ScopeMap ( bb0530 )

Версия 1.7.0-альфа02

7 февраля 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-alpha02 . Версия 1.7.0-alpha02 содержит эти коммиты.

Исправления ошибок

  • Делать недействительными составные лямбды в подкомпозициях в одном кадре. ( 98301с )
  • Вызовите обратный вызов onRelease в том же порядке, что и onForgotten . ( 2cd790 )
  • Отфильтруйте измененные состояния, которые не наблюдаются в snapshotFlow . ( 796b80 )

Улучшения производительности

  • Измените наблюдатель снимков на месте, когда он уже прозрачен. ( ф60ф30 )
  • Оптимизируйте SnapshotIdSet.lowest() . ( 7ae149 )
  • Используйте fold() без выделения в SnapshotIdSet . ( 532b7d )
  • Удалить выделение итератора ( 83f96b )

Версия 1.7.0-альфа01

24 января 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.7.0-alpha01 . Версия 1.7.0-alpha01 содержит эти коммиты.

Оптимизация производительности

  • Добавьте возможность создавать слоты после добавления дочерней группы ( b5960c ).
  • Оптимизация записи изменений состояний моментальных снимков ( 28c3fe )
  • Включить режим сильного пропуска ( ed1766 )

Исправления ошибок

  • Учет метаданных параметров по умолчанию во встроенной памяти ( 096665 ).
  • В большинстве случаев сделайте currentCompoundHashKey уникальным ( d4a872 ).
  • Реализация групп при выходе из встроенного вызова функции ( 2a90fc )

Версия 1.6

Версия 1.6.8

12 июня 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.8 . Версия 1.6.8 содержит эти коммиты .

Версия 1.6.7

1 мая 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.7 . Версия 1.6.7 содержит эти коммиты .

Версия 1.6.6

17 апреля 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.6 . Никаких изменений с момента последнего релиза.

Версия 1.6.5

3 апреля 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.5 . Версия 1.6.5 содержит эти коммиты .

Версия 1.6.4

20 марта 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.4 . Версия 1.6.4 содержит эти коммиты .

Версия 1.6.3

6 марта 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.3 . Версия 1.6.3 содержит эти коммиты .

Версия 1.6.2

21 февраля 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.2 . Версия 1.6.2 содержит эти коммиты.

Версия 1.6.1

7 февраля 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.1 . Версия 1.6.1 содержит эти коммиты.

Исправления ошибок

  • Вызовите обратный вызов onRelease в том же порядке, что и onForgotten . ( 2cd790 )
  • Отфильтруйте измененные состояния, которые не наблюдаются в snapshotFlow . ( 796b80 )

Версия 1.6.0

24 января 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.0 . Версия 1.6.0 содержит эти коммиты.

Важные изменения с версии 1.5.0

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

  • Повторное создание исключений, которые проглатываются во время цикла рекомпозиции ( 4dff9a ).

Оптимизация производительности

  • Оптимизация записи изменений состояний моментальных снимков ( 28c3fe )
  • Оптимизировать rememberSaveable ( f01d79 )
  • Отложить повторное чтение производных состояний до тех пор, пока не будут записаны изменения ( f38099 ).
  • Улучшение предоставления локальных значений композиции ( a337ea ).

Исправления ошибок

  • Исправлена ​​утечка памяти таблицы слотов ( 73fcfe ).
  • Пропустить рекомпозицию подкомпозиций, которые будут удалены. ( Ieeb99 , б / 254645321 )
  • Жизненные циклы RememberObserver запускаются только тогда, когда они сохраняются в расчете запоминания. ( f6b4dc )
  • Ограничьте захват $dirty встроенными лямбда-выражениями. ( acfca0 )
  • Исправлена ​​ошибка, из-за которой перемещаемый контент иногда получал неправильные локальные элементы композиции. ( 035cd6 )

Версия 1.6.0-rc01

10 января 2024 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.0-rc01 . Версия 1.6.0-rc01 содержит эти коммиты.

Версия 1.6.0-бета03

13 декабря 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.0-beta03 . Версия 1.6.0-beta03 содержит эти коммиты.

Версия 1.6.0-бета02

29 ноября 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.0-beta02 . Версия 1.6.0-beta02 содержит эти коммиты.

Версия 1.6.0-бета01

15 ноября 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.0-beta01 . Версия 1.6.0-beta01 содержит эти коммиты.

Изменения API

  • Распространить определенные значения стабильности в аннотации. (274а4с)

Исправления ошибок

  • Используйте ссылочную политику для составления состояния локальной области в контексте. (83361с)
  • Ограничьте захват $dirty встроенными лямбда-выражениями. (acfca0)
  • Исправлена ​​ошибка, из-за которой перемещаемый контент иногда получал неправильные локальные элементы композиции. (035cd6)
  • Используйте более быстрые хэш-карты без выделения памяти в RecomposeScopeImpl . (д79494)
  • Используйте ObjectIntMap в DerivedState . (21862е)
  • Используйте IntRef для int SnapshotThreadLocal в DerivedState . (04eaf4)

Версия 1.6.0-альфа08

18 октября 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.0-alpha08 . Версия 1.6.0-alpha08 содержит эти коммиты.

Исправления ошибок

  • Жизненные циклы RememberObserver запускаются только тогда, когда они сохраняются в расчете запоминания. ( f6b4dc )
  • Улучшите распределение при сортировке списков недействительности. ( 954d63 )
  • Используйте новые нераспределяющие карты в SnapshotStateObserver . ( 4303ce )
  • Устраните недействительность при деактивации композиции. ( e001be )

Версия 1.6.0-альфа07

4 октября 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.0-alpha07 . Версия 1.6.0-alpha07 содержит эти коммиты.

Изменения API

  • SnapshotStateList теперь помечен как RandomAccess , чтобы можно было использовать версию помощников списка с прямой индексацией. ( I5210c , б / 219554654 )

Версия 1.6.0-альфа06

20 сентября 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.0-alpha06 . Версия 1.6.0-alpha06 содержит эти коммиты.

Версия 1.6.0-альфа05

6 сентября 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.0-alpha05 . Версия 1.6.0-alpha05 содержит эти коммиты.

Версия 1.6.0-альфа04

23 августа 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.0-alpha04 . Версия 1.6.0-alpha04 содержит эти коммиты.

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

  • Повторное создание исключений, которые проглатываются во время цикла рекомпозиции ( 4dff9a ).

Изменения API

  • Добавлен метод деактивации ReusableComposition , удаляющий наблюдения, но сохраняющий узлы на месте. Деактивированную композицию можно активировать снова, вызвав setContent . ( Ib7f31 )
  • Добавьте интерфейс ReusableComposition для управления жизненным циклом и повторного использования подкомпозиций. ( I812d1 , б/252846775 )

Версия 1.6.0-альфа03

9 августа 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.0-alpha03 . Версия 1.6.0-alpha03 содержит эти коммиты.

Исправления ошибок

  • Исправлена ​​новая оптимизация CompositionLocalProvider ( 3118e88 ).
  • Исправьте, как разбираются подвижные узлы контента. ( 5e3d59b )

Версия 1.6.0-альфа02

26 июля 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.0-alpha02 . Версия 1.6.0-alpha02 содержит эти коммиты.

Новые функции и улучшения производительности

  • Оптимизировать rememberSaveable ( f01d79 )
  • Отложить повторное чтение производных состояний до тех пор, пока не будут записаны изменения ( f38099 ).
  • Улучшение предоставления локальных значений композиции ( a337ea ).
  • SideEffect помечен как @ExplicitGroupsComposable , чтобы избежать создания группы. ( I74815 )
  • Избегайте сравнения составов локальных карт при повторном использовании ( 782071 ).

Изменения API

  • Добавлена ​​специальная перегрузка для CompositionLocalProviders , которая позволяет избежать накладных расходов, используемых для ускорения предоставления нескольких значений, но приводит к накладным расходам при предоставлении одного значения. ( I6d640 , б/288169379 )

Исправления ошибок

  • Исправлена ​​утечка памяти таблицы слотов ( 73fcfe ).
  • Исправлено то, как мы восстанавливаем rememberSaveable , когда stateSaver возвращает значение null ( 90748c ).

Версия 1.6.0-альфа01

21 июня 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.6.0-alpha01 . Версия 1.6.0-alpha01 содержит эти коммиты.

Исправления ошибок

  • Пропустить рекомпозицию подкомпозиций, которые будут удалены. ( Ieeb99 , б / 254645321 )
  • Уменьшены выделения при применении снимков. ( I65c09 )
  • Избегайте вычисления readableHash в DerivedState , если снимок не был изменен ( 68c565 ).

Версия 1.5

Версия 1.5.4

18 октября 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.5.4 . Версия 1.5.4 содержит эти коммиты.

Версия 1.5.3

4 октября 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.5.3 . Версия 1.5.3 содержит эти коммиты.

Версия 1.5.2

27 сентября 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.5.2 . Версия 1.5.2 содержит эти коммиты.

Версия 1.5.1

6 сентября 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.5.1 . Версия 1.5.1 содержит эти коммиты.

Версия 1.5.0

9 августа 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.5.0 . Версия 1.5.0 содержит эти коммиты.

Изменения API

  • Удалены выделения при рекомпозиции, цветовой анимации и AndroidComposeView . ( Ib2bfa )
  • Добавлена ​​аннотация @StateFactoryMarker для обозначения функций, которые создают состояния и должны быть обернуты вызовом remember . ( I64550 )
  • Добавьте примитивные версии State и MutableState ( fb3d89 )
  • Добавлен Snapshot.isApplyObserverNotificationPending ( I672a5 ).
  • Добавлены примитивные версии State API, позволяющие отслеживать значения Int, Long, Float и Double в объектах State без штрафов за автобоксинг. Используйте новые фабричные методы mutableIntState(Int) , mutableFloatStateOf(Float) и т. д., чтобы использовать их. ( I48e43 )

Исправления ошибок

  • Пропустить рекомпозицию подкомпозиций, которые будут удалены. ( Ieeb99 , б / 254645321 )
  • Не сохранять ссылку на снимок в ComposerImpl ( 0206f7 ).
  • Не наносите состав дважды ( f5791b )
  • Обеспечить недействительность неинициализированных значений производного состояния ( aa2a92 ).
  • Вызовите onEndChanges во время удаления композиции. ( 62cc8c )
  • Исправлено перемещение контента в подкомпозицию ( 4beb41 ).
  • Исправить потенциальные взаимоблокировки ( c1a425 и 8edce0 )
  • Рекомпозер, созданный для окна Android, теперь будет блокировать только вызовы withFrameNanos , а не всю композицию, когда он получает уведомление ON_STOP. Это означает, что окна, связанные с остановленными действиями, будут продолжать перекомпоновываться при изменении данных, но анимация или любой другой вызывающий объект withFrameNanos будет блокироваться. ( Id9e7f , б/240975572 )
  • Выполните обратные вызовы деактивации для LayoutNode перед удалением эффектов 3784073
  • Исправлены измененные флаги для перезапущенных лямбда-выражений ea81df9.
  • Исправлена ​​регрессия живого редактирования для Composable с узлами 73fd4d8.
  • ON_STOP должен приостанавливать передачу кадров вместо композиции ae276f1.
  • Недействительные области SnapshotStateObserver для неизмененных производных состояний 84d9b1c
  • Исправлена ​​возможная тупиковая ситуация при удалении композиций 28761fc.
  • Исправлено перемещение контента в подкомпозицию 92d4156.
  • Исправить измененные флаги для перезапущенных лямбда-выражений ( 8a03e9 ).
  • Выполнить обратные вызовы деактивации для LayoutNode перед удалением эффектов ( 8b0fa4 ).
  • Исправлена endToMarker() при завершении группы узлов. ( d71d980 )
  • Использовать текущую группу SlotWriter для проверки деактивации ( a0b518b )
  • Удалите fill в SlotTable.moveSlotGapTo() и переместите ее на закрытие ( 81f9935 ).
  • Исправление отсутствующих аннулаций при перемещении подвижного контента ( 1d7c024 ).
  • Исправить немедленную недействительность перемещенного подвижного содержимого ( 8676618 ).

Улучшения производительности

  • Избегайте вычисления readableHash в DerivedState , если снимок не был изменен. ( 307102 )
  • Сокращенные выделения ( I65c09 , d7ea77 , 727974 и 445808 ).
  • Быстрая отмена создания CoroutineScopes ( a55362 и bd382f )
  • Перезаписать записи объектов состояния недоступными записями состояния ( c986960 )
  • Используйте композитор правильной области действия при реализации групп ( 9a5e5b6 ).
  • Используйте IdentityArraySet для хранения недействительных снимков ( 7f60cca ).
  • Уменьшить выделение для наблюдений моментальных снимков ( 5bc535f )

Версия 1.5.0-rc01

26 июля 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.5.0-rc01 . Версия 1.5.0-rc01 содержит эти коммиты.

Исправления ошибок

  • Отложить повторное чтение производных состояний до тех пор, пока не будут записаны изменения ( f38099 ).

  • Доступна дополнительная проверка, рекомендующая перенести вызовы mutableStateOf() в соответствующие им специализированные типы для примитивов. Его идентификатор lint — AutoboxingStateCreation . Ранее эта проверка была включена по умолчанию для всех проектов. Чтобы увидеть это предупреждение в редакторе Android Studio и в результатах lint вашего проекта, измените его серьезность с информационного на предупреждение (или выше), объявив warning "AutoboxingStateCreation" внутри конфигурации вашего модуля build.gradle или build.gradle.kts, как показано ( I34f7e ):

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

Версия 1.5.0-бета03

28 июня 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.5.0-beta03 . Версия 1.5.0-beta03 содержит эти коммиты.

Исправления ошибок

  • Пропустить рекомпозицию подкомпозиций, которые будут удалены. ( Ieeb99 , б / 254645321 )

Версия 1.5.0-бета02

7 июня 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.5.0-beta02 . Версия 1.5.0-beta02 содержит эти коммиты.

Улучшения производительности

  • Избегайте вычисления readableHash в DerivedState , если снимок не был изменен. ( 307102 )

Версия 1.5.0-бета01

24 мая 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.5.0-beta01 . Версия 1.5.0-beta01 содержит эти коммиты.

Изменения API

  • Удалены выделения при рекомпозиции, цветовой анимации и AndroidComposeView ( Ib2bfa ).
  • Добавлена ​​аннотация @StateFactoryMarker для обозначения функций, которые создают состояния и должны быть обернуты вызовом remember . ( I64550 )
  • Добавьте примитивные версии State и MutableState ( fb3d89 )
  • Добавлен Snapshot.isApplyObserverNotificationPending ( I672a5 ).

Исправления ошибок

  • Сокращенные выделения ( I65c09 , d7ea77 , 727974 и 445808 ).
  • Не сохранять ссылку на снимок в ComposerImpl ( 0206f7 ).
  • Быстрая отмена создания CoroutineScopes ( a55362 и bd382f )
  • Не наносите состав дважды ( f5791b )
  • Обеспечить аннулирование неинициализированных значений производного состояния ( aa2a92 ).
  • Вызовите onEndChanges во время удаления композиции. ( 62cc8c )
  • Исправлено перемещение контента в подкомпозицию ( 4beb41 ).
  • Исправьте потенциальные взаимоблокировки ( c1a425
  • ON_STOP должен приостанавливать трансляцию кадров вместо композиции ( f4a2d1 )
  • Исправить измененные флаги для перезапущенных лямбда-выражений ( 8a03e9 ).
  • Выполнить обратные вызовы деактивации для LayoutNode перед удалением эффектов ( 8b0fa4 ).

Внешний вклад

  • Добавлен Snapshot.isApplyObserverNotificationPending ( I672a5 ).

Версия 1.5.0-альфа04

10 мая 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.5.0-alpha04 . Версия 1.5.0-alpha04 содержит эти коммиты.

Изменения API

  • Добавлены примитивные версии State API, позволяющие отслеживать значения Int, Long, Float и Double в объектах State без штрафов за автобоксинг. Используйте новые фабричные методы mutableIntState(Int) , mutableFloatStateOf(Float) и т. д., чтобы использовать их. ( I48e43 )

Исправления ошибок

  • Вызовите onEndChanges во время удаления композиции. Узлы фокуса, удаленные во время Composition.dispose , подписываются на onEndChanges для сброса фокуса. ( 03d4a47 )

  • Обеспечьте аннулирование неинициализированных значений производного состояния. Каждое производное состояние связано со списком его зависимостей в SnapshotStateObserver , который используется для признания недействительными областей, связанных с производным состоянием, при каждом изменении зависимости. Изменение зависимости регистрируется при перемещении снимка, что может произойти после чтения производного состояния (из-за вызова Snapshot.notifyObjectsInitialized() ).

    Предыдущая логика наблюдения производного состояния в SnapshotStateObserver очищала старые зависимости, а затем считывала новое значение. Это привело к возникновению состояния гонки, при котором недействительность произошла в очищенном состоянии, где недействительность зависимостей не была зарегистрирована.

    Это изменение изменяет порядок чтения производного состояния и очистки зависимостей, гарантируя, что аннулирование всегда происходит в допустимом состоянии. ( c472be6 ​​)

Версия 1.5.0-альфа03

19 апреля 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.5.0-alpha03 . Версия 1.5.0-alpha03 содержит эти коммиты.

Изменения API

  • Рекомпозер, созданный для окна Android, теперь будет блокировать только вызовы withFrameNanos , а не всю композицию, когда он получает уведомление ON_STOP. Это означает, что окна, связанные с остановленными действиями, будут продолжать перекомпоновываться при изменении данных, но анимация или любой другой вызывающий объект withFrameNanos будет блокироваться. ( Id9e7f , б/240975572 )

Исправления ошибок

  • Исправлен потенциальный тупик в списке снимков и сопоставлении 5c1a425.
  • Выполните обратные вызовы деактивации для LayoutNode перед удалением эффектов 3784073
  • Исправлены измененные флаги для перезапущенных лямбда-выражений ea81df9.
  • Исправлена ​​регрессия живого редактирования для Composable с узлами 73fd4d8.
  • ON_STOP должен приостанавливать передачу кадров вместо композиции ae276f1.
  • Недействительные области SnapshotStateObserver для неизмененных производных состояний 84d9b1c
  • Исправлена ​​возможная тупиковая ситуация при удалении композиций 28761fc.
  • Исправлено перемещение контента в подкомпозицию 92d4156.

Версия 1.5.0-альфа02

5 апреля 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.5.0-alpha02 . Версия 1.5.0-alpha02 содержит эти коммиты.

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

  • Оператор getValue в Котлине теперь может быть составным ( f174f6e )

Исправления ошибок, улучшения производительности

  • Перезаписать записи объектов состояния недоступными записями состояния ( c986960 )
  • Используйте композитор правильной области действия при реализации групп ( 9a5e5b6 ).
  • Исправлена endToMarker() при завершении группы узлов. ( d71d980 )
  • Использовать текущую группу SlotWriter для проверки деактивации ( a0b518b )
  • Используйте IdentityArraySet для хранения недействительных снимков ( 7f60cca ).
  • Удалите fill в SlotTable.moveSlotGapTo() и переместите ее на закрытие ( 81f9935 ).
  • Исправление отсутствующих аннулаций при перемещении подвижного контента ( 1d7c024 ).
  • Исправить немедленную аннулацию перемещенного подвижного содержимого ( 8676618 ).
  • Уменьшить выделение для наблюдений моментальных снимков ( 5bc535f )

Версия 1.5.0-альфа01

22 марта 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.5.0-alpha01 . Версия 1.5.0-alpha01 содержит эти коммиты.

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

  • Добавляет Modifier.Node#coroutineScope позволяющий Modifier.Nodes запускать сопрограммы ( I76ef9 ).
  • Разрешите Modifier.Nodes читать CompositionLocals , реализовав интерфейс CompositionLocalConsumerModifierNode . ( Ib44df )

Версия 1.4

Версия 1.4.3

3 мая 2023 г.

androidx.compose.runtime:runtime-*:1.4.3 выпущен без изменений.

Версия 1.4.2

19 апреля 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.4.2 . Версия 1.4.2 содержит эти коммиты.

Исправления ошибок

  • Исправлена ​​потенциальная тупиковая ситуация в списке снимков и сопоставлении 2eb6570.

  • Добавление содержимого в SnapshotStateList или SnapshotStateMap может привести к взаимоблокировке, если изменение одновременно с прямой записью в запись состояния. Это стало значительно более вероятным благодаря изменениям, внесенным в 93fcae828b , который использует прямую запись для освобождения неиспользуемых записей.

  • Блокировки теперь упорядочены таким образом, что блокировка моментального снимка никогда не предпринимается, когда удерживается блокировка карты или списка.

Версия 1.4.1

5 апреля 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.4.1 . Версия 1.4.1 содержит эти коммиты.

Исправления ошибок

  • Исправлена endToMarker() при завершении группы узлов. d71d980

Версия 1.4.0

22 марта 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.4.0 . Версия 1.4.0 содержит эти коммиты.

Важные изменения с версии 1.3.0

  • Используйте инициализированное значение из LiveData для первой композиции 3680e25.
  • Добавьте ComposeNodeLifecycleCallback , чтобы наблюдать за жизненным циклом составных узлов. 8b6a258
  • Добавьте свойство parameterTypes в ComposableMethod 7b6c7ad.

Исправления ошибок и улучшения производительности

  • Очистите оба индекса области в SnapshotStateObserver 29f4a3e.
  • Добавьте необходимые группы в тело непропускаемых лямбда-выражений 7d06752.
  • Улучшение характеристик ссылки на память состояния моментального снимка 93fcae8.
  • Удалить бокс в составе локального поиска 0875717
  • Используйте правильный ключ для групп узлов одноразового использования 6388d8d
  • Защита SnapshotStateObserver от рекурсивных и параллельных применений 98cb6ba
  • Добавлена ​​проверка границ контрольного индекса в методе «get» IdentityArraySet 35a77d3.
  • Обновите модуль Compose для использования расширений ViewTreeLifecycleOwner 21c2122.
  • Отправлять уведомления о применении после того, как Recomposer завершит кадр. 98f2641
  • Исправлен сбой индекса за пределами границ при отмене Recomposer 8f8656f.
  • Всегда принудительно перекомпоновывать, если родительские поставщики композиции изменили 9526fcc.
  • Допуск рекомпозера для отмененных заданий a55f7ed
  • Улучшена обработка недействительности для большого количества композиторов 9b7ed67.
  • Исправлено создание закрывающих групп для нелокальных возвратов b6f590c.

Версия 1.4.0-rc01

8 марта 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.4.0-rc01 . Версия 1.4.0-rc01 содержит эти коммиты.

Исправления ошибок

Версия 1.4.0-бета02

22 февраля 2023 г.

Выпущены androidx.compose.runtime:runtime:1.4.0-beta02 и androidx.compose.runtime:runtime-saveable:1.4.0-beta02 . Версия 1.4.0-beta02 содержит эти коммиты.

Версия 1.4.0-бета01

8 февраля 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.4.0-beta01 . Версия 1.4.0-beta01 содержит эти коммиты.

Изменения API

  • Добавлен ComposeNodeLifecycleCallback , который позволяет наблюдать за жизненным циклом узлов Compose ( I3731b ).
  • Добавлен @TestOnly в Composer.disableSourceInformation() , поскольку эту функцию безопасно вызывать только в тесте. ( I896c8 )

Исправления ошибок

  • Удалить бокс в локальном поиске композиции ( 62f66a )
  • Улучшение характеристик ссылки на память состояния моментального снимка ( dfb451 ).

Версия 1.4.0-альфа05

25 января 2023 г.

Выпущены androidx.compose.runtime:runtime:1.4.0-alpha05 и androidx.compose.runtime:runtime-saveable:1.4.0-alpha05 . Версия 1.4.0-alpha05 содержит эти коммиты.

Изменения API

  • Больше типов/обнуляемости встроенных/устаревших скрытых функций ( I24f91 )

Версия 1.4.0-альфа04

11 января 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.4.0-alpha04 . Версия 1.4.0-alpha04 содержит эти коммиты.

Изменения API

  • TestMonotonicFrameClock теперь использует правильную экспериментальную аннотацию. ( I95c9e )

Исправления ошибок

  • Защитить SnapshotStateObserver от рекурсивных и параллельных применений ( d902fb )

Версия 1.4.0-альфа03

7 декабря 2022 г.

Выпущен androidx.compose.runtime:runtime-*:1.4.0-alpha03 . Версия 1.4.0-alpha03 содержит эти коммиты.

Изменения API

  • добавление нового общедоступного метода в класс ComposableMethod , аналогичный java.lang.reflect.Method#getParameterTypes() ( Iab0c3 )

Исправления ошибок

  • Уведомления о применении моментальных снимков теперь отправляются после того, как Recomposer завершит применение изменений. ( Iad6c0 , b/222093277 )

Версия 1.4.0-альфа02

9 ноября 2022 г.

Выпущен androidx.compose.runtime:runtime-*:1.4.0-alpha02 . Версия 1.4.0-alpha02 содержит эти коммиты.

Версия 1.4.0-альфа01

24 октября 2022 г.

Выпущен androidx.compose.runtime:runtime-*:1.4.0-alpha01 . Версия 1.4.0-alpha01 содержит эти коммиты.

Изменения API

  • SnapshotStateList и SnapshotStateMap теперь имеют явную реализацию toList() и toMap() . Эти методы возвращают свое текущее содержимое без создания копии, поскольку они возвращают внутренние неизменяемые данные, используемые для хранения их содержимого. Это значение можно использовать, например, для создания потока значений с помощью snapshotFlow без необходимости копирования данных. ( Ica2bd )

Версия 1.3

Версия 1.3.3

11 января 2023 г.

Выпущен androidx.compose.runtime:runtime-*:1.3.3 . Версия 1.3.3 содержит эти коммиты.

  • Никаких изменений с версии 1.3.2

Версия 1.3.2

7 декабря 2022 г.

Выпущен androidx.compose.runtime:runtime-*:1.3.2 . Версия 1.3.2 содержит эти коммиты.

Исправления ошибок

  • Обновлено для поддержки androidx.compose.ui 1.3.2.

Версия 1.3.1

9 ноября 2022 г.

Выпущен androidx.compose.runtime:runtime-*:1.3.1 . Версия 1.3.1 содержит эти коммиты.

Версия 1.3.0

24 октября 2022 г.

Выпущен androidx.compose.runtime:runtime-*:1.3.0 . Версия 1.3.0 содержит эти коммиты.

Важные изменения с версии 1.2.0

Обработка исключений/поддержка живого редактирования

Трассировка композиции

Составные API-интерфейсы отражения

Исправления во время выполнения

Система моментальных снимков

Версия 1.3.0-rc01

5 октября 2022 г.

Выпущен androidx.compose.runtime:runtime-*:1.3.0-rc01 . Версия 1.3.0-rc01 содержит эти коммиты.

Исправления ошибок

  • Исправлено исключение ArrayIndexOutOfBoundsException возникающее из таблицы слотов ( b/249076084 ).

Версия 1.3.0-бета03

21 сентября 2022 г.

Выпущен androidx.compose.runtime:runtime-*:1.3.0-beta03 . Версия 1.3.0-beta03 содержит эти коммиты.

Изменение поведения

  • Параметр, который необходимо remember , и rememberCoroutineScope изменен на crossinline . Это приведет к сообщению об ошибке при раннем возврате вместо разрешения раннего возврата, что приведет к сообщению о более поздней внутренней ошибке.
  • Это изменение потенциально может привести к появлению новых ошибок компилятора, требующих удаления нелокальных возвратов из лямбда-выражений, передаваемых этим функциям. ( Ибеа62 )

Версия 1.3.0-beta02

7 сентября 2022 г.

Выпущен androidx.compose.runtime:runtime-*:1.3.0-beta02 . Версия 1.3.0-beta02 содержит эти коммиты.

Исправления ошибок

  • Обновлен API ( I64ca0 )

Версия 1.3.0-бета01

24 августа 2022 г.

Выпущен androidx.compose.runtime:runtime-*:1.3.0-beta01 . Версия 1.3.0-beta01 содержит эти коммиты.

Изменения API

  • В CompositionData был добавлен метод find , позволяющий инструментам разработчика, использующим этот API, быстро находить подгруппу композиции по ее идентификатору. ( I5794f )

Версия 1.3.0-альфа03

10 августа 2022 г.

Выпущен androidx.compose.runtime:runtime-*:1.3.0-alpha03 . Версия 1.3.0-alpha03 содержит эти коммиты.

Версия 1.3.0-альфа02

27 июля 2022 г.

androidx.compose.runtime:runtime-*:1.3.0-alpha02 выпускается. Версия 1.3.0-alpha02 содержит эти коммиты.

Изменения API

  • Повторно добавленный ComposerKt.traceEventStart(Int, String) для обратной совместимости ( i6e6de )

Версия 1.3.0-альфа01

29 июня 2022 г.

androidx.compose.runtime:runtime-*:1.3.0-alpha01 выпускается. Версия 1.3.0-alpha01 содержит эти коммиты.

Изменения API

  • Функциональность перемещения полезности к времени выполнения ( I4F729 )

Версия 1.2

Версия 1.2.1

10 августа 2022 г.

androidx.compose.runtime:runtime-*:1.2.1 выпускается. Версия 1.2.1 содержит эти коммиты.

Исправления ошибок

  • Фиксированная утечка памяти: утилизировать вложенные снимки, созданные из прозрачных снимков B/239603305

Версия 1.2.0

27 июля 2022 г.

androidx.compose.runtime:runtime-*:1.2.0 выпускается. Версия 1.2.0 содержит эти коммиты.

Важные изменения с версии 1.1.0

  • У Compose Runtime было несколько функций, представленных в 1.2.0, а также множество стабилизирующих исправлений ошибок. Наиболее значимой новой особенностью было введение API movableContentOf , которое можно использовать для включения сложных UX, таких как переходы общих элементов. API movableContentOf преобразует композиционную лямбду в лямбду, которая перемещает его состояние и соответствующие узлы в любое новое местоположение, которое она называется. Когда предыдущий вызов покидает композицию, состояние временно сохраняется, и если новый вызов Lambda входит в композицию, то штат и связанные узлы перемещаются в место нового вызова. Если новый вызов не добавляется, состояние удаляется навсегда, и помните, что наблюдатели уведомляются.

  • Если в одной и той же композиции movableContentOf называется многократным, новое состояние и узлы создаются для каждого вызова, и, поскольку вызовы оставляют композицию и новые вызовы вводится, состояние перемещается из первых вызовов к вступающим вызовам в порядке, которые они вызываются. Все государство не заявлено новыми вызовами, удаляется навсегда.

  • В дополнение к этому и нескольким другим новым функциям было потрачено много времени, стабилизируя систему выполнения и состояния моментальных снимков. Различные утечки памяти были удалены и оптимизировали пути кода.

  • Суммированный список изменений можно найти ниже:

Новые функции в 1.2

Производительность в 1.2

Исправления ошибок в 1.2

Версия 1.2.0-rc03

29 июня 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-rc03 выпускается. Версия 1.2.0-rc03 содержит эти коммиты.

Исправления ошибок

  • Полученные наблюдения состояния ранее были безусловно удалены из рекомплексного масштаба и композиции вместе, которые нарушали другие области, которые все еще могут наблюдать за производным состоянием. Это изменение удаляет полученные экземпляры состояния только в том случае, если оно больше не наблюдается другими областями. ( B/236618362 )

Версия 1.2.0-rc02

22 июня 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-rc02 выпускается. Версия 1.2.0-rc02 содержит эти коммиты.

Версия 1.2.0-rc01

15 июня 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-rc01 выпущен. Версия 1.2.0-rc01 содержит эти коммиты.

Изменения API

  • Интерфейсы в библиотеках компоновки теперь создаются с использованием методов интерфейса jdk8 по умолчанию ( I5bcf1 ).

Версия 1.2.0-бета03

1 июня 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-beta03 выпускается. Версия 1.2.0-beta03 содержит эти коммиты.

Версия 1.2.0-бета02

18 мая 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-beta02 выпускается. Версия 1.2.0-beta02 содержит эти коммиты.

Версия 1.2.0-бета01

11 мая 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-beta01 выпускается. Версия 1.2.0-beta01 содержит эти коммиты.

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

  • Это первая бета-версия 1.2!

Изменения API

  • Добавлен экспериментальный Snapshot.unsafeEnter/unsafeLeave ( i108f3 )
  • Добавлен экспериментальный Snapshot.asContextElement() .
  • Аннотация и аннотации @ComposableTarget и аннотации, помеченные @ComposableTargetMarker , теперь могут использоваться в прицеле файла с помощью префикса @file . Использование целевой аннотации в прицеле файла приведет к тому, что компилятор предполагает, что все композиционные функции в файле предназначены для того, чтобы быть нацеленным на связанный приложение. Например, использование @file:UiComposable заявляет, что все функции @Composable нацелены на Compose UI Applier. Функция, которая должна ориентироваться на другого приложения, должна явно предоставить аннотацию целевого маркера для желаемого приложения. ( I40804 )

Версия 1.2.0-альфа08

20 апреля 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha08 выпускается. Версия 1.2.0-alpha08 содержит эти коммиты.

Изменения API

  • Добавлено TracingInProgress к интерфейсу CompositionTracer . ( IC6F12 )
  • Добавить recomposeScopeIdentity в композитор ( I0C873 )
  • Ограниченное отслеживание API (Composer.SetTracer) для OptIn(InternalComposeTracingApi) . ( I9187f )
  • Добавлен ResuableContentHost , который позволяет лучше контролировать государственное время жизни, созданное для многократного использования контента. Например, если субкомпозиция временно не используется, то содержание может быть деактивировано, что приводит к тому, что все запоминающиеся состояния в композиции будет забыт, например, все одноразовые эффекты. ( I2c0f2 , b/220322704 )

Версия 1.2.0-альфа07

6 апреля 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha07 выпускается. Версия 1.2.0-alpha07 содержит эти коммиты.

Изменения API

  • Новая функция Snapshot.withoutReadObservation { ... } был добавлен. Это позволяет пользователям запускать пропущенную Lambda, не подписываясь на изменения значений состояния, прочитанных в этом блоке. Вы можете найти его полезным в использовании, когда вы хотите извлечь выгоду из поток на основе снимка безопасной записи/чтения, но хотите иметь возможность читать значение, не вызывая ненужного переоборудования или переработки. ( I9f365 , b/214054486 )

Версия 1.2.0-альфа06

23 марта 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha06 выпускается. Версия 1.2.0-alpha06 содержит эти коммиты.

Версия 1.2.0-альфа05

9 марта 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha05 выпускается. Версия 1.2.0-alpha05 содержит эти коммиты.

Внешний вклад

  • Обновлено для использования Cotlinx Coroutines 1.6.0 ( i3366d )

Версия 1.2.0-альфа04

23 февраля 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha04 выпускается. Версия 1.2.0-alpha04 содержит эти коммиты.

Изменения API

  • Добавлен ComposableTarget , ComposableTargetMarker и ComposableOpenTarget , которые позволяют отчетность по времени компиляции, когда композиционная функция называется нацеленным на приложение, которое он не предназначен для использования.

    В большинстве случаев аннотации могут быть выведены с помощью плагина компилятора Compose, поэтому использование этих аннотаций непосредственно должно быть редким. Случаи, которые нельзя вывести, включают в себя создание и использование пользовательских прикладных, абстрактных композиционных функций (таких как методы интерфейса), поля или глобальные переменные, которые являются композиционными лямбдами (локальные переменные и параметры определяются), или при использовании ComposeNode или связанных композиционных функций.

    Для пользовательских приложений композиционные функции, которые вызывает ComposeNode или ReusableComposeNode необходимо добавить аннотацию CompoableTarget для функции и любые типы параметров композиции Lambda. Однако рекомендуется создать аннотацию, которая аннотирована с помощью ComposableTargetMarker , а затем отмеченная аннотация вместо ComposableTarget напрямую. Компонируемая аннотация, помеченная ComposableTargetMarker , эквивалентна ComposbleTarget с полностью квалифицированным именем класса атрибутов в качестве параметра приложения. Для примера использования ComposableTargetMarker см. anroidx.compose.ui.UiComposable . ( I38f11 )

Версия 1.2.0-альфа03

9 февраля 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha03 выпускается. Версия 1.2.0-alpha03 содержит эти коммиты.

Изменения API

  • Добавлен movableContentOf который преобразует композиционную лямбду в лямбду, которая перемещает его состояние и соответствующие узлы, в любое новое местоположение, которое она называется. Когда предыдущий вызов покидает композицию, состояние временно сохраняется, и если новый вызов Lambda входит в композицию, то штат и связанные узлы перемещаются в место нового вызова. Если новый вызов не добавляется, состояние удаляется навсегда, и помните, что наблюдатели уведомляются.

    Если в одной и той же композиции movableContentOf называется многократным, новое состояние и узлы создаются для каждого вызова, и, поскольку вызовы оставляют композицию и новые вызовы вводится, состояние перемещается из первых вызовов к вступающим вызовам в порядке, которые они вызываются. Все государство не заявлено новыми вызовами, удаляется навсегда. ( IB4850 )

  • Добавлено отслеживание API в композицию, чтобы дать инструменты для обеспечения более подробной отслеживания композиционных функций. Компилятор теперь генерирует вызовы в API отслеживания, которые включают информацию источника. ( IB0EB5 )

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

      -assumenosideeffects public class androidx.compose.runtime.ComposerKt {
          boolean isTraceInProgress();
          void traceEventStart(int,java.lang.String);
          void traceEventEnd();
      }
    
  • Добавьте InternalComposeScope , который дает инструментам возможность идентифицировать композицию во время переоборудования. ( I07a3f )

Версия 1.2.0-альфа02

26 января 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha02 выпускается. Версия 1.2.0-alpha02 содержит эти коммиты.

Версия 1.2.0-альфа01

12 января 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha01 выпускается. Версия 1.2.0-alpha01 содержит эти коммиты.

Изменения API

  • Добавлен поле identity в CompositionData для генерации инвариантных идентификаторов в инспекторе макета. ( IC116E )

Обновления зависимостей

  • Теперь зависит от Kotlin 1.6.10 .

Версия 1.1

Версия 1.1.1

23 февраля 2022 г.

androidx.compose.runtime:runtime-*:1.1.1 выпускается. Версия 1.1.1 содержит эти коммиты.

Исправления ошибок

  • Исправьте исключение NullPointerException в androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList ( aosp/1947059 , b/206677462 ).
  • Исправлен сбой, вызванный содержимым буфера обмена при чтении из буфера обмена на Android. ( I06020 , б/197769306 )
  • Исправлено RTL в LazyVerticalGrid ( aosp/1931080 , b/207510535 )

Версия 1.1.0

9 февраля 2022 г.

androidx.compose.runtime:runtime-*:1.1.0 выпускается. Версия 1.1.0 содержит эти коммиты.

Важные изменения с версии 1.0.0

  • Стабильная поддержка эффекта прокрутки Android 12.
  • Улучшения в сенсорном изменении целевого размера.
  • Обратите внимание, что в Compose 1.0 компоненты Material будут расширять свое пространство макета, чтобы соответствовать рекомендациям по доступности Material для сенсорного размера цели . Например, Target Button Touch будет расширяться до минимального размера 48x48dp , даже если вы установите размер кнопки меньше. Это приводит Compose Material в соответствие с тем же поведением компонентов Material Design, обеспечивая единообразное поведение при смешивании представлений и Compose. Это изменение также гарантирует, что при создании пользовательского интерфейса с использованием компонентов Compose Material будут соблюдены минимальные требования к доступности сенсорной цели.
  • Стабильная поддержка Navigation Rail
  • Стабильный уровень ряда ранее экспериментальных API.
  • Поддержка новых версий Kotlin

Версия 1.1.0-rc03

26 января 2022 г.

androidx.compose.runtime:runtime-*:1.1.0-rc03 выпускается. Версия 1.1.0-rc03 содержит эти коммиты.

Исправления ошибок

  • Обновлено для поддержки Compose Material 1.1.0-rc03

Версия 1.1.0-rc01

15 декабря 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-rc01 выпускается. Версия 1.1.0-rc01 содержит эти коммиты.

Версия 1.1.0-beta04

1 декабря 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-beta04 выпускается. Версия 1.1.0-beta04 содержит эти коммиты.

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

  • Обновлен для совместимости с Kotlin 1.6.0

Версия 1.1.0-beta03

17 ноября 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-beta03 выпускается. Версия 1.1.0-beta03 содержит эти коммиты.

Версия 1.1.0-beta02

3 ноября 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-beta02 выпускается. Версия 1.1.0-beta02 содержит эти коммиты.

Изменения API

  • Код снимка был разделен на несколько файлов, но все еще живет в одном и том же классе JVM. ( IC6C98 )

Версия 1.1.0-бета01

27 октября 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-beta01 выпускается. Версия 1.1.0-beta01 содержит эти коммиты.

Версия 1.1.0-альфа06

13 октября 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-alpha06 выпускается. Версия 1.1.0-alpha06 содержит эти коммиты.

Изменения API

  • Удален InternalCompilerApi из методов композитора, которые необходимо назвать кросс-модулем ( I1AA0B )
  • Recomposer.state был устарел и заменен Recomposer.currentState , чтобы изменить свой тип на Stateflow ( IC2AB3 , B/197773820 )

Версия 1.1.0-альфа05

29 сентября 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-alpha05 выпускается. Версия 1.1.0-alpha05 содержит эти коммиты.

Версия 1.1.0-альфа04

15 сентября 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-alpha04 выпускается. Версия 1.1.0-alpha04 содержит эти коммиты.

Версия 1.1.0-альфа03

1 сентября 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-alpha03 выпускается. Версия 1.1.0-alpha03 содержит эти коммиты.

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

  • Компилятор Compose теперь поддерживает более старые версии времени выполнения Compose (1.0). До этого изменения компилятор Compose был совместимы только со временем выполнения Compose той же версии или позже. После этого изменения компилятор Compose совместим с более старой версией времени выполнения Compose (1.0). ( AOSP/1796968 )
  • Обновлен Compose 1.1.0-alpha03 для зависимости от Kotlin 1.5.30 . ( I74545 )

Версия 1.1.0-альфа02

18 августа 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-alpha02 выпускается. Версия 1.1.0-alpha02 содержит эти коммиты.

Версия 1.1.0-альфа01

4 августа 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-alpha01 выпускается. Версия 1.1.0-alpha01 содержит эти коммиты.

Версия 1.0

Версия 1.0.5

3 ноября 2021 г.

androidx.compose.runtime:runtime-*:1.0.5 выпущен. Версия 1.0.5 содержит эти коммиты.

Исправления ошибок

  • Исправлен сбой при отслеживании экземпляров производныхStateOf. ( аосп/1792247 )

Версия 1.0.4

13 октября 2021 г.

androidx.compose.runtime:runtime-*:1.0.4 выпущен. Версия 1.0.4 содержит эти коммиты.

Обновления зависимостей

  • Обновлено в зависимости от Kotlin 1.5.31

Версия 1.0.3

29 сентября 2021 г.

androidx.compose.runtime:runtime-*:1.0.3 выпускается. Версия 1.0.3 содержит эти коммиты.

Обновления зависимостей

  • Обновлено в зависимости от Kotlin 1.5.30

Версия 1.0.2

1 сентября 2021 г.

androidx.compose.runtime:runtime-*:1.0.2 выпускается. Версия 1.0.2 содержит эти коммиты.

Обновлено для поддержки версии Compose 1.0.2 . Compose 1.0.2 по-прежнему совместим с Kotlin 1.5.21 .

Версия 1.0.1

4 августа 2021 г.

androidx.compose.runtime:runtime-*:1.0.1 выпущен. Версия 1.0.1 содержит эти коммиты.

Обновления зависимостей

  • Обновлено в зависимости от Kotlin 1.5.21 .

Версия 1.0.0

28 июля 2021 г.

androidx.compose.runtime:runtime-*:1.0.0 выпускается. Версия 1.0.0 содержит эти коммиты.

Основные особенности версии 1.0.0

Это первая стабильная версия Compose. Более подробную информацию можно найти в официальном блоге Compose Release !

Известные проблемы

  • Если вы используете Android Studio Bumblebee Canary 4 или AGP 7.1.0-alpha04 / 7.1.0-alpha05 , вы можете столкнуться со следующим сбоем:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    Чтобы исправить это, временно увеличьте minSdkVersion до 24+ в файле build.gradle . Эта проблема будет исправлена ​​в следующей версии Android Studio Bumblebee и AGP 7.1 . ( р/194289155 )

Версия 1.0.0-rc02

14 июля 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-rc02 выпускается. Версия 1.0.0-rc02 содержит эти коммиты.

  • Фиксированные условия гонки в SnapshotStateObserver, вызывая Spurratic NullPointerExceptions. ( AOSP/1763445 , AOSP/1758105 , B/192677711 )
  • Фиксированные проблемы со снимками времени выполнения, вызывающие java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied . ( B/193006595 , B/192570897 )

Версия 1.0.0-rc01

1 июля 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-rc01 выпускается. Версия 1.0.0-rc01 содержит эти коммиты.

Версия 1.0.0-beta09

16 июня 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta09 выпускается. Версия 1.0.0-beta09 содержит эти коммиты.

Добавлены правила профиля

В этом выпуске правила профиля добавлены в следующие модули составления ( I14ed6 ):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

Что такое правила профиля?

  • Правила профиля для библиотеки указаны в текстовом файле baseline-prof.txt расположенном в каталоге src/main или его эквиваленте. В файле указывается правило для каждой строки, где правило в данном случае представляет собой шаблон для сопоставления с методами или классами в библиотеке. Синтаксис этих правил представляет собой расширенный набор удобочитаемого формата профиля ART, который используется при использовании adb shell profman --dump-classes-and-methods ... . Эти правила принимают одну из двух форм и ориентированы либо на методы, либо на классы.

  • Правило метода будет иметь следующий шаблон:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • И правило класса будет иметь следующий шаблон:

    <CLASS_DESCRIPTOR>
    
  • Здесь <FLAGS> — это один или несколько символов H , S и P указывающие, следует ли пометить этот метод как «Горячий», «Запуск» или «После запуска».

  • <CLASS_DESCRIPTOR> — это дескриптор класса, которому принадлежит целевой метод. Например, класс androidx.compose.runtime.SlotTable будет иметь дескриптор Landroidx/compose/runtime/SlotTable; .

  • <METHOD_SIGNATURE> является сигнатурой метода и включает имя, типы параметров и типы возвращаемых значений метода. Например, метод fun isPlaced(): Boolean в LayoutNode имеет подпись isPlaced()Z .

  • Эти шаблоны могут содержать подстановочные знаки ( ** , * и ? ), чтобы одно правило охватывало несколько методов или классов.

Что делают правила?

  • Метод с флагом H указывает, что этот метод является «горячим» и его следует скомпилировать заранее.

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

  • Метод с флагом P указывает, что это метод, который вызывается после запуска.

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

Как это работает?

  • Библиотеки могут определять эти правила, которые будут упакованы в артефакты AAR. Когда затем создается приложение, включающее эти артефакты, эти правила объединяются, и объединенные правила используются для создания компактного двоичного профиля ART, специфичного для приложения. Затем ART может использовать этот профиль, когда приложение устанавливается на устройства, чтобы заранее скомпилировать определенное подмножество приложения для повышения производительности приложения, особенно при первом запуске. Обратите внимание, что это не повлияет на отлаживаемые приложения.

Версия 1.0.0-beta08

2 июня 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta08 выпускается. Версия 1.0.0-beta08 содержит эти коммиты.

Изменения API

  • State<T> теперь State<out T> ( i69049 )
  • ControlledComposition API изменение, чтобы позволить переоборудовать изменения в однокомпонентном отдельном проходе. ( IAAFD1 , B/184173932 )

Версия 1.0.0-beta07

18 мая 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta07 выпускается. Версия 1.0.0-beta07 содержит эти коммиты.

Изменения API

  • Добавлены новые API компилятора, которые позволяют удалить информацию, сгенерированную компилятором, во время минификации источника. ( Ia34e6 )
  • Представляет ReusableContent , который попытается повторно использовать узлы в его содержании вместо того, чтобы заменить их при изменении ключа. Когда ключ изменяется, предыдущие значения в таблице слотов для содержания игнорируются, за исключением сгенерированных узлов, и значения, используемые для обновления узлов.

    Представляет ReusableComposeNode , который повторно использует испускаемый узел вместо его замены, как это сделано для ComposeNode . ( I1dd86 )

  • @ComposeCompilerApi больше не @RequiresOptIn ( IAB690 )

Исправления ошибок

  • Lazycolumn/Row теперь будет продолжать работать до 2 ранее видимых предметов (не утилизируется), даже если они уже прокручиваются. Это позволяет компоненту повторно использовать активные подкомпозиции, когда нам нужно будет составить новый элемент, который улучшает производительность прокрутки. ( IE5555 )

Версия 1.0.0-beta06

5 мая 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta06 выпускается. Версия 1.0.0-beta06 содержит эти коммиты.

Изменения API

  • @ComposeCompilerApi больше не @RequiresOptIn ( IAB690 )

Версия 1.0.0-бета05

21 апреля 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta05 выпускается. Версия 1.0.0-beta05 содержит эти коммиты.

Изменения API

  • Удален @InternalComposeApi для записи снимков и записи снимка ( ID134D )

Исправления ошибок

  • Файлы AndroidManifest из ui-test-manifest и ui-tooling-data теперь совместимы с Android 12 ( I6f9de , b/184718994 ).

Версия 1.0.0-beta04

7 апреля 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta04 выпускается. Версия 1.0.0-beta04 содержит эти коммиты.

Исправления ошибок

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

    Подводя итог, рассмотрите пример:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    До этого изменения функция композиции ShowCount всегда будет пропускать, даже после обновления параметра count . Это уже не так. ( I5648a )

  • Исправлена ​​проблема, когда rememberSaveable() восстанавливал старое значение при использовании с входными параметрами ( I1B110 , B/182403380 )

Версия 1.0.0-бета03

24 марта 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta03 выпускается. Версия 1.0.0-beta03 содержит эти коммиты.

Изменения API

  • DefaultMonotonicFrameClock устарел. Призыв withFrameNanos или Recomposer.runRecomposeAndApplyChanges без MonotonicFrameClock теперь будет выбросить IllegalStateException . ( I4eb0d )

Версия 1.0.0-beta02

10 марта 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta02 выпущен. Версия 1.0.0-beta02 содержит эти коммиты.

Исправления ошибок

  • Ввести ограничения на публичное использование экспериментальных API ( I6aa29 , b/174531520 ).
  • Исправлено для разбитых rememberSaveable { mutableStateOf(0) } при использовании в пункте назначения навигационного состава. ( I1312B , B/180042685 , B/180701630 )

Версия 1.0.0-бета01

24 февраля 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta01 выпускается. Версия 1.0.0-beta01 содержит эти коммиты.

Это первый выпуск бета-версии Compose 1.0.0.

Изменения API

  • Добавить Recomposer.runRecomposeConcurrentlyAndApplyChanges экспериментальный API для переоборудования недействительных композиций с основной петли кадра. ( I342d0 )
  • Любые композиции, помеченные @readonlycomposable, теперь подтверждены временем компиляции, чтобы убедиться, что они выполняют только другие @readonlycomposables ( i58961 )
  • defaultFactory для compositionLocalOf и staticCompositionLocalOf теперь требуется вместо необязательного.

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

    Для нулевых типов рассматривайте возможность поставки { null } в качестве фабрики по умолчанию.

    Мы не рекомендуем использовать местных жителей с не нулевами типами, если не может быть предоставлено разумное значение по умолчанию. Если не существует разумного по умолчанию, Lambda defaultFactory должна выдать исключение. Однако бросание исключения означает, что потребители местного населения будут иметь неявную зависимость от его предоставления, которая не применяется типовой системой. ( IFBD2A )

  • Униженные символы были удалены со времени выполнения Compose ( i3252c )

  • Установленный emptyContent() удаляется. Используйте {} вместо этого. ( IDB33F , B/179432510 )

  • Поставщики были переименованы в CompositionLocalProvider

    • Конструктор композиции больше не принимает ключевой параметр и устарел.
    • CurrentCompositeKyhash был превращен в композиционное свойство верхнего уровня вместо композиционной функции верхнего уровня.
    • CompositionData и CompositionGroup были перемещены на Androidx.compose.runtime.tooling Пространство имен
    • ComposableLambda был сделан интерфейсом вместо бетонного класса, и больше не имеет параметров типа.
    • ComposableLambdan был сделан интерфейсом вместо бетонного класса, и больше не имеет параметров типа.
    • Функция снимка была перемещена на Androidx.compose.Runtime Пространство имен
    • Метод слияния SnapshotMutation ProLicy больше не экспериментальный
    • Функция @Testonly Top Level ClearRoots была удалена. Это больше не нужно.
    • KeySourceInFoof и ResetSourceInfo функции были удалены. Они больше не нужны.
    • Composer.collectkeySourceInformation была удалена. Это больше не нужно.
    • Isjoinedkey, JoinedKeyLeft и методы kinedKeyright были удалены. Они больше не нужны.
    • Различные API верхнего уровня были перемещены и реорганизованы в разные файлы. Из -за семантики класса файлов Kotlin, это сломает бинарную совместимость, но не совместимость с источником, поэтому не должно быть проблемой для большинства пользователей.
    • ( I99B7D , B/177245490 )
  • SnapshotstateObserver больше не экспериментален ( ID2E6A )

  • Удалили некоторые ранее устаревшие API ( ICE5DA , B/178633932 )

  • Внесли следующие изменения API материала:

    • Добавлен параметр ContentPadding в верхний/нижний апбар, чтобы разрешить настройку накладки по умолчанию.
    • Переупорядоченные параметры в фоне
    • Перенесенный параметр icon в BottomNavigationItem, чтобы быть selected и onClick .
    • Переименовано в параметр alwaysShowLabels alwaysShowLabel в нижней части.
    • Переименованные параметры bodyContent в нескольких компонентах, чтобы просто content .
    • Переупорядоченные параметры в ButtonDefaults.buttonColors() . Обратите внимание, что, поскольку тип параметров не изменился, это не приведет к ошибке в вашем коде - пожалуйста, убедитесь, что вы либо используете названные параметры, либо обновляете заказ вручную, в противном случае ваш код не будет работать так же, как и ранее.
    • Добавлен secondaryVariant параметр в darkColors() . Этот цвет, как правило, такой же, как и secondary в темной теме, но добавление для последовательности и дальнейшей настройки.
    • Удаленные возвышения и оживления () с общественной поверхности API, поскольку они не использовались / полезны.
    • Переименовано в onValueChangeEnd в Slider , чтобы onValueChangeFinished и сделать его нулевым.
    • Переименованный параметр text в Snackbar к content для последовательности.
    • Добавлен параметр contentPadding в DropdownMenuItem , чтобы позволить настройку настройки по умолчанию, а content - расширение на RowScope .
    • Переименован ModalDrawerLayout в ModalDrawer .
    • Переименован в BottomDrawerLayout до BottomDrawer .
    • ( I1CC66 )

Версия 1.0.0-альфа12

10 февраля 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-alpha12 выпускается. Версия 1.0.0-alpha12 содержит эти коммиты.

Изменения API

  • Поддержка ViewGroups была удалена из UIAPPLIER. Установленные композиции Emitview были удалены. ( IFB214 )
  • CompositionReference переименован в CompositionContext ( i53fcb )
  • ComponentActivity.SetContent перенесла на Androidx.Activity.compose.SetContent в модуле AndroidX.Activity: Compose-Compose. ( ICF416 )
  • API Snapshot был обновлен, чтобы быть более соответствующим руководству API, а также скрывать внутренние классы реализации от публичного API. ( ID9E32 )
  • Переименованные в окружающую среду, чтобы соответствовать окружающей среде -> композиционное переименование. Амбиденты раньше назывались AmbientFoo, теперь композиции называются Localfoo. ( I2d55d )
  • Переименовано в окружающую среду до композиции, а также abbientof / staticambientof to compositionlocalof / staticcompositionlocalof соответственно. Это изменение помогает сделать цель композиции более ясным: механизм для обеспечения / извлечения значений локально для композиции. Композиционные экземпляры должны быть предварительно профиксированы с Local , такими как val localfoo = compositionlocalof {foo ()}. ( IA55B6 )
  • TakeMutablesNapShot и TakesNapShot стали сопутствующими методами снижения. ( I91f19 )
  • @ComposableContract был устарел в пользу еще трех специфических аннотаций.

    @ComposableContract(restartable = false) стал @NonRestartableComposable @ComposableContract(readonly = true) стал @ReadOnlyComposable @ComposableContract(preventCapture = true) стал @DisallowComposableCalls @ComposableContract(tracked = true) был удален. ( I60a9d )

  • EmptyContent () и (@composable () -> Unit). Orempty () Утилиты устарели, поскольку они больше не оказывают положительного воздействия на производительность или значения ( I0484D )

  • snapshotFlow и withMutableSnapshot больше не экспериментальные ( i6a45f )

  • Перестроители теперь могут быть закрыты. Закрытые рецимпозиторы будут продолжать переоценить до тех пор, пока не завершится коратики для детей. Recomposer.shutdown переименован в отмену, чтобы контрастировать с близким. ( IB6D76 )

  • Артефакт compose:runtime-dispatch устарел. MonotonicFrameClock теперь можно найти в compose:runtime, а AndroidUiDispatcher можно найти в compose:ui. ( Ib5c36 )

  • API The Compose Compiler Plugin Targets был рефактирован для использования интерфейса вместо бетонного класса. Интерфейс также больше не использует параметр типа.

    Это внутреннее изменение, которое не должно влиять на совместимость исходного кода, но является бинарным разрывом. ( I3B922 , B/169406779 )

  • Был введен Snapshotmutablestate ( ICFD03 )

  • IssosableEffectDisposable был переименован в утилизацию EffectResult ( ICA7C6 )

  • Удален recomposer.current (). [Аннотация] ComposeView теперь по умолчанию для лениво созданных, рецимпозиторов с окнами, управляемыми ViewTreelifeCycleowner для окна. Клеки анимации на основе переоборудования и Framenanos приостановлены, а жизненный цикл хозяина остановлен. ( I38e11 )

  • Recomposer.RunningRecomposers теперь предлагает глобальный штат Stateflow только для чтения Recomposerinfo для наблюдения за текущим состоянием композиции в процессе. Предпочитаю этот API recomposer.current (), который сейчас устарел. ( If8ebe )

  • IssosableEffectDisposable был переименован в удалении EffectResult ( i3ea68 )

Версия 1.0.0-альфа11

28 января 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-alpha11 выпускается. Версия 1.0.0-alpha11 содержит эти коммиты.

Изменения API

  • onCommit, onDispose и onActive устарели в пользу API SideEffect и DisposableEffect ( If760e ).
  • Emit () API и все перегрузки были устарели и переименованы в Composenode. API идентичны, просто другое название, чтобы следовать соглашениям об именах Compose ( I4137B )
  • validate и CompositionReference() теперь устарели в пользу currentRecomposeScope и RememberCompositionReference соответственно. ( I583a8 )
  • Помните, что заменяет CompositionLifeCycleObserver, а CompositionLifeCycleObserver теперь устарел.

    RememberObserver - это замена для CompositionLifecycleObserver с модифицированной семантикой и переименованными методами. Переход на новый API может быть сделан механическим для объектов, которые запоминаются только один раз, что является и продолжает оставаться рекомендуемой практикой. Однако, если ссылка запомнилась более одного раза в композиции, onRemembered , требуется для каждой ссылки, где onEnter называется только один раз. onEnter был назван несколько раз, если объект использовался в подкомпозициях, таких как WithConstraints и Scaffold делая единственную гарантию вызова onEnter ненадежную, и он был удален для RememberObserver .

    Помните, RememberObserver добавляет onAbandoned который называется, если экземпляр RememberObserver возвращается из обратного вызова, чтобы remember , но его не помнили в состоянии композиции, и, следовательно, никогда не onRemembered . Это может произойти, если исключение завершает композицию перед завершением или композиция отбрасывается, потому что состояние производит композицию, для которого больше не является точкой или иным образом не требуется. Если экземпляр RememberObserver , следуя указанной выше рекомендации, отслеживает внешний ресурс как onForgotten , так и onAbandoned каждом из них указывает на то, что ресурс больше не нужен. Если объект отслеживает работу, или ресурсы, распределенные в onRemembered , он может быть onAbandoned , так как его не будут вызваны, если будет вызвано onRemembered . ( I02C36 )

  • Не отмечать функции collectAsState() как встроенные ( IA73E4 )

Исправления ошибок

  • С Constraints был переработан как BoxWithConstraints и переехал на Foundation.layout. ( I9420B , B/173387208 )
  • Использование TestCoroutineDispatcher при тестировании ( I532b6 )

Версия 1.0.0-альфа10

13 января 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-alpha10 выпускается. Версия 1.0.0-alpha10 содержит эти коммиты.

Нарушение изменения

  • Реструктуризация API внутреннего компилятора позволяет падать изменения в узлах, сгенерированных в результате композиции в фазу «применение изменений» композиции, после того как все функции @Composable завершились.

    Это поведенческое нарушение изменений, которое может повлиять на код приложения, поскольку узлы больше не доступны из внутренних и экспериментальных API до тех пор, пока не будут применены изменения. Обычно это можно обойти окружающим кодом с такими зависимостями в SideEffect композиции, чтобы отложить выполнение кода до тех пор, пока узлы не будут созданы и инициализированы. ( I018DA )

Изменения API

  • Добавил способ отслеживать, если рецимпасатор применил изменения. ( I1b3e2 )
  • Разверните [Abstract] API Composeview, чтобы разрешить переработку на основе просмотров, распорядившись их композицией, чтобы снова воссоздать позже. Добавьте API для установки и обнаружения рекомкомпозиторов с окнами и композиции для создания дочерних композиций.

    Добавить ViewCompositionStrategy для настройки стратегии утилизации композиции [Abstract] ComposeViews; Поведение по умолчанию утилизируется в окне. ( I860ab )

Исправления ошибок

  • Recomposer теперь выявляет поток своего текущего состояния, позволяя контролировать ее активность и активность связанных эффектов. ( IFB2B9 )
  • К имени, теперь можно получить доступ через KeyEvent.NativeKeeVent ( I87C57 , B/173086397 )

Версия 1.0.0-альфа09

16 декабря 2020 г.

androidx.compose.runtime:runtime-*:1.0.0-alpha09 выпускается. Версия 1.0.0-alpha09 содержит эти коммиты.

Изменения API

  • Удален слот -шлотчиком и слотом от публичного API. Они были отмечены как InternalComposeapi ранее. Теперь они внутренние для модуля Compose.

    CompositionData и CompositionGroup добавляли в качестве замены для API-интерфейса для пользовательского интерфейса для использования для извлечения информации композиции. Они общедоступны, но не предназначены для использования за пределами API-интерфейса пользовательского интерфейса, поскольку они предоставляют необработанную информацию, которую интерпретирует API-интерфейс пользовательского интерфейса ( i31a9c )

  • Класс Applier больше не считается ( ID85B0 )

  • Интерфейс Applier изменился, чтобы упростить строительные деревья снизу вверх, а не сверху вниз.

    Метод insert() был переименован в insertTopDown() .

    Был добавлен новый метод, insertBottomUp() .

    Applier либо вставляет узлы в дерево, которое он редактирует, используя insertTopDown() или insertBottomUp() в зависимости от того, что работает лучше.

    Некоторые деревья, такие как LayoutNode и View , гораздо более эффективны для строительства снизу вверх, чем сверху вниз. Перед этим изменением была необходима стопка вставки для реализации снизу вверх, который необходимо было скопировать каждому прикладному приложению, который нуждался в конструкции снизу вверх для производительности. При этом изменение Applier переопределение insertBottomUp() для построения восходящего дерева и insertTopDown() , чтобы построить дерево сверху вниз. ( ICBDC2 )

  • Составьте поддержку имущественных добычи, которые могут сделать композиционные вызовы. Поддержка этого не исчезнет, ​​но синтаксис для объявления имущества Getter как @composable меняется.

    Недооцененный синтаксис для этого был путем аннотирования самой собственности:

        @Composable val someProperty: Int get() = ...
    

    Синтаксис в настоящее время для этого-это аннотирование Getter of the Property:

       val someProperty: Int @Composable get() = ...
    

    Оба синтаксиса будут работать в течение некоторого времени, но первый устаревший синтаксис в конечном итоге станет ошибкой компиляции. ( ID9197 )

Исправления ошибок

  • AndroidOwner сделан внутренним ( IBCAD0 , B/170296980 )
  • SubComposeInto (LayoutNode) был сделан внутренним ( ID724A )

Версия 1.0.0-альфа08

2 декабря 2020 года

androidx.compose.runtime:runtime-*:1.0.0-alpha08 выпускается. Версия 1.0.0-alpha08 содержит эти коммиты.

Изменения API

  • Добавлена ​​проверка на пробег для композиционного именования параметров Lambda, чтобы проверить согласованность с руководящими принципами составления. Также мигрировал некоторые API, используя children в качестве названия для их запекания Lambda до content , согласно проверке и руководству. ( IEC48E )
  • Recomposer больше не принимает EnceddingContext; Требуемые зависимости планирования получены из EffectCoroutIneContext. FrameManager устарел; Интеграции платформы должны инициализировать свою собственную глобальную обработку снимков. ( I02369 )
  • RestorAbleStateholder.WithRestorAbleState был переименован в RestorAbleStateProvider ( I66640 )

Исправления ошибок

  • Установившись в окружающей среде, названные с Ambient в качестве суффикса, и заменили их новыми свойствами, префиксированными окружающей средой, следуя за другими окружающими, и составил руководящие принципы API. ( I33440 )
  • Удалить старый модуль UI-теста и его заглушки ( i3a7cb )

Версия 1.0.0-альфа07

11 ноября 2020 года

androidx.compose.runtime:runtime-*:1.0.0-alpha07 выпускается. Версия 1.0.0-alpha07 содержит эти коммиты.

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

Изменения API

  • Аннотация @UnionType установилась ( i57cde )
  • При условии, что это была добавлена ​​в качестве альтернативы, чтобы обеспечить предоставление окружающих средств, и его можно использовать для указания значений окружающей среды, которые будут установлены только тогда, когда уже не будет предоставлено средняя стоимость. ( ID6635 , B/171024925 )
  • Запущенная и была переименована в запуск для согласованности с API API -интерфейсом SideEffect и OndayableEffect. Запущенное вмешательство без предмет Params не разрешено для того, чтобы поощрять передовые практики. ( IFD3D4 )
  • Applier теперь имеет обратные вызовы OnBeginChanges/OnenDChanges, которые вызываются, когда композитор начинает/закончит применять изменения в дереве. Они могут быть использованы для управления партии ресурсов, если это необходимо. ( ICF476 )
  • Recomposer теперь требует CoroutineContext на строительстве ( IC4610 )
  • Изменения во внутренней неразборчивой реализации, которая не должна влиять на публичный API. ( IF9828 )
  • Умеренные адаптеры Rxjava2, которые не принимают начальное значение, были удалены ( IDB72F )

Исправления ошибок

  • Foundation.Text был устарел и заменен на материал. Текст. Для базового, неопинозированного текстового API, который не потребляет значения из темы, см. Androidx.compe.foundation.basictext. ( IF64CB )
  • Basetextfield устарел. Вместо этого используйте BasicTextField. ( I896EB )
  • Несколько символов, связанных с макетом, были перемещены с Androidx.compose.ui на androidx.compose.layout.ui. ( I0FA98 , B/170475424 )

Внешний вклад

  • Добавлен модуль runtime-rxjava3 для Compose. Похоже на runtime-rxjava2 ( I02CBF )

Версия 1.0.0-альфа06

28 октября 2020 года

androidx.compose.runtime:runtime-*:1.0.0-alpha06 выпускается. Версия 1.0.0-alpha06 содержит эти коммиты.

Изменения API

  • Recomposer теперь является композицией и действительным родителем композиции. Откровенный рецимпозитор теперь требуется в меньшем количестве мест. ( I4036f )
  • Добавлены API аналога одноразового определения в сторону, заполняя роль Oncommit-with-params, но с необходимым Ondispect.
    • Добавлены API API, чтобы опубликовать данные от переоборудования до текущих или долгоживущих процессов, таких как одноразовые, или запускаемые ноги.
    • ( ID50b9 )
  • Intablevector теперь реализует randomaccess ( i85d73 , b/170461551 )
  • Добавлена ​​боковая композиция для применения побочных эффектов композиции к объектам, управляемым композицией. SideEffect предназначен для замены композиции OnCommit. ( IA77C2 )
  • Новый экспериментальный API RestorableStateholder. Это позволяет сохранить состояние, определенное [saveInstanceTate] и [RemembersAvedInStanceTate] для поддерево, прежде чем утилизировать его, чтобы сделать его обратно в следующий раз с восстановленным состоянием. ( I66884 , B/166586419 )

Исправления ошибок

  • Включить переходы в Composetestrule; Удалите опцию, чтобы включить мигающий курсор из Composetestrule. ( If0de3 )

Версия 1.0.0-альфа05

14 октября 2020 г.

androidx.compose.runtime:runtime-*:1.0.0-alpha05 выпускается. Версия 1.0.0-alpha05 содержит эти коммиты.

Изменения API

  • Экспериментальный модификатор.pointerInput подвеска входного модификатора ( IA77D2 )
  • Прокрутка прокрутки Lazycolumn/Row улучшается, выполняя меньше работы в подкомпозиции на каждом свитке. Новый метод hasInvalidations () был добавлен для класса композиции. Метод haspendingChanges () от Recomposer был переименован в HasInvalidations () ( IB2F32 , B/168293643 , B/167972292 , B/165028371 )
  • Добавить API -API -т. Д. для запуска CORUTINES из композиции, которые обновляют одно значение State<T> с течением времени ( ID4A57 )
  • Запуск Incomposition переименован в запуск в соответствии с руководящими принципами Compose API ( i99a8e )
  • Вызовы Order of Place в пользовательских макетах теперь определяют порядок рисования для детей ( IBC9F6 )

Версия 1.0.0-альфа04

1 октября 2020 г.

androidx.compose.runtime:runtime-*:1.0.0-alpha04 выпускается. Версия 1.0.0-alpha04 содержит эти коммиты.

Изменения API

  • Добавлен владельцы, чтобы позволить сбору макетов и рисования областей наблюдений, как только они больше не будут действительными. ( IC4CF8 )
  • Добавлен DEFIVEDSTATEOF API для создания объектов состояния на основе расчета, который может считывать (и получить из) других объектов состояния ( IF758B )
  • Добавлен API Testonly для SnapshotStateObserver ( i6e2a9 )

Исправления ошибок

  • Foundation.box был устарел. Пожалуйста, используйте foundation.layout.box вместо этого. ( IE5950 , B/167680279 )

Версия 1.0.0-альфа03

16 сентября 2020 года

androidx.compose.runtime:runtime-*:1.0.0-alpha03 выпускается. Версия 1.0.0-alpha03 содержит эти коммиты.

Изменения API

  • CompositionCoroutineScope больше не реализует MonotonicFrameClock . Абоненты withFrameNanos должны явно импортировать функцию верхнего уровня. ( ICB642 , B/166778123 )

Исправления ошибок

  • Функции глобального тестирования, такие как onNode или waitForIdle , теперь устаревают, пожалуйста, перейдите на свои новые аналоги, которые определены на Composetestrule ( i7f45a )
  • launchInComposition больше не запускает Coroutines не сообщается ( IEF6AF , B/166486000 )

Версия 1.0.0-альфа02

2 сентября 2020 года

androidx.compose.runtime:runtime-*:1.0.0-alpha02 выпущен. Версия 1.0.0-alpha02 содержит эти коммиты.

Изменения API

  • Добавьте API snapshotFlow и API withMutableSnapshot для потребления и создания изменений данных снимка. ( I3e722 )
  • Призывная конвенция для композиционных функций изменилась. Это бинарное нарушение. Все библиотеки должны быть перекомпилированы, чтобы работать с этой версией плагина Compose Compiler.

    Это изменение не создает изменение нарушения уровня источника, поскольку единственные API, которые изменились, - это API компилятора, которые имеют явный выбор ( i7afd2 , b/158123185 )

  • Удаленные методы планирования из EnceddingContext ( i7b9be )

  • На промежутке устарел; У Oncommit теперь есть поведение Procommit.

    Oncommit и Onactive теперь работают в той же кадре хореографа, в которой композиция изменяется, а не в начале следующей кадры хореографа. ( I70403 )

Версия 1.0.0-альфа01

26 августа 2020 года

androidx.compose.runtime:runtime-*:1.0.0-alpha01 выпускается. Версия 1.0.0-alpha01 содержит эти коммиты.

Версия 0.1.0-Dev

Версия 0.1.0-Dev17

19 августа 2020 года

androidx.compose.runtime:runtime-*:0.1.0-dev17 выпускается. Версия 0.1.0-Dev17 содержит эти коммиты.

Изменения API

  • Пользовательские излучения теперь могут заявить, что один или несколько его сеттеров могут быть пропущены и перечислены независимо от Emit. ( IBBD13 )
  • Удаленные устаревшие вызовы FrameManager.

    Внутренние API -интерфейсы были изменены, чтобы уменьшить количество накладных расходов, чтобы отслеживать объекты состояния, такие как mutableStateof() ( i80ba6 )

  • state { ... } композитное теперь устарело в пользу явных вызовов remember { mutableStateOf(...) } для ясности. Это уменьшает общую поверхность API и количество понятий для управления состоянием и соответствует шаблону by mutableStateOf() для делегирования свойства класса. ( IA5727 )

  • Flow.collectasstate теперь определяет диспетчер по умолчанию из самой композиции, а не дефолта для диспетчеров. Main. ( I9c1d9 )

  • Сбой, когда что -то, что сохраняет состояние, использовалось внутри петли для FOR, исправлено. Now having the same key in savedInstanceState() is allowed, api of UiSavedStateRegistry is now adjusted to this new requirement ( I4ab76 , b/160042650 , b/156853976 , b/159026663 , b/154920561 )

Исправления ошибок

  • emitView was deprecated. Use AndroidView instead if possible for emitting Views inside Compose. Note that composing Views and ViewGroups directly will not be supported in the future unless these are leaves in the composition tree, case when this can be achieved using AndroidView. ( I29b1e , b/163871221 )

Версия 0.1.0-Dev16

5 августа 2020 года

androidx.compose.runtime:runtime-*:0.1.0-dev16 is released. Версия 0.1.0-Dev16 содержит эти коммиты.

Изменения API

  • The default mutation policy of mutableStateOf() , ambientOf() and savedInstanceStateOf() has changed to be structuralEqualityPolicy() instead of referentialEqualityPolicy() .

    The default for deciding if a new value assigned to a mutableStateOf() instance is considered a change now defaults to using == instead of using === .

    See https://kotlinlang.org/docs/reference/equality.html

    ambientOf() and savedInstanceStateOf() use mutableStateOf() in their implementations so they were changed to be consistent with mutableStateOf() .

    Using structural equality more closely matches developer expectations.

    Например,

    val state = mutableStateOf(1f)
    

    с последующим,

    state.value = 1f
    

    will no longer be consider a change to state and uses of state during composition will no longer need to be recomposed.

    This is a breaking change but, in most cases (such when using classes that do not override equals() ), this will not have a noticeable effect on an application.

    Classes that do override equals() , such as data classes, might see a performance degradation as their equals() methods are now, by default, called when assigned to a mutableStateOf() .

    The previous behavior can be restored by adding the policy parameter policy = referentialEqualityPolicy() to calls to mutableStateOf() , ambientOf() and savedInstanceStateOf() . ( Ic21a7 )

  • Row and Column are now inline function significantly reducing the overhead of using them. ( I75c10 )

Исправления ошибок

  • setViewContent was deprecated. setContent should be used instead. ( I7e497 , b/160335130 )
  • Добавлен MonotonicframeanimationClock, который позволяет использовать монотонный фрамиклок в качестве анимации, чтобы преодолеть разрыв между новыми часами на основе Coroutines и API, которые все еще используют старые часы на основе обратного вызова.

    The MonotonicFrameClock equivalent of ManualAnimationClock is now ManualFrameClock. ( I111c7 , b/161247083 )

  • Modifier.stateDraggable was completely reworked and renamed to Modifier.swipeable. A new SwipeableState class was introduced, and DrawerState and BottomDrawerState were refactored to inherit from it. [Modal/Bottom]DrawerLayout no longer take an onStateChange parameter. ( I72332 , b/148023068 )

  • MODIFIER.PLUS был устарел, используйте модификатор. Тогда вместо этого. «Тогда» имеет более сильный сигнал упорядочения, в то время как также запрещает тип Modifier.padding().background() + anotherModifier , который разбивает цепь и труднее читать ( IEDD58 , B/161529964 )

  • SubcomposeLayout is added. It is a low level primitive which allows to compose the children during the measuring if we want to use some values available only later during the measure for the subtree composition. For example WithConstraints is not implemented using SubcomposeLayout. ( I25cc8 )

  • Material FilledTextField was renamed to TextField and foundational TextField was renamed to BaseTextField to make simplest desired API easy to discover and use ( Ia6242 , b/155482676 )

  • MODIFIER.Drawbackground был переименован в Modifier.Background ( I13677 )

Версия 0.1.0-Dev15

22 июля 2020 года

androidx.compose.runtime:runtime-*:0.1.0-dev15 is released. Версия 0.1.0-Dev15 содержит эти коммиты.

Обновление зависимостей

  • Чтобы использовать версию Compose 0.1.0-dev15 , вам необходимо будет обновить свои зависимости в соответствии с новыми фрагментами кода, показанными выше при объявлении зависимостей .

Изменения API

  • @Model annotation is now deprecated. Use state and mutableStateOf as alternatives. This deprecation decision was reached after much careful discussion.

    Обоснование

    Rationale includes but is not limited to:

    • Reduces API surface area and concepts we need to teach
    • More closely aligns with other comparable toolkits (Swift UI, React, Flutter)
    • Reversible decision. We can always bring @Model back later.
    • Removes corner-case usage and difficult to answer questions about configuring @Model as things we need to handle
    • @Model data classes, equals, hashcode, etc.
    • How do I have some properties “observed” and others not?
    • How do I specify structural vs. referential equality to be used in observation?
    • Reduces “magic” in the system. Would reduce the likelihood of someone assuming system was smarter than it is (ie, it knowing how to diff a list)
    • Makes the granularity of observation more intuitive.
    • Improves refactorability from variable -> property on class
    • Potentially opens up possibilities to do hand-crafted State-specific optimizations
    • More closely aligns with the rest of the ecosystem and reduces ambiguity towards immutable or us “embracing mutable state”

    Migration Notes

    Almost all existing usages of @Model are fairly trivially transformed in one of two ways. The example below has a @Model class with two properties just for the sake of example, and has it being used in a composable.

    @Model class Position(
     var x: Int,
     var y: Int
    )
    
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    Alternative 1: Use State<OriginalClass> and create copies.

    This approach is made easier with Kotlin's data classes. Essentially, make all previously var properties into val properties of a data class, and then use state instead of remember , and assign the state value to cloned copies of the original using the data class copy(...) convenience method.

    It's important to note that this approach only works when the only mutations to that class were done in the same scope that the State instance is created. If the class is internally mutating itself outside of the scope of usage, and you are relying on the observation of that, then the next approach is the one you will want to use.

    data class Position(
     val x: Int,
     val y: Int
    )
    
    @Composable fun Example() {
     var p by state { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p = p.copy(x=it) }
       onYChange={ p = p.copy(y=it) }
     )
    }
    

    Alternative 2: Use mutableStateOf and property delegates

    This approach is made easier with Kotlin's property delegates and the mutableStateOf API which allows you to create MutableState instances outside of composition. Essentially, replace all var properties of the original class with var properties with mutableStateOf as their property delegate. This has the advantage that the usage of the class will not change at all, only the internal implementation of it. The behavior is not completely identical to the original example though, as each property is now observed/subscribed to individually, so the recompositions you see after this refactor could be more narrow (a good thing).

    class Position(x: Int, y: Int) {
     var x by mutableStateOf(x)
     var y by mutableStateOf(y)
    }
    
    // source of Example is identical to original
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    ( I409e8 , b/152050010 , b/146362815 , b/146342522 , b/143413369 , b/135715219 , b/143263925 , b/139653744 )

  • Changes the code generation strategy of Compose's compiler. Prior to the change, the compose compiler would transform calls to composable functions. With this change, we now transform the body of a composable function and leave the callsite unaltered (mostly).

    This means that most of the logic communicating with the compose runtime happens at the start of the function body, instead of at the callsite.

    This should be a source-compatible change for all usage of compose. Most users of compose should not have to update any code as a result of this change.

    In order to support this work, the JVM signature of all composable functions has changed. A Composable function accepting a single parameter is transformed into a function accepting 3 parameters, the additional parameters are the Composer, a 'key' integer. a bitmask integer used to propagate metadata through calls.

    Compose now also transforms default arguments to a composable function. It does this without introducing an additional synthetic default overload of the function itself, so this change will result in fewer functions being defined.

    Known intentional behavioral changes resulting from this:

    1. Some calls will skip where they wouldn't have previously
    2. Composable expressions in default argument expressions are now correctly subscribed to and handled

    This work included some optimizations: 1. The result of comparisons of parameters are propagated through the call graph to other composable functions. This will result in fewer comparisons at runtime, reduces the slot table size, as well as more skipping of composable functions that were previously not skipped 2. Paremeters which are determined to be “static” at compile time are no longer compared or stored in the runtime. This reduces the number of comparisons and reduces slot table size. 3. Control flow structure of the body of functions is used to minimize the number of groups that are generated. This reduces slot table size and results in less work for the runtime 4. Unused dispatch and receiver parameters to functions are not included in determining skippability of the function if they are not used inside of the body of the function.

    Most breaking changes were for APIs that the compiler targets directly, and typical use of compose will not be affected: 1. Composer::startExpr was removed 2. Composer::endExpr was removed 3. Composer::call was deprecated 4. The non-varargs overloads of key have been removed. Use the vararg version going forward. 5. The Pivotal annotation was deprecated. Use key as a replacement. 6. ScopeUpdateScope::updateScope was changed to expect a Function3 instead of Function1 7. restartableFunction and restartableFunctionN were updated to include additional compile time parameters ( I60756 , b/143464846 )

  • Added sortWith and removeRange to MutableVector ( Icccf7 )

  • Added default method implementations for CompositionLifecycleObserver ( I24289 )

  • Applier now requires a clear() method for disposing compositions ( Ibe697 )

  • Added asMutableList() to MutableVector to allow it to be passed to public API without having to copy the entire list. ( I298df )

  • Added rememberCoroutineScope() to obtain a managed CoroutineScope in composition for launching jobs in response to events. ( I0e264 )

  • MutableVector is a new collection that does not implement any of the standard Collection interface. This collection offers speed above other requirements and is intended to only be used in internal implementations. ( I8ebd6 )

  • Temporarily removed StableMutableList and StableMutableMap to avoid an issue in the version of Kotlin compose requires. These interfaces will be reintroduced once compose is updated to a version of Kotlin that doesn't have the issue.

    SnapshotStateList and SnapshotStateMap are now public but they will be deprecated once StableMutableList and StableMutableMap are restored. ( Ia7769 )

  • add top-level withFrameNanos function for animation timing ( Ie34c5 )

  • @Untracked annotation has been deprecated. Replace with @ComposableContract(tracked=false) ( Id211e )

  • RestartableFunction and associated APIs have been renamed to ComposableLambda, etc. These APIs were targeted only by the compiler so this should not affect source level compatibility normally. The rename was done primarily to communicate what this class is better when it shows up in stack traces ( I7eb25 )

  • @Composable annotation is no longer valid on classes ( Ia5f02 )

  • Ambient<T> is now @Stable instead of @Immutable ( I0b4bb )

  • Prior to this change, the compose compiler plugin would non-trivially intercept calls to constructors inside of a @Composable function if there was an ( I5205a , b/158123804 )

  • Сопровождение Composable больше не является полезной абстракцией. Большая часть переоценки должна произойти в результате назначений мутаблстата. Для чего -либо, кроме этого, рекомендуется использовать функцию invalidate , чтобы вызвать переоборудование текущего объема. ( IFC992 )

  • Observe is no longer a useful abstraction. If you need to replicate it, its implementation can be replicated by just creating a composable function which executes a composable lambda parameter. For example, @Composable fun Observe(body: @Composable () -> Unit) = body() ( I40d37 )

  • @Direct was deprecated in favor of @ComposableContract(restartable=false) ( If4708 )

  • Added an adapter for the recently introduced StateFlow which allows as to pre-populate the initial value so the returned State is non-nullable ( I61dd8 , b/156233789 )

  • Added an adapter for Flow. Example of the usage: val value by flow.collectAsState() ( If2198 , b/153375923 )

  • [Mintable] Операторы делегатов государственной собственности перешли на расширения для поддержки оптимизации Delegate Kotlin 1.4. Абоненты должны добавить импорт, чтобы продолжить использование by state { ... } или by mutableStateOf(...) . ( I5312c )

  • Androidx.compose.viewComposer был перенесен на androidx.ui.node.uicomposer androidx.compose.emittable. Это было избыточно с компонентом. Androidx.compose.viewAdapters был удален. Они больше не являются поддерживаемым вариантом использования. Compose.composeinto устарел. Вместо этого используйте setContent или setViewContent . Compose.disposecomposition устарели. Вместо этого используйте метод dispose на Composition , возвращаемой setContent . Androidx.compose.compose.subcompoceinto переехал на androidx.ui.core.subcompoceinto componentnode#emitinsertat был переименован в компонент#insertat componentnode#emitremoveat был переименован в компонент#removeatnode#emitmode был переименован в компонент#################################( isdef00 )

  • Updated the ComposeFlags.COMPOSER_PARAM flag to be true , which will change the code generation strategy for the compose plugin. At a high level, this causes @Composable functions to be generated with an additional synthetic parameter, which is passed through to subsequent @Composable calls in order for the runtime to properly manage execution. This is a significant binary breaking change, however, should preserve source-level compatibility in all sanctioned usage of compose. ( I7971c )

  • Разрушение изменений в API Ampi Ampients. См. Журнал и Ambient<T> Документация для деталей ( i4c7ee , b/143769776 )

  • Added ui-livedata - new artifact with an adapter for LiveData. Example of the usage: val value by liveData.observeAsState() ( Ie9e8c , b/150465596 )

  • Rx adapters without explicit initial value are deprecated. Using null is not always the best default, for example when you have a List it is better to start with emptyList() or any other reasonable default ( I00025 , b/161348384 )

  • Added ui-rxjava2 - new artifact with adapters for RxJava2. Example of the usage: val value by observable.subscribeAsState() ( Ifab4b , b/153369097 )

  • savedInstanceState() can now be used with nullable types ( I6847f , b/153532190 )

  • New listSaver() and mapSaver() to make it easier to write custom Saver objects ( I8cf68 , b/152331508 )

  • New functions: savedInstanceState() and rememberSavedInstanceState(). They are similar to state() and remember() but have a saved instance state support build in ( If1987 , b/152025209 )

Исправления ошибок

  • runOnIdleCompose переименован в runOnIdle ( I83607 )
  • Made LayoutNode experimental API ( I4f2e9 )
  • androidx.ui.foundation.TextFieldValue and androidx.ui.input.EditorValue is deprecated. TextField, FilledTextField and CoreTextField composables that uses that type is also deprecated. Please use androidx.ui.input.TextFieldValue instead ( I4066d , b/155211005 )
  • Removed deprecated DrawBackground API in favor of drawBackground extension APIs on Modifier. Refactored color, brush and paint drawBackground implementations to reduce code paths as well as remove requirement for Modifier to be created as part of composition. ( I0343a )
  • Обновленные API -интерфейсы более высокого уровня, которые выставляют холст, чтобы разоблачить Canvasscope. Это устраняет необходимость того, чтобы потребители поддерживали свои собственные объекты краски. Для потребителей, которые по -прежнему требуют доступа к холстам, они могут использовать метод расширения DrawCanvas, который обеспечивает обратный вызов для выпуска команд рисования с базовым холстом. ( I80afd )
  • WithConstraints trailing lambda API has been changed. Now instead of two params it has a receiver scope which in addition to constraints and layoutDirection provides minWidth, maxWidth, minHeight and maxHeight properties in Dp ( I91b9a , b/149979702 )
  • Added symmetric padding modifier. ( I39840 )
  • Updated wrapContentWidth and wrapContentHeight to expect vertical or horizontal Alignment rather than any Alignment. The gravity modifier was updated to accept vertical or horizontal Alignment. Row, Column and Stack were updated to support custom continuous Alignments. ( Ib0728 )
  • модуль UI-Text переименован в UI-Text-Core ( i57dec )
  • Improve DrawModifier API:
    • Сделал применение приемника для Drait () ContentDrawScope
    • Удалили все параметры на Draw ()
    • DraitScope имеет тот же интерфейс, что и бывший Canvasscope
    • ContentDrawscope имеет метод DraitContent () ( ibaced , b/152919067 )
  • ColoredRect был устарел. Используйте Box(Modifier.preferredSize(width, height).drawBackground(color)) вместо этого. ( I499fa , b/152753731 )
  • Заменил модификатор плюс оператор с функциями расширения завода ( I225E4 )
  • RowScope and ColumnScope members are now accessible outside Row and Column. ( I3a641 )
  • Переименовано в LayoutFlegeble до макетного веса. Переименованного плотного параметра для заполнения. ( IF4738 )
  • WithConstraints got LayoutDirection parameter ( I6d6f7 )
  • Renamed background to DrawBackground and make it to be memorized by default ( Ia0bd3 )
  • Replaced ButtonStyle with distinct functions and removed text (string) overload. See updated samples for usage information. ( If63ab , b/146478620 , b/146482131 )
  • runOnIdleCompose и runOnUiThread теперь являются глобальными функциями вместо методов Composetestrule. ( ICBE8F )

Внешний вклад

  • Remove unneeded API such as Looper and Handler from Compose Runtime porting layer ( I6847d )
  • Deprecate Flow<T>.collectAsState() with no initial value. Use StateFlow<T> or pass an explicit initial value instead. ( I63f98 , b/157674865 )
,

Compose Runtime

Фундаментальные строительные блоки модели программирования Compose и управления состоянием, а также основная среда выполнения для целевого подключаемого модуля Compose Compiler.
Последнее обновление Стабильный выпуск Кандидат на выпуск Бета-версия Альфа-релиз
26 февраля 2025 г. 1.7.8 - 1.8.0-бета03 -

Структура

Compose is combination of 7 Maven Group Ids within androidx . Each Group contains a targeted subset of functionality, each with its own set of release notes.

В этой таблице описаны группы и ссылки на каждый набор примечаний к выпуску.

Группа Описание
сочинить.анимацию Создавайте анимацию в своих приложениях Jetpack Compose, чтобы улучшить взаимодействие с пользователем.
compose.compiler Преобразуйте функции @Composable и включите оптимизацию с помощью плагина компилятора Kotlin.
compose.foundation Создавайте приложения Jetpack Compose с готовыми к использованию стандартными блоками и расширяйте основу для создания собственных элементов системы проектирования.
составить.материал Создавайте пользовательские интерфейсы Jetpack Compose с готовыми к использованию компонентами Material Design. Это точка входа более высокого уровня в Compose, предназначенная для предоставления компонентов, соответствующих описанным на сайте www.material.io.
Compose.material3 Создавайте пользовательские интерфейсы Jetpack Compose с помощью компонентов Material Design 3 — следующего этапа развития Material Design. Material 3 включает в себя обновленные темы и компоненты, а также функции персонализации Material You, такие как динамический цвет, и разработан с учетом нового визуального стиля Android 12 и системного пользовательского интерфейса.
Compose.runtime Фундаментальные строительные блоки модели программирования Compose и управления состоянием, а также основная среда выполнения для целевого подключаемого модуля Compose Compiler.
Compose.ui Фундаментальные компоненты пользовательского интерфейса, необходимые для взаимодействия с устройством, включая макет, рисование и ввод.

Объявление зависимостей

Чтобы добавить зависимость от Compose, вам необходимо добавить в свой проект репозиторий Google Maven. Для получения дополнительной информации прочтите репозиторий Google Maven .

Добавьте зависимости для нужных вам артефактов в файл build.gradle для вашего приложения или модуля:

dependencies {
    implementation "androidx.compose.runtime:runtime:1.7.5"
    implementation "androidx.compose.runtime:runtime-livedata:1.7.5"
    implementation "androidx.compose.runtime:runtime-rxjava2:1.7.5"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}
dependencies {
    implementation("androidx.compose.runtime:runtime:1.7.5")
    implementation("androidx.compose.runtime:runtime-livedata:1.7.5")
    implementation("androidx.compose.runtime:runtime-rxjava2:1.7.5")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Дополнительные сведения о зависимостях см. в разделе Добавление зависимостей сборки .

Обратная связь

Ваши отзывы помогают сделать Jetpack лучше. Дайте нам знать, если вы обнаружите новые проблемы или у вас есть идеи по улучшению этой библиотеки. Пожалуйста, ознакомьтесь с существующими проблемами в этой библиотеке, прежде чем создавать новую. Вы можете добавить свой голос к существующей проблеме, нажав кнопку со звездочкой.

Создать новую задачу

Дополнительную информацию см. в документации по системе отслеживания проблем .

Runtime Tracing Version 1.7

Версия 1.7.0-rc01

18 сентября 2024 г.

androidx.compose.runtime:runtime-tracing:1.7.0-rc01 is released. Версия 1.7.0-rc01 содержит эти коммиты .

Runtime Tracing Version 1.0

Версия 1.0.0-бета01

29 ноября 2023 г.

androidx.compose.runtime:runtime-tracing:1.0.0-beta01 is released. Версия 1.0.0-beta01 содержит эти коммиты.

Версия 1.0.0-альфа05

15 ноября 2023 г.

androidx.compose.runtime:runtime-tracing:1.0.0-alpha05 is released. Версия 1.0.0-alpha05 содержит эти коммиты.

Исправления ошибок

  • Pinned dependencies to lowest supported stable versions (ie compose-runtime and tracing-perfetto) - fixing an issue where compose-runtime-tracing would bring in a newer version of compose-runtime into the app.

Версия 1.0.0-альфа04

23 августа 2023 г.

androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 is released. Версия 1.0.0-alpha04 содержит эти коммиты.

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

  • Compatible with latest versions of Benchmark and Tracing Perfetto, enabling support for Composition Tracing at app startup (cold start) eg in AndroidX Benchmark and Android Studio (starting from Hedgehog Beta 2).

Изменения API

  • Renamed androidx.tracing.perfetto.Trace to androidx.tracing.perfetto.PerfettoSdkTrace . ( I44af8 )
  • Making Tracing Perfetto SDK APIs consistent with android.os.Trace . ( I73ba0 , b/282199917 )
  • Prerequisites for tracing at app startup. ( Iad890 )
  • Merged experimental and public API files ( I0f2e1 , b/278769092 )

Версия 1.0.0-альфа02

8 февраля 2023 г.

androidx.compose.runtime:runtime-tracing:1.0.0-alpha02 is released. Версия 1.0.0-alpha02 содержит эти коммиты.

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

  • No functional changes. Multiple performance optimisations in downstream dependencies androidx.tracing:tracing-perfetto* .

Версия 1.0.0-альфа01

7 сентября 2022 г.

androidx.compose.runtime:runtime-tracing:1.0.0-alpha01 is released. Версия 1.0.0-alpha01 содержит эти коммиты.

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

  • androidx.compose.runtime:runtime-tracing is a library which - in the presence of tooling supporting it (coming soon) - allows for extended tracing in a Compose app. This initial release is 1.0.0-alpha01.

Версия 1.8

Версия 1.8.0-бета03

26 февраля 2025 г.

androidx.compose.runtime:runtime-*:1.8.0-beta03 is released. Версия 1.8.0-beta03 содержит эти коммиты .

Версия 1.8.0-бета02

12 февраля 2025 г.

androidx.compose.runtime:runtime-*:1.8.0-beta02 is released. Версия 1.8.0-beta02 содержит эти коммиты .

Исправления ошибок

  • Rethrow caught exception in pausable composition .( 384486d )

Версия 1.8.0-бета01

29 января 2025 г.

androidx.compose.runtime:runtime-*:1.8.0-beta01 is released. Версия 1.8.0-beta01 содержит эти коммиты .

Изменения API

  • Fixes an issue where raising a throwable during composition that does not extend from Exception may lead to a 'Pending composition has not been applied' error. ( I356be , b/382094412 )

Версия 1.8.0-альфа08

15 января 2025 г.

androidx.compose.runtime:runtime-*:1.8.0-alpha08 is released. Версия 1.8.0-alpha08 содержит эти коммиты .

Версия 1.8.0-альфа07

11 декабря 2024 г.

androidx.compose.runtime:runtime-*:1.8.0-alpha07 is released. Версия 1.8.0-alpha07 содержит эти коммиты .

Изменения API

  • Added tooling API that helps the layout inspector to correlate subcompositions to the parent composition in cases where a node is not used to bridge the compositions together. ( I4ce3d )
  • Made the arithmetic and special constants for SnapshotId internal instead of public. Arithmetic can be performed on a SnasphotId , if necessary, by converting it to a Int or Long by using toInt() or toLong() respectively. ( Ic3a57 )

Внешний вклад

  • Optimize storage for movableContentOf parameters. ( ed87177 )

Версия 1.8.0-альфа06

13 ноября 2024 г.

androidx.compose.runtime:runtime-*:1.8.0-alpha06 is released. Версия 1.8.0-alpha06 содержит эти коммиты .

Изменения API

  • Changes to the PausableComposition API. These breaking changes with respect to previous releases of 1.8.0-alpha (since 1.8.0-alpha02) but, as these are new APIs in 1.8.0, backwards compatibility is not maintained as the APIs are still in alpha. ( I39819 )
  • Adds tooling APIs to observe the creation of new compositions within a Recomposer ( Iaeb7e )
  • Added snapshotId , of type Long , to Snapshot and deprecated id . The ID of a snapshot changed from a Int to a Long to avoid the snapshot ID from overflowing on systems with very high frame rates and long running animations. The type was made expect/actual to allow this type to be Int , or other type, on platforms that don't have a native Long type. Platforms that do not have a native Long , such as JavaScript, should avoid high frame rates (over 1000 FPS) which would cause an overflow for Int approximate every 24 days. ( I38ac3 , b/374821679 )

Исправления ошибок

Версия 1.8.0-альфа05

30 октября 2024 г.

androidx.compose.runtime:runtime-*:1.8.0-alpha05 is released. Версия 1.8.0-alpha05 содержит эти коммиты .

Исправления ошибок

  • Fix stack overflow adding Int.MAX_VALUE to SnapshotIdSet . ( b/370536104 , Ic4179f6 )
  • Runtime micro-optimizations ( I50c60 )
  • Allow R8 to remove debugging runtimeCheck calls ( I8c44 )
  • Make compoundKeyOf iterative instead of recursive ( I5817f )

Внешний вклад

  • Implement stacks with collection lists ( I7d47c )

Версия 1.8.0-альфа04

16 октября 2024 г.

androidx.compose.runtime:runtime-*:1.8.0-alpha04 is released. Версия 1.8.0-alpha04 содержит эти коммиты .

Performance Improvements

  • Provide snapshot id for state records in constructor ( 85c00f )
  • Refactor SnapshotState*** to avoid class verification errors ( 6ee4a6 )
  • Fix R8 rules to prevent throw inlining ( 5beb92 )
  • Micro-optimize Operations ( d73c5c )
  • Optimize SynchronizedObject allocations on JVM ( 2b043f )

Версия 1.8.0-альфа03

2 октября 2024 г.

androidx.compose.runtime:runtime-*:1.8.0-alpha03 is released. Версия 1.8.0-alpha03 содержит эти коммиты .

Performance Improvements

  • Lazily create child context for rememberCoroutineScope ( f61464 )
    • rememberCoroutineScope is typically used to launch coroutines in response to events that happen post-composition. In some scenarios these events may never occur, leading to added costs of Job creation and cancellation without any benefit.
    • Make the scope returned by rememberCoroutineScope create its coroutineContext lazily when accessed, avoiding job creation and cancellation entirely if the scope is never used.

Версия 1.8.0-альфа02

18 сентября 2024 г.

androidx.compose.runtime:runtime-*:1.8.0-alpha02 is released. Версия 1.8.0-alpha02 содержит эти коммиты .

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

  • Added PausableComposition which allows creating a subcomposition that can be paused during composition and and applied asynchronously to the composition. Compiler support is required for pausing which is currently in development. ( I3394b )

Версия 1.8.0-альфа01

4 сентября 2024 г.

androidx.compose.runtime:runtime-*:1.8.0-alpha01 is released. Версия 1.8.0-alpha01 содержит эти коммиты .

Версия 1.7

Версия 1.7.8

12 февраля 2025 г.

androidx.compose.runtime:runtime-*:1.7.8 is released. Версия 1.7.8 содержит эти коммиты .

Версия 1.7.7

29 января 2025 г.

androidx.compose.runtime:runtime-*:1.7.7 is released. Никаких изменений с 1.7.6.

androidx.compose.runtime:runtime-*:1.7.6 is released. Версия 1.7.6 содержит эти коммиты .

Версия 1.7.5

30 октября 2024 г.

androidx.compose.runtime:runtime-*:1.7.5 is released. Версия 1.7.5 содержит эти коммиты .

Версия 1.7.4

16 октября 2024 г.

androidx.compose.runtime:runtime-*:1.7.4 is released. Версия 1.7.4 содержит эти коммиты .

Версия 1.7.3

2 октября 2024 г.

androidx.compose.runtime:runtime-*:1.7.3 is released. Версия 1.7.3 содержит эти коммиты .

Версия 1.7.2

18 сентября 2024 г.

androidx.compose.runtime:runtime-*:1.7.2 is released. Версия 1.7.2 содержит эти коммиты .

Версия 1.7.1

10 сентября 2024 г.

  • Никаких изменений в артефактах Android. Артефакты -desktop были удалены и добавлены артефакты -jvmStubs и -linuxx64Stubs . Ни одна из этих целей не предназначена для использования, они являются заполнителями, помогающими Jetbrains Compose.

Версия 1.7.0

4 сентября 2024 г.

androidx.compose.runtime:runtime-*:1.7.0 is released. Version 1.7.0 contains these commits .

Важные изменения с версии 1.6.0

  • Added the ability to provide a composition local that is computed based on the values of other composition locals either by default, using compositionLocalWithComputedDefault() or by supplying a lambda to use to compute the value by using providesComputed instead of provides .
  • The value of a composition local can be obtained by using the currentValue property of the composition local accessible from within the lambda computing the value. This is used instead of current which is only accessible in @Composable functions. ( Iadbc0 )
  • Newly created state objects are immediately accessible from other snapshots, including the global snapshot, with their initial state. Any subsequent modifications are not visible until the snapshot in which the object was created is applied.
  • The initial state of mutableStateOf() , as well as their primitive versions, is the value passed in as a parameter to mutableStateOf() . The initial state of mutableStateListOf() and mutableStateMapOf() is empty.
  • Added Snapshot.isInSnapshot and Snapshot.PreexistingSnapshotId that are used to enable a state object to support being immediately accessible from the global snapshot upon its creation.
  • Custom state objects can support being immediately accessible by following the pattern of changes made to the built-in snapshot objects. ( I84a17 )
  • Enable nonSkippingGroupOptimization for compose libraries. This causes the generated code for all non-restartable composable functions in androidx to be more efficient. In the future we plan to enable this by default. I( acbc08 )
  • Invalidate composable lambdas in subcompositions on the same frame. ( 98301c )
  • Call onRelease callback in the same order as onForgotten . ( 2cd790 )
  • Enable strong skipping mode ( ed1766 )
  • Make currentCompoundHashKey unique in more cases ( d4a872 )

Версия 1.7.0-rc01

21 августа 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-rc01 is released. Версия 1.7.0-rc01 содержит эти коммиты .

Версия 1.7.0-beta07

7 августа 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-beta07 is released. Версия 1.7.0-beta07 содержит эти коммиты .

Версия 1.7.0-beta06

24 июля 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-beta06 is released. Версия 1.7.0-beta06 содержит эти коммиты .

Версия 1.7.0-бета05

10 июля 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-beta05 is released. Версия 1.7.0-beta05 содержит эти коммиты .

Версия 1.7.0-beta04

26 июня 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-beta04 is released. Версия 1.7.0-beta04 содержит эти коммиты .

Версия 1.7.0-бета03

12 июня 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-beta03 is released. Версия 1.7.0-beta03 содержит эти коммиты .

Версия 1.7.0-бета02

29 мая 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-beta02 is released. Версия 1.7.0-beta02 содержит эти коммиты .

Версия 1.7.0-бета01

14 мая 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-beta01 is released. Версия 1.7.0-beta01 содержит эти коммиты .

Версия 1.7.0-альфа08

1 мая 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-alpha08 is released. Версия 1.7.0-alpha08 содержит эти коммиты .

Версия 1.7.0-альфа07

17 апреля 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-alpha07 is released. Версия 1.7.0-alpha07 содержит эти коммиты .

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

  • Added the ability to provide a composition local that is computed based on the values of other composition locals either by default, using compositionLocalWithComputedDefault() or by supplying a lambda to use to compute the value by using providesComputed instead of provides .
  • The value of a composition local can be obtained by using the currentValue property of the composition local accessible from within the lambda computing the value. This is used instead of current which is only accessible in @Composable functions. ( Iadbc0 )

Изменения API

  • Newly created state objects are immediately accessible from other snapshots, including the global snapshot, with their initial state. Any subsequent modifications are not visible until the snapshot in which the object was created is applied.
  • The initial state of mutableStateOf() , as well as their primitive versions, is the value passed in as a parameter to mutableStateOf() . The initial state of mutableStateListOf() and mutableStateMapOf() is empty.
  • Added Snapshot.isInSnapshot and Snapshot.PreexistingSnapshotId that are used to enable a state object to support being immediately accessible from the global snapshot upon its creation.
  • Custom state objects can support being immediately accessible by following the pattern of changes made to the built-in snapshot objects. ( I84a17 )

Исправления ошибок

  • Fixed merging of readObserver in nested snapshots. This caused nested derived states to under-invalidate when used inside a snapshotFlow . ( Idf138 )

Версия 1.7.0-альфа06

3 апреля 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-alpha06 is released. Версия 1.7.0-alpha06 содержит эти коммиты .

Исправления ошибок

  • Fix provide single values handling providesDefault ( 538f45 )
  • Avoid a deadlock in the Recomposer accessing the frame clock ( 07e5c6 )

Версия 1.7.0-альфа05

20 марта 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-alpha05 is released. Версия 1.7.0-alpha05 содержит эти коммиты .

Исправления ошибок

  • Clear late changes on deactivated composition ( 5950bc )

Версия 1.7.0-альфа04

6 марта 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-alpha04 is released. Версия 1.7.0-alpha04 содержит эти коммиты .

Performance Improvements

  • Call Snapshot.current once per derived state evaluation ( ee7daf )
  • Read currentRecord once per observation in composition ( b882b2 )
  • Remove accidental iterator allocation in snapshotFlow ( 231e56 )
  • Enable nonSkippingGroupOptimization for compose libraries. This causes the generated code for all non-restartable composable functions in androidx to be more efficient. In the future we plan to enable this by default. I( acbc08 )

Версия 1.7.0-альфа03

21 февраля 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-alpha03 is released. Версия 1.7.0-alpha03 содержит эти коммиты.

Изменения API

  • Introduce a replace groups to improve detecting changes ( 0941b5 )

Performance Improvements

  • Improve memory allocation when detecting changes ( 53e7fd )
  • Fix a memory leak in the composer ( 0e097d )
  • Use ScopeMap to pass invalidations when recomposing ( e19a7e )
  • Optimize invalidations map to only keep derived states ( f11c44 )
  • Replace IdentityArraySet usages with ScatterSet ( db572e )
  • Optimize removeScope in ScopeMap ( bb0530 )

Версия 1.7.0-альфа02

7 февраля 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-alpha02 is released. Версия 1.7.0-alpha02 содержит эти коммиты.

Исправления ошибок

  • Invalidate composable lambdas in subcompositions on the same frame. ( 98301c )
  • Call onRelease callback in the same order as onForgotten . ( 2cd790 )
  • Filter changed states that are not observed in snapshotFlow . ( 796b80 )

Performance Improvements

  • Modify snapshot observer in place when it is already transparent. ( f60f30 )
  • Optimize SnapshotIdSet.lowest() . ( 7ae149 )
  • Use an allocation-free fold() in SnapshotIdSet . ( 532b7d )
  • Remove iterator allocation ( 83f96b )

Версия 1.7.0-альфа01

24 января 2024 г.

androidx.compose.runtime:runtime-*:1.7.0-alpha01 is released. Версия 1.7.0-alpha01 содержит эти коммиты.

Performance Optimizations

  • Add the ability to create slots after a child group has been added ( b5960c )
  • Optimize recording modifications of snapshot states ( 28c3fe )
  • Enable strong skipping mode ( ed1766 )

Исправления ошибок

  • Account for default parameter meta in intrinsic remember ( 096665 )
  • Make currentCompoundHashKey unique in more cases ( d4a872 )
  • Realize groups when exiting inline function call ( 2a90fc )

Версия 1.6

Версия 1.6.8

12 июня 2024 г.

androidx.compose.runtime:runtime-*:1.6.8 is released. Версия 1.6.8 содержит эти коммиты .

Версия 1.6.7

1 мая 2024 г.

androidx.compose.runtime:runtime-*:1.6.7 is released. Версия 1.6.7 содержит эти коммиты .

Версия 1.6.6

17 апреля 2024 г.

androidx.compose.runtime:runtime-*:1.6.6 is released. No changes since the last release.

Версия 1.6.5

3 апреля 2024 г.

androidx.compose.runtime:runtime-*:1.6.5 is released. Версия 1.6.5 содержит эти коммиты .

Версия 1.6.4

20 марта 2024 г.

androidx.compose.runtime:runtime-*:1.6.4 is released. Версия 1.6.4 содержит эти коммиты .

Версия 1.6.3

6 марта 2024 г.

androidx.compose.runtime:runtime-*:1.6.3 is released. Версия 1.6.3 содержит эти коммиты .

Версия 1.6.2

21 февраля 2024 г.

androidx.compose.runtime:runtime-*:1.6.2 is released. Версия 1.6.2 содержит эти коммиты.

Версия 1.6.1

7 февраля 2024 г.

androidx.compose.runtime:runtime-*:1.6.1 is released. Версия 1.6.1 содержит эти коммиты.

Исправления ошибок

  • Call onRelease callback in the same order as onForgotten . ( 2cd790 )
  • Filter changed states that are not observed in snapshotFlow . ( 796b80 )

Версия 1.6.0

24 января 2024 г.

androidx.compose.runtime:runtime-*:1.6.0 is released. Версия 1.6.0 содержит эти коммиты.

Important changes since 1.5.0

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

  • Re-throw exceptions that are swallowed during recomposition loop ( 4dff9a )

Performance Optimizations

  • Optimize recording modifications of snapshot states ( 28c3fe )
  • Optimize rememberSaveable ( f01d79 )
  • Defer re-reading derived states until changes are recorded ( f38099 )
  • Improve providing composition local values ( a337ea )

Исправления ошибок

  • Fix slot table memory leak ( 73fcfe )
  • Skip recomposition of subcompositions that will be removed. ( Ieeb99 , b/254645321 )
  • Only trigger RememberObserver lifecycles when it is stored in remember calculation. ( f6b4dc )
  • Restrict $dirty capture to inline lambdas. ( acfca0 )
  • Fix moveable content sometimes receiving the wrong composition locals. ( 035cd6 )

Версия 1.6.0-rc01

10 января 2024 г.

androidx.compose.runtime:runtime-*:1.6.0-rc01 is released. Версия 1.6.0-rc01 содержит эти коммиты.

Версия 1.6.0-бета03

13 декабря 2023 г.

androidx.compose.runtime:runtime-*:1.6.0-beta03 is released. Версия 1.6.0-beta03 содержит эти коммиты.

Версия 1.6.0-бета02

29 ноября 2023 г.

androidx.compose.runtime:runtime-*:1.6.0-beta02 is released. Версия 1.6.0-beta02 содержит эти коммиты.

Версия 1.6.0-бета01

15 ноября 2023 г.

androidx.compose.runtime:runtime-*:1.6.0-beta01 is released. Версия 1.6.0-beta01 содержит эти коммиты.

Изменения API

  • Propagate Certain stability values in annotation. (274a4c)

Исправления ошибок

  • Use referential policy for composition local scope state in context. (83361c)
  • Restrict $dirty capture to inline lambdas. (acfca0)
  • Fix moveable content sometimes receiving the wrong composition locals. (035cd6)
  • Use faster non-allocating hashmaps in RecomposeScopeImpl . (d79494)
  • Use ObjectIntMap in DerivedState . (21862e)
  • Use IntRef for int SnapshotThreadLocal in DerivedState . (04eaf4)

Версия 1.6.0-альфа08

18 октября 2023 г.

androidx.compose.runtime:runtime-*:1.6.0-alpha08 is released. Версия 1.6.0-alpha08 содержит эти коммиты.

Исправления ошибок

  • Only trigger RememberObserver lifecycles when it is stored in remember calculation. ( f6b4dc )
  • Improve allocations in invalidations list sorting. ( 954d63 )
  • Use new non-allocating maps in SnapshotStateObserver . ( 4303ce )
  • Clear invalidations when composition is deactivated. ( e001be )

Версия 1.6.0-альфа07

4 октября 2023 г.

androidx.compose.runtime:runtime-*:1.6.0-alpha07 is released. Версия 1.6.0-alpha07 содержит эти коммиты.

Изменения API

  • SnapshotStateList is now marked as RandomAccess to enable the direct indexing version of list helpers to be used. ( I5210c , b/219554654 )

Версия 1.6.0-альфа06

20 сентября 2023 г.

androidx.compose.runtime:runtime-*:1.6.0-alpha06 is released. Версия 1.6.0-alpha06 содержит эти коммиты.

Версия 1.6.0-альфа05

6 сентября 2023 г.

androidx.compose.runtime:runtime-*:1.6.0-alpha05 is released. Версия 1.6.0-alpha05 содержит эти коммиты.

Версия 1.6.0-альфа04

23 августа 2023 г.

androidx.compose.runtime:runtime-*:1.6.0-alpha04 is released. Версия 1.6.0-alpha04 содержит эти коммиты.

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

  • Re-throw exceptions that are swallowed during recomposition loop ( 4dff9a )

Изменения API

  • Added a method to deactivate ReusableComposition , removing observations but keeping nodes in place. The deactivated composition can be activated again by calling setContent . ( Ib7f31 )
  • Add ReusableComposition interface for managing lifecycle and reuse of subcompositions. ( I812d1 , b/252846775 )

Версия 1.6.0-альфа03

9 августа 2023 г.

androidx.compose.runtime:runtime-*:1.6.0-alpha03 is released. Версия 1.6.0-alpha03 содержит эти коммиты.

Исправления ошибок

  • Fix new CompositionLocalProvider optimization ( 3118e88 )
  • Correct how movable content nodes are disassembled. ( 5e3d59b )

Версия 1.6.0-альфа02

26 июля 2023 г.

androidx.compose.runtime:runtime-*:1.6.0-alpha02 is released. Версия 1.6.0-alpha02 содержит эти коммиты.

New Features & Performance Enhancements

  • Optimize rememberSaveable ( f01d79 )
  • Defer re-reading derived states until changes are recorded ( f38099 )
  • Improve providing composition local values ( a337ea )
  • SideEffect is marked as @ExplicitGroupsComposable to avoid generating a group. ( I74815 )
  • Avoid comparing composition local maps on reuse ( 782071 )

Изменения API

  • Added a special case overload for CompositionLocalProviders that avoids overhead used to make providing multiple values faster but is overhead when providing a single value. ( I6d640 , b/288169379 )

Исправления ошибок

  • Fix slot table memory leak ( 73fcfe )
  • Fix how we restore rememberSaveable when stateSaver returns null ( 90748c )

Версия 1.6.0-альфа01

21 июня 2023 г.

androidx.compose.runtime:runtime-*:1.6.0-alpha01 is released. Версия 1.6.0-alpha01 содержит эти коммиты.

Исправления ошибок

  • Skip recomposition of subcompositions that will be removed. ( Ieeb99 , b/254645321 )
  • Reduced allocations when applying snapshots. ( I65c09 )
  • Avoid calculating readableHash in DerivedState if snapshot wasn't modified ( 68c565 )

Версия 1.5

Версия 1.5.4

18 октября 2023 г.

androidx.compose.runtime:runtime-*:1.5.4 is released. Версия 1.5.4 содержит эти коммиты.

Версия 1.5.3

4 октября 2023 г.

androidx.compose.runtime:runtime-*:1.5.3 is released. Version 1.5.3 contains these commits.

Версия 1.5.2

27 сентября 2023 г.

androidx.compose.runtime:runtime-*:1.5.2 is released. Версия 1.5.2 содержит эти коммиты.

Версия 1.5.1

6 сентября 2023 г.

androidx.compose.runtime:runtime-*:1.5.1 is released. Версия 1.5.1 содержит эти коммиты.

Версия 1.5.0

9 августа 2023 г.

androidx.compose.runtime:runtime-*:1.5.0 is released. Версия 1.5.0 содержит эти коммиты.

Изменения API

  • Removed allocations in recomposition, color animations, and AndroidComposeView . ( Ib2bfa )
  • Added a @StateFactoryMarker annotation, to mark functions that create states and must be wrapped in a remember call. ( I64550 )
  • Add primitive versions of State and MutableState ( fb3d89 )
  • Added Snapshot.isApplyObserverNotificationPending ( I672a5 )
  • Added primitive versions of the State API, allowing Int, Long, Float, and Double values to be tracked in State objects without incurring penalties for autoboxing. Use the new factory methods mutableIntState(Int) , mutableFloatStateOf(Float) , etc in order to use these. ( I48e43 )

Исправления ошибок

  • Skip recomposition of subcompositions that will be removed. ( Ieeb99 , b/254645321 )
  • Don't retain snapshot reference in ComposerImpl ( 0206f7 )
  • Don't apply composition twice ( f5791b )
  • Ensure invalidation for non-initialized derived state values ( aa2a92 )
  • Call onEndChanges during composition dispose. ( 62cc8c )
  • Fix moving content into a sub-composition ( 4beb41 )
  • Fix potential deadlocks ( c1a425 and 8edce0 )
  • The recomposer created for an Android window will now only block calls to withFrameNanos instead of all composition when it receives an ON_STOP notification. This means windows associated with stopped activites will continue to recompose for data changes but the animations, or any other caller of withFrameNanos , will block. ( Id9e7f , b/240975572 )
  • Execute deactivation callbacks for LayoutNode before disposing effects 3784073
  • Fix changed flags for restarted lambdas ea81df9
  • Fix live edit regression for Composable with nodes 73fd4d8
  • ON_STOP should pause the frame clock broadcasts instead of composition ae276f1
  • Invalidate SnapshotStateObserver scopes for unchanged derived states 84d9b1c
  • Fix potential dead-lock when disposing compositions 28761fc
  • Fix moving content into a sub-composition 92d4156
  • Fix changed flags for restarted lambdas ( 8a03e9 )
  • Execute deactivation callbacks for LayoutNode before disposing effects ( 8b0fa4 )
  • Fix endToMarker() when ending node groups. ( d71d980 )
  • Use current SlotWriter group for check on deactivation ( a0b518b )
  • Remove the fill in SlotTable.moveSlotGapTo() and move it to close ( 81f9935 )
  • Fix missing invalidations while movable content is moving ( 1d7c024 )
  • Fix immediate invalidations for moved movable content ( 8676618 )

Performance Improvements

  • Avoid calculating readableHash in DerivedState if snapshot wasn't modified. ( 307102 )
  • Reduced allocations ( I65c09 , d7ea77 , 727974 , and 445808 )
  • Quick cancellation of compose CoroutineScopes ( a55362 and bd382f )
  • Overwrite records of state objects with inaccessible state records ( c986960 )
  • Use composer of the correct scope when realizing groups ( 9a5e5b6 )
  • Use IdentityArraySet to store snapshot invalidations ( 7f60cca )
  • Reduce allocations for snapshot observations ( 5bc535f )

Версия 1.5.0-rc01

26 июля 2023 г.

androidx.compose.runtime:runtime-*:1.5.0-rc01 is released. Версия 1.5.0-rc01 содержит эти коммиты.

Исправления ошибок

  • Defer re-reading derived states until changes are recorded ( f38099 )

  • Доступна дополнительная проверка, рекомендующая перенести вызовы mutableStateOf() в соответствующие им специализированные типы для примитивов. Его идентификатор lint — AutoboxingStateCreation . Ранее эта проверка была включена по умолчанию для всех проектов. Чтобы увидеть это предупреждение в редакторе Android Studio и в результатах lint вашего проекта, измените его серьезность с информационного на предупреждение (или выше), объявив warning "AutoboxingStateCreation" внутри конфигурации вашего модуля build.gradle или build.gradle.kts, как показано ( I34f7e ):

        android {
            lint {
                warning "AutoboxingStateCreation"
            }
            ...
        }
    

Версия 1.5.0-бета03

28 июня 2023 г.

androidx.compose.runtime:runtime-*:1.5.0-beta03 is released. Версия 1.5.0-beta03 содержит эти коммиты.

Исправления ошибок

  • Skip recomposition of subcompositions that will be removed. ( Ieeb99 , b/254645321 )

Версия 1.5.0-бета02

7 июня 2023 г.

androidx.compose.runtime:runtime-*:1.5.0-beta02 is released. Версия 1.5.0-beta02 содержит эти коммиты.

Performance Improvements

  • Avoid calculating readableHash in DerivedState if snapshot wasn't modified. ( 307102 )

Версия 1.5.0-бета01

24 мая 2023 г.

androidx.compose.runtime:runtime-*:1.5.0-beta01 is released. Версия 1.5.0-beta01 содержит эти коммиты.

Изменения API

  • Удалены выделения при рекомпозиции, цветовой анимации и AndroidComposeView ( Ib2bfa ).
  • Added a @StateFactoryMarker annotation, to mark functions that create states and must be wrapped in a remember call. ( I64550 )
  • Add primitive versions of State and MutableState ( fb3d89 )
  • Added Snapshot.isApplyObserverNotificationPending ( I672a5 )

Исправления ошибок

  • Reduced allocations ( I65c09 , d7ea77 , 727974 , and 445808 )
  • Don't retain snapshot reference in ComposerImpl ( 0206f7 )
  • Quick cancellation of compose CoroutineScopes ( a55362 and bd382f )
  • Don't apply composition twice ( f5791b )
  • Ensure invalidation for non-initialized derived state values ( aa2a92 )
  • Call onEndChanges during composition dispose. ( 62cc8c )
  • Fix moving content into a sub-composition ( 4beb41 )
  • Fix potential deadlocks ( c1a425
  • ON_STOP should pause the frame clock broadcasts instead of composition ( f4a2d1 )
  • Fix changed flags for restarted lambdas ( 8a03e9 )
  • Execute deactivation callbacks for LayoutNode before disposing effects ( 8b0fa4 )

Внешний вклад

  • Added Snapshot.isApplyObserverNotificationPending ( I672a5 )

Версия 1.5.0-альфа04

10 мая 2023 г.

androidx.compose.runtime:runtime-*:1.5.0-alpha04 is released. Версия 1.5.0-alpha04 содержит эти коммиты.

Изменения API

  • Added primitive versions of the State API, allowing Int, Long, Float, and Double values to be tracked in State objects without incurring penalties for autoboxing. Use the new factory methods mutableIntState(Int) , mutableFloatStateOf(Float) , etc in order to use these. ( I48e43 )

Исправления ошибок

  • Call onEndChanges during composition dispose. Focus nodes removed during Composition.dispose are subscribing to onEndChanges to reset focus.( 03d4a47 )

  • Ensure invalidation for non-initialized derived state values. Each derived state is associated with a list of its dependencies in SnapshotStateObserver , used to invalidate scopes associated with derived state whenever dependency changes. The dependency change is registered on snapshot advance, which can happen after derived state read (due to the call to Snapshot.notifyObjectsInitialized() ).

    Previous derived state observation logic in SnapshotStateObserver was cleaning up old dependencies, then reading new value. This resulted in a race condition with invalidation happening in a cleaned up state, where dependency invalidation wasn't registered.

    This change reorders derived state read and dependency cleanup, ensuring that invalidation always happens in a valid state. ( c472be6 )

Версия 1.5.0-альфа03

19 апреля 2023 г.

androidx.compose.runtime:runtime-*:1.5.0-alpha03 is released. Версия 1.5.0-alpha03 содержит эти коммиты.

Изменения API

  • The recomposer created for an Android window will now only block calls to withFrameNanos instead of all composition when it receives an ON_STOP notification. This means windows associated with stopped activites will continue to recompose for data changes but the animations, or any other caller of withFrameNanos , will block. ( Id9e7f , b/240975572 )

Исправления ошибок

  • Fix potential deadlock in snapshot list and map 5c1a425
  • Execute deactivation callbacks for LayoutNode before disposing effects 3784073
  • Fix changed flags for restarted lambdas ea81df9
  • Fix live edit regression for Composable with nodes 73fd4d8
  • ON_STOP should pause the frame clock broadcasts instead of composition ae276f1
  • Invalidate SnapshotStateObserver scopes for unchanged derived states 84d9b1c
  • Fix potential dead-lock when disposing compositions 28761fc
  • Fix moving content into a sub-composition 92d4156

Версия 1.5.0-альфа02

5 апреля 2023 г.

androidx.compose.runtime:runtime-*:1.5.0-alpha02 is released. Версия 1.5.0-alpha02 содержит эти коммиты.

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

  • Kotlin's getValue operator can now be composable ( f174f6e )

Bug Fixes, Performance Improvements

  • Overwrite records of state objects with inaccessible state records ( c986960 )
  • Use composer of the correct scope when realizing groups ( 9a5e5b6 )
  • Fix endToMarker() when ending node groups. ( d71d980 )
  • Use current SlotWriter group for check on deactivation ( a0b518b )
  • Use IdentityArraySet to store snapshot invalidations ( 7f60cca )
  • Remove the fill in SlotTable.moveSlotGapTo() and move it to close ( 81f9935 )
  • Fix missing invalidations while movable content is moving ( 1d7c024 )
  • Fix immediate invalidations for moved movable content ( 8676618 )
  • Reduce allocations for snapshot observations ( 5bc535f )

Версия 1.5.0-альфа01

22 марта 2023 г.

androidx.compose.runtime:runtime-*:1.5.0-alpha01 is released. Версия 1.5.0-alpha01 содержит эти коммиты.

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

  • Adds Modifier.Node#coroutineScope to allow Modifier.Nodes to launch coroutines ( I76ef9 )
  • Allow Modifier.Nodes to read CompositionLocals by implementing the CompositionLocalConsumerModifierNode interface. ( Ib44df )

Версия 1.4

Версия 1.4.3

3 мая 2023 г.

androidx.compose.runtime:runtime-*:1.4.3 is released with no changes.

Версия 1.4.2

19 апреля 2023 г.

androidx.compose.runtime:runtime-*:1.4.2 is released. Версия 1.4.2 содержит эти коммиты.

Исправления ошибок

  • Fix potential deadlock in snapshot list and map 2eb6570

  • Adding content to a SnapshotStateList or SnapshotStateMap can encounter a deadlock if the modification is concurrent with a direct write to the state record. This was made significantly more likely to be encountered with the changes introduced by 93fcae828b that uses direct writes to release unused records.

  • The locks are now ordered in that a snapshot lock is never attempted to be taken when a map or list lock is held.

Версия 1.4.1

5 апреля 2023 г.

androidx.compose.runtime:runtime-*:1.4.1 is released. Версия 1.4.1 содержит эти коммиты.

Исправления ошибок

  • Fix endToMarker() when ending node groups. d71d980

Версия 1.4.0

22 марта 2023 г.

androidx.compose.runtime:runtime-*:1.4.0 is released. Версия 1.4.0 содержит эти коммиты.

Важные изменения с версии 1.3.0

  • Use initialized value from LiveData for first composition 3680e25
  • Add ComposeNodeLifecycleCallback to observe lifecycle of compose nodes. 8b6a258
  • Add parameterTypes property to ComposableMethod 7b6c7ad

Bug Fixes & Performance Improvements

  • Clear both scope indexes in SnapshotStateObserver 29f4a3e
  • Add groups needed in the body of unskippable lambdas 7d06752
  • Improve memory reference characteristics of Snapshot state 93fcae8
  • Remove boxing in composition local lookups 0875717
  • Use correct key for non-reusable nodes groups 6388d8d
  • Protect SnapshotStateObserver from recursive and concurrent applies 98cb6ba
  • Added a check-index-bounds check in the IdentityArraySet "get" method 35a77d3
  • Update compose module to use ViewTreeLifecycleOwner extensions 21c2122
  • Send apply notifications after Recomposer finishes frame. 98f2641
  • Fix index out of bounds crash when cancelling the Recomposer 8f8656f
  • Always force recompose if parent providers of Composition have changed 9526fcc
  • Recomposer tolerance for cancelled Jobs a55f7ed
  • Improve handling invalidations for large number of composers 9b7ed67
  • Fix generating closing groups for non-local returns b6f590c

Версия 1.4.0-rc01

8 марта 2023 г.

androidx.compose.runtime:runtime-*:1.4.0-rc01 is released. Версия 1.4.0-rc01 содержит эти коммиты.

Исправления ошибок

Версия 1.4.0-бета02

22 февраля 2023 г.

androidx.compose.runtime:runtime:1.4.0-beta02 and androidx.compose.runtime:runtime-saveable:1.4.0-beta02 are released. Версия 1.4.0-beta02 содержит эти коммиты.

Версия 1.4.0-бета01

8 февраля 2023 г.

androidx.compose.runtime:runtime-*:1.4.0-beta01 is released. Версия 1.4.0-beta01 содержит эти коммиты.

Изменения API

  • ComposeNodeLifecycleCallback was added which allows to observe lifecycle of Compose nodes ( I3731b )
  • Added @TestOnly to Composer.disableSourceInformation() as this function is only safe to call in a test. ( I896c8 )

Исправления ошибок

  • Remove boxing in composition local lookups ( 62f66a )
  • Improve memory reference characteristics of Snapshot state ( dfb451 )

Версия 1.4.0-альфа05

25 января 2023 г.

androidx.compose.runtime:runtime:1.4.0-alpha05 and androidx.compose.runtime:runtime-saveable:1.4.0-alpha05 are released. Версия 1.4.0-alpha05 содержит эти коммиты.

Изменения API

  • More type/nullability of inline/deprecated-hidden functions ( I24f91 )

Версия 1.4.0-альфа04

11 января 2023 г.

androidx.compose.runtime:runtime-*:1.4.0-alpha04 is released. Версия 1.4.0-alpha04 содержит эти коммиты.

Изменения API

  • TestMonotonicFrameClock now uses correct experimental annotation. ( I95c9e )

Исправления ошибок

  • Protect SnapshotStateObserver from recursive and concurrent applies ( d902fb )

Версия 1.4.0-альфа03

7 декабря 2022 г.

androidx.compose.runtime:runtime-*:1.4.0-alpha03 is released. Версия 1.4.0-alpha03 содержит эти коммиты.

Изменения API

  • adding a new public method to ComposableMethod class analogous to java.lang.reflect.Method#getParameterTypes() ( Iab0c3 )

Исправления ошибок

  • Snapshot apply notifications are now sent after the Recomposer finishes applying changes. ( Iad6c0 , b/222093277 )

Версия 1.4.0-альфа02

9 ноября 2022 г.

androidx.compose.runtime:runtime-*:1.4.0-alpha02 is released. Версия 1.4.0-alpha02 содержит эти коммиты.

Версия 1.4.0-альфа01

24 октября 2022 г.

androidx.compose.runtime:runtime-*:1.4.0-alpha01 is released. Версия 1.4.0-alpha01 содержит эти коммиты.

Изменения API

  • SnapshotStateList and SnapshotStateMap now have explicit implementaions of toList() and toMap() , respectfully. These methods return their current content without peforming a copy as they return the internal immutable data used to store their content. This value can be used, for example, to produce a flow of values using snapshotFlow without requiring copying of the data. ( Ica2bd )

Версия 1.3

Версия 1.3.3

11 января 2023 г.

androidx.compose.runtime:runtime-*:1.3.3 is released. Версия 1.3.3 содержит эти коммиты.

  • No changes since 1.3.2

Версия 1.3.2

7 декабря 2022 г.

androidx.compose.runtime:runtime-*:1.3.2 is released. Версия 1.3.2 содержит эти коммиты.

Исправления ошибок

  • Обновлено для поддержки androidx.compose.ui 1.3.2.

Версия 1.3.1

9 ноября 2022 г.

androidx.compose.runtime:runtime-*:1.3.1 is released. Версия 1.3.1 содержит эти коммиты.

Версия 1.3.0

24 октября 2022 г.

androidx.compose.runtime:runtime-*:1.3.0 is released. Версия 1.3.0 содержит эти коммиты.

Важные изменения с версии 1.2.0

Exception Handling / Live Edit Support

Composition Tracing

Composable Reflection APIs

Runtime Fixes

Snapshot System

Версия 1.3.0-rc01

5 октября 2022 г.

androidx.compose.runtime:runtime-*:1.3.0-rc01 is released. Версия 1.3.0-rc01 содержит эти коммиты.

Исправления ошибок

  • Fixed ArrayIndexOutOfBoundsException coming from the slot table ( b/249076084 )

Версия 1.3.0-бета03

21 сентября 2022 г.

androidx.compose.runtime:runtime-*:1.3.0-beta03 is released. Версия 1.3.0-beta03 содержит эти коммиты.

Behavior Breaking Change

  • The parameter to remember and rememberCoroutineScope where changed to be crossinline . This will report an error for early returns instead of allowing an early return which will cause a later internal error to be reported.
  • This change can potentially lead to new compiler errors to be reported requiring non-local returns to be removed from the lambdas passed to these functions. ( Ibea62 )

Версия 1.3.0-beta02

7 сентября 2022 г.

androidx.compose.runtime:runtime-*:1.3.0-beta02 is released. Версия 1.3.0-beta02 содержит эти коммиты.

Исправления ошибок

Версия 1.3.0-бета01

24 августа 2022 г.

androidx.compose.runtime:runtime-*:1.3.0-beta01 is released. Версия 1.3.0-beta01 содержит эти коммиты.

Изменения API

  • A find method was added to CompositionData to allow developer tools using this API to quickly find a sub-group of composition using its identity. ( I5794f )

Версия 1.3.0-альфа03

10 августа 2022 г.

androidx.compose.runtime:runtime-*:1.3.0-alpha03 is released. Версия 1.3.0-alpha03 содержит эти коммиты.

Версия 1.3.0-альфа02

27 июля 2022 г.

androidx.compose.runtime:runtime-*:1.3.0-alpha02 is released. Версия 1.3.0-alpha02 содержит эти коммиты.

Изменения API

  • Re-added ComposerKt.traceEventStart(Int, String) for backwards compatibility ( I6e6de )

Версия 1.3.0-альфа01

29 июня 2022 г.

androidx.compose.runtime:runtime-*:1.3.0-alpha01 is released. Версия 1.3.0-alpha01 содержит эти коммиты.

Изменения API

  • Moving utility functionality to runtime ( I4f729 )

Версия 1.2

Версия 1.2.1

10 августа 2022 г.

androidx.compose.runtime:runtime-*:1.2.1 is released. Версия 1.2.1 содержит эти коммиты.

Исправления ошибок

  • Fixed memory leak: dispose of nested snapshots created from transparent snapshots b/239603305

Версия 1.2.0

27 июля 2022 г.

androidx.compose.runtime:runtime-*:1.2.0 is released. Версия 1.2.0 содержит эти коммиты.

Важные изменения с версии 1.1.0

  • Compose Runtime had a handful of features introduced in 1.2.0, along with many stabilizing bug fixes. The most significant new feature was the introduction of the movableContentOf API , which can be used to enable complex UX such as shared element transitions. The movableContentOf API converts a composable lambda into a lambda that moves it state, and corresponding nodes, to any new location it is called. When the previous call leaves the composition the state is temporarily preserved and if a new call to the lambda enters the composition then the state, and associated Nodes, are moved to the location of the new call. If no new call is added the state is removed permanently and remember observers are notified.

  • If a movableContentOf lambda is called multiple times in the same composition, new state and nodes are created for each call and, as calls leave the composition and new calls enter, the state is moved from the first leaving calls to the entering calls in the order they are called. All state not claimed by new calls is removed permanently.

  • In addition to this and a few other new features, much time was spent stabilizing the runtime and Snapshot state system. Various memory leaks were removed and code paths optimized.

  • A summarized list of the changes can be found below:

New Features in 1.2

Performance in 1.2

Bug Fixes in 1.2

Версия 1.2.0-rc03

29 июня 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-rc03 is released. Версия 1.2.0-rc03 содержит эти коммиты.

Исправления ошибок

  • Derived state observations were previously unconditionally removed from the recompose scope and composition together, which broke other scopes which might be still observing derived state. This change only removes derived state instances if it is no longer observed by other scopes. ( b/236618362 )

Версия 1.2.0-rc02

22 июня 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-rc02 is released. Версия 1.2.0-rc02 содержит эти коммиты.

Версия 1.2.0-rc01

15 июня 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-rc01 is released. Версия 1.2.0-rc01 содержит эти коммиты.

Изменения API

  • Интерфейсы в библиотеках компоновки теперь создаются с использованием методов интерфейса jdk8 по умолчанию ( I5bcf1 ).

Версия 1.2.0-бета03

1 июня 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-beta03 is released. Версия 1.2.0-beta03 содержит эти коммиты.

Версия 1.2.0-бета02

18 мая 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-beta02 is released. Версия 1.2.0-beta02 содержит эти коммиты.

Версия 1.2.0-бета01

11 мая 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-beta01 is released. Версия 1.2.0-beta01 содержит эти коммиты.

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

  • Это первая бета-версия 1.2!

Изменения API

  • Added experimental Snapshot.unsafeEnter/unsafeLeave ( I108f3 )
  • Added experimental Snapshot.asContextElement() API ( Iff072 )
  • The @ComposableTarget annotation and annotations marked by @ComposableTargetMarker can now be used at the file scope using the @file prefix. Using a target annotation at the file scope will cause the compiler to assume all composable functions in the file are intended to be target the associated applier. For example, using @file:UiComposable declares that all @Composable functions target the Compose UI applier. A function that needs to target another applier must explicitly supply the target marker annotation for the desired applier. ( I40804 )

Версия 1.2.0-альфа08

20 апреля 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha08 is released. Версия 1.2.0-alpha08 содержит эти коммиты.

Изменения API

  • Added TracingInProgress to the CompositionTracer interface. ( Ic6f12 )
  • Add recomposeScopeIdentity to Composer ( I0c873 )
  • Restricted tracing APIs (Composer.setTracer) to OptIn(InternalComposeTracingApi) . ( I9187f )
  • Added ResuableContentHost which allows better control over the lifetime of state created for reusable content. For example, if a sub-composition is temporarily not in use then the content can be deactivated causing all the remembered state in the composition to be forgotten triggering, for example, all disposable effects. ( I2c0f2 , b/220322704 )

Версия 1.2.0-альфа07

6 апреля 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha07 is released. Версия 1.2.0-alpha07 содержит эти коммиты.

Изменения API

  • New function Snapshot.withoutReadObservation { ... } was added. It allows users to run the passed lambda without subscribing to the changes of the state values read during this block. You could find it useful in use cases when you want to benefit from the snapshot based thread safe write/reads, but want to be able to read the value without causing unnecessary recomposition or remeasure. ( I9f365 , b/214054486 )

Версия 1.2.0-альфа06

23 марта 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha06 is released. Версия 1.2.0-alpha06 содержит эти коммиты.

Версия 1.2.0-альфа05

9 марта 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha05 is released. Версия 1.2.0-alpha05 содержит эти коммиты.

Внешний вклад

  • Updated to use Kotlinx coroutines 1.6.0 ( I3366d )

Версия 1.2.0-альфа04

23 февраля 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha04 is released. Версия 1.2.0-alpha04 содержит эти коммиты.

Изменения API

  • Added ComposableTarget , ComposableTargetMarker and ComposableOpenTarget that allows compile time reporting of when a composable function is called targeting an applier it was not designed to use.

    In most cases the annotations can be inferred by the compose compiler plugin so using these annotation directly should be rare . The cases that cannot be inferred include creating and using a custom applier, abstract composable functions (such as interface methods), fields or global variables that are composable lambdas (local variables and parameters are inferred), or when using ComposeNode or a related composable functions.

    For custom appliers the composable functions that calls ComposeNode or ReusableComposeNode need to add a CompoableTarget annotation for the function and any composable lambda parameter types. It is recommended, however, to create an annotation that is annotated with ComposableTargetMarker and then the marked annotation be used instead of ComposableTarget directly. A composable annotation marked with ComposableTargetMarker is equivalent to a ComposbleTarget with the fully qualified name of the attribute class as the applier parameter. For an example of using ComposableTargetMarker see anroidx.compose.ui.UiComposable . ( I38f11 )

Версия 1.2.0-альфа03

9 февраля 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha03 is released. Версия 1.2.0-alpha03 содержит эти коммиты.

Изменения API

  • Added movableContentOf which converts a composable lambda into a lambda that moves it state, and corresponding nodes, to any new location it is called. When the previous call leaves the composition the state is temporarily preserved and if a new call to the lambda enters the composition then the state, and associated nodes, are moved to the location of the new call. If no new call is added the state is removed permanently and remember observers are notified.

    If a movableContentOf lambda is called multiple times in the same composition, new state and nodes are created for each call and, as calls leave the composition and new calls enter, the state is moved from the first leaving calls to the entering calls in the order they are called. All state not claimed by new calls is removed permanently. ( Ib4850 )

  • Added a tracing API to composition to enable tools to provide more detailed tracing of composable functions. The compiler now generates calls to the tracing API which include source information. ( Ib0eb5 )

    To remove these calls and the associated source information from a release build, add the following Proguard rule:

      -assumenosideeffects public class androidx.compose.runtime.ComposerKt {
          boolean isTraceInProgress();
          void traceEventStart(int,java.lang.String);
          void traceEventEnd();
      }
    
  • Add InternalComposeScope which gives tools the ability to identify a composable during recompositions. ( I07a3f )

Версия 1.2.0-альфа02

26 января 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha02 is released. Версия 1.2.0-alpha02 содержит эти коммиты.

Версия 1.2.0-альфа01

12 января 2022 г.

androidx.compose.runtime:runtime-*:1.2.0-alpha01 is released. Версия 1.2.0-alpha01 содержит эти коммиты.

Изменения API

  • Added identity field to CompositionData for generating invariant ids in the Layout Inspector. ( Ic116e )

Обновления зависимостей

  • Теперь зависит от Kotlin 1.6.10 .

Версия 1.1

Версия 1.1.1

23 февраля 2022 г.

androidx.compose.runtime:runtime-*:1.1.1 is released. Версия 1.1.1 содержит эти коммиты.

Исправления ошибок

  • Исправьте исключение NullPointerException в androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList ( aosp/1947059 , b/206677462 ).
  • Исправлен сбой, вызванный содержимым буфера обмена при чтении из буфера обмена на Android. ( I06020 , б/197769306 )
  • Исправлено RTL в LazyVerticalGrid ( aosp/1931080 , b/207510535 )

Версия 1.1.0

9 февраля 2022 г.

androidx.compose.runtime:runtime-*:1.1.0 is released. Версия 1.1.0 содержит эти коммиты.

Важные изменения с версии 1.0.0

  • Стабильная поддержка эффекта прокрутки Android 12.
  • Улучшения в сенсорном изменении целевого размера.
  • Обратите внимание, что в Compose 1.0 компоненты Material будут расширять свое пространство макета, чтобы соответствовать рекомендациям по доступности Material для сенсорного размера цели . For instance, Button touch target will expand to a minimum size of 48x48dp , even if you set the Button's size to be smaller. Это приводит Compose Material в соответствие с тем же поведением компонентов Material Design, обеспечивая единообразное поведение при смешивании представлений и Compose. Это изменение также гарантирует, что при создании пользовательского интерфейса с использованием компонентов Compose Material будут соблюдены минимальные требования к доступности сенсорной цели.
  • Стабильная поддержка Navigation Rail
  • Стабильный уровень ряда ранее экспериментальных API.
  • Поддержка новых версий Kotlin

Версия 1.1.0-rc03

26 января 2022 г.

androidx.compose.runtime:runtime-*:1.1.0-rc03 is released. Версия 1.1.0-rc03 содержит эти коммиты.

Исправления ошибок

  • Обновлено для поддержки Compose Material 1.1.0-rc03

Версия 1.1.0-rc01

15 декабря 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-rc01 is released. Версия 1.1.0-rc01 содержит эти коммиты.

Версия 1.1.0-beta04

1 декабря 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-beta04 is released. Версия 1.1.0-beta04 содержит эти коммиты.

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

  • Обновлен для совместимости с Kotlin 1.6.0

Версия 1.1.0-beta03

17 ноября 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-beta03 is released. Версия 1.1.0-beta03 содержит эти коммиты.

Версия 1.1.0-beta02

3 ноября 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-beta02 is released. Версия 1.1.0-beta02 содержит эти коммиты.

Изменения API

  • Snapshot code was split up into multiple files, but all still lives in the same JVM class. ( Ic6c98 )

Версия 1.1.0-бета01

27 октября 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-beta01 is released. Версия 1.1.0-beta01 содержит эти коммиты.

Версия 1.1.0-альфа06

13 октября 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-alpha06 is released. Версия 1.1.0-alpha06 содержит эти коммиты.

Изменения API

  • Removed InternalCompilerApi from Composer methods that are required to be called cross-module ( I1aa0b )
  • Recomposer.state has been deprecated and replaced by Recomposer.currentState to change its type to a StateFlow ( Ic2ab3 , b/197773820 )

Версия 1.1.0-альфа05

29 сентября 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-alpha05 is released. Версия 1.1.0-alpha05 содержит эти коммиты.

Версия 1.1.0-альфа04

15 сентября 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-alpha04 is released. Версия 1.1.0-alpha04 содержит эти коммиты.

Версия 1.1.0-альфа03

1 сентября 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-alpha03 is released. Версия 1.1.0-alpha03 содержит эти коммиты.

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

  • The Compose Compiler now supports older versions of the Compose Runtime (1.0). Prior to this change, the Compose Compiler was only compatible with the Compose Runtime of the same version or later. After this change, the Compose Compiler is compatible with an older version of the Compose Runtime (1.0). ( aosp/1796968 )
  • Обновлен Compose 1.1.0-alpha03 для зависимости от Kotlin 1.5.30 . ( I74545 )

Версия 1.1.0-альфа02

18 августа 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-alpha02 is released. Версия 1.1.0-alpha02 содержит эти коммиты.

Версия 1.1.0-альфа01

4 августа 2021 г.

androidx.compose.runtime:runtime-*:1.1.0-alpha01 is released. Версия 1.1.0-alpha01 содержит эти коммиты.

Версия 1.0

Версия 1.0.5

3 ноября 2021 г.

androidx.compose.runtime:runtime-*:1.0.5 is released. Версия 1.0.5 содержит эти коммиты.

Исправления ошибок

  • Исправлен сбой при отслеживании экземпляров производныхStateOf. ( аосп/1792247 )

Версия 1.0.4

13 октября 2021 г.

androidx.compose.runtime:runtime-*:1.0.4 is released. Версия 1.0.4 содержит эти коммиты.

Обновления зависимостей

  • Обновлено в зависимости от Kotlin 1.5.31

Версия 1.0.3

29 сентября 2021 г.

androidx.compose.runtime:runtime-*:1.0.3 is released. Версия 1.0.3 содержит эти коммиты.

Обновления зависимостей

  • Обновлено в зависимости от Kotlin 1.5.30

Версия 1.0.2

1 сентября 2021 г.

androidx.compose.runtime:runtime-*:1.0.2 is released. Версия 1.0.2 содержит эти коммиты.

Обновлено для поддержки версии Compose 1.0.2 . Compose 1.0.2 по-прежнему совместим с Kotlin 1.5.21 .

Версия 1.0.1

4 августа 2021 г.

androidx.compose.runtime:runtime-*:1.0.1 is released. Версия 1.0.1 содержит эти коммиты.

Обновления зависимостей

  • Обновлено в зависимости от Kotlin 1.5.21 .

Версия 1.0.0

28 июля 2021 г.

androidx.compose.runtime:runtime-*:1.0.0 is released. Версия 1.0.0 содержит эти коммиты.

Основные особенности версии 1.0.0

Это первая стабильная версия Compose. Более подробную информацию можно найти в официальном блоге Compose Release !

Известные проблемы

  • Если вы используете Android Studio Bumblebee Canary 4 или AGP 7.1.0-alpha04 / 7.1.0-alpha05 , вы можете столкнуться со следующим сбоем:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    Чтобы исправить это, временно увеличьте minSdkVersion до 24+ в файле build.gradle . Эта проблема будет исправлена ​​в следующей версии Android Studio Bumblebee и AGP 7.1 . ( р/194289155 )

Версия 1.0.0-rc02

14 июля 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-rc02 is released. Версия 1.0.0-rc02 содержит эти коммиты.

  • Fixed race conditions in SnapshotStateObserver causing spurratic NullPointerExceptions. ( aosp/1763445 , aosp/1758105 , b/192677711 )
  • Fixed issues with runtime snapshots causing java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied crashes. ( b/193006595 , b/192570897 )

Версия 1.0.0-rc01

1 июля 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-rc01 is released. Версия 1.0.0-rc01 содержит эти коммиты.

Версия 1.0.0-beta09

16 июня 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta09 is released. Версия 1.0.0-beta09 содержит эти коммиты.

Добавлены правила профиля

В этом выпуске правила профиля добавлены в следующие модули составления ( I14ed6 ):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

Что такое правила профиля?

  • Правила профиля для библиотеки указаны в текстовом файле baseline-prof.txt расположенном в каталоге src/main или его эквиваленте. В файле указывается правило для каждой строки, где правило в данном случае представляет собой шаблон для сопоставления с методами или классами в библиотеке. Синтаксис этих правил представляет собой расширенный набор удобочитаемого формата профиля ART, который используется при использовании adb shell profman --dump-classes-and-methods ... . Эти правила принимают одну из двух форм и ориентированы либо на методы, либо на классы.

  • Правило метода будет иметь следующий шаблон:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • И правило класса будет иметь следующий шаблон:

    <CLASS_DESCRIPTOR>
    
  • Здесь <FLAGS> — это один или несколько символов H , S и P указывающие, следует ли пометить этот метод как «Горячий», «Запуск» или «После запуска».

  • <CLASS_DESCRIPTOR> — это дескриптор класса, которому принадлежит целевой метод. Например, класс androidx.compose.runtime.SlotTable будет иметь дескриптор Landroidx/compose/runtime/SlotTable; .

  • <METHOD_SIGNATURE> является сигнатурой метода и включает имя, типы параметров и типы возвращаемых значений метода. Например, метод fun isPlaced(): Boolean в LayoutNode имеет подпись isPlaced()Z .

  • Эти шаблоны могут содержать подстановочные знаки ( ** , * и ? ), чтобы одно правило охватывало несколько методов или классов.

Что делают правила?

  • Метод с флагом H указывает, что этот метод является «горячим» и его следует скомпилировать заранее.

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

  • Метод с флагом P указывает, что это метод, который вызывается после запуска.

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

Как это работает?

  • Библиотеки могут определять эти правила, которые будут упакованы в артефакты AAR. Когда затем создается приложение, включающее эти артефакты, эти правила объединяются, и объединенные правила используются для создания компактного двоичного профиля ART, специфичного для приложения. Затем ART может использовать этот профиль, когда приложение устанавливается на устройства, чтобы заранее скомпилировать определенное подмножество приложения для повышения производительности приложения, особенно при первом запуске. Обратите внимание, что это не повлияет на отлаживаемые приложения.

Версия 1.0.0-beta08

2 июня 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta08 is released. Версия 1.0.0-beta08 содержит эти коммиты.

Изменения API

  • State<T> is now State<out T> ( I69049 )
  • ControlledComposition API change to enable recomposing changes in a recompose single pass. ( Iaafd1 , b/184173932 )

Версия 1.0.0-beta07

18 мая 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta07 is released. Версия 1.0.0-beta07 содержит эти коммиты.

Изменения API

  • Added new compose compiler APIs that allow the source information generated by the compiler to be removed during source minification. ( Ia34e6 )
  • Introduces ReusableContent which will attempt to reuse the nodes in its content instead of replacing them when the key is changed. When the key is changed the previous values in the slot table for the content is ignored except for the nodes that were generated and the values used to update the nodes.

    Introduces ReusableComposeNode that will reuse the node emitted instead of replacing it as is done for ComposeNode . ( I1dd86 )

  • @ComposeCompilerApi no longer @RequiresOptIn ( Iab690 )

Исправления ошибок

  • LazyColumn/Row will now keep up to 2 previously visible items active (not disposed) even when they are scrolled out already. This allows the component to reuse the active subcompositions when we will need to compose a new item which improves the scrolling performance. ( Ie5555 )

Версия 1.0.0-beta06

5 мая 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta06 is released. Версия 1.0.0-beta06 содержит эти коммиты.

Изменения API

  • @ComposeCompilerApi no longer @RequiresOptIn ( Iab690 )

Версия 1.0.0-бета05

21 апреля 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta05 is released. Версия 1.0.0-beta05 содержит эти коммиты.

Изменения API

  • Removed @InternalComposeApi for recording snapshot reads and writes ( Id134d )

Исправления ошибок

  • Файлы AndroidManifest из ui-test-manifest и ui-tooling-data теперь совместимы с Android 12 ( I6f9de , b/184718994 ).

Версия 1.0.0-beta04

7 апреля 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta04 is released. Версия 1.0.0-beta04 содержит эти коммиты.

Исправления ошибок

  • Prior to this change, local composable functions were skippable based on their parameters. After this change, no local composable functions will skip. This change is done because it is common and expected for local functions to capture parameters from the parent and them skipping is a common source of bugs.

    To summarize, consider the example:

    @Composable fun Counter(count: Int, onCountChange: (Int) -> Unit) {
      @Composable fun ShowCount() { Text("Count: $count") }
      ShowCount()
      Button(onClick={ onCountChange(count + 1) }) {
        Text("Increment")
      }
    }
    

    Prior to this change, the ShowCount composable function would always skip, even after the count parameter was updated. Это уже не так. ( I5648a )

  • Fixed the issue when rememberSaveable() was restoring the old value when used with input params ( I1b110 , b/182403380 )

Версия 1.0.0-бета03

24 марта 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta03 is released. Версия 1.0.0-beta03 содержит эти коммиты.

Изменения API

  • DefaultMonotonicFrameClock is deprecated. Calling withFrameNanos or Recomposer.runRecomposeAndApplyChanges with no MonotonicFrameClock will now throw IllegalStateException . ( I4eb0d )

Версия 1.0.0-beta02

10 марта 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta02 is released. Версия 1.0.0-beta02 содержит эти коммиты.

Исправления ошибок

  • Ввести ограничения на публичное использование экспериментальных API ( I6aa29 , b/174531520 ).
  • Fix for broken rememberSaveable { mutableStateOf(0) } when used inside a destination of navigation-compose. ( I1312b , b/180042685 , b/180701630 )

Версия 1.0.0-бета01

24 февраля 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-beta01 is released. Версия 1.0.0-beta01 содержит эти коммиты.

Это первый выпуск бета-версии Compose 1.0.0.

Изменения API

  • Add Recomposer.runRecomposeConcurrentlyAndApplyChanges experimental API for recomposing invalidated compositions off the main frame loop. ( I342d0 )
  • Any composables marked with @ReadOnlyComposable are now compile-time validated to ensure that they only make calls to other @ReadOnlyComposables ( I58961 )
  • The defaultFactory for compositionLocalOf and staticCompositionLocalOf is now required instead of optional.

    This changes removes a potential type error for non-nullable types where no default factory was provided. Previously this would provide a null reference for a non-nullable type.

    For nullable types consider supplying { null } as the default factory.

    We do not recommend using locals with non-nullable types unless a sensible default can be provided. If no sensible default exists, the defaultFactory lambda should throw an exception. However throwing an exception means that consumers of the local will have an implicit dependency on it being provided that is not enforced by the type system. ( Ifbd2a )

  • Deprecated symbols were removed from the compose runtime ( I3252c )

  • Deprecated emptyContent() is removed. Use {} instead. ( Idb33f , b/179432510 )

  • Providers has been renamed to CompositionLocalProvider

    • The Composition constructor no longer accepts a key parameter, and has been deprecated.
    • currentCompositeKeyHash has been turned into a composable top level property instead of a composable top level function.
    • CompositionData and CompositionGroup have been moved to the androidx.compose.runtime.tooling namespace
    • ComposableLambda has been made an interface instead of a concrete class, and no longer has type parameters.
    • ComposableLambdaN has been made an interface instead of a concrete class, and no longer has type parameters.
    • The snapshotFlow function has been moved to the androidx.compose.runtime namespace
    • the merge method of SnapshotMutationPolicy is no longer experimental
    • The @TestOnly top level clearRoots function has been removed. It is no longer necessary.
    • keySourceInfoOf and resetSourceInfo functions have been removed. They are no longer necessary.
    • Composer.collectKeySourceInformation has been removed. It is no longer necessary.
    • isJoinedKey, joinedKeyLeft, and joinedKeyRight methods have been removed. They are no longer necessary.
    • Various top level APIs have been moved and reorganized into different files. Due to Kotlin's file class semantics, this will break binary compatibility but not source compatibility, so should not be an issue for most users.
    • ( I99b7d , b/177245490 )
  • SnapshotStateObserver is not Experimental anymore ( Id2e6a )

  • Deleted some previously deprecated APIs ( Ice5da , b/178633932 )

  • Made the following Material API changes:

    • Added contentPadding parameter to Top/BottomAppBar to allow customizing the default padding.
    • Reordered parameters in BackdropScaffold to follow API guidelines for required parameters being before optional parameters.
    • Moved icon parameter in BottomNavigationItem to be after selected and onClick .
    • Renamed alwaysShowLabels parameter in BottomNavigationItem to alwaysShowLabel .
    • Renamed bodyContent parameters in a few components to just content .
    • Reordered parameters in ButtonDefaults.buttonColors() . Please note that because the type of the parameters have not changed, this will not cause an error in your code - please ensure you are either using named parameters or update the ordering manually, otherwise your code will not work the same as previously.
    • Added secondaryVariant parameter to darkColors() . This color is typically the same as secondary in dark theme, but adding for consistency and further customization.
    • Removed ElevationDefaults and animateElevation() from the public API surface since they were not commonly used / useful.
    • Renamed onValueChangeEnd in Slider to onValueChangeFinished and made it nullable.
    • Renamed text parameter in Snackbar to content for consistency.
    • Added contentPadding parameter to DropdownMenuItem to allow customizing the default padding and made content be an extension on RowScope .
    • Renamed ModalDrawerLayout to ModalDrawer .
    • Renamed BottomDrawerLayout to BottomDrawer .
    • ( I1cc66 )

Версия 1.0.0-альфа12

10 февраля 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-alpha12 is released. Версия 1.0.0-alpha12 содержит эти коммиты.

Изменения API

  • Support for ViewGroups was removed from UiApplier. The Deprecated emitView composables were removed. ( Ifb214 )
  • CompositionReference renamed to CompositionContext ( I53fcb )
  • ComponentActivity.setContent has moved to androidx.activity.compose.setContent in the androidx.activity:activity-compose module. ( Icf416 )
  • Snapshot API was updated to be more consistent with API guideline as well as hiding internal implementation classes from the public API. ( Id9e32 )
  • Renamed Ambients to match the Ambient -> CompositionLocal rename. Ambients used to be named AmbientFoo, now CompositionLocals are named LocalFoo. ( I2d55d )
  • Renamed Ambient to CompositionLocal, and ambientOf / staticAmbientOf to compositionLocalOf / staticCompositionLocalOf respectively. This change helps to make the purpose of CompositionLocal more clear: a mechanism for providing / retrieving values local to a composition. CompositionLocal instances should be prefixed with Local , such as val LocalFoo = compositionLocalOf { Foo() }. ( Ia55b6 )
  • takeMutableSnapshot and takeSnapshot have moved to be companion methods of Snapshot. ( I91f19 )
  • @ComposableContract has been deprecated in favor of three more specific annotations.

    @ComposableContract(restartable = false) has become @NonRestartableComposable @ComposableContract(readonly = true) has become @ReadOnlyComposable @ComposableContract(preventCapture = true) has become @DisallowComposableCalls @ComposableContract(tracked = true) has been removed. ( I60a9d )

  • emptyContent() and (@Composable () -> Unit).orEmpty() utilities have been deprecated as they no longer have any positive performance impact or value ( I0484d )

  • snapshotFlow and withMutableSnapshot are no longer experimental ( I6a45f )

  • Recomposers can now be closed. Closed recomposers will continue recomposition until composition child coroutines complete. Recomposer.shutDown renamed to cancel to contrast with close. ( Ib6d76 )

  • Артефакт compose:runtime-dispatch устарел. MonotonicFrameClock теперь можно найти в compose:runtime, а AndroidUiDispatcher можно найти в compose:ui. ( Ib5c36 )

  • The API the Compose compiler plugin targets has been refactored to use an interface instead of a concrete class. The interface also no longer uses a type parameter.

    This is an internal change that should not effect source code compatibility but is a binary breaking change. ( I3b922 , b/169406779 )

  • SnapshotMutableState was introduced ( Icfd03 )

  • DisposableEffectDisposable was renamed to DisposaleEffectResult ( Ica7c6 )

  • Removed Recomposer.current(). [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. Recomposition and withFrameNanos-based animation ticks are paused while the host Lifecycle is stopped. ( I38e11 )

  • Recomposer.runningRecomposers now offers a global StateFlow of read-only RecomposerInfo for observing ongoing composition state in the process. Prefer this API to Recomposer.current(), which is now deprecated. ( If8ebe )

  • DisposableEffectDisposable was renamed to DisposaleEffectResult ( I3ea68 )

Версия 1.0.0-альфа11

28 января 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-alpha11 is released. Версия 1.0.0-alpha11 содержит эти коммиты.

Изменения API

  • onCommit, onDispose и onActive устарели в пользу API SideEffect и DisposableEffect ( If760e ).
  • The emit() API and all overloads have been deprecated and renamed to ComposeNode. The APIs are identical, just a different name in order to follow the naming conventions of Compose ( I4137b )
  • validate и CompositionReference() теперь устарели в пользу currentRecomposeScope и RememberCompositionReference соответственно. ( I583a8 )
  • RememberObserver replaces CompositionLifecycleObserver and CompositionLifecycleObserver is now deprecated.

    RememberObserver is a replacement for CompositionLifecycleObserver with modified semantics and renamed methods. Changing to the new API can be done mechanically for objects that are only remembered once which is, and continues to be, the recommended practice. However, if a reference was remembered more than once in a composition onRemembered is called for each reference where onEnter is only called once. onEnter was called multiple time if the object was used in subcompositions, such as WithConstraints and Scaffold making the single onEnter call guarantee unreliable and it was removed for RememberObserver .

    RememberObserver adds onAbandoned which is called if the RememberObserver instance is returned from the callback passed to remember but was not remembered in the composition state and, therefore, will never have onRemembered called. This can occur if an exception terminates composition before completing or the composition is discarded because the state is was producing a composition for is no longer current or otherwise is no longer needed. If the instance of RememberObserver following the single reference recommendation above is tracking an external resource both onForgotten and onAbandoned each indicate that the resource is no longer needed. If the object is tracking work started or resources allocated in onRemembered , onAbandoned can be ignored as it will not be called if onRemembered is called. ( I02c36 )

  • Do not mark collectAsState() functions as inline ( Ia73e4 )

Исправления ошибок

  • WithConstraints was reworked as BoxWithConstraints and moved to foundation.layout. ( I9420b , b/173387208 )
  • Использование TestCoroutineDispatcher при тестировании ( I532b6 )

Версия 1.0.0-альфа10

13 января 2021 г.

androidx.compose.runtime:runtime-*:1.0.0-alpha10 is released. Версия 1.0.0-alpha10 содержит эти коммиты.

Breaking Change

  • Restructuring of the internal compiler API allows batching changes to the nodes generated as a result of composition into the "apply changes" phase of composition, after all @Composable functions have completed.

    This is a behavioral breaking change that might affect application code as nodes are no longer available from internal and experimental APIs until after changes have been applied. This can usually be worked around by surrounding code with such dependencies in a SideEffect composable to defer execution of the code until after the nodes have been created and initialized. ( I018da )

Изменения API

  • Added a way to track if the recomposer has applied changes. ( I1b3e2 )
  • Expand [Abstract]ComposeView APIs to allow recycling Compose-based views, disposing their composition to recreate again later. Add APIs for installing and discovering window-scoped Recomposers and CompositionReferences for creating child compositions.

    Add ViewCompositionStrategy for configuring the composition disposal strategy of [Abstract]ComposeViews; default behavior is dispose on window detach. ( I860ab )

Исправления ошибок

  • Recomposer now exposes a Flow of its current state, allowing monitoring its activity and the activity of associated effects. ( Ifb2b9 )
  • The native keyEvent can now be accessed through keyEvent.nativeKeyEvent ( I87c57 , b/173086397 )

Версия 1.0.0-альфа09

16 декабря 2020 г.

androidx.compose.runtime:runtime-*:1.0.0-alpha09 is released. Версия 1.0.0-alpha09 содержит эти коммиты.

Изменения API

  • Removed SlotTable, SlotReader and SlotWriter from the public API. These were marked as InternalComposeAPI previously. Now they are internal to the compose module.

    CompositionData and CompositionGroup were added as a replacement for the ui-tooling API to use to extract composition information. These are public but are not intended for use outside the ui-tooling API as they provide the raw information the ui-tooling API interprets ( I31a9c )

  • The Applier class is no longer considered an ( Id85b0 )

  • The Applier interface has changed to simplify building trees bottom-up instead of top-down.

    The insert() method has been renamed to insertTopDown() .

    A new method, insertBottomUp() , was added.

    An applier either inserts nodes into the tree it is editing using insertTopDown() or insertBottomUp() depending on which performs better.

    Some trees, such as LayoutNode and View , are much more efficient to build bottom-up than top-down. Prior to this change, a stack of inserts was required to implement bottom-up which needed to be copied to every applier which needed bottom-up construction for performance. With this change an Applier overrides insertBottomUp() to build a tree bottom-up and insertTopDown() to build the tree top-down. ( Icbdc2 )

  • Compose supports property getters that can make composable invocations. Support for this is not going away, but the syntax for declaring a property getter as being @Composable is changing.

    The now-deprecated syntax for doing this was by annotating the property itself:

        @Composable val someProperty: Int get() = ...
    

    The now-correct syntax for doing this is by annotating the getter of the property:

       val someProperty: Int @Composable get() = ...
    

    Both syntaxes will work for some time, but the former deprecated syntax will eventually become a compile error. ( Id9197 )

Исправления ошибок

Версия 1.0.0-альфа08

2 декабря 2020 года

androidx.compose.runtime:runtime-*:1.0.0-alpha08 is released. Версия 1.0.0-alpha08 содержит эти коммиты.

Изменения API

  • Добавлена ​​проверка на пробег для композиционного именования параметров Lambda, чтобы проверить согласованность с руководящими принципами составления. Также мигрировал некоторые API, используя children в качестве названия для их запекания Lambda до content , согласно проверке и руководству. ( IEC48E )
  • Recomposer no longer accepts an EmbeddingContext; required scheduling dependencies are obtained from the effectCoroutineContext. FrameManager is deprecated; platform integrations should initialize their own global snapshot handling. ( I02369 )
  • RestorAbleStateholder.WithRestorAbleState был переименован в RestorAbleStateProvider ( I66640 )

Исправления ошибок

  • Установившись в окружающей среде, названные с Ambient в качестве суффикса, и заменили их новыми свойствами, префиксированными окружающей средой, следуя за другими окружающими, и составил руководящие принципы API. ( I33440 )
  • Удалить старый модуль UI-теста и его заглушки ( i3a7cb )

Версия 1.0.0-альфа07

11 ноября 2020 года

androidx.compose.runtime:runtime-*:1.0.0-alpha07 is released. Версия 1.0.0-alpha07 содержит эти коммиты.

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

Изменения API

  • The @UnionType annotation has been deprecated ( I57cde )
  • provideDefault was added as an alternative to provide for providing ambients, and it can be used to specify ambient values that will only be set when there is no ambient value already provided. ( Id6635 , b/171024925 )
  • LaunchedTask was renamed to LaunchedEffect for consistency with the SideEffect and DisposableEffect APIs. LaunchedEffect with no subject params is not permitted in order to encourage best practices. ( Ifd3d4 )
  • Applier now has onBeginChanges/onEndChanges callbacks that are invoked when a Composer begins/is finished applying changes to the tree. These may be used for batching resource management if needed. ( Icf476 )
  • Recomposer now requires a CoroutineContext at construction ( Ic4610 )
  • Changes to the internal SlotTable implementation which should not affect the public API. ( If9828 )
  • Deprecated rxjava2 adapters which does not take the initial value were removed ( Idb72f )

Исправления ошибок

  • Foundation.Text был устарел и заменен на материал. Текст. Для базового, неопинозированного текстового API, который не потребляет значения из темы, см. Androidx.compe.foundation.basictext. ( IF64CB )
  • BaseTextField has been deprecated. Use BasicTextField instead. ( I896eb )
  • Несколько символов, связанных с макетом, были перемещены с Androidx.compose.ui на androidx.compose.layout.ui. ( I0FA98 , B/170475424 )

Внешний вклад

  • Added runtime-rxjava3 module for compose. Similar to runtime-rxjava2 ( I02cbf )

Версия 1.0.0-альфа06

28 октября 2020 года

androidx.compose.runtime:runtime-*:1.0.0-alpha06 is released. Версия 1.0.0-alpha06 содержит эти коммиты.

Изменения API

  • Recomposer is now a CompositionReference and a valid composition parent. Explicit Recomposer is now required in fewer places. ( I4036f )
  • Added DisposableEffect counterpart API to SideEffect, filling the role of onCommit-with-params but with a required onDispose.
    • Added rememberUpdatedState API to publish data from recomposition to ongoing or long-lived processes such as DisposableEffects or LaunchedTasks.
    • ( Id50b9 )
  • MutableVector now implements RandomAccess ( I85d73 , b/170461551 )
  • Added SideEffect composable for applying side effects of composition to objects managed by the composition. SideEffect is intended to replace the onCommit composable. ( Ia77c2 )
  • New experimental api RestorableStateHolder. It allows to save the state defined with [savedInstanceState] and [rememberSavedInstanceState] for the subtree before disposing it to make it possible to compose it back next time with the restored state. ( I66884 , b/166586419 )

Исправления ошибок

  • Включить переходы в Composetestrule; Удалите опцию, чтобы включить мигающий курсор из Composetestrule. ( If0de3 )

Версия 1.0.0-альфа05

14 октября 2020 г.

androidx.compose.runtime:runtime-*:1.0.0-alpha05 is released. Версия 1.0.0-alpha05 содержит эти коммиты.

Изменения API

  • Experimental Modifier.pointerInput suspending input modifier ( Ia77d2 )
  • The scrolling performance of LazyColumn/Row is improved by doing less work in subcomposition on every scroll. The new hasInvalidations() method was added for Composition class. hasPendingChanges() method from Recomposer was renamed to hasInvalidations() ( Ib2f32 , b/168293643 , b/167972292 , b/165028371 )
  • Add produceState API for launching coroutines from composition that update a single State<T> value over time ( Id4a57 )
  • launchInComposition renamed to LaunchedTask to match Compose API guidelines ( I99a8e )
  • The order of place() calls in custom Layouts now defines the drawing order for the children ( Ibc9f6 )

Версия 1.0.0-альфа04

1 октября 2020 г.

androidx.compose.runtime:runtime-*:1.0.0-alpha04 is released. Версия 1.0.0-alpha04 содержит эти коммиты.

Изменения API

  • Added OwnerScope to allow collection of layout and drawing observation scopes once they are no longer valid. ( Ic4cf8 )
  • Added derivedStateOf API to create State objects based on a calculation which may read (and derive from) other State objects ( If758b )
  • Added TestOnly API for SnapshotStateObserver ( I6e2a9 )

Исправления ошибок

  • Foundation.box был устарел. Пожалуйста, используйте foundation.layout.box вместо этого. ( IE5950 , B/167680279 )

Версия 1.0.0-альфа03

16 сентября 2020 года

androidx.compose.runtime:runtime-*:1.0.0-alpha03 is released. Версия 1.0.0-alpha03 содержит эти коммиты.

Изменения API

  • CompositionCoroutineScope no longer implements MonotonicFrameClock . Callers of withFrameNanos should import the top-level function explicitly. ( Icb642 , b/166778123 )

Исправления ошибок

  • Global testing functions such as onNode or waitForIdle are now deprecated, please migrate to their new counterparts that are defined on ComposeTestRule ( I7f45a )
  • launchInComposition no longer launches coroutines undispatched ( Ief6af , b/166486000 )

Версия 1.0.0-альфа02

2 сентября 2020 года

androidx.compose.runtime:runtime-*:1.0.0-alpha02 is released. Версия 1.0.0-alpha02 содержит эти коммиты.

Изменения API

  • Add snapshotFlow and withMutableSnapshot APIs for consuming and producing Snapshot data changes. ( I3e722 )
  • The calling convention for composable functions has changed. This is a binary breaking change. All libraries must be recompiled to work with this version of the compose compiler plugin.

    This change does not create a source level breaking change as the only APIs that have changed are compiler APIs that have an explicit opt in. ( I7afd2 , b/158123185 )

  • Removed scheduling methods from EmbeddingContext ( I7b9be )

  • На промежутке устарел; У Oncommit теперь есть поведение Procommit.

    Oncommit и Onactive теперь работают в той же кадре хореографа, в которой композиция изменяется, а не в начале следующей кадры хореографа. ( I70403 )

Версия 1.0.0-альфа01

26 августа 2020 года

androidx.compose.runtime:runtime-*:1.0.0-alpha01 is released. Версия 1.0.0-alpha01 содержит эти коммиты.

Версия 0.1.0-Dev

Версия 0.1.0-Dev17

19 августа 2020 года

androidx.compose.runtime:runtime-*:0.1.0-dev17 is released. Версия 0.1.0-Dev17 содержит эти коммиты.

Изменения API

  • Custom emits can now declare that one or more of its setters can be skipped and recomposed independently of the emit. ( Ibbd13 )
  • Removed deprecated FrameManager calls.

    Internal compose APIs have been changed to reduce the amount of overhead to track state objects such as mutableStateof() ( I80ba6 )

  • state { ... } композитное теперь устарело в пользу явных вызовов remember { mutableStateOf(...) } для ясности. Это уменьшает общую поверхность API и количество понятий для управления состоянием и соответствует шаблону by mutableStateOf() для делегирования свойства класса. ( IA5727 )

  • Flow.collectAsState now determines the default dispatcher from the composition itself rather than defaulting to Dispatchers.Main. ( I9c1d9 )

  • Crash when something which saves the state was used inside the for loop is fixed. Now having the same key in savedInstanceState() is allowed, api of UiSavedStateRegistry is now adjusted to this new requirement ( I4ab76 , b/160042650 , b/156853976 , b/159026663 , b/154920561 )

Исправления ошибок

  • emitView was deprecated. Use AndroidView instead if possible for emitting Views inside Compose. Note that composing Views and ViewGroups directly will not be supported in the future unless these are leaves in the composition tree, case when this can be achieved using AndroidView. ( I29b1e , b/163871221 )

Версия 0.1.0-Dev16

5 августа 2020 года

androidx.compose.runtime:runtime-*:0.1.0-dev16 is released. Версия 0.1.0-Dev16 содержит эти коммиты.

Изменения API

  • The default mutation policy of mutableStateOf() , ambientOf() and savedInstanceStateOf() has changed to be structuralEqualityPolicy() instead of referentialEqualityPolicy() .

    The default for deciding if a new value assigned to a mutableStateOf() instance is considered a change now defaults to using == instead of using === .

    See https://kotlinlang.org/docs/reference/equality.html

    ambientOf() and savedInstanceStateOf() use mutableStateOf() in their implementations so they were changed to be consistent with mutableStateOf() .

    Using structural equality more closely matches developer expectations.

    Например,

    val state = mutableStateOf(1f)
    

    с последующим,

    state.value = 1f
    

    will no longer be consider a change to state and uses of state during composition will no longer need to be recomposed.

    This is a breaking change but, in most cases (such when using classes that do not override equals() ), this will not have a noticeable effect on an application.

    Classes that do override equals() , such as data classes, might see a performance degradation as their equals() methods are now, by default, called when assigned to a mutableStateOf() .

    The previous behavior can be restored by adding the policy parameter policy = referentialEqualityPolicy() to calls to mutableStateOf() , ambientOf() and savedInstanceStateOf() . ( Ic21a7 )

  • Row and Column are now inline function significantly reducing the overhead of using them. ( I75c10 )

Исправления ошибок

  • setViewContent was deprecated. setContent should be used instead. ( I7e497 , b/160335130 )
  • Добавлен MonotonicframeanimationClock, который позволяет использовать монотонный фрамиклок в качестве анимации, чтобы преодолеть разрыв между новыми часами на основе Coroutines и API, которые все еще используют старые часы на основе обратного вызова.

    The MonotonicFrameClock equivalent of ManualAnimationClock is now ManualFrameClock. ( I111c7 , b/161247083 )

  • Modifier.stateDraggable was completely reworked and renamed to Modifier.swipeable. A new SwipeableState class was introduced, and DrawerState and BottomDrawerState were refactored to inherit from it. [Modal/Bottom]DrawerLayout no longer take an onStateChange parameter. ( I72332 , b/148023068 )

  • MODIFIER.PLUS был устарел, используйте модификатор. Тогда вместо этого. «Тогда» имеет более сильный сигнал упорядочения, в то время как также запрещает тип Modifier.padding().background() + anotherModifier , который разбивает цепь и труднее читать ( IEDD58 , B/161529964 )

  • SubcomposeLayout is added. It is a low level primitive which allows to compose the children during the measuring if we want to use some values available only later during the measure for the subtree composition. For example WithConstraints is not implemented using SubcomposeLayout. ( I25cc8 )

  • Material FilledTextField was renamed to TextField and foundational TextField was renamed to BaseTextField to make simplest desired API easy to discover and use ( Ia6242 , b/155482676 )

  • MODIFIER.Drawbackground был переименован в Modifier.Background ( I13677 )

Версия 0.1.0-Dev15

22 июля 2020 года

androidx.compose.runtime:runtime-*:0.1.0-dev15 is released. Версия 0.1.0-Dev15 содержит эти коммиты.

Обновление зависимостей

  • Чтобы использовать версию Compose 0.1.0-dev15 , вам необходимо будет обновить свои зависимости в соответствии с новыми фрагментами кода, показанными выше при объявлении зависимостей .

Изменения API

  • @Model annotation is now deprecated. Use state and mutableStateOf as alternatives. This deprecation decision was reached after much careful discussion.

    Обоснование

    Rationale includes but is not limited to:

    • Reduces API surface area and concepts we need to teach
    • More closely aligns with other comparable toolkits (Swift UI, React, Flutter)
    • Reversible decision. We can always bring @Model back later.
    • Removes corner-case usage and difficult to answer questions about configuring @Model as things we need to handle
    • @Model data classes, equals, hashcode, etc.
    • How do I have some properties “observed” and others not?
    • How do I specify structural vs. referential equality to be used in observation?
    • Reduces “magic” in the system. Would reduce the likelihood of someone assuming system was smarter than it is (ie, it knowing how to diff a list)
    • Makes the granularity of observation more intuitive.
    • Improves refactorability from variable -> property on class
    • Potentially opens up possibilities to do hand-crafted State-specific optimizations
    • More closely aligns with the rest of the ecosystem and reduces ambiguity towards immutable or us “embracing mutable state”

    Migration Notes

    Almost all existing usages of @Model are fairly trivially transformed in one of two ways. The example below has a @Model class with two properties just for the sake of example, and has it being used in a composable.

    @Model class Position(
     var x: Int,
     var y: Int
    )
    
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    Alternative 1: Use State<OriginalClass> and create copies.

    This approach is made easier with Kotlin's data classes. Essentially, make all previously var properties into val properties of a data class, and then use state instead of remember , and assign the state value to cloned copies of the original using the data class copy(...) convenience method.

    It's important to note that this approach only works when the only mutations to that class were done in the same scope that the State instance is created. If the class is internally mutating itself outside of the scope of usage, and you are relying on the observation of that, then the next approach is the one you will want to use.

    data class Position(
     val x: Int,
     val y: Int
    )
    
    @Composable fun Example() {
     var p by state { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p = p.copy(x=it) }
       onYChange={ p = p.copy(y=it) }
     )
    }
    

    Alternative 2: Use mutableStateOf and property delegates

    This approach is made easier with Kotlin's property delegates and the mutableStateOf API which allows you to create MutableState instances outside of composition. Essentially, replace all var properties of the original class with var properties with mutableStateOf as their property delegate. This has the advantage that the usage of the class will not change at all, only the internal implementation of it. The behavior is not completely identical to the original example though, as each property is now observed/subscribed to individually, so the recompositions you see after this refactor could be more narrow (a good thing).

    class Position(x: Int, y: Int) {
     var x by mutableStateOf(x)
     var y by mutableStateOf(y)
    }
    
    // source of Example is identical to original
    @Composable fun Example() {
     var p = remember { Position(0, 0) }
     PositionChanger(
       position=p,
       onXChange={ p.x = it }
       onYChange={ p.y = it }
     )
    }
    

    ( I409e8 , b/152050010 , b/146362815 , b/146342522 , b/143413369 , b/135715219 , b/143263925 , b/139653744 )

  • Changes the code generation strategy of Compose's compiler. Prior to the change, the compose compiler would transform calls to composable functions. With this change, we now transform the body of a composable function and leave the callsite unaltered (mostly).

    This means that most of the logic communicating with the compose runtime happens at the start of the function body, instead of at the callsite.

    This should be a source-compatible change for all usage of compose. Most users of compose should not have to update any code as a result of this change.

    In order to support this work, the JVM signature of all composable functions has changed. A Composable function accepting a single parameter is transformed into a function accepting 3 parameters, the additional parameters are the Composer, a 'key' integer. a bitmask integer used to propagate metadata through calls.

    Compose now also transforms default arguments to a composable function. It does this without introducing an additional synthetic default overload of the function itself, so this change will result in fewer functions being defined.

    Known intentional behavioral changes resulting from this:

    1. Some calls will skip where they wouldn't have previously
    2. Composable expressions in default argument expressions are now correctly subscribed to and handled

    This work included some optimizations: 1. The result of comparisons of parameters are propagated through the call graph to other composable functions. This will result in fewer comparisons at runtime, reduces the slot table size, as well as more skipping of composable functions that were previously not skipped 2. Paremeters which are determined to be “static” at compile time are no longer compared or stored in the runtime. This reduces the number of comparisons and reduces slot table size. 3. Control flow structure of the body of functions is used to minimize the number of groups that are generated. This reduces slot table size and results in less work for the runtime 4. Unused dispatch and receiver parameters to functions are not included in determining skippability of the function if they are not used inside of the body of the function.

    Most breaking changes were for APIs that the compiler targets directly, and typical use of compose will not be affected: 1. Composer::startExpr was removed 2. Composer::endExpr was removed 3. Composer::call was deprecated 4. The non-varargs overloads of key have been removed. Use the vararg version going forward. 5. The Pivotal annotation was deprecated. Use key as a replacement. 6. ScopeUpdateScope::updateScope was changed to expect a Function3 instead of Function1 7. restartableFunction and restartableFunctionN were updated to include additional compile time parameters ( I60756 , b/143464846 )

  • Added sortWith and removeRange to MutableVector ( Icccf7 )

  • Added default method implementations for CompositionLifecycleObserver ( I24289 )

  • Applier now requires a clear() method for disposing compositions ( Ibe697 )

  • Added asMutableList() to MutableVector to allow it to be passed to public API without having to copy the entire list. ( I298df )

  • Added rememberCoroutineScope() to obtain a managed CoroutineScope in composition for launching jobs in response to events. ( I0e264 )

  • MutableVector is a new collection that does not implement any of the standard Collection interface. This collection offers speed above other requirements and is intended to only be used in internal implementations. ( I8ebd6 )

  • Temporarily removed StableMutableList and StableMutableMap to avoid an issue in the version of Kotlin compose requires. These interfaces will be reintroduced once compose is updated to a version of Kotlin that doesn't have the issue.

    SnapshotStateList and SnapshotStateMap are now public but they will be deprecated once StableMutableList and StableMutableMap are restored. ( Ia7769 )

  • add top-level withFrameNanos function for animation timing ( Ie34c5 )

  • @Untracked annotation has been deprecated. Replace with @ComposableContract(tracked=false) ( Id211e )

  • RestartableFunction and associated APIs have been renamed to ComposableLambda, etc. These APIs were targeted only by the compiler so this should not affect source level compatibility normally. The rename was done primarily to communicate what this class is better when it shows up in stack traces ( I7eb25 )

  • @Composable annotation is no longer valid on classes ( Ia5f02 )

  • Ambient<T> is now @Stable instead of @Immutable ( I0b4bb )

  • Prior to this change, the compose compiler plugin would non-trivially intercept calls to constructors inside of a @Composable function if there was an ( I5205a , b/158123804 )

  • Сопровождение Composable больше не является полезной абстракцией. Большая часть переоценки должна произойти в результате назначений мутаблстата. Для чего -либо, кроме этого, рекомендуется использовать функцию invalidate , чтобы вызвать переоборудование текущего объема. ( IFC992 )

  • Observe is no longer a useful abstraction. If you need to replicate it, its implementation can be replicated by just creating a composable function which executes a composable lambda parameter. For example, @Composable fun Observe(body: @Composable () -> Unit) = body() ( I40d37 )

  • @Direct was deprecated in favor of @ComposableContract(restartable=false) ( If4708 )

  • Added an adapter for the recently introduced StateFlow which allows as to pre-populate the initial value so the returned State is non-nullable ( I61dd8 , b/156233789 )

  • Added an adapter for Flow. Example of the usage: val value by flow.collectAsState() ( If2198 , b/153375923 )

  • [Mintable] Операторы делегатов государственной собственности перешли на расширения для поддержки оптимизации Delegate Kotlin 1.4. Абоненты должны добавить импорт, чтобы продолжить использование by state { ... } или by mutableStateOf(...) . ( I5312c )

  • Androidx.compose.viewComposer был перенесен на androidx.ui.node.uicomposer androidx.compose.emittable. Это было избыточно с компонентом. Androidx.compose.viewAdapters был удален. Они больше не являются поддерживаемым вариантом использования. Compose.composeinto устарел. Вместо этого используйте setContent или setViewContent . Compose.disposecomposition устарели. Вместо этого используйте метод dispose на Composition , возвращаемой setContent . Androidx.compose.compose.subcompoceinto переехал на androidx.ui.core.subcompoceinto componentnode#emitinsertat был переименован в компонент#insertat componentnode#emitremoveat был переименован в компонент#removeatnode#emitmode был переименован в компонент#################################( isdef00 )

  • Updated the ComposeFlags.COMPOSER_PARAM flag to be true , which will change the code generation strategy for the compose plugin. At a high level, this causes @Composable functions to be generated with an additional synthetic parameter, which is passed through to subsequent @Composable calls in order for the runtime to properly manage execution. This is a significant binary breaking change, however, should preserve source-level compatibility in all sanctioned usage of compose. ( I7971c )

  • Разрушение изменений в API Ampi Ampients. См. Журнал и Ambient<T> Документация для деталей ( i4c7ee , b/143769776 )

  • Added ui-livedata - new artifact with an adapter for LiveData. Example of the usage: val value by liveData.observeAsState() ( Ie9e8c , b/150465596 )

  • Rx adapters without explicit initial value are deprecated. Using null is not always the best default, for example when you have a List it is better to start with emptyList() or any other reasonable default ( I00025 , b/161348384 )

  • Added ui-rxjava2 - new artifact with adapters for RxJava2. Example of the usage: val value by observable.subscribeAsState() ( Ifab4b , b/153369097 )

  • savedInstanceState() can now be used with nullable types ( I6847f , b/153532190 )

  • New listSaver() and mapSaver() to make it easier to write custom Saver objects ( I8cf68 , b/152331508 )

  • New functions: savedInstanceState() and rememberSavedInstanceState(). They are similar to state() and remember() but have a saved instance state support build in ( If1987 , b/152025209 )

Исправления ошибок

  • runOnIdleCompose переименован в runOnIdle ( I83607 )
  • Made LayoutNode experimental API ( I4f2e9 )
  • androidx.ui.foundation.TextFieldValue and androidx.ui.input.EditorValue is deprecated. TextField, FilledTextField and CoreTextField composables that uses that type is also deprecated. Please use androidx.ui.input.TextFieldValue instead ( I4066d , b/155211005 )
  • Removed deprecated DrawBackground API in favor of drawBackground extension APIs on Modifier. Refactored color, brush and paint drawBackground implementations to reduce code paths as well as remove requirement for Modifier to be created as part of composition. ( I0343a )
  • Обновленные API -интерфейсы более высокого уровня, которые выставляют холст, чтобы разоблачить Canvasscope. Это устраняет необходимость того, чтобы потребители поддерживали свои собственные объекты краски. Для потребителей, которые по -прежнему требуют доступа к холстам, они могут использовать метод расширения DrawCanvas, который обеспечивает обратный вызов для выпуска команд рисования с базовым холстом. ( I80afd )
  • WithConstraints trailing lambda API has been changed. Now instead of two params it has a receiver scope which in addition to constraints and layoutDirection provides minWidth, maxWidth, minHeight and maxHeight properties in Dp ( I91b9a , b/149979702 )
  • Added symmetric padding modifier. ( I39840 )
  • Updated wrapContentWidth and wrapContentHeight to expect vertical or horizontal Alignment rather than any Alignment. The gravity modifier was updated to accept vertical or horizontal Alignment. Row, Column and Stack were updated to support custom continuous Alignments. ( Ib0728 )
  • модуль UI-Text переименован в UI-Text-Core ( i57dec )
  • Improve DrawModifier API:
    • Сделал применение приемника для Drait () ContentDrawScope
    • Удалили все параметры на Draw ()
    • DraitScope имеет тот же интерфейс, что и бывший Canvasscope
    • ContentDrawscope имеет метод DraitContent () ( ibaced , b/152919067 )
  • ColoredRect был устарел. Используйте Box(Modifier.preferredSize(width, height).drawBackground(color)) вместо этого. ( I499fa , b/152753731 )
  • Заменил модификатор плюс оператор с функциями расширения завода ( I225E4 )
  • RowScope and ColumnScope members are now accessible outside Row and Column. ( I3a641 )
  • Переименовано в LayoutFlegeble до макетного веса. Переименованного плотного параметра для заполнения. ( IF4738 )
  • WithConstraints got LayoutDirection parameter ( I6d6f7 )
  • Renamed background to DrawBackground and make it to be memorized by default ( Ia0bd3 )
  • Replaced ButtonStyle with distinct functions and removed text (string) overload. See updated samples for usage information. ( If63ab , b/146478620 , b/146482131 )
  • runOnIdleCompose и runOnUiThread теперь являются глобальными функциями вместо методов Composetestrule. ( ICBE8F )

Внешний вклад

  • Remove unneeded API such as Looper and Handler from Compose Runtime porting layer ( I6847d )
  • Deprecate Flow<T>.collectAsState() with no initial value. Use StateFlow<T> or pass an explicit initial value instead. ( I63f98 , b/157674865 )