Compose Runtime

אבני הבניין הבסיסיות של מודל התכנות וניהול המצב של Compose, וזמן הריצה המרכזי של פלאגין מהדר Compose לטירגוט.
העדכון האחרון גרסה יציבה גרסה מועמדת להפצה גרסת בטא גרסת אלפא
‫7 באוקטובר 2026 1.12.1 - ‎1.13.0-beta01 -

מבנה

‫Compose הוא שילוב של 7 מזהי קבוצה ב-Maven בתוך androidx. כל קבוצה מכילה קבוצת משנה ממוקדת של פונקציות, ולכל אחת מהן יש קבוצה משלה של הערות על הגרסה.

בטבלה הזו מוסבר על הקבוצות ומופיעים קישורים לכל קבוצה של הערות מוצר.

קבוצהתיאור
compose.animationליצור אנימציות באפליקציות Jetpack Compose כדי לשפר את חוויית המשתמש.
compose.compilerאפשר להשתמש בפלאגין של Kotlin Compiler כדי לשנות פונקציות @Composable ולהפעיל אופטימיזציות.
compose.foundationכתיבת אפליקציות ב-Jetpack Compose באמצעות אבני בניין מוכנות לשימוש והרחבת הבסיס כדי ליצור רכיבים משלכם למערכת העיצוב.
compose.materialאפשר ליצור ממשקי משתמש של 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 לטירגוט.
compose.uiרכיבים בסיסיים של ממשק משתמש ב-Compose שנדרשים לאינטראקציה עם המכשיר, כולל פריסה, ציור וקלט.

הצהרה על יחסי תלות

כדי להוסיף תלות ב-Compose, צריך להוסיף את מאגר Maven של Google לפרויקט. מידע נוסף זמין במאמר בנושא מאגר ה-Maven של Google.

אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

dependencies {
    implementation("androidx.compose.runtime:runtime:1.12.1")
    implementation("androidx.compose.runtime:runtime-livedata:1.12.1")
    implementation("androidx.compose.runtime:runtime-rxjava2:1.12.1")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

מידע נוסף זמין במאמר הוספת יחסי תלות ב-build.

משוב

המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.

יצירת דיווח על בעיה חדשה

מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.

גרסה 1.13

גרסה ‎1.13.0-beta01

‫7 באוקטובר 2026

‫androidx.compose.runtime:runtime-*:1.13.0-beta01 מופץ. גרסה ‎1.13.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • הספריות מכוונות עכשיו ל-Kotlin 2.2 ונדרש kotlinc 2.2 (I82396, b/498369605)

תיקוני באגים

  • תוקן באג שבו העברה של Float.NaN או Double.NaN לפונקציה @Composable מנעה מהפונקציה הזו לדלג על הרכבה מחדש, גם כשכל הארגומנטים לא השתנו. הבאג הזה השפיע על פונקציות שקיבלו Dp.Unspecified כי Dp.Unspecified מגובה על ידי Float.NaN. ‫(I7a643, ‏ b/564569402)
  • הבעיה CompositionObserver נפתרה עכשיו פעם אחת לכל כרטיס הרכב. אם מגדירים את המדיניות הזו או מחליפים אותה ב-setObserver בזמן שמתבצעת יצירה של קומפוזיציה, ההגדרה תיכנס לתוקף החל מהכרטיס הבא. הדיווח על הוספת תוכן שניתן להזזה כולל עכשיו גם את onBeginComposition וonEndComposition. (Iad280)
  • בלוק החישוב של computedStateOf נאכף עכשיו לקריאה בלבד. כתיבה למצב בתוך הבלוק הזה תגרום לשגיאה מסוג IllegalStateException. (Id045f, b/456249371)
  • תוקן דליפת זיכרון ב-LinkComposer שבה העברה של movableContent שמרה על משבצות של קבוצות עוטפות בין העברות. (I17af2)
  • התלות ב-androidx.lifecycle:lifecycle-runtime עודכנה ל-2.10.0. הגרסה הזו נדרשת כדי להריץ בדיקות lint של זמן ריצה של מחזור חיים בחבילה עם AGP בגרסה 9.5.0-alpha04 ואילך. (I99bfd, ‏ b/556807521)
  • תמיכה בשימוש ב-ComposeTracer ב-thread שאינו ה-thread הראשי. (I139e4)

External Contribution

  • תוקנה בעיה ב-computedStateOf שיכולה לגרום לביטולים לא צפויים כשקוראים עם SnapshotStateObserver. ‫(Ie3f8b, ‏ b/561372470)

גרסה ‎1.13.0-alpha03

‫9 בספטמבר 2026

‫androidx.compose.runtime:runtime-*:1.13.0-alpha03 מופץ. גרסה ‎1.13.0-alpha03 מכילה את השמירות האלה.

ביצועים

  • ‫Inline SlotWriter.forAllDataInRememberOrder כדי לבטל הקצאות (Ie39f6)

גרסה ‎1.13.0-alpha02

‫26 באוגוסט 2026

‫androidx.compose.runtime:runtime-*:1.13.0-alpha02 מופץ. גרסה ‎1.13.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף withLocalRetainedValuesStore, שמאפשר להחזיר ערכים מלמדת התוכן. ‫(I8e871, b/542168593)
  • נוספו עומסים של rememberSerializable שניתן להגדיר כ-nullable עבור MutableState. (I77b83, ‏ b/543285462)

גרסה ‎1.13.0-alpha01

‫12 באוגוסט 2026

‫androidx.compose.runtime:runtime-*:1.13.0-alpha01 מופץ. גרסה ‎1.13.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • ביצענו שינויים ב-feature flag‏ LinkTable כדי לצמצם את המחלוקות במערכות של כללי proguard שמוזגו, וכדי לשפר את התאימות כשמצמצמים את האפליקציה מחוץ ל-Gradle. התחביר של proguard שמשמש להגדרת הדגל השתנה מעט. אפשר לראות את זה בהמשך, ושימו לב לסוגריים שנוספו (I419da): -assumevalues public class androidx.compose.runtime.ComposeRuntimeFlags { static boolean isLinkBufferComposerEnabled() return true; }

  • הפקודות produceState() ו-Flow.collectAsState() מקבלות עכשיו ארגומנט SnapshotMutationPolicy כדי לשלוט במדיניות השוויון והמיזוג של אובייקט State הבסיסי. ‫(I0c167, ‏ b/405128869)

  • הגדרת @ComposableTarget כפעולה שניתן לחזור עליה. מידע נוסף מופיע במסמכי התיעוד המעודכנים. (I99a89, ‏ b/481422057)

  • נוספה האפשרות RecompositionTracer לתיעוד תהליך ביטול התוקף של רה-קומפוזיציה (I1dbc1, ‏ Ia991d, ‏ b/531813367)

  • הוספנו את keys שניתן לצפייה ב-SaveableStateHolder כדי לפשט את הניווט ואת ניהול המצב של מקבץ הפעילויות הקודמות (back stack), וכדי לבטל את הצורך במעקב חיצוני אחרי key. גישה דרך holder.keys; הסרה באמצעות removeState. (I9bbbb, ‏ b/398887924)

  • נוסף staticCompositionLocalWithComputedDefaultOf כדי ליצור ProvidableCompositionLocals שפועלים כסטטיים כשמספקים אותם, או מחושבים כשלא מספקים אותם. (I844e4)

תיקוני באגים

  • תוקנה בעיה ב-GapComposer שיכולה לגרום למופעים של RememberObserver אחרי בלוק withCompositionLocal להפעיל באופן שגוי את קריאות החזרה (callback) של הפונקציה forget לפני RememberObserver בבלוק. (I4d54c)
  • תוקנה חריגה בנפח נמוך בכתיבה לאובייקט של מצב שניתן לשינוי. (I48194, ‏ b/503110696)
  • תוקן באג ב-SnapshotStateSet.writeToParcel שגרם לכך שהמערכת ביצעה סריאליזציה רק של הרשומה הראשונה. (I64f4c, ‏ b/537461421)
  • המאפיינים CancellationException שמשמשים לביטול LaunchedEffects ולזכירת CoroutineScopes שונו כדי שיהיו ברורים יותר כשהם מופיעים ב-stack traces. ‫(I89840, ‏ b/449897855)
  • בוצעה אופטימיזציה של אתחול אובייקט נלווה של מחלקות ערכים compose:runtime (ComposeStackTraceMode, GroupKind) באמצעות שימוש בפונקציות getter דינמיות. (I50640)
  • הסרת הדרישה ל-compileSdk 37 (If78b4)

External Contribution

  • תוקן באג שגרם לכך שהרכבות אב הפסיקו להגיב כשמסירים הרכבת משנה שגורמת לשגיאה במהלך Live Edit. (I3717c)
  • תוקנה בעיה שקשורה לשחזור של Live Edit אחרי שגיאה בקומפוזיציה משנית, כך שהקומפוזיציות הראשיות ימשיכו לעקוב אחרי שינויים במצב. (I63fb5)

גרסה 1.12

גרסה 1.12.1

‫9 בספטמבר 2026

‫androidx.compose.runtime:runtime-*:1.12.1 יוצא ללא שינויים מאז גרסה 1.12.0. גרסה 1.12.1 מכילה את השמירות האלה.

גרסה 1.12.0

‫12 באוגוסט 2026

‫androidx.compose.runtime:runtime-*:1.12.0 מופץ. גרסה 1.12.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.11.0:

עדכונים בטבלת משבצות הפרסום הניסיוניות

  • התקדמנו בייצוב ההטמעה הניסיונית של LinkTable שהצגנו בגרסה 1.11. ההטמעה החדשה נועדה לשפר את הביצועים של רה-קומפוזיציה, במיוחד עם שינויים קטנים ואקראיים. אנחנו ממליצים למשתמשים לנסות את SlotTable החדש ולדווח על בעיות שהם נתקלים בהן. מידע נוסף זמין בכתובת ComposeRuntimeFlags.isLinkBufferComposerEnabled.

תופעת לוואי עם Keys API

  • נוספה עומס יתר ל-SideEffect שמקבל ארגומנטים של מפתח. אפשר להשתמש ב-API החדש כדי להפעיל SideEffects חד-פעמיים בלי להשתמש ב-LaunchedEffect או ב-DisposableEffect שהבלוקים CoroutineScope או onDispose שלהם לא בשימוש. ‫(I528b2, ‏ b/476108743)

גרסה ‎1.12.0-rc01

‫29 ביולי 2026

‫androidx.compose.runtime:runtime-*:1.12.0-rc01 מופץ. גרסה ‎1.12.0-rc01 מכילה את השמירות האלה.

גרסה ‎1.12.0-beta02

‫1 ביולי 2026

‫androidx.compose.runtime:runtime-*:1.12.0-beta02 מופץ. גרסה ‎1.12.0-beta02 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן ArrayIndexOutOfBoundsException ב-LinkComposer כשמשתמשים ב-MovableContent מוטמעים. (I85daf)

גרסה ‎1.12.0-beta01

‫17 ביוני 2026

‫androidx.compose.runtime:runtime-*:1.12.0-beta01 מופץ. גרסה ‎1.12.0-beta01 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה שגרמה לכך שלא נשלחו הודעות למאזינים של החלת תמונת מצב אם אובייקט מצב נוצר בתמונת מצב אחת ואז שונה בתמונת מצב מקבילה לפני שהתמונה הראשונה הוחלה. (Ide27f, b/451479063)
  • תוקנה דליפת זיכרון פוטנציאלית באופן שבו מתבצע מעקב אחרי derivedStateOf() ערכים בהרכבה. העברת כתיבה לאובייקטים שנקראים על ידי מצב נגזר גרמה לשמירת מופע derivedStateOf() על ידי ההרכבה עד שההרכבה נמחקה. אם המערכת לא זוכרת את derivedStateOf() בצורה נכונה, הדליפה הזו יכולה להיות משמעותית כי כל קומפוזיציה עשויה ליצור אחת חדשה. (Ib5d87, ‏ b/516904513)
  • תוקנה בעיה ב-LinkComposer שיכולה לגרום לכך שרכיבים שאפשר להרכיב ידולגו במקום להרכיב אותם מחדש כשמבטלים את התוקף שלהם במהלך ההרכבה. (Ie29fe)
  • תוקנה בעיה בעומס היתר של vararg של remember שגרמה לכך שהערך שנשמר לא נפסל, וערך שגוי הוחזר מ-remember. זה קורה כשמבצעים שחזור של remember עם פחות מפתחות שהם זהים למפתחות הקודמים, פחות רכיבים מהסוף של המערך. כדי שהתיקון יחול, צריך לקמפל מחדש את הקוד המושפע. (I0736b)

External Contribution

  • נוספה מעקב מפורט אחר העבודה של DisposableEffect ו-SideEffect בזמן הריצה של כתיבת האימייל. (Ie451f)

גרסה ‎1.12.0-alpha03

‫19 במאי 2026

‫androidx.compose.runtime:runtime-*:1.12.0-alpha03 מופץ. גרסה ‎1.12.0-alpha03 מכילה את השמירות האלה.

תיקוני באגים

  • נפתרו כמה בעיות ב-LinkTable שבהן לא אוכלסו עקבות מחסנית אבחון או שחסר בהן מידע (I3918c)
  • תוקנה בעיה בסוג נתונים פנימי שיכולה לגרום לחריגה במקרים נדירים עם תוכן שניתן להעברה. ‫(Ic478f, ‏ b/507724717)
  • תוקנה בעיה בהתנהגות הדילוג של LinkComposer שגרמה להתנהגות לא עקבית בהשוואה ל-GapComposer, לחישוב מחדש לא צפוי של ארגומנטים שמוגדרים כברירת מחדל ולפסק זמן של בדיקות. (I783dc)

גרסה ‎1.12.0-alpha02

‫6 במאי 2026

‫androidx.compose.runtime:runtime-*:1.12.0-alpha02 מופץ. גרסה ‎1.12.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה עומס יתר ל-SideEffect שמקבל ארגומנטים של מפתח. אפשר להשתמש ב-API החדש כדי להפעיל SideEffects חד-פעמי בלי להשתמש ב-LaunchedEffect או ב-DisposableEffect שהבלוקים CoroutineScope או onDispose שלהם לא בשימוש. ‫(I528b2, ‏ b/476108743)

גרסה ‎1.12.0-alpha01

‫22 באפריל 2026

‫androidx.compose.runtime:runtime-*:1.12.0-alpha01 מופץ. גרסה ‎1.12.0-alpha01 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה ב-LinkTable שיכולה לגרום לפעולות לא תקינות של צומת. (I491c3)
  • ‫compileSdk של Compose עודכן ל-API 37. כלומר, כשמשתמשים ב-Compose, נדרשת גרסת AGP מינימלית של 9.2.0. ‫(Id45cd, ‏ b/413674743)
  • תוקנה בעיה במטמון ב-LinkTable שבה הוספות של תוכן שמפעילות שינוי גודל עלולות לגרום לקריאה של ערכים לא עדכניים, מה שעלול לגרום לכך ש-CompositionLocals לא ייפתרו. (I8016c)
  • תוקן באג שגרם לכך ש-T.writableRecord הציג IllegalStateException מיותרים (Ia778f, ‏ b/440975176)

גרסה 1.7 של Runtime Tracing

גרסה ‎1.7.0-rc01

‫18 בספטמבר 2024

‫androidx.compose.runtime:runtime-tracing:1.7.0-rc01 מופץ. גרסה ‎1.7.0-rc01 מכילה את השמירות האלה.

גרסה 1.0 של Runtime Tracing

גרסה ‎1.0.0-beta01

‫29 בנובמבר 2023

‫androidx.compose.runtime:runtime-tracing:1.0.0-beta01 מופץ. גרסה ‎1.0.0-beta01 מכילה את השמירות האלה.

גרסה ‎1.0.0-alpha05

‫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-alpha04

‫23 באוגוסט 2023

‫androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 מופץ. גרסה ‎1.0.0-alpha04 מכילה את השמירות האלה.

תכונות חדשות

  • הכלי תואם לגרסאות העדכניות של Benchmark ו-Tracing Perfetto, ומאפשר תמיכה ב-Composition Tracing בהפעלת האפליקציה (cold start), למשל ב-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, b/282199917)
  • דרישות מוקדמות למעקב בזמן הפעלת האפליקציה. (Iad890)
  • קבצים של ממשקי API ציבוריים וניסיוניים שמוזגו (I0f2e1, ‏ b/278769092)

גרסה ‎1.0.0-alpha02

‫8 בפברואר 2023

‫androidx.compose.runtime:runtime-tracing:1.0.0-alpha02 מופץ. גרסה ‎1.0.0-alpha02 מכילה את השמירות האלה.

תכונות חדשות

  • אין שינויים פונקציונליים. בוצעו אופטימיזציות רבות של הביצועים בתלות במורד הזרם androidx.tracing:tracing-perfetto*.

גרסה ‎1.0.0-alpha01

‫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.11

גרסה 1.11.4

‫1 ביולי 2026

‫androidx.compose.runtime:runtime-*:1.11.4 מופץ. גרסה 1.11.4 מכילה את השמירות האלה.

גרסה 1.11.3

‫17 ביוני 2026

‫androidx.compose.runtime:runtime-*:1.11.3 מופץ. גרסה ‎1.11.3 מכילה את השמירות האלה.

גרסה 1.11.2

‫19 במאי 2026

‫androidx.compose.runtime:runtime-*:1.11.2 מופץ. גרסה 1.11.2 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה בסוג נתונים פנימי שיכולה לגרום לחריגה במקרים נדירים עם תוכן שניתן להעברה. ‫(Ic478f, ‏ b/507724717)

גרסה 1.11.1

‫6 במאי 2026

‫androidx.compose.runtime:runtime-*:1.11.1 מופץ. גרסה 1.11.1 מכילה את השמירות האלה.

גרסה 1.11.0

‫22 באפריל 2026

‫androidx.compose.runtime:runtime-*:1.11.0 מופץ. גרסה 1.11.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.10.0:

New Experimental SlotTable

  • כתבנו מחדש את SlotTable, שהוא מבנה הנתונים הפנימי שמשמש את זמן הריצה של Compose כדי לעקוב אחר היררכיית הקומפוזיציה, לקבוע את השינויים שנגרמים על ידי קומפוזיציה מחדש ולאחסן ערכים שנשמרו. השינוי הזה מתמקד בשיפור הביצועים של רה-קומפוזיציה, והוא עושה זאת בעיקר באמצעות שימוש בפחות פעולות העתקה של זיכרון בהשוואה למאגר הנתונים הזמני SlotTable. שינויים מסוימים בהיררכיית ההרכב, כמו שינוי הסדר של רשימה ארוכה של פריטים, יכולים להרכיב מחדש את התמונה במהירות כפולה בהשוואה לגרסה הקודמת של SlotTable. רוב הפעולות האחרות מהירות יותר ב-10% בערך כשמשתמשים בהטמעה החדשה של SlotTable. ההטמעה של SlotTable שבה נעשה שימוש בסביבת זמן הריצה משפיעה על כל השיטות שניתנות להרכבה ולא נדרשת קומפילציה מחדש. השימוש ב-SlotTable החדש הוא שינוי שחל על כל האפליקציה, כולל על יחסי התלות.
  • ההטמעה הזו של SlotTable עדיין ניסיונית ומושבתת כרגע כברירת מחדל. כדי להפעיל את ההגדרה, צריך להגדיר את הערך ComposeRuntimeFlags.isLinkBufferComposerEnabled ל-true. בגרסאות build של הפצה שבהן מופעלת מיניפיקציה, הערך הזה נחשב ל-false בקובץ ברירת המחדל proguard-rules.pro שמסופק עם זמן הריצה. כדי להפעיל את התכונה החדשה SlotTable בסביבת הייצור, צריך לשנות את ההנחה הזו ל-true בקובץ proguard-rules.pro של האפליקציה. מידע נוסף זמין במאמרי העזרה בנושא ComposeRuntimeFlags.isLinkBufferComposerEnabled.

הגדרות ברירת מחדל של המארח לגבי אזורים מקומיים של קומפוזיציה

  • נוסף compositionLocalWithHostDefaultOf שמאפשר להגדיר CompositionLocals שחוזרים לסביבת האירוח (למשל תגי Android View) עבור ערכי ברירת המחדל שלהם.

תצפית יעילה יותר snapshotFlow באמצעות SnapshotFlowManager

  • השקנו את SnapshotFlowManager API כדי לאפשר תצפיות יעילות יותר על snapshotFlow. שימוש חוזר באותו SnapshotFlowManager לכמה מופעים של snapshotFlow יגרום לרישום של פחות משקיפים של החלת תמונת מצב, ולעיבוד מהיר יותר של עדכוני מצב.

גרסה ‎1.11.0-rc01

‫8 באפריל 2026

‫androidx.compose.runtime:runtime-*:1.11.0-rc01 מופץ. גרסה ‎1.11.0-rc01 מכילה את השמירות האלה.

גרסה ‎1.11.0-beta02

‫25 במרץ 2026

‫androidx.compose.runtime:runtime-*:1.11.0-beta02 מופץ. גרסה ‎1.11.0-beta02 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה בעיה ב-WASM שבה קודי הגיבוב של הזהויות תמיד החזירו 0 (I9d70c)
  • תוקנה בעיה שבה יכול להיות שמצב נגזר של רכיב אב לא יבוטל בצורה נכונה כשהתלות של מצב נגזר מוטבע משתנה (Ia7981, b/481750019)
  • תוקנה בעיה ב-LinkTable שיכולה לגרום לכתיבות לא חוקיות אחרי סילוק של קומפוזיציה. (I5c97a)
  • תוקנה בעיה ב-LinkTable שיכולה לגרום לכתיבות לא חוקיות כשמשנים את גודל הטבלה במהלך פעולת העתקה (Ie7edf)
  • תוקנה בעיה ב-LinkTable שגורמת לעדכון שגוי של הערך המאוחסן של צומת (I58a4a)
  • הקיבולת של LinkTable עכשיו קטנה יותר, ולכן לא מתקבלות שגיאות OOM כשיוצרים הרבה קומפוזיציות משנה במכשירים עם גודל ערימה קטן יותר (I112b9)

גרסה ‎1.11.0-beta01

‫11 במרץ 2026

‫androidx.compose.runtime:runtime-*:1.11.0-beta01 מופץ. גרסה ‎1.11.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • ‫SnapshotFlowManager והעומס של snapshotFlow שמקבלים את הפרמטר manager מסומנים עכשיו כניסיוניים (I5c1a5, ‏ b/486077876, ‏ I0de71, ‏ b/486077876)

תיקוני באגים

  • תוקן קראש מסוג Apply is called on deactivated node (הפונקציה Apply מופעלת בצומת לא פעיל) בהרכב שניתן להשהיה (I880c0, b/484300733)
  • תוקנה בעיה ב-LinkTable שיכולה לגרום לשיבוש של ArrayIndexOutOfBoundsExceptions או של מטא-נתונים כשמשתמשים ב-MovableContent. (I8452b)
  • תוקנה בעיה ב-LinkTable שמנעה את האכלוס התקין של עקבות אבחון (I59868)
  • תוקנה בעיה ב-SlotTable החדש שבה שימוש ב-RememberObservers ב-MovableContent עלול לגרום ללולאת OutOfMemoryError/infinite כשמסירים אותו. (I884e7)

גרסה ‎1.11.0-alpha06

‫25 בפברואר 2026

‫androidx.compose.runtime:runtime-*:1.11.0-alpha06 מופץ. גרסה ‎1.11.0-alpha06 מכילה את השמירות האלה.

גרסה ‎1.11.0-alpha05

‫11 בפברואר 2026

‫androidx.compose.runtime:runtime-*:1.11.0-alpha05 מופץ. גרסה ‎1.11.0-alpha05 מכילה את השמירות האלה.

שינויים ב-API

  • ComposeRuntimeFlags.isMovingNestedMovableContentEnabled, feature flag בזמן ריצה, הוסר. (I3ee62, b/455588848)
  • המרנו את HostDefaultKey מ-open class ל-interface. כך אפשר להטמיע במפתחות כמה מנגנוני חיפוש (כמו ViewTreeHostDefaultKey) בלי להיות מוגבלים על ידי ירושה של מחלקה יחידה, וכך לשפר את ההרחבה של סביבות אירוח מותאמות אישית. (I917a2)
  • הפרמטרים HostDefaultProvider ו-LocalHostDefaultProvider הם עכשיו public, כך שסביבות אירוח בהתאמה אישית יכולות להגדיר ערכים ללוקאלים ספציפיים לפלטפורמה. (I5bdbe)

תיקוני באגים

  • הוסרה האפשרות לקיפאון (deadlock) כשמריצים שני snapshotFlows בו-זמנית בשני שרשורים. (Ib4339)
  • תוקנה בעיה בטבלת הקישורים שיכולה לגרום לכלי להשמיט פונקציות composable בהיררכיה ולקשר באופן שגוי קומפוזיציות משנה (I7178e)

External Contribution

  • תוקנה בעיית חיוביות כוזבות ב-Lint כשמשתמשים באופרטור אונרי כדי לשנות את הערך בבלוק produceState (I1c7c9)

גרסה ‎1.11.0-alpha04

‫28 בינואר 2026

‫androidx.compose.runtime:runtime-*:1.11.0-alpha04 מופץ. גרסה ‎1.11.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API.

  • כתבנו מחדש את SlotTable, שהוא מבנה הנתונים הפנימי שמשמש את זמן הריצה של Compose כדי לעקוב אחר היררכיית הקומפוזיציה, לקבוע את השינויים שנגרמים על ידי קומפוזיציה מחדש ולאחסן ערכים שנשמרו. השינוי הזה מתמקד בשיפור הביצועים של רה-קומפוזיציה, והוא עושה זאת בעיקר באמצעות שימוש בפחות פעולות העתקה של זיכרון בהשוואה למאגר הנתונים הזמני SlotTable. שינויים מסוימים בהיררכיית ההרכב, כמו שינוי הסדר של רשימה ארוכה של פריטים, יכולים להרכיב מחדש את התמונה במהירות כפולה בהשוואה לגרסה הקודמת של SlotTable. רוב הפעולות האחרות מהירות יותר ב-10% בערך כשמשתמשים בהטמעה החדשה של SlotTable. ההטמעה של SlotTable שבה נעשה שימוש בסביבת זמן הריצה משפיעה על כל השיטות שניתנות להרכבה ולא נדרשת קומפילציה מחדש. השימוש ב-SlotTable החדש הוא שינוי שחל על כל האפליקציה, כולל על יחסי התלות.
  • ההטמעה של SlotTable מושבתת כרגע כברירת מחדל, ואפשר להפעיל אותה על ידי הגדרת ComposeRuntimeFlags.isLinkBufferComposerEnabled לערך true.
  • בגרסאות build של הפצה שבהן מופעלת מיניפיקציה, הערך הזה מוגדר כ-false בקובץ ברירת המחדל proguard-rules.pro שמסופק עם זמן הריצה. כדי להפעיל את SlotTable החדש בייצור, צריך לשנות את ההנחה הזו ל-true בקובץ proguard-rules.pro של האפליקציה. מידע נוסף זמין במאמרי העזרה בנושא ComposeRuntimeFlags.isLinkBufferComposerEnabled. (Ib741d, b/268366116)

תכונות חדשות

  • נוסף compositionLocalWithHostDefaultOf שמאפשר להגדיר CompositionLocals שמוגדרים כברירת מחדל לסביבת האירוח (למשל תגי Android View). (I15b81)

תיקוני באגים

  • הבטחנו שאי אפשר יהיה להחזיר שיחות של Snapshot.sendApplyNotifications עד שיישלחו ההתראות הנדרשות לגבי בקשות. ‫(I95f20, ‏ b/418800424)
  • למנוע הורדה של עקבות מחסנית של מידע על מקור למפתחות קבוצה במקרים שבהם מידע על מקור לא קיים בזמן הריצה. (If3712)
  • הצגת ComposeToolingFlags. ההגדרות האלה מיועדות להיות קבועות (בניגוד לComposeRuntimeFlags) והן משמשות לתכונות של כלי פיתוח שיש להן השפעה משמעותית על הביצועים. (I87863)

External Contribution

  • ‫API ניסיוני חדש של RecomposerInfo#errorState‏ (I0decc)
  • שינוי הערך של AnnotationRetention בהערה FunctionKeyMeta ל-BINARY (I53495)

גרסה ‎1.11.0-alpha03

‫14 בינואר 2026

‫androidx.compose.runtime:runtime-*:1.11.0-alpha03 מופץ. גרסה ‎1.11.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו את המחלקה SnapshotFlowManager והוספנו פרמטר אופציונלי SnapshotFlowManager ל-snapshotFlow, כדי לאפשר למשתמשים לבצע אופטימיזציה של מספר הצופים בהחלת תמונת המצב שנרשמים. (I6289b, ‏ b/446746211)

תיקוני באגים

  • נוספה הערת מעקב להוספת תוכן שניתן להזזה (Ibf176)

גרסה ‎1.11.0-alpha02

‫17 בדצמבר 2025

‫androidx.compose.runtime:runtime-*:1.11.0-alpha02 מופץ. גרסה ‎1.11.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

External Contribution

  • תוקן באג ב-Live Edit שאינו מתאושש משגיאה. (Ieb34f)

גרסה ‎1.11.0-alpha01

‫3 בדצמבר 2025

‫androidx.compose.runtime:runtime-*:1.11.0-alpha01 מופץ. גרסה ‎1.11.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • השם של RetainedValuesStore.getExitedValueOrDefault השתנה ל-consumeExitedValueOrDefaultc7a0929
  • הסרה של API ניסיוני להרכבה מקבילית מחדש.(c8af15d)

גרסה 1.10

גרסה 1.10.6

‫25 במרץ 2026

‫androidx.compose.runtime:runtime-*:1.10.6 מופץ. גרסה 1.10.6 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה קריסת המערכת 'אי אפשר להשבית שימוש חוזר מהשורש אם הקריסה נגרמה על ידי קבוצות אחרות' בהרכבה שניתן להשהות (I474b5, ‏ b/488433633)
  • תוקן קראש מסוג Apply is called on deactivated node (הפונקציה Apply מופעלת בצומת לא פעיל) בהרכב שניתן להשהיה (I880c0, b/484300733)

גרסה 1.10.5

‫11 במרץ 2026

‫androidx.compose.runtime:runtime-*:1.10.5 מופץ. גרסה 1.10.5 מכילה את השמירות האלה.

גרסה 1.10.4

‫25 בפברואר 2026

‫androidx.compose.runtime:runtime-*:1.10.4 יוצא ללא שינויים מאז גרסה 1.10.3. גרסה 1.10.4 מכילה את השמירות האלה.

גרסה 1.10.3

‫11 בפברואר 2026

‫androidx.compose.runtime:runtime-*:1.10.3 מופץ. גרסה 1.10.3 מכילה את השמירות האלה.

גרסה 1.10.2

‫28 בינואר 2026

‫androidx.compose.runtime:runtime-*:1.10.2 מופץ. גרסה 1.10.2 מכילה את השמירות האלה.

גרסה 1.10.1

‫14 בינואר 2026

‫androidx.compose.runtime:runtime-*:1.10.1 מופץ. גרסה 1.10.1 מכילה את השמירות האלה.

גרסה 1.10.0

‫3 בדצמבר 2025

‫androidx.compose.runtime:runtime-*:1.10.0 מופץ. גרסה ‎1.10.0 מכילה את השמירות האלה.

גרסה ‎1.10.0-rc01

‫19 בנובמבר 2025

‫androidx.compose.runtime:runtime-*:1.10.0-rc01 מופץ. גרסה ‎1.10.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • הגנה מפני שינוי חוזר כשמקליטים מצבים נגזרים ב-SnapshotStateObserver (I7b862, ‏ b/435655844, ‏ b/456249373, ‏ b/402535073)
  • ‫[Lint] תיקון באג קטן כדי שהכלי לזיהוי באגים יזהיר מפני הקצאת ערך מורכב בצורה תקינה. (I08319, b/456775556)

גרסה ‎1.10.0-beta02

‫5 בנובמבר 2025

‫androidx.compose.runtime:runtime-*:1.10.0-beta02 מופץ. גרסה ‎1.10.0-beta02 מכילה את השמירות האלה.

שינויים ב-API

  • ביצענו כמה שינויים שלא תואמים ל-API כדי לפשט את ההתקנה והניהול של RetainedValuesStore. השיחות הקיימות אל retain ו-RetainedEffect לא יושפעו, אבל כדי ששיחות עם RetainedValuesStore מותאמים אישית יהיו תואמות לגרסה הזו, יהיה צורך להעביר אותן. (If3c2f, ‏ b/451921682, ‏ b/450539803)

  • ‫RetainedValuesStore כבר לא חושף ממשקי API ברמה נמוכה להפעלה או להפסקה של שמירת נתונים. מצב השמירה עכשיו עוקב אחרי התוכן באופן אוטומטי. מוצעת לך עכשיו האפשרות להתקין את LocalRetainedValuesStoreProviderRetainedValuesStore. אין לספק את LocalRetainedValuesStore באופן ישיר. למידע נוסף על השינויים האלה, אפשר לעיין במסמכי התיעוד ובדוגמאות המעודכנים.

  • השם של RetainedValuesStoreProvider השתנה לשם RetainedValuesStoreRegistry. המחלקה הזו חושפת עכשיו רק ממשקי API להתקנה ולניהול של RetainedValuesStores בקומפוזיציה.

  • ‫ControlledRetainedValuesStore הוחלף ב-ManagedRetainedValuesStore.

  • RetainedValuesStore הוא עכשיו ממשק.

בעבר, התקנה של RetainedValuesStore בהתאמה אישית הייתה יכולה להיראות כך:

  val retainedValuesStore = retainControlledRetainedValuesStore()
  if (active) {
      CompositionLocalProvider(LocalRetainedValuesStore provides retainedValuesStore) {
          content()
      }

      val composer = currentComposer
      DisposableEffect(retainedValuesStore) {
          val cancellationHandle =
              if (retainedValuesStore.retainExitedValuesRequestsFromSelf > 0) {
                  composer.scheduleFrameEndCallback {
                      retainedValuesStore.stopRetainingExitedValues()
                  }
              } else {
                  null
              }

          onDispose {
              cancellationHandle?.cancel()
              retainedValuesStore.startRetainingExitedValues()
          }
      }
  }

בעקבות השינויים האלה ב-API, אפשר להשתמש בקוד הבא במקום:

  val retainedValuesStore = retainManagedRetainedValuesStore()
  if (active) {
      LocalRetainedValuesStoreProvider(retainedValuesStore) {
          content()
      }
  }

תיקוני באגים

  • העברת ביטולי תוקף של ההיקף בתוכן שאפשר להעביר לפני העברת התוכן הזה מחוץ לטבלת המשבצות (I9d123, ‏ b/451651649)

גרסה ‎1.10.0-beta01

‫22 באוקטובר 2025

‫androidx.compose.runtime:runtime-*:1.10.0-beta01 מופץ. גרסה ‎1.10.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • השם של RetainedValuesStore.getExitedValueOrDefault שונה ל-RetainedValuesStore.getExitedValueOrElse (If9653, b/452340613)
  • השם של isKeepingExitedValues שונה לisRetainingExitedValues (I660bf, b/437095756)
  • השם של RetainScope השתנה לשם RetainedValuesStore. השם של RetainScopeHolder השתנה לשם RetainedValuesStoreRegistry. השם של RetainScopeHolder.RetainScopeProvider השתנה לשם RetainedValuesStoreRegistry.ProvideChildRetainedValuesStore. (Idf23a, ‏ b/437095756)

תיקוני באגים

  • הפעלה מושהית של SavedState ב-SaveableStateRegistry עד לשימוש הראשון. (Ic0a93)

גרסה ‎1.10.0-alpha05

‫8 באוקטובר 2025

‫androidx.compose.runtime:runtime-*:1.10.0-alpha05 מופץ. גרסה ‎1.10.0-alpha05 מכילה את השמירות האלה.

תיקוני באגים

  • ממלאים את דוח קריסות עבור DiagnosticComposeException במצב הפקה. (Ib76cb)
  • תוקנה בעיה במצב Snapshot שבה, כשמשתמשים במדיניות מיזוג עבור סוג מסוים, יכול להיות שהערך הקודם יחושב בצורה שגויה, וכתוצאה מכך יוחזר ערך עתידי של המצב במקום הערך הקודם. המצב הזה יקרה אם יותר משני צילומים של מצב נתון ניתנים לשינוי נמצאים בהמתנה, ולפחות אחד מהערכים שמוחלים עליהם כולל מדיניות מיזוג. (I527b5, ‏ b/442791065)

גרסה ‎1.10.0-alpha04

‫24 בספטמבר 2025

‫androidx.compose.runtime:runtime-*:1.10.0-alpha04 מופץ. גרסה ‎1.10.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו את RetainScopeHolder API לניהול אוסף של RetainScopes. אפשר להשתמש באפשרות הזו כדי להטמיע שמירה של מאגרי תגים ומארחי ניווט שמורכבים מהרבה רכיבי צאצא עם תקופות שמירה שונות. (I10e0f)
  • נוספו ממשקי ה-API‏ RetainedContentHost ו-retainControlledRetainScope, שאפשר להשתמש בהם כדי ליצור RetainScopes בניהול אוטומטי לתוכן שנעלם, כמו חלוניות שניתן לכווץ (If81f6)
  • הפונקציה Updater#set inline overload הוצאה משימוש כי היא ביצעה boxing של הערך שסופק יותר מדי פעמים. נוספה פונקציית עומס יתר של Updater#init שמקבלת פרמטר שמונע את הצורך בביטוי למדא ללכידה. (Id679e)
  • המאמר מציג את RetainedEffect, API עם תופעות לוואי שדומה ל-DisposableEffect, אבל פועל לפי מחזור החיים של השמירה ולא לפי מחזור החיים של הקומפוזיציה. ממשק ה-API הזה מיועד לשימוש באפקטים שקשורים לשמירה של אובייקט אחר שלא מטמיע את RetainObserver או שלא יכול להטמיע אותו. ‫(I1c61f, ‏ b/177562901)
  • תיקנו את התיעוד של RetainObserver.onRetained והוספנו את RetainObserver.onUnused, שמשקף את RememberObserver.onAbandoned (Ia6fc5)

תיקוני באגים

  • תוקן באג שגרם לשיבוש השליחה אחרי הקבוצה הראשונה בפונקציה (כמו קריאה לפונקציה שניתנת להגדרה) ולפני קבוצה שאפשר להסיר (כמו הצהרת if) שיכולה לשלוח onForgotten בסדר שגוי. (I453f6, b/346821372)
  • מומלץ להימנע ממעבר בין הקשרים של קורוטינות כשמאתחלים את LaunchedEffect. (I8d2c3b)

גרסה ‎1.10.0-alpha03

‫10 בספטמבר 2025

‫androidx.compose.runtime:runtime-*:1.10.0-alpha03 מופץ. גרסה ‎1.10.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו עכשיו אפשרות ליצור עקבות מחסנית (stack traces) של קומפוזיציה שמבוססות על מפתח קבוצתי, שפועלות באפליקציות שעברו מיניפיקציה. מיפוי ה-proguard של העקבות האלה ייווצר על ידי תוסף Gradle של מהדר Compose החל מ-Kotlin 2.3.0. ההגדרות האלה מושבתות כברירת מחדל. כדי להפעיל אותן, משתמשים ב-ComposeStackTraceMode.GroupKeys. (Ifbcb5)
  • הוספת ממשק: IdentifiableRecomposeScope לשימוש בכלי (Idd5e0, ‏ b/434194620)
  • נמנעו פסילות מיותרות בהרכבים שכוללים CompositionLocalContexts (I3fa21, ‏ b/412750209)

תיקוני באגים

  • הוספנו הבהרה במסמכים ובכלים שלפיה גם מפתחות שמועברים ל-retain נשמרים. מומלץ להימנע מהעברת מפתחות ל-retain שיובילו לדליפת זיכרון. (Ib553b, ‏ b/177562901)
  • תוקנה בעיה שבה אם קוראים ל-resume() של קומפוזיציה מושהית ב-thread אחר, יכול להיות שהמצב של ההתראות בהמתנה יתבלבל כש-thread ראשי מנסה להרכיב מחדש את הקומפוזיציה שניתנת להשהיה עבור הפריים הבא. (Ie5f17, ‏ b/442649894)
  • רישום חריגים שנתפסו בקומפוזיציה. (I47d78, ‏ b/432799675, ‏ b/436878515, ‏ b/359623674, ‏ b/400436355)

גרסה ‎1.10.0-alpha02

‫27 באוגוסט 2025

‫androidx.compose.runtime:runtime-*:1.10.0-alpha02 מופץ. גרסה ‎1.10.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה ההערה @DoNotRetain, שאפשר להשתמש בה כדי להוסיף הערות לסוגים שאסור להשתמש בהם עם retain API, אולי כי הם יגרמו לדליפת משאבים. (Ie5435)
  • כדי להשתמש בפרויקטים שפורסמו עם Kotlin 2.0, צריך להשתמש ב-KGP 2.0.0 או בגרסה חדשה יותר. (Idb6b5)

תיקוני באגים

  • תוקנה בעיה בחישוב הפעולות של Applier כשתוכן משנה את צומת הבסיס של קומפוזיציה. כשמחשבים שינויים בתוכן שאפשר להעביר, יכול להיות שקריאה ל-up() תישאר בהמתנה ולא תישלח ל-applier, וכתוצאה מכך המיקום של מצב ה-applier יהיה שגוי לכל שימוש עתידי. ‫(I7c583), (I47b70)
  • התג CheckResult מסומן כהוצאה משימוש כי הוא לא מיועד לשימוש. (I32934)

גרסה ‎1.10.0-alpha01

‫13 באוגוסט 2025

‫androidx.compose.runtime:runtime-*:1.10.0-alpha01 מופץ. גרסה ‎1.10.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו מידע על retain API. בדומה ל-rememberSaveable, הפונקציה retain יכולה לשמור ערכים שנזכרו ולשמר אותם גם אחרי שהם יוצאים מהיררכיית הקומפוזיציה. הערכים שנשמרים לא עוברים סריאליזציה, והם תקפים לזמן קצר יותר מהערכים שנשמרים. הם מתנהגים באופן דומה ל-ViewModel של androidx. פרטים נוספים מופיעים במסמכי התיעוד. (Ia3105, ‏ b/177562901)
  • נוסף awaitOrScheduleNextCompositionEnd() API, שמפעיל קריאה חוזרת כש-Recomposer מסיים להרכיב את הפריים הנוכחי. אם הרכיב Recomposer לא יוצר כרגע פריים, ה-API הזה מושהה עד לסיום היצירה של הפריים הבא, ומתזמן יצירה של פריים חדש. (Ib873c)
  • הוספת API מקומי של ספק שאינו מחזיר יחידה (I22521, ‏ b/271871288)
  • נוסף feature flag, isMovableContentUsageTrackingEnabled, שמאפשר לעקוב אחרי השימוש בתוכן שאפשר להעביר כדי להימנע מתקורה מסוימת כשיוצרים את התוכן בפעם הראשונה. התכונה הזו מושבתת כרגע כברירת מחדל. (Ia713d)

תיקוני באגים

  • תוקן קראש בתוכן שאפשר להזיז כשמעבירים אותו בין קומפוזיציות משנה. (I3fa1e, b/436858107)
  • תוקן באג שגרם לכך שחלק מדוח קריסות של רכיב קומפוזבילי חסר כשהוא נמצא בתוך מספר קומפוזיציות משנה מקוננות. (I98c6f)
  • העברת ברירת המחדל של minSdk מ-API 21 ל-API 23 (Ibdfca, ‏ b/380448311, ‏ b/435705964, ‏ b/435705223)
  • תוקנה בעיה של מרוץ תהליכים כשמצב פנימי של קומפוזיציה שאפשר להשהות אותה עודכן מכמה שרשורים. (I03895)
  • העדכון של רכיב ה-observer של רישום הקומפוזיציה יופעל לפני הקומפוזיציה הראשונית. ‫(I4adca, ‏ b/430600932)
  • ביצענו תיקון באג קל כדי להפוך את AutoboxingStateValuePropertyDetector לתואם גם ל-K1 וגם ל-K2. (Ie81c1)

External Contribution

  • הופכים את ארטיפקט runtime-rxjava2 לפלטפורמה מרובה ומוסיפים את JVM כיעד נתמך. (I5409e)
  • הופכים את ארטיפקט runtime-rxjava3 לפלטפורמה מרובת יעדים ומוסיפים את JVM כיעד נתמך. (I97e84)

גרסה 1.9

גרסה 1.9.5

‫19 בנובמבר 2025

‫androidx.compose.runtime:runtime-*:1.9.5 מופץ. גרסה 1.9.5 מכילה את השמירות האלה.

תיקוני באגים

  • העברת ביטולי תוקף של ההיקף בתוכן שניתן להעברה לפני העברת התוכן הזה מחוץ לטבלת המשבצות (I9d123, ‏ b/451651649)

גרסה 1.9.4

‫22 באוקטובר 2025

‫androidx.compose.runtime:runtime-*:1.9.4 מופץ. גרסה 1.9.4 מכילה את השמירות האלה.

גרסה 1.9.3

‫8 באוקטובר 2025

‫androidx.compose.runtime:runtime-*:1.9.3 מופץ. גרסה 1.9.3 מכילה את השמירות האלה.

גרסה 1.9.2

‫24 בספטמבר 2025

‫androidx.compose.runtime:runtime-*:1.9.2 מופץ. גרסה 1.9.2 מכילה את השמירות האלה.

גרסה 1.9.1

‫10 בספטמבר 2025

‫androidx.compose.runtime:runtime-*:1.9.1 מופץ. גרסה 1.9.1 מכילה את השמירות האלה.

תיקוני באגים

  • אל תערכו מחדש יצירות שנמצאות בתהליך יצירה. (Iacb01)
  • למנוע השהיה כפולה של היקפי כתיבה מחדש. ‫(I060b2, ‏ b/431584881)

גרסה 1.9.0

‫13 באוגוסט 2025

‫androidx.compose.runtime:runtime-*:1.9.0 מופץ. גרסה 1.9.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.8.0

  • בדיקות ה-Lint שנשלחות עם Compose דורשות עכשיו גרסת AGP מינימלית של 8.8.2. אם אין לכם אפשרות לשדרג את AGP, אתם יכולים לשדרג את Lint בנפרד באמצעות android.experimental.lint.version=8.8.2 (או גרסה חדשה יותר) בקובץ gradle.properties. כדי להריץ בדיקות lint של Compose בתוך סביבת הפיתוח המשולבת (IDE), צריך להשתמש ב-Android Studio Ladybug או בגרסה חדשה יותר.
  • נוצרה ספרייה חדשה של הערות בזמן ריצה. הספרייה מכילה הגדרות של הערות בלי תלות בזמן הריצה של Compose, כך שאפשר להשתמש בה ממודולים שאינם Compose.
    • הפונקציות @Stable,‏ @Immutable ו-@StableMarker הועברו ל-runtime-annotation, כדי לאפשר הוספת הערות למודולים שאינם Compose
    • ההערות @FrequentlyChangingValue ו-@RememberInComposition נוספו ל-runtime-annotation. הסימן @FrequentlyChangingValue מציין הצהרות שעלולות לגרום להרכבה מחדש לעיתים קרובות, והסימן @RememberInComposition מציין הצהרות שכדאי לזכור בהרכבה. בדיקות ה-lint המתאימות מציגות אזהרה לגבי שימוש לא נכון.
  • מעכשיו תהיה תמיכה בפלטפורמות נוספות ב-androidx.compose.runtime:runtime. התמיכה ביעדים של מחשבים, iOS ו-native הועברה מהפרויקט Compose Multiplatform של JetBrains, ותפורסם דרך Google Maven בהמשך. אין השפעה על פריטי מידע אחרים של Compose.

גרסה ‎1.9.0-rc01

‫30 ביולי 2025

‫androidx.compose.runtime:runtime-*:1.9.0-rc01 מופץ. גרסה ‎1.9.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • העדכון של רכיב ה-observer של רישום הקומפוזיציה יופעל לפני הקומפוזיציה הראשונית. ‫(I4adca, ‏ b/430600932)

גרסה ‎1.9.0-beta03

‫16 ביולי 2025

‫androidx.compose.runtime:runtime-*:1.9.0-beta03 מופץ. גרסה ‎1.9.0-beta03 מכילה את השמירות האלה.

גרסה ‎1.9.0-beta02

‫2 ביולי 2025

‫androidx.compose.runtime:runtime-*:1.9.0-beta02 מופץ. גרסה ‎1.9.0-beta02 מכילה את השמירות האלה.

תיקוני באגים

  • קיצרנו את משך החיים של ההפניה לערכים בטבלת המשבצות בין קומפוזיציות. יש מקרים שבהם הפניה בטבלת משבצות יכולה להימשך פריים אחד יותר מהנדרש. (I49e74, ‏ b/418516940)
  • הסרת שינוי השם של Kotlin לשיטות של Hot Reload. ‫(Ic56a3, ‏ b/426871325)

גרסה ‎1.9.0-beta01

‫18 ביוני 2025

‫androidx.compose.runtime:runtime-*:1.9.0-beta01 מופץ. גרסה ‎1.9.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף API לכלי עזר לניתוח מידע על המקור שנוסף על ידי מהדר Compose. (Iceaf9, b/408492167)
  • ‫SnapshotStateSet מטמיע עכשיו את Parcelable ב-Android, ולכן הוא נתמך עכשיו כחלק מ-rememberSaveable { ... }. (I755dd, ‏ b/378623803)
  • ‫SnapshotStateList מטמיע עכשיו את Parcelable ב-Android, ולכן הוא נתמך עכשיו כחלק מ-rememberSaveable { ... }. ‫(Id18be, ‏ b/378623803)
  • ‫movableContentOf() מסומן עכשיו בהערה @RememberInComposition, שמאפשרת ל-lint לזהות שימושים שגויים (I2738d)
  • עדכון של ה-API הניסיוני של כלי המעקב אחר קומפוזיציה כדי לאפשר מעקב מקיף יותר אחר הסיבות לרה-קומפוזיציה (I32b6a)
  • כדי להתכונן לפיתוח עתידי של התכונה הזו, צריך לשנות את הערך setDiagnosticStackTraceEnabled ל-experimental. (I11db3)
  • התכונה currentCompositeKeyHash הוצאה משימוש. במקומה צריך להשתמש במדיניות currentCompositeKeyHashCode. ה-API החלופי מקודד את אותו הגיבוב עם יותר ביטים, מה שמקטין באופן משמעותי את הסיכוי שלשתי קבוצות אקראיות לא קשורות בהיררכיית ההרכבה יהיה אותו מפתח גיבוב. (I4cb6a, b/177562901)
  • כדי להשתמש בפרויקטים שפורסמו עם Kotlin 2.0, צריך KGP 2.0.0 או גרסה חדשה יותר (Idb6b5)
  • האפליקציות @Stable,‏ @Immutable ו-@StableMarker הועברו ל-runtime-annotation (באופן תואם). עכשיו אפשר להסתמך על אנוטציות בזמן ריצה אם רוצים להשתמש באנוטציות האלה מספרייה שלא מסתמכת על Compose. (I23a16)
  • השם של הפונקציה rememberSaveable שמועמסת יתר על המידה ומשתמשת ב-KSerializer שונה ל-rememberSerializable. השינוי הזה מבהיר את השימוש המיועד ב-kotlinx.serialization. כדי לתמוך במחלקות כלליות של kotlinx.Serializable ישירות ב-rememberSaveable, צריך פרמטר מסוג reified, שיגרום לבעיות בתאימות למקור כי הוא ידרוש מכל אתרי הקריאה לספק מידע על סוגים שמוגדרים בזמן הקומפילציה. (Idb875, ‏ I38627, ‏ b/376028110)

תיקוני באגים

  • צריך להשמיד קומפוזיציות שהוגדרו עם תוכן שאפשר להשהות ושבוטל. הבדיקה הזו מתבצעת עכשיו על ידי הקומפוזיציה, ואם נעשה בה שימוש חוזר, המערכת תקפיץ הודעת שגיאה. (I2daa5, b/406792785)
  • תוקנה קומפוזיציה שניתן להשהות, כך שהיא לא שולחת יותר onForgotten פיקטיבי כדי לזכור צופים כשהקומפוזיציה שניתן להשהות מושמדת. צריך לשלוח רק onAbandoned ל-RememberObservers בהרכב שניתן להשהיה שבוטלה. (I26f54)
  • תוקנה בעיה בתוכן שאפשר להזיז, שבה פסילות שמגיעות בשלבים מאוחרים של עיבוד תוכן שאפשר להזיז מתווספות לרכיב הקומפוזיציה, אבל הפסילות האלה לא מתעדכנות כשהתוכן מוזז, ולכן התוכן עובר קומפוזיציה מחדש במקום הלא נכון. ‫(Icd2fa, ‏ b/409439507)
  • תוקנה בעיה שגרמה לפסילת תוכן שאפשר להעביר אחרי שהוא נוצר אבל לפני שהוא הועבר. (I99eac, b/229001114)
  • קריאה ל-remove() של איטרטור רשימה שנוצר על ידי SnapshotStateList אחרי קריאה ל-previous() עלולה להסיר את הרכיב הלא נכון מהרשימה, ולא תואמת למה ש-ArrayList עושה עבור אותה רצף של קריאות. (I05ab7, b/417493222)
  • תוקנה בעיה בסדר השליחה של onForgotton, שיכולה לגרום, למשל, להפעלה של onDispose של אפקטים חד-פעמיים בסדר שגוי. ‫(Ic1c91, ‏ b/417450712)
  • תיקון לשימוש חוזר בטיפול במצב בהרכב שניתן להשהיה (Ife96e, ‏ b/404058957)
  • תוקן באג שקשור לשימוש חוזר במצב כשקומפוזיציה הושהתה והופעלה מחדש, אבל היה צורך להרכיב מחדש מצב מסוים שהושהה קודם לכן כי מצב מסוים שהיא קראה השתנה בזמן שהקומפוזיציה הושהתה. (I441d1, b/416209738)
  • הושלם התיקון של הבעיה b/404058957 שקשורה לשליחה של קומפוזיציה שאפשר להשהות. התיקון הקודם היה חלקי. (I1afd4, b/404058957)
  • ‫OffsetApplier מחליף עכשיו בצורה נכונה את apply(), שהוצג עם האפשרות להשהות את ההרכבה. אם לא תגדירו את זה, יכול להיות שעדכון של צמתים וירטואליים יגרום להרכבה שניתנת להשהיה להקפיץ הודעת שגיאה. (Idbf31, ‏ b/409291131)
  • תוקן מצב של קיפאון שיכול להשפיע על משתמשי Molecule כששיחה מושעית ל-FrameClock.withFrameNanos מבוטלת בזמן שפריים נשלח. (I89cab, b/407027032)
  • הכלי Recomposer עלול להישאר במצב המתנה עם תוכן שניתן להזזה (Ie5416, ‏ b/409267170)
  • הסדר שבו onReuse ו-onDeactivate יכולים להתהפך במהלך קומפוזיציה שאפשר להשהות. הן מתרחשות עכשיו בוודאות לפי הסדר onDeactivate/onReuse. (I996e4, b/404058957)
  • תיקון השליחה של observers שזוכרים בהרכב שניתן להשהיה כדי למנוע שליחה של remembered/forgotten באותו apply (I570b2, b/404645679, b/407931790)
  • החלפנו את LifecycleRegistry למצב לא בטוח ב-Compose Multiplatform כדי להשבית את הבדיקות של MainThread ולתקן בעיות שקשורות לשרשור. פרטים נוספים זמינים במאמר CMP-8227. (Icee87)

External Contribution

  • תוקן באג שמשפיע על משתמשי Molecule, שבו שימוש ב-RecompositionMode.Immediate עלול לגרום להחמצת קומפוזיציות מחדש. (I9f3a9, ‏ b/419527812)
  • ‫Exposed PausableComposition isApplied ו-isCancelled getters שמאפשרים לבדוק את המצב של PausableComposition. (I994aa)
  • הוספת AnnotationTarget.FUNCTION להערה FunctionKeyMeta. (I08021)

גרסה ‎1.9.0-alpha04

‫4 ביוני 2025

‫androidx.compose.runtime:runtime-*:1.9.0-alpha04 מופץ. גרסה ‎1.9.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • ‫SnapshotStateSet כולל עכשיו Parcelable ב-Android, ולכן אפשר להשתמש בו כחלק מ-rememberSaveable { ... }. (I755dd, ‏ b/378623803)
  • ‫SnapshotStateList כולל עכשיו Parcelable ב-Android, ולכן אפשר להשתמש בו כחלק מ-rememberSaveable { ... }. ‫(Id18be, ‏ b/378623803)
  • ‫movableContentOf() מסומן עכשיו בהערה @RememberInComposition, שמאפשרת ל-lint לזהות שימושים שגויים (I2738d)
  • עדכון של ה-API הניסיוני של כלי המעקב אחר קומפוזיציה כדי לאפשר מעקב מקיף יותר אחר הסיבות לרה-קומפוזיציה (I32b6a)

תיקוני באגים

  • תוקנה בעיה בסדר השליחה של onForgotton, שיכולה לגרום, למשל, להפעלה של onDispose של אפקטים חד-פעמיים בסדר שגוי. ‫(Ic1c91, ‏ b/417450712)
  • תיקון לשימוש חוזר בטיפול במצב בהרכב שניתן להשהיה (Ife96e, ‏ b/404058957)
  • תיקון באג קטן כדי להפוך את זיהוי אוספים שניתנים לשינוי לתואם ל-K1 ול-K2 (Ie4878)
  • תיקון באג קל שנועד להפוך את החיפוש של הערות בשיטות גישה שהוחלפו לנכסים לתואם גם ל-K1 וגם ל-K2 (I9900d)

External Contribution

  • תוקן באג שמשפיע על משתמשי Molecule, שבו שימוש ב-RecompositionMode.Immediate עלול לגרום להחמצת קומפוזיציות מחדש. (I9f3a9, ‏ b/419527812)
  • הוספנו getters של PausableComposition isApplied ו-isCancelled שמאפשרים לבדוק את המצב של PausableComposition. (I994aa)

גרסה ‎1.9.0-alpha03

‫20 במאי 2025

‫androidx.compose.runtime:runtime-*:1.9.0-alpha03 מופץ. גרסה ‎1.9.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • כדי להתכונן לפיתוח עתידי של התכונה הזו, צריך לשנות את הערך setDiagnosticStackTraceEnabled ל-experimental. (I11db3)

תיקוני באגים

  • תוקן באג שקשור לשימוש חוזר במצב כשקומפוזיציה הושהתה והופעלה מחדש, אבל היה צורך להרכיב מחדש מצב מסוים שהושהה קודם לכן כי מצב מסוים שהיא קראה השתנה בזמן שהקומפוזיציה הושהתה. (I441d1, b/416209738)
  • הושלם התיקון של הבעיה b/404058957 בנוגע לשיגור של קומפוזיציה שאפשר להשהות. התיקון הקודם היה חלקי. (I1afd4, b/404058957)
  • ‫SaveableStateHolder.SaveableStateProvider מספק עכשיו LocalSavedStateRegistryOwner לתוכן שלו באמצעות קומפוזיציה. (Ia2761, ‏ b/413108878)
  • ‫androidx.compose.runtime.saveable תלוי עכשיו ב-androidx.lifecycle.runtime.compose. (I53228, b/413108878)

גרסה ‎1.9.0-alpha02

‫7 במאי 2025

‫androidx.compose.runtime:runtime-*:1.9.0-alpha02 מופץ. גרסה ‎1.9.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • הוצא משימוש rememberSaveable עם 'מפתח' מותאם אישית. הוא עוקף את הגדרת ההיקף לפי מיקום, מה שמוביל לבאגים במצב ולתנהגות לא עקבית (למשל, שיתוף או אובדן מצב לא מכוונים, בעיות ב-LazyLayouts מוטבעים). כדי להשתמש בהגדרת היקף לפי מיקום למצב עקבי עם היקף מקומי, צריך להסיר את הפרמטר key. פרטים נוספים זמינים בהודעת ה-commit המלאה. (I5e6ff, ‏ b/357685851)

תיקוני באגים

  • ‫OffsetApplier מחליף עכשיו בצורה נכונה את apply(), שהוצג עם האפשרות להשהות את ההרכבה. אם לא תהיה לכם האפשרות הזו, יכול להיות שעדכון של צמתים וירטואליים יגרום לקומפוזיציה שניתן להשהות להקפיץ הודעת שגיאה (throw) כשהיא מעדכנת צמתים וירטואליים. (Idbf31, ‏ b/409291131)
  • תוקן מצב של קיפאון שיכול להשפיע על משתמשי Molecule כששיחה מושעית ל-FrameClock.withFrameNanos מבוטלת בזמן שפריים נשלח. (I89cab, b/407027032)
  • יכול להיות שהכלי ליצירת קומפוזיציה מחדש יעבור למצב בלי פעילות בזמן שהמצב של התוכן הניתן להזזה עדיין בהמתנה להסרה. בדרך כלל זה לא קורה כי מצב התוכן הניתן להזזה נמחק בלולאה הראשית של Recomposer. עם זאת, זה יכול לקרות בקומפוזיציה שניתן להשהות כשמבטלים את התוכן הניתן להזזה במהלך resume()(Ie5416, b/409267170)
  • הסדר שבו onReuse ו-onDeactivate יכולים להתהפך במהלך קומפוזיציה שאפשר להשהות. עכשיו מובטח שהם יתרחשו לפי הסדר onDeactivate/onReuse. (I996e4, b/404058957)

גרסה ‎1.9.0-alpha01

‫23 באפריל 2025

‫androidx.compose.runtime:runtime-*:1.9.0-alpha01 מופץ. גרסה ‎1.9.0-alpha01 מכילה את השמירות האלה.

שינויים בהתנהגות

  • בדיקות ה-Lint שנשלחות עם Compose דורשות עכשיו גרסת AGP מינימלית של 8.8.2. אם אין לכם אפשרות לשדרג את AGP, אתם יכולים לשדרג את Lint בנפרד באמצעות android.experimental.lint.version=8.8.2 (או גרסה חדשה יותר) בקובץ gradle.properties. כדי להריץ בדיקות lint של Compose בתוך סביבת הפיתוח המשולבת (IDE), צריך להשתמש ב-Android Studio Ladybug או בגרסה חדשה יותר.

שינויים ב-API

  • התכונה currentCompositeKeyHash הוצאה משימוש. במקומה צריך להשתמש במדיניות currentCompositeKeyHashCode. ה-API החלופי מקודד את אותו הגיבוב עם יותר ביטים, מה שמקטין באופן משמעותי את הסיכוי שלשתי קבוצות אקראיות לא קשורות בהיררכיית ההרכבה יהיה אותו מפתח גיבוב. (I4cb6a, b/177562901)
  • כדי להשתמש בפרויקטים שפורסמו עם Kotlin 2.0, צריך KGP 2.0.0 או גרסה חדשה יותר (Idb6b5)
  • האפליקציות @Stable,‏ @Immutable ו-@StableMarker הועברו ל-runtime-annotation (באופן תואם). עכשיו אפשר להסתמך על runtime-annotation אם רוצים להשתמש באנוטציות האלה מספרייה שלא תלויה ב-Compose. (I23a16)
  • הפונקציות onCreating ו-onDisposing הוסרו כי הן הוצאו משימוש ושמן שונה ל-onPreCreate ול-onPreDispose. השינוי הזה משלים את שינוי השם. (I97461)
  • הוספת קומפוזיציה מקומית שמאפשרת לצרף מעקב אחר מחסנית (stack trace) של קומפוזיציה על סמך מיקום של צומת קומפוזיציה בקומפוזיציה. (Ie0bda, ‏ b/354163858)
  • הוספנו אבחון של עקבות מחסנית של Compose על סמך פרטי המקור שמאוחסנים בקומפוזיציה. (I3db9f, ‏ b/354163858)
  • הוצאנו משימוש את runWithTimingDisabled לטובת runWithMeasurementDisabled, שמתאר בצורה ברורה יותר את ההתנהגות – כל המדדים מושהים. בנוסף, צריך לחשוף את מחלקת העל MicrobenchmarkScope כי אי אפשר להצהיר מחדש על הפונקציה runWithMeasurementDisabled כדי לפתוח גישה, כי היא מוטבעת. (I9e23b, ‏ b/389149423, ‏ b/149979716)
  • הוספה של @FrequentlyChangingValue: הערה שיכולה לסמן פונקציות ושיטות לקבלת מאפיינים, כדי לציין שאסור לקרוא להן ישירות בתוך קומפוזיציה, כי זה עלול לגרום לקומפוזיציות חוזרות לעיתים קרובות. לדוגמה, כדי לסמן ערכים של מיקום גלילה וערכים של אנימציה. האזהרות מגיעות מבדיקת lint תואמת. (I83630, b/234042500)
  • מוסיף @RememberInComposition: הערה שיכולה לסמן בנאים, פונקציות ושיטות גישה למאפיינים, כדי לציין שאסור לקרוא להם ישירות בתוך קומפוזיציה, בלי לזכור אותם. השגיאות יופיעו בבדיקת ה-lint המתאימה. אפשר להשתמש בהערה הזו כדי לסמן הצהרות שמחזירות אובייקטים עם מצב או אובייקטים שניתנים לשינוי, אובייקטים שהזהות שלהם חשובה לשמירה בין קומפוזיציות, או אובייקטים שדורשים הרבה משאבים ליצירת מופע וצריך לשמור אותם במטמון בין קומפוזיציות. (Ie7db0)
  • נוספה rememberSaveable עומס יתר חדש שתומך ב-KSerializer לשימור מצב בטוח לסוג באמצעות KotlinX Serialization. ממשק ה-API הקיים שמבוסס על Saver עדיין נתמך. ‫(Iea4ab, ‏ b/376028110)

תיקוני באגים

  • תיקון השליחה של observers שזוכרים בהרכב שניתן להשהיה כדי למנוע שליחה של remembered/forgotten באותו apply (I570b2, b/404645679, b/407931790)
  • שינינו את השם של שיטות SnapshotObserver onCreating ל-onPreCreate ושל onDisposing ל-onPreDispose כדי להתאים להנחיות בנושא API. השיטות הקודמות הוצאו משימוש, והשיטות החדשות מוגדרות כברירת מחדל להפעלת השיטות הישנות, כך שהטמעות קיימות של הממשק הזה ימשיכו לפעול עד שהשיטות יוסרו. ה-methods האלה יוסרו בגרסת אלפא 1.9.0 ב-CL שיפורסם בקרוב אחרי זה. הם יוסרו מגרסת בטא 1.8 לפני גרסה יציבה 1.8. (I6d753)
  • תוקנה בעיה שבה ערכים שנשמרו נשכחו בטעות וחושבו מחדש כשבוצעה הרכבה מחדש של קבוצה שהושמטה והופיעה אחרי קבוצה שאפשר להזיז (I62cab, ‏ b/383769314)
  • הוספנו תמיכה ביצירת עקבות מחסנית ב-LaunchedEffect וב-rememberCoroutineScope (I705c0, ‏ b/354163858)
  • כדי להריץ בדיקות lint ב-Compose, צריך עכשיו גרסת AGP מינימלית של 8.8.2 משורת הפקודה, ולפחות Android Studio Ladybug לתמיכה ב-IDE. אם אתם משתמשים בגרסה ישנה יותר של AGP, אתם יכולים להגדיר את android.experimental.lint.version=8.8.2 בקובץ gradle.properties כדי לשדרג את גרסת Lint בלי להשפיע על AGP. (I6f2a8)

External Contribution

  • הוספת AnnotationTarget.FUNCTION להערה FunctionKeyMeta. (I08021)

גרסה 1.8

גרסה 1.8.3

‫18 ביוני 2025

‫androidx.compose.runtime:runtime-*:1.8.3 מופץ. גרסה 1.8.3 מכילה את השמירות האלה.

גרסה 1.8.2

‫20 במאי 2025

‫androidx.compose.runtime:runtime-*:1.8.2 מופץ. גרסה 1.8.2 מכילה את השמירות האלה.

גרסה 1.8.1

‫7 במאי 2025

‫androidx.compose.runtime:runtime-*:1.8.1 מופץ. גרסה 1.8.1 מכילה את השמירות האלה.

גרסה 1.8.0

‫23 באפריל 2025

‫androidx.compose.runtime:runtime-*:1.8.0 מופץ. גרסה 1.8.0 מכילה את השמירות האלה.

גרסה ‎1.8.0-rc03

‫9 באפריל 2025

‫androidx.compose.runtime:runtime-*:1.8.0-rc03 מופץ. גרסה ‎1.8.0-rc03 מכילה את השמירות האלה.

גרסה ‎1.8.0-rc02

‫26 במרץ 2025

‫androidx.compose.runtime:runtime-*:1.8.0-rc02 מופץ. גרסה ‎1.8.0-rc02 מכילה את השמירות האלה.

גרסה ‎1.8.0-rc01

‫12 במרץ 2025

‫androidx.compose.runtime:runtime-*:1.8.0-rc01 מופץ. גרסה ‎1.8.0-rc01 מכילה את השמירות האלה.

שינויים ב-API

  • שינינו את השם של שיטות SnapshotObserver onCreating ל-onPreCreate ושל onDisposing ל-onPreDispose כדי להתאים להנחיות בנושא API. השיטות הקודמות הוצאו משימוש, והשיטות החדשות מוגדרות כברירת מחדל להפעלת השיטות הישנות, כך שהטמעות קיימות של הממשק הזה ימשיכו לפעול עד שהשיטות יוסרו. ה-methods האלה יוסרו בגרסת אלפא 1.9.0 ב-CL שיפורסם בקרוב אחרי זה. הם יוסרו מגרסת בטא 1.8 לפני גרסה יציבה 1.8. (I6d753)

גרסה ‎1.8.0-beta03

‫26 בפברואר 2025

‫androidx.compose.runtime:runtime-*:1.8.0-beta03 מופץ. גרסה ‎1.8.0-beta03 מכילה את השמירות האלה.

גרסה ‎1.8.0-beta02

‫12 בפברואר 2025

‫androidx.compose.runtime:runtime-*:1.8.0-beta02 מופץ. גרסה ‎1.8.0-beta02 מכילה את השמירות האלה.

תיקוני באגים

  • הקפצת הודעת שגיאה (throw) לחריגה שנתפסה בקומפוזיציה שאפשר להשהות .(384486d)

גרסה ‎1.8.0-beta01

‫29 בינואר 2025

‫androidx.compose.runtime:runtime-*:1.8.0-beta01 מופץ. גרסה ‎1.8.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • תוקנה בעיה שבה העלאה של throwable במהלך יצירה שלא מורחבת מ-Exception עלולה לגרום לשגיאה 'היצירה בהמתנה לא הוחלה'. (I356be, b/382094412)

גרסה ‎1.8.0-alpha08

‫15 בינואר 2025

‫androidx.compose.runtime:runtime-*:1.8.0-alpha08 מופץ. גרסה ‎1.8.0-alpha08 מכילה את השמירות האלה.

גרסה ‎1.8.0-alpha07

‫11 בדצמבר 2024

‫androidx.compose.runtime:runtime-*:1.8.0-alpha07 מופץ. גרסה ‎1.8.0-alpha07 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף API של כלי עזר שעוזר לכלי לבדיקת פריסות לקשר בין קומפוזיציות משנה לקומפוזיציית האב במקרים שבהם צומת לא משמש לגישור בין הקומפוזיציות. (I4ce3d)
  • הפכנו את הקבועים האריתמטיים והמיוחדים של SnapshotId לפנימיים במקום לציבוריים. אם צריך, אפשר לבצע פעולות אריתמטיות על SnasphotId על ידי המרה שלו ל-Int או ל-Long באמצעות toInt() או toLong() בהתאמה. (Ic3a57)

External Contribution

  • אופטימיזציה של האחסון לפרמטרים movableContentOf. (ed87177)

גרסה ‎1.8.0-alpha06

‫13 בנובמבר 2024

‫androidx.compose.runtime:runtime-*:1.8.0-alpha06 מופץ. גרסה ‎1.8.0-alpha06 מכילה את השמירות האלה.

שינויים ב-API

  • שינויים ב-PausableComposition API. אלה שינויים שגורמים לשבירת תאימות בהשוואה לגרסאות קודמות של 1.8.0-alpha (מאז 1.8.0-alpha02), אבל מכיוון שאלה ממשקי API חדשים בגרסה 1.8.0, לא נשמרת תאימות לאחור כי ממשקי ה-API עדיין בגרסת אלפא. (I39819)
  • נוספו ממשקי API של כלי תצפית ליצירת קומפוזיציות חדשות ב-Recomposer (Iaeb7e)
  • הוספנו את snapshotId, מסוג Long, אל Snapshot והוצאנו משימוש את id. המזהה של תמונת מצב השתנה מ-Int ל-Long כדי למנוע גלישה של מזהה תמונת המצב במערכות עם קצב פריימים גבוה מאוד ואנימציות ארוכות. הסוג הוגדר כ-expect/actual כדי לאפשר לסוג הזה להיות Int או סוג אחר בפלטפורמות שאין בהן סוג Long מקורי. בפלטפורמות שאין להן Long מקורי, כמו JavaScript, כדאי להימנע מקצב פריימים גבוה (מעל 1,000 FPS) כי הוא עלול לגרום להצפה של Int בערך כל 24 ימים. ‫(I38ac3, ‏ b/374821679)

תיקוני באגים

גרסה ‎1.8.0-alpha05

‫30 באוקטובר 2024

‫androidx.compose.runtime:runtime-*:1.8.0-alpha05 מופץ. גרסה ‎1.8.0-alpha05 מכילה את השמירות האלה.

תיקוני באגים

  • תיקון גלישת מחסנית (stack overflow) בהוספת Int.MAX_VALUE אל SnapshotIdSet. (b/370536104, Ic4179f6)
  • מיקרו-אופטימיזציות בזמן ריצה (I50c60)
  • מאפשרים ל-R8 להסיר קריאות של בדיקות זמן ריצה לניפוי באגים (I8c44)
  • הפיכת compoundKeyOf לאיטרטיבי במקום רקורסיבי (I5817f)

External Contribution

  • הטמעה של ערימות עם רשימות אוספים (I7d47c)

גרסה ‎1.8.0-alpha04

‫16 באוקטובר 2024

‫androidx.compose.runtime:runtime-*:1.8.0-alpha04 מופץ. גרסה ‎1.8.0-alpha04 מכילה את השמירות האלה.

שיפורים בביצועים

  • הוספת מזהה של תמונת מצב לרשומות של מצב ב-constructor (85c00f)
  • שינוי מבנה הקוד SnapshotState*** כדי למנוע שגיאות באימות המחלקה (6ee4a6)
  • תיקון כללי R8 כדי למנוע הטמעה של throw (5beb92)
  • אופטימיזציה של פעולות ברמת המיקרו (d73c5c)
  • אופטימיזציהSynchronizedObject של הקצאות ב-JVM‏ (2b043f)

גרסה ‎1.8.0-alpha03

‫2 באוקטובר 2024

‫androidx.compose.runtime:runtime-*:1.8.0-alpha03 מופץ. גרסה ‎1.8.0-alpha03 מכילה את השמירות האלה.

שיפורים בביצועים

  • יצירת הקשר של צאצאים באופן עצלני עבור rememberCoroutineScope (f61464)
    • בדרך כלל משתמשים ב-rememberCoroutineScope כדי להפעיל קורוטינות בתגובה לאירועים שקורים אחרי ההרכבה. במקרים מסוימים, האירועים האלה לא מתרחשים אף פעם, מה שמוביל לעלויות נוספות של יצירת משימות וביטולן ללא כל תועלת.
    • הגדרת ההיקף שמוחזר על ידי rememberCoroutineScope יוצרת את coroutineContext באופן עצלני כשניגשים אליו, וכך נמנעת יצירה וביטול של משימות אם לא נעשה שימוש בהיקף.

גרסה ‎1.8.0-alpha02

‫18 בספטמבר 2024

‫androidx.compose.runtime:runtime-*:1.8.0-alpha02 מופץ. גרסה ‎1.8.0-alpha02 מכילה את השמירות האלה.

תכונות חדשות

  • נוספה האפשרות PausableComposition ליצירת קומפוזיציה משנית שאפשר להשהות במהלך הקומפוזיציה ולהחיל אותה באופן אסינכרוני על הקומפוזיציה. כדי להשהות את התהליך, שכרגע נמצא בפיתוח, צריך תמיכה בקומפיילר. (I3394b)

גרסה ‎1.8.0-alpha01

‫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 ארטיפקטים נוספו. היעדים האלה לא מיועדים לשימוש, הם משמשים כ-placeholder כדי לתמוך במאמצי הפיתוח של Jetbrains Compose.

גרסה 1.7.0

‫4 בספטמבר 2024

‫androidx.compose.runtime:runtime-*:1.7.0 מופץ. גרסה 1.7.0 מכילה את השמירות האלה.

שינויים חשובים מאז גרסה 1.6.0

  • נוספה האפשרות לספק קומפוזיציה מקומית שמחושבת על סמך הערכים של קומפוזיציות מקומיות אחרות, או כברירת מחדל באמצעות compositionLocalWithComputedDefault(), או על ידי אספקת lambda לחישוב הערך באמצעות providesComputed במקום provides.
  • אפשר לקבל את הערך של קומפוזיציה מקומית באמצעות המאפיין currentValue של הקומפוזיציה המקומית שאפשר לגשת אליה מתוך פונקציית ה-lambda שמחשבת את הערך. האפשרות הזו משמשת במקום current, שאפשר לגשת אליה רק בפונקציות @Composable. (Iadbc0)
  • אפשר לגשת באופן מיידי לאובייקטים של מצב שנוצרו לאחרונה מתוך קובצי snapshot אחרים, כולל קובץ ה-snapshot הגלובלי, עם המצב ההתחלתי שלהם. שינויים נוספים לא יהיו גלויים עד שתחילו את התמונה של מצב האובייקט שנוצרה.
  • המצב הראשוני של mutableStateOf(), וגם של הגרסאות הפרימיטיביות שלו, הוא הערך שמועבר כפרמטר אל mutableStateOf(). המצב ההתחלתי של mutableStateListOf() ו-mutableStateMapOf() הוא ריק.
  • נוספו Snapshot.isInSnapshot ו-Snapshot.PreexistingSnapshotId שמשמשים להפעלת אובייקט מצב כדי לתמוך בגישה מיידית מ-snapshot גלובלי עם היצירה שלו.
  • אפשר לגשת לאובייקטים של מצב מותאם אישית באופן מיידי אם פועלים לפי דפוס השינויים שבוצעו באובייקטים המובנים של התמונה. (I84a17)
  • הפעלת nonSkippingGroupOptimization בספריות של כתיבת שירים. כתוצאה מכך, הקוד שנוצר לכל הפונקציות הניתנות להרכבה שאי אפשר להפעיל מחדש ב-androidx יהיה יעיל יותר. בעתיד אנחנו מתכננים להפעיל את האפשרות הזו כברירת מחדל. I(acbc08)
  • פסילת ביטויי למדה שניתנים להרכבה בהרכבות משנה באותו פריים. (98301c)
  • הפעלת הקריאה החוזרת 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-beta05

‫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-beta03

‫12 ביוני 2024

‫androidx.compose.runtime:runtime-*:1.7.0-beta03 מופץ. גרסה ‎1.7.0-beta03 מכילה את השמירות האלה.

גרסה ‎1.7.0-beta02

‫29 במאי 2024

‫androidx.compose.runtime:runtime-*:1.7.0-beta02 מופץ. גרסה ‎1.7.0-beta02 מכילה את השמירות האלה.

גרסה ‎1.7.0-beta01

‫14 במאי 2024

‫androidx.compose.runtime:runtime-*:1.7.0-beta01 מופץ. גרסה ‎1.7.0-beta01 מכילה את השמירות האלה.

גרסה ‎1.7.0-alpha08

‫1 במאי 2024

‫androidx.compose.runtime:runtime-*:1.7.0-alpha08 מופץ. גרסה ‎1.7.0-alpha08 מכילה את השמירות האלה.

גרסה ‎1.7.0-alpha07

‫17 באפריל 2024

‫androidx.compose.runtime:runtime-*:1.7.0-alpha07 מופץ. גרסה ‎1.7.0-alpha07 מכילה את השמירות האלה.

תכונות חדשות

  • נוספה האפשרות לספק קומפוזיציה מקומית שמחושבת על סמך הערכים של קומפוזיציות מקומיות אחרות, או כברירת מחדל באמצעות compositionLocalWithComputedDefault(), או על ידי אספקת lambda לחישוב הערך באמצעות providesComputed במקום provides.
  • אפשר לקבל את הערך של קומפוזיציה מקומית באמצעות המאפיין currentValue של הקומפוזיציה המקומית שאפשר לגשת אליה מתוך פונקציית ה-lambda שמחשבת את הערך. האפשרות הזו משמשת במקום current, שאפשר לגשת אליה רק בפונקציות @Composable. (Iadbc0)

שינויים ב-API

  • אפשר לגשת באופן מיידי לאובייקטים של מצב שנוצרו לאחרונה מתוך קובצי snapshot אחרים, כולל קובץ ה-snapshot הגלובלי, עם המצב ההתחלתי שלהם. שינויים נוספים לא יהיו גלויים עד שתחילו את התמונה של מצב האובייקט שנוצרה.
  • המצב הראשוני של mutableStateOf(), וגם של הגרסאות הפרימיטיביות שלו, הוא הערך שמועבר כפרמטר אל mutableStateOf(). המצב ההתחלתי של mutableStateListOf() ו-mutableStateMapOf() הוא ריק.
  • נוספו Snapshot.isInSnapshot ו-Snapshot.PreexistingSnapshotId שמשמשים להפעלת אובייקט מצב כדי לתמוך בגישה מיידית מ-snapshot גלובלי עם היצירה שלו.
  • אפשר לגשת לאובייקטים של מצב מותאם אישית באופן מיידי אם פועלים לפי דפוס השינויים שבוצעו באובייקטים המובנים של התמונה. (I84a17)

תיקוני באגים

  • תוקן מיזוג של readObserver בתמונות מצב מוטמעות. הבעיה הזו גרמה למצבים נגזרים מוטמעים להיות לא תקפים כשמשתמשים בהם בתוך snapshotFlow. (Idf138)

גרסה ‎1.7.0-alpha06

‫3 באפריל 2024

‫androidx.compose.runtime:runtime-*:1.7.0-alpha06 מופץ. גרסה ‎1.7.0-alpha06 מכילה את השמירות האלה.

תיקוני באגים

  • תיקון הטיפול באספקת ערכים יחידים providesDefault (538f45)
  • מניעת מצב של קיפאון ב-Recomposer בזמן גישה לשעון הפריימים (07e5c6)

גרסה ‎1.7.0-alpha05

‫20 במרץ 2024

‫androidx.compose.runtime:runtime-*:1.7.0-alpha05 מופץ. גרסה ‎1.7.0-alpha05 מכילה את השמירות האלה.

תיקוני באגים

  • ניקוי שינויים מאוחרים ביצירה מוזיקלית שהושבתה (5950bc)

גרסה ‎1.7.0-alpha04

6 במרץ 2024

‫androidx.compose.runtime:runtime-*:1.7.0-alpha04 מופץ. גרסה ‎1.7.0-alpha04 מכילה את השמירות האלה.

שיפורים בביצועים

  • הפעלת Snapshot.current פעם אחת לכל הערכת מצב נגזר (ee7daf)
  • קריאה של currentRecord פעם אחת לכל תצפית בהרכב (b882b2)
  • הסרה של הקצאת איטרטורים לא מכוונת ב-snapshotFlow (231e56)
  • הפעלת nonSkippingGroupOptimization בספריות של כתיבת שירים. כתוצאה מכך, הקוד שנוצר לכל הפונקציות הניתנות להרכבה שאי אפשר להפעיל מחדש ב-androidx יהיה יעיל יותר. בעתיד אנחנו מתכננים להפעיל את האפשרות הזו כברירת מחדל. I(acbc08)

גרסה ‎1.7.0-alpha03

‫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-alpha02

‫7 בפברואר 2024

‫androidx.compose.runtime:runtime-*:1.7.0-alpha02 מופץ. גרסה ‎1.7.0-alpha02 מכילה את השמירות האלה.

תיקוני באגים

  • פסילת ביטויי למדה שניתנים להרכבה בהרכבות משנה באותו פריים. (98301c)
  • הפעלת הקריאה החוזרת onRelease באותו סדר כמו onForgotten. (2cd790)
  • המסנן שינה מצבים שלא נצפו ב-snapshotFlow. (796b80)

שיפורים בביצועים

  • שינוי של snapshot observer במקום, אם הוא כבר שקוף. (f60f30)
  • אופטימיזציה של SnapshotIdSet.lowest(). (7ae149)
  • שימוש ב-fold() ללא הקצאה ב-SnapshotIdSet. (532b7d)
  • הסרת הקצאת איטרטור (83f96b)

גרסה ‎1.7.0-alpha01

‫24 בינואר 2024

‫androidx.compose.runtime:runtime-*:1.7.0-alpha01 מופץ. גרסה ‎1.7.0-alpha01 מכילה את השמירות האלה.

אופטימיזציה של הביצועים

  • הוספת אפשרות ליצור משבצות אחרי הוספה של קבוצת ילדים (b5960c)
  • אופטימיזציה של שינויים בתיעוד של מצבי תמונת מצב (28c3fe)
  • הפעלת מצב דילוג חזק (ed1766)

תיקוני באגים

  • חשבון למטא של פרמטר ברירת מחדל בפונקציה המובנית remember (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, ‏ b/254645321)
  • מחזורי החיים של הטריגר RememberObserver מופעלים רק כשהוא מאוחסן בחישוב של remember. (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-beta03

‫13 בדצמבר 2023

‫androidx.compose.runtime:runtime-*:1.6.0-beta03 מופץ. גרסה ‎1.6.0-beta03 מכילה את השמירות האלה.

גרסה ‎1.6.0-beta02

‫29 בנובמבר 2023

‫androidx.compose.runtime:runtime-*:1.6.0-beta02 מופץ. גרסה ‎1.6.0-beta02 מכילה את השמירות האלה.

גרסה ‎1.6.0-beta01

‫15 בנובמבר 2023

‫androidx.compose.runtime:runtime-*:1.6.0-beta01 מופץ. גרסה ‎1.6.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • הפצת ערכים מסוימים של יציבות בהערה. (274a4c)

תיקוני באגים

  • שימוש במדיניות הפניה להרכבת מצב של היקף מקומי בהקשר. (83361c)
  • הגבלת השימוש ב-‎ $dirty capture לביטויי למדה מוטבעים. (acfca0)
  • תוקנה בעיה שבה תוכן שאפשר להזיז קיבל לפעמים את הלוקאלים הלא נכונים של הקומפוזיציה. (035cd6)
  • שימוש במיפוי האש מהיר יותר שלא מקצה זיכרון ב-RecomposeScopeImpl. (d79494)
  • שימוש בחשבון ObjectIntMap ב-DerivedState. (21862e)
  • משתמשים ב-IntRef עבור הערך השלם SnapshotThreadLocal ב-DerivedState. (04eaf4)

גרסה ‎1.6.0-alpha08

‫18 באוקטובר 2023

‫androidx.compose.runtime:runtime-*:1.6.0-alpha08 מופץ. גרסה ‎1.6.0-alpha08 מכילה את השמירות האלה.

תיקוני באגים

  • מחזורי החיים של הטריגר RememberObserver מופעלים רק כשהוא מאוחסן בחישוב של remember. (f6b4dc)
  • שיפור המיון של ההקצאות ברשימת הפסילות. (954d63)
  • שימוש במפות חדשות שלא מקצות זיכרון ב-SnapshotStateObserver. (4303ce)
  • ניקוי ביטולים כשמשביתים את ההרכבה. (e001be)

גרסה ‎1.6.0-alpha07

‫4 באוקטובר 2023

‫androidx.compose.runtime:runtime-*:1.6.0-alpha07 מופץ. גרסה ‎1.6.0-alpha07 מכילה את השמירות האלה.

שינויים ב-API

  • המשחק SnapshotStateList מסומן עכשיו כ-RandomAccess כדי לאפשר שימוש בגרסת האינדוקס הישיר של כלי העזרה לרשימות. ‫(I5210c, ‏ b/219554654)

גרסה ‎1.6.0-alpha06

‫20 בספטמבר 2023

‫androidx.compose.runtime:runtime-*:1.6.0-alpha06 מופץ. גרסה ‎1.6.0-alpha06 מכילה את השמירות האלה.

גרסה ‎1.6.0-alpha05

‫6 בספטמבר 2023

‫androidx.compose.runtime:runtime-*:1.6.0-alpha05 מופץ. גרסה ‎1.6.0-alpha05 מכילה את השמירות האלה.

גרסה ‎1.6.0-alpha04

‫23 באוגוסט 2023

‫androidx.compose.runtime:runtime-*:1.6.0-alpha04 מופץ. גרסה ‎1.6.0-alpha04 מכילה את השמירות האלה.

תכונות חדשות

  • העברה מחדש של חריגים שמוסתרים במהלך לולאת הרה-קומפוזיציה (4dff9a)

שינויים ב-API

  • נוספה שיטה להשבתה של ReusableComposition, שמאפשרת להסיר תצפיות אבל לשמור את הצמתים במקומם. אפשר להפעיל מחדש את הקומפוזיציה שהושבתה על ידי קריאה ל-setContent. (Ib7f31)
  • הוספת ממשק ReusableComposition לניהול מחזור החיים של רכיבי משנה ולשימוש חוזר בהם. (I812d1, ‏ b/252846775)

גרסה ‎1.6.0-alpha03

‫9 באוגוסט 2023

‫androidx.compose.runtime:runtime-*:1.6.0-alpha03 מופץ. גרסה ‎1.6.0-alpha03 מכילה את השמירות האלה.

תיקוני באגים

  • תיקון אופטימיזציה חדשה CompositionLocalProvider (3118e88)
  • תיקון האופן שבו מפורקים צמתי תוכן שניתן להעביר. (5e3d59b)

גרסה ‎1.6.0-alpha02

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, b/288169379)

תיקוני באגים

  • תיקון דליפת זיכרון בטבלת המשבצות (73fcfe)
  • תיקון של אופן השחזור של rememberSaveable כשstateSaver מחזירה null ‏ (90748c)

גרסה ‎1.6.0-alpha01

‫21 ביוני 2023

‫androidx.compose.runtime:runtime-*:1.6.0-alpha01 מופץ. גרסה ‎1.6.0-alpha01 מכילה את השמירות האלה.

תיקוני באגים

  • דילוג על הרכבה מחדש של קומפוזיציות משנה שיוסרו. (Ieeb99, ‏ b/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, ‏ b/254645321)
  • לא לשמור הפניה ל-snapshot ב-ComposerImpl (0206f7)
  • לא להחיל קומפוזיציה פעמיים (f5791b)
  • הבטחת ביטול תוקף לערכי מצב נגזרים שלא אותחלו (aa2a92)
  • התקשרות אל onEndChanges במהלך סילוק הקומפוזיציה. (62cc8c)
  • תיקון של העברת תוכן לקומפוזיציה משנית (4beb41)
  • תיקון פוטנציאלי של מצבי קיפאון (c1a425 ו-8edce0)
  • הכלי ליצירת קומפוזיציה שנוצר לחלון Android יחסום עכשיו רק שיחות ל-withFrameNanos במקום את כל הקומפוזיציה כשהוא מקבל התראה על ON_STOP. המשמעות היא שחלונות שמשויכים לפעילויות שהופסקו ימשיכו להרכיב מחדש שינויים בנתונים, אבל האנימציות או כל קריאה אחרת של withFrameNanos ייחסמו. ‫(Id9e7f, ‏ b/240975572)
  • הפעלת קריאות חוזרות לביטול ההפעלה של LayoutNode לפני השבתת האפקטים 3784073
  • תיקון שינויים בסימונים של פונקציות Lambda שהופעלו מחדש ea81df9
  • תיקון באג שקשור לעריכה בזמן אמת ב-Composable עם צמתים 73fd4d8
  • הפונקציה ON_STOP צריכה להשהות את השידורים של שעון הפריימים במקום את הקומפוזיציה ae276f1
  • הוצאה משימוש של היקפי SnapshotStateObserver למצבים נגזרים שלא השתנו 84d9b1c
  • תיקון פוטנציאלי של מצב deadlock במהלך סילוק של קומפוזיציות 28761fc
  • פתרון בעיות בהעברת תוכן לקומפוזיציה משנית 92d4156
  • תיקון של דגלים שהשתנו עבור פונקציות Lambda שהופעלו מחדש (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-beta03

‫28 ביוני 2023

‫androidx.compose.runtime:runtime-*:1.5.0-beta03 מופץ. גרסה ‎1.5.0-beta03 מכילה את השמירות האלה.

תיקוני באגים

  • דילוג על הרכבה מחדש של קומפוזיציות משנה שיוסרו. (Ieeb99, ‏ b/254645321)

גרסה ‎1.5.0-beta02

‫7 ביוני 2023

‫androidx.compose.runtime:runtime-*:1.5.0-beta02 מופץ. גרסה ‎1.5.0-beta02 מכילה את השמירות האלה.

שיפורים בביצועים

  • אם התמונה לא שונתה, לא כדאי לחשב את readableHash ב-DerivedState. (307102)

גרסה ‎1.5.0-beta01

‫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 )
  • לא לשמור הפניה ל-snapshot ב-ComposerImpl (0206f7)
  • ביטול מהיר של כתיבת הודעה CoroutineScopes (a55362 ו-bd382f)
  • לא להחיל קומפוזיציה פעמיים (f5791b)
  • הבטחת ביטול תוקף לערכי מצב נגזרים שלא אותחלו (aa2a92)
  • התקשרות אל onEndChanges במהלך סילוק הקומפוזיציה. (62cc8c)
  • תיקון של העברת תוכן לקומפוזיציה משנית (4beb41)
  • תיקון פוטנציאלי של מצבי קיפאון (c1a425
  • הפונקציה ON_STOP צריכה להשהות את השידורים של שעון המסגרת במקום את הקומפוזיציה (f4a2d1)
  • תיקון של דגלים שהשתנו עבור פונקציות Lambda שהופעלו מחדש (8a03e9)
  • הפעלת קריאות חוזרות לביטול ההפעלה של LayoutNode לפני השמדת האפקטים (8b0fa4)

External Contribution

  • תאריך הוספה Snapshot.isApplyObserverNotificationPending (I672a5)

גרסה ‎1.5.0-alpha04

‫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-alpha03

‫19 באפריל 2023

‫androidx.compose.runtime:runtime-*:1.5.0-alpha03 מופץ. גרסה ‎1.5.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • הכלי ליצירת קומפוזיציה שנוצר לחלון Android יחסום עכשיו רק שיחות ל-withFrameNanos במקום את כל הקומפוזיציה כשהוא מקבל התראה על ON_STOP. המשמעות היא שחלונות שמשויכים לפעילויות שהופסקו ימשיכו להרכיב מחדש שינויים בנתונים, אבל האנימציות או כל קריאה אחרת של withFrameNanos ייחסמו. ‫(Id9e7f, ‏ b/240975572)

תיקוני באגים

  • תיקון פוטנציאלי של מצב קיפאון ברשימת תמונות המצב ובמפה 5c1a425
  • הפעלת קריאות חוזרות לביטול ההפעלה של LayoutNode לפני השבתת האפקטים 3784073
  • תיקון שינויים בסימונים של פונקציות Lambda שהופעלו מחדש ea81df9
  • תיקון באג שקשור לעריכה בזמן אמת ב-Composable עם צמתים 73fd4d8
  • הפונקציה ON_STOP צריכה להשהות את השידורים של שעון הפריימים במקום את הקומפוזיציה ae276f1
  • הוצאה משימוש של היקפי SnapshotStateObserver למצבים נגזרים שלא השתנו 84d9b1c
  • תיקון פוטנציאלי של מצב deadlock במהלך סילוק של קומפוזיציות 28761fc
  • פתרון בעיות בהעברת תוכן לקומפוזיציה משנית 92d4156

גרסה ‎1.5.0-alpha02

‫5 באפריל 2023

‫androidx.compose.runtime:runtime-*:1.5.0-alpha02 מופץ. גרסה ‎1.5.0-alpha02 מכילה את השמירות האלה.

תכונות חדשות

  • אפשר עכשיו להשתמש באופרטור getValue של Kotlin כפונקציה שניתנת להרכבה (f174f6e)

תיקוני באגים ושיפורי ביצועים

  • החלפת רשומות של אובייקטים של מצב ברשומות של מצב שלא ניתן לגשת אליהן (c986960)
  • שימוש בכלי ההלחנה בהיקף הנכון כשמממשים קבוצות (9a5e5b6)
  • פתרון בעיות ב-endToMarker() כשמפסיקים קבוצות של צמתים. (d71d980)
  • שימוש בקבוצה הנוכחית SlotWriter לבדיקה בהשבתה (a0b518b)
  • שימוש ב-IdentityArraySet לאחסון ביטולי תוקף של תמונות מצב (7f60cca)
  • הסרה של fill ב-SlotTable.moveSlotGapTo() והעברה לסגירה (81f9935)
  • תיקון בעיה שגרמה להשבתה של תוכן בזמן העברה של תוכן שאפשר להעביר (1d7c024)
  • פתרון בעיות של ביטולים מיידיים בתוכן שניתן להעברה שהועבר (8676618)
  • הפחתת ההקצאות לתצפיות של תמונת מצב (5bc535f)

גרסה ‎1.5.0-alpha01

‫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
  • הסרת boxing בחיפושים מקומיים של קומפוזיציה 0875717
  • שימוש במפתח הנכון לקבוצות של צמתים שלא ניתן לעשות בהם שימוש חוזר 6388d8d
  • הגנה על SnapshotStateObserver מפני הפעלות חוזרות והפעלות בו-זמניות 98cb6ba
  • נוסף אימות של גבולות האינדקס בשיטה IdentityArraySet get 35a77d3
  • עדכון מודול הכתיבה כדי להשתמש בתוספים של ViewTreeLifecycleOwner 21c2122
  • שליחת התראות על החלת שינויים אחרי ש-Recomposer מסיים את הפריים. 98f2641
  • תיקון קריסה של אינדקס מחוץ לגבולות כשמבטלים את Recomposer 8f8656f
  • תמיד לאלץ הרכבה מחדש אם ספקי ההורה של Composition השתנו 9526fcc
  • Recomposer tolerance for cancelled Jobs a55f7ed
  • שיפור הטיפול בביטולים במספר גדול של רכיבי Composer‏ 9b7ed67
  • תיקון של יצירת קבוצות סגירה להחזרות שאינן מקומיות b6f590c

גרסה ‎1.4.0-rc01

‫8 במרץ 2023

‫androidx.compose.runtime:runtime-*:1.4.0-rc01 מופץ. גרסה ‎1.4.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

גרסה ‎1.4.0-beta02

‫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-beta01

‫8 בפברואר 2023

‫androidx.compose.runtime:runtime-*:1.4.0-beta01 מופץ. גרסה ‎1.4.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף ComposeNodeLifecycleCallback שמאפשר מעקב אחרי מחזור החיים של צמתי Compose‏ (I3731b)
  • הוספנו את @TestOnly אל Composer.disableSourceInformation() כי הפונקציה הזו בטוחה להפעלה רק בבדיקה. (I896c8)

תיקוני באגים

  • הסרת תיבות בחיפושים מקומיים של קומפוזיציה (62f66a)
  • שיפור מאפייני ההפניה לזיכרון של מצב Snapshot ‏ (dfb451)

גרסה ‎1.4.0-alpha05

‫25 בינואר 2023

‫androidx.compose.runtime:runtime:1.4.0-alpha05 וגם androidx.compose.runtime:runtime-saveable:1.4.0-alpha05 מופצים. גרסה ‎1.4.0-alpha05 מכילה את השמירות האלה.

שינויים ב-API

  • הוספת סוגים או אפשרות לערך null לפונקציות מוטמעות או לפונקציות שהוצאו משימוש ומוסתרות (I24f91)

גרסה ‎1.4.0-alpha04

‫11 בינואר 2023

‫androidx.compose.runtime:runtime-*:1.4.0-alpha04 מופץ. גרסה ‎1.4.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • בקמפיין TestMonotonicFrameClock נעשה עכשיו שימוש בהערה הנכונה לגבי ניסוי. (I95c9e)

תיקוני באגים

  • הגנה על SnapshotStateObserver מפני הפעלות חוזרות והפעלות בו-זמניות (d902fb)

גרסה ‎1.4.0-alpha03

‫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-alpha02

‫9 בנובמבר 2022

‫androidx.compose.runtime:runtime-*:1.4.0-alpha02 מופץ. גרסה ‎1.4.0-alpha02 מכילה את השמירות האלה.

גרסה ‎1.4.0-alpha01

‫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

טיפול בחריגים / תמיכה ב-Live Edit

מעקב אחר קומפוזיציה

Composable Reflection APIs

תיקונים בזמן ריצה

מערכת תמונת המצב

גרסה ‎1.3.0-rc01

‫5 באוקטובר 2022

‫androidx.compose.runtime:runtime-*:1.3.0-rc01 מופץ. גרסה ‎1.3.0-rc01 מכילה את השמירות האלה.

תיקוני באגים

  • תוקן ArrayIndexOutOfBoundsException שמגיע מטבלת החריצים (b/249076084)

גרסה ‎1.3.0-beta03

‫21 בספטמבר 2022

‫androidx.compose.runtime:runtime-*:1.3.0-beta03 מופץ. גרסה ‎1.3.0-beta03 מכילה את השמירות האלה.

שינוי התנהגות שגורם לבעיות

  • הפרמטרים remember ו-rememberCoroutineScope שונו ל-crossinline. במקום לאפשר החזרה מוקדמת שתגרום לשגיאה פנימית מאוחרת יותר, המערכת תדווח על שגיאה בהחזרות מוקדמות.
  • השינוי הזה עלול לגרום לדיווח על שגיאות חדשות בקומפיילר, ולדרוש הסרה של החזרות לא מקומיות מהביטויים של lambda שמועברים לפונקציות האלה. (Ibea62)

גרסה ‎1.3.0-beta02

‫7 בספטמבר 2022

‫androidx.compose.runtime:runtime-*:1.3.0-beta02 מופץ. גרסה ‎1.3.0-beta02 מכילה את השמירות האלה.

תיקוני באגים

  • ממשק API מעודכן (I64ca0)

גרסה ‎1.3.0-beta01

‫24 באוגוסט 2022

‫androidx.compose.runtime:runtime-*:1.3.0-beta01 מופץ. גרסה ‎1.3.0-beta01 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה שיטה find ל-CompositionData כדי לאפשר לכלי פיתוח שמשתמשים ב-API הזה למצוא במהירות קבוצת משנה של קומפוזיציה באמצעות הזהות שלה. (I5794f)

גרסה ‎1.3.0-alpha03

‫10 באוגוסט 2022

‫androidx.compose.runtime:runtime-*:1.3.0-alpha03 מופץ. גרסה ‎1.3.0-alpha03 מכילה את השמירות האלה.

גרסה ‎1.3.0-alpha02

‫27 ביולי 2022

‫androidx.compose.runtime:runtime-*:1.3.0-alpha02 מופץ. גרסה ‎1.3.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף מחדש ComposerKt.traceEventStart(Int, String) לתאימות לאחור (I6e6de)

גרסה ‎1.3.0-alpha01

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 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה דליפת זיכרון: בוצעה סילוק של תמונות snapshot מוטמעות שנוצרו מתמונות snapshot שקופות 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 נוספו כמה תכונות, וגם בוצעו הרבה תיקוני באגים לשיפור היציבות. התכונה החדשה המשמעותית ביותר הייתה ההשקה של movableContentOfAPI, שאפשר להשתמש בו כדי להפעיל חוויית משתמש מורכבת, כמו מעברים של רכיבים משותפים. ה-API של movableContentOf ממיר פונקציית lambda שניתן להרכיב לפונקציית lambda שמעבירה את המצב שלה ואת הצמתים התואמים לכל מיקום חדש שהיא נקראת אליו. כשהשיחה הקודמת יוצאת מהקומפוזיציה, המצב נשמר באופן זמני, ואם שיחה חדשה ל-Lambda נכנסת לקומפוזיציה, המצב והצמתים המשויכים מועברים למיקום של השיחה החדשה. אם לא נוספת שיחה חדשה, המצב מוסר באופן סופי והמשתמשים שזוכרים את הצופים מקבלים הודעה.

  • אם קוראים ל-movableContentOf lambda כמה פעמים באותה קומפוזיציה, נוצרים מצב וצמתים חדשים לכל קריאה. כשהקריאות יוצאות מהקומפוזיציה וקריאות חדשות נכנסות, המצב מועבר מהקריאות הראשונות שיוצאות לקריאות שנכנסות, לפי הסדר שבו הן נקראות. כל המידע שלא נדרש לשיחות חדשות יוסר באופן סופי.

  • בנוסף לזה ולכמה תכונות חדשות אחרות, השקענו הרבה זמן בייצוב של זמן הריצה ומערכת מצב ה-Snapshot. הסרנו דליפות זיכרון שונות וביצענו אופטימיזציה של נתיבי קוד.

  • בהמשך מופיעה רשימה מסוכמת של השינויים:

תכונות חדשות ב-1.2

ביצועים ב-1.2

תיקוני באגים ב-1.2

גרסה ‎1.2.0-rc03

29 ביוני 2022

‫androidx.compose.runtime:runtime-*:1.2.0-rc03 מופץ. גרסה ‎1.2.0-rc03 מכילה את השמירות האלה.

תיקוני באגים

  • בעבר, תצפיות על מצב נגזר הוסרו ללא תנאי מההיקף של ה-recompose ומהקומפוזיציה, מה שגרם לבעיות בהיקפים אחרים שאולי עדיין צופים במצב הנגזר. השינוי הזה מסיר רק מופעים של מצב נגזר אם הם לא נצפים יותר על ידי היקפים אחרים. (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

  • ממשקים בספריות של Compose נוצרים עכשיו באמצעות שיטות ממשק שמוגדרות כברירת מחדל ב-jdk8 ‏ (I5bcf1)

גרסה ‎1.2.0-beta03

‫1 ביוני 2022

‫androidx.compose.runtime:runtime-*:1.2.0-beta03 מופץ. גרסה ‎1.2.0-beta03 מכילה את השמירות האלה.

גרסה ‎1.2.0-beta02

‫18 במאי 2022

‫androidx.compose.runtime:runtime-*:1.2.0-beta02 מופץ. גרסה ‎1.2.0-beta02 מכילה את השמירות האלה.

גרסה ‎1.2.0-beta01

‫11 במאי 2022

‫androidx.compose.runtime:runtime-*:1.2.0-beta01 מופץ. גרסה ‎1.2.0-beta01 מכילה את השמירות האלה.

תכונות חדשות

  • זו גרסת הבטא הראשונה של 1.2!

שינויים ב-API

  • נוספה תכונה ניסיונית Snapshot.unsafeEnter/unsafeLeave (I108f3)
  • נוסף API ניסיוני Snapshot.asContextElement() (Iff072)
  • אפשר עכשיו להשתמש בהערה @ComposableTarget ובהערות שמסומנות ב-@ComposableTargetMarker בהיקף הקובץ באמצעות הקידומת @file. שימוש בהערת יעד בהיקף הקובץ יגרום לקומפיילר להניח שכל הפונקציות שניתנות להרכבה בקובץ מיועדות להיות היעד של הפונקציה המשויכת. לדוגמה, השימוש ב-@file:UiComposable מצהיר שכל הפונקציות של @Composable מטרגטות את כלי ההחלה של ממשק המשתמש של Compose. פונקציה שצריכה לטרגט כלי החלה אחר חייבת לספק במפורש את הערת הסמן של היעד עבור כלי ההחלה הרצוי. (I40804)

גרסה ‎1.2.0-alpha08

‫20 באפריל 2022

‫androidx.compose.runtime:runtime-*:1.2.0-alpha08 מופץ. גרסה ‎1.2.0-alpha08 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו את TracingInProgress לממשק CompositionTracer. (Ic6f12)
  • הוספת recomposeScopeIdentity ל-Composer‏ (I0c873)
  • הגבלנו את ממשקי ה-API למעקב (Composer.setTracer) ל-OptIn(InternalComposeTracingApi). (I9187f)
  • נוסף ResuableContentHost שמאפשר שליטה טובה יותר על משך החיים של מצב שנוצר לתוכן שאפשר לעשות בו שימוש חוזר. לדוגמה, אם לא משתמשים באופן זמני בתת-קומפוזיציה, אפשר להשבית את התוכן שלה. כך כל המצב שנשמר בקומפוזיציה יישכח, ויופעלו כל האפקטים שניתן להסיר. (I2c0f2, b/220322704)

גרסה ‎1.2.0-alpha07

‫6 באפריל 2022

‫androidx.compose.runtime:runtime-*:1.2.0-alpha07 מופץ. גרסה ‎1.2.0-alpha07 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה פונקציה חדשה Snapshot.withoutReadObservation { ... }. היא מאפשרת למשתמשים להפעיל את ה-lambda שהועבר בלי להירשם לשינויים של ערכי המצב שנקראו במהלך הבלוק הזה. השימוש ב-snapshot יכול להיות שימושי בתרחישי שימוש שבהם רוצים ליהנות מהיתרונות של קריאה וכתיבה בטוחה לשרשור שמבוססת על snapshot, אבל רוצים לקרוא את הערך בלי לגרום להרכבה מחדש או למדידה מחדש מיותרות. (I9f365, b/214054486)

גרסה ‎1.2.0-alpha06

‫23 במרץ 2022

‫androidx.compose.runtime:runtime-*:1.2.0-alpha06 מופץ. גרסה ‎1.2.0-alpha06 מכילה את השמירות האלה.

גרסה ‎1.2.0-alpha05

9 במרץ 2022

‫androidx.compose.runtime:runtime-*:1.2.0-alpha05 מופץ. גרסה ‎1.2.0-alpha05 מכילה את השמירות האלה.

External Contribution

  • העדכון כולל שימוש בשגרות משנה (coroutines) של Kotlinx בגרסה 1.6.0‏ (I3366d)

גרסה ‎1.2.0-alpha04

‫23 בפברואר 2022

‫androidx.compose.runtime:runtime-*:1.2.0-alpha04 מופץ. גרסה ‎1.2.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • נוספו הפונקציות ComposableTarget, ComposableTargetMarker ו-ComposableOpenTarget שמאפשרות דיווח בזמן קומפילציה על מצב שבו פונקציה הניתנת להגדרה מופעלת בטירגוט של פונקציית החלה שהיא לא נועדה להשתמש בה.

    ברוב המקרים, אפשר להסיק את הערכים של ההערות האלה באמצעות תוסף מהדר של Compose, ולכן השימוש בהערות האלה ישירות צריך להיות נדיר . המקרים שבהם אי אפשר להסיק כוללים יצירה ושימוש ב-applier מותאם אישית, פונקציות קומפוזביליות מופשטות (כמו שיטות ממשק), שדות או משתנים גלובליים שהם ביטויי למבדה קומפוזביליים (משתנים מקומיים ופרמטרים נגזרים), או כשמשתמשים ב-ComposeNode או בפונקציות קומפוזביליות קשורות.

    במקרה של פונקציות מותאמות אישית, הפונקציות הניתנות להגדרה שמפעילות את ComposeNode או את ReusableComposeNode צריכות להוסיף הערה CompoableTarget לפונקציה ולכל סוגי הפרמטרים של פונקציית ה-lambda הניתנת להגדרה. עם זאת, מומלץ ליצור הערה עם התיוג ComposableTargetMarker ואז להשתמש בהערה המתויגת במקום להשתמש ישירות ב-ComposableTarget. אנוטציה קומפוזבילית שמסומנת ב-ComposableTargetMarker שווה ל-ComposbleTarget עם השם המוגדר במלואו של מחלקת המאפיינים כפרמטר של ממשק ההחלה. דוגמה לשימוש ב-ComposableTargetMarker מופיעה במאמר anroidx.compose.ui.UiComposable. (I38f11)

גרסה ‎1.2.0-alpha03

‫9 בפברואר 2022

‫androidx.compose.runtime:runtime-*:1.2.0-alpha03 מופץ. גרסה ‎1.2.0-alpha03 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה הפונקציה movableContentOf שממירה פונקציית lambda קומפוזבילית לפונקציית lambda שמעבירה את המצב שלה ואת הצמתים התואמים לכל מיקום חדש שהיא נקראת אליו. כשהשיחה הקודמת יוצאת מהקומפוזיציה, המצב נשמר באופן זמני, ואם שיחה חדשה ל-Lambda נכנסת לקומפוזיציה, המצב והצמתים המשויכים מועברים למיקום של השיחה החדשה. אם לא נוספת שיחה חדשה, המצב מוסר באופן סופי והמשתמשים שרשומים לקבלת עדכונים מקבלים הודעה.

    אם קוראים ל-movableContentOf lambda כמה פעמים באותה קומפוזיציה, נוצרים מצב וצמתים חדשים לכל קריאה. כשהקריאות יוצאות מהקומפוזיציה ונכנסות קריאות חדשות, המצב מועבר מהקריאות הראשונות שיוצאות לקריאות שנכנסות, לפי הסדר שבו הן נקראות. כל הנתונים שלא נדרשים לשיחות חדשות מוסרים באופן סופי. (Ib4850)

  • הוספנו API למעקב אחר קומפוזיציה כדי לאפשר לכלים לספק מעקב מפורט יותר אחר פונקציות שניתנות להגדרה. הקומפיילר יוצר עכשיו קריאות ל-Tracing API שכוללות מידע על המקור. (Ib0eb5)

    כדי להסיר את הקריאות האלה ואת פרטי המקור המשויכים מגרסת build להפצה, מוסיפים את כלל Proguard הבא:

      -assumenosideeffects public class androidx.compose.runtime.ComposerKt {
          boolean isTraceInProgress();
          void traceEventStart(int,java.lang.String);
          void traceEventEnd();
      }
    
  • מוסיפים את InternalComposeScope כדי שהכלים יוכלו לזהות קומפוזיציה במהלך הרכבה מחדש. (I07a3f)

גרסה ‎1.2.0-alpha02

‫26 בינואר 2022

‫androidx.compose.runtime:runtime-*:1.2.0-alpha02 מופץ. גרסה ‎1.2.0-alpha02 מכילה את השמירות האלה.

גרסה ‎1.2.0-alpha01

‫12 בינואר 2022

‫androidx.compose.runtime:runtime-*:1.2.0-alpha01 מופץ. גרסה ‎1.2.0-alpha01 מכילה את השמירות האלה.

שינויים ב-API

  • נוסף שדה identity ל-CompositionData כדי ליצור מזהים קבועים ב-Layout Inspector. (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, ‏ b/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 בנושא גודל יעד המגע. לדוגמה, יעד המגע של לחצן יתרחב לגודל מינימלי של 48x48dp, גם אם הגדרתם גודל קטן יותר ללחצן. ההתנהגות הזו תואמת להתנהגות של רכיבי Material Design, כך שאם משלבים בין Views ו-Compose, ההתנהגות תהיה עקבית. השינוי הזה גם מבטיח שכשתצרו את ממשק המשתמש באמצעות רכיבי Compose Material, תעמדו בדרישות המינימליות לנגישות של יעדי מגע.
  • תמיכה יציבה בפס ניווט
  • העברנו מספר ממשקי 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

  • קוד ה-Snapshot פוצל לכמה קבצים, אבל הוא עדיין נמצא באותה מחלקת JVM. (Ic6c98)

גרסה ‎1.1.0-beta01

‫27 באוקטובר 2021

‫androidx.compose.runtime:runtime-*:1.1.0-beta01 מופץ. גרסה ‎1.1.0-beta01 מכילה את השמירות האלה.

גרסה ‎1.1.0-alpha06

‫13 באוקטובר 2021

‫androidx.compose.runtime:runtime-*:1.1.0-alpha06 מופץ. גרסה ‎1.1.0-alpha06 מכילה את השמירות האלה.

שינויים ב-API

  • הוסר InternalCompilerApi משיטות Composer שנדרשות לקריאה בין מודולים (I1aa0b)
  • הפונקציה Recomposer.state הוצאה משימוש והוחלפה בפונקציה Recomposer.currentState כדי לשנות את הסוג שלה ל-StateFlow ‏ (Ic2ab3, ‏ b/197773820)

גרסה ‎1.1.0-alpha05

‫29 בספטמבר 2021

‫androidx.compose.runtime:runtime-*:1.1.0-alpha05 מופץ. גרסה ‎1.1.0-alpha05 מכילה את השמירות האלה.

גרסה ‎1.1.0-alpha04

‫15 בספטמבר 2021

‫androidx.compose.runtime:runtime-*:1.1.0-alpha04 מופץ. גרסה ‎1.1.0-alpha04 מכילה את השמירות האלה.

גרסה ‎1.1.0-alpha03

‫1 בספטמבר 2021

‫androidx.compose.runtime:runtime-*:1.1.0-alpha03 מופץ. גרסה ‎1.1.0-alpha03 מכילה את השמירות האלה.

תכונות חדשות

  • הקומפיילר של Compose תומך עכשיו בגרסאות ישנות יותר של Compose Runtime‏ (1.0). לפני השינוי הזה, מהדר Compose היה תואם רק ל-Compose Runtime מאותה גרסה או מגרסה מאוחרת יותר. אחרי השינוי הזה, מהדר ה-Compose תואם לגרסה ישנה יותר של Compose Runtime‏ (1.0). (aosp/1796968)
  • ‫Compose 1.1.0-alpha03 עודכן כך שהוא תלוי ב-Kotlin 1.5.30. (I74545)

גרסה ‎1.1.0-alpha02

‫18 באוגוסט 2021

‫androidx.compose.runtime:runtime-*:1.1.0-alpha02 מופץ. גרסה ‎1.1.0-alpha02 מכילה את השמירות האלה.

גרסה ‎1.1.0-alpha01

‫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 מכילה את השמירות האלה.

תיקוני באגים

  • תוקנה קריסה במעקב אחר מופעים של derivedStateOf. (aosp/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.

בעיות מוכרות

  • אם אתם משתמשים ב-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. (b/194289155)

גרסה ‎1.0.0-rc02

‫14 ביולי 2021

‫androidx.compose.runtime:runtime-*:1.0.0-rc02 מופץ. גרסה ‎1.0.0-rc02 מכילה את השמירות האלה.

  • תוקנו תנאי מרוץ ב-SnapshotStateObserver שגרמו ל-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 .... הכללים האלה מגיעים באחד משני פורמטים, לטירגוט של שיטות או של מחלקות.

  • כלל של method ייראה כך:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • כלל כיתה יכלול את התבנית הבאה:

    <CLASS_DESCRIPTOR>
    
  • כאן <FLAGS> הוא אחד או יותר מהתווים H, S ו-P כדי לציין אם צריך לסמן את השיטה הזו כ'חמה', 'הפעלה' או 'אחרי הפעלה'.

  • ‫<CLASS_DESCRIPTOR> הוא המתאר של המחלקה שאליה משתייכת המתודה המטורגטת. לדוגמה, למחלקה androidx.compose.runtime.SlotTable יהיה דסקריפטור של Landroidx/compose/runtime/SlotTable;.

  • ‫<METHOD_SIGNATURE> הוא החתימה של ה-method, והוא כולל את השם, סוגי הפרמטרים וסוגי הערכים המוחזרים של ה-method. לדוגמה, לשיטה fun isPlaced(): Boolean ב-LayoutNode יש את החתימה isPlaced()Z.

  • בדפוסי כתובות ה-URL האלה יכולים להיות תווים כלליים (**, * ו-?) כדי שכלל אחד יכלול כמה שיטות או מחלקות.

מה עושים הכללים?

  • שיטה עם הדגל H מציינת שזו שיטה 'פעילה' וצריך לקמפל אותה מראש.

  • אם ל-method יש את הדגל S, זה אומר שהיא נקראת בזמן ההפעלה, ולכן צריך לבצע קומפילציה מראש כדי להימנע מהעלות של קומפילציה ופרשנות של ה-method בזמן ההפעלה.

  • מתודה עם הדגל P היא מתודה שמופעלת אחרי ההפעלה.

  • אם מחלקה מסוימת מופיעה בקובץ הזה, המשמעות היא שהיא נמצאת בשימוש במהלך ההפעלה, ולכן צריך להקצות לה מראש מקום בזיכרון כדי להימנע מעלות הטעינה של המחלקה.

איך זה עובד?

  • ספריות יכולות להגדיר את הכללים האלה, שייארזו בפריטי מידע שנוצרו בתהליך של פיתוח (Artifact) מסוג 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 חדשים של מהדר Compose שמאפשרים להסיר את פרטי המקור שנוצרו על ידי המהדר במהלך מזעור המקור. (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-beta05

‫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-beta03

‫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) } לא לפעול כשמשתמשים בו בתוך יעד של navigation-compose. (I1312b, ‏ b/180042685, ‏ b/180701630)

גרסה ‎1.0.0-beta01

‫24 בפברואר 2021

‫androidx.compose.runtime:runtime-*:1.0.0-beta01 מופץ. גרסה ‎1.0.0-beta01 מכילה את השמירות האלה.

זו הגרסה הראשונה של Compose 1.0.0 Beta.

שינויים ב-API

  • מוסיפים Recomposer.runRecomposeConcurrentlyAndApplyChanges experimental API for recomposing invalidated compositions off the main frame loop. (I342d0)
  • כל הרכיבים הקומפוזביליים שמסומנים ב-‎ @ReadOnlyComposable עוברים עכשיו אימות בזמן ההידור כדי לוודא שהם מבצעים רק קריאות לרכיבים אחרים מסוג ‎ @ReadOnlyComposables (I58961)
  • השדה defaultFactory עבור compositionLocalOf ו-staticCompositionLocalOf הוא עכשיו שדה חובה ולא שדה אופציונלי.

    השינוי הזה מסיר שגיאת סוג פוטנציאלית עבור סוגים שאי אפשר להגדיר כ-nullable, שלא סופקה להם הגדרת ברירת מחדל. בעבר, הפעולה הזו הייתה מספקת הפניה לערך null עבור סוג שלא ניתן להקצאה.

    בסוגים שניתן להגדיר כ-nullable, כדאי לספק את { null } כברירת המחדל של factory.

    אנחנו לא ממליצים להשתמש ב-locales עם סוגים שלא יכולים להיות null, אלא אם אפשר לספק ברירת מחדל הגיונית. אם לא קיים ערך ברירת מחדל הגיוני, פונקציית ה-lambda‏ defaultFactory צריכה להחזיר חריגה. עם זאת, אם מתרחשת חריגה, המשמעות היא שלצרכנים של המקומי תהיה תלות מרומזת באספקת המקומי, שלא נאכפת על ידי מערכת הטיפוס. (Ifbd2a)

  • סמלים שהוצאו משימוש הוסרו מסביבת זמן הריצה של הכתיבה (I3252c)

  • הוסר emptyContent() שהוצא משימוש. במקומה צריך להשתמש במדיניות {}. (Idb33f, ‏ b/179432510)

  • השם של Providers השתנה ל-CompositionLocalProvider

    • הקונסטרוקטור Composition לא מקבל יותר פרמטר מפתח, והוא הוצא משימוש.
    • המאפיין currentCompositeKeyHash הפך למאפיין ברמה העליונה שאפשר להגדיר, במקום פונקציה ברמה העליונה שאפשר להגדיר.
    • המחלקות CompositionData ו-CompositionGroup הועברו למרחב השמות androidx.compose.runtime.tooling
    • הפכנו את ComposableLambda לממשק במקום למחלקה קונקרטית, והוא כבר לא כולל פרמטרים של סוג.
    • הפכנו את ComposableLambdaN לממשק במקום למחלקה קונקרטית, והוא כבר לא כולל פרמטרים של סוג.
    • הפונקציה snapshotFlow הועברה למרחב השמות androidx.compose.runtime
    • שיטת המיזוג של SnapshotMutationPolicy כבר לא ניסיונית
    • הוסרה הפונקציה clearRoots ברמה העליונה @TestOnly. היא כבר לא נחוצה.
    • הפונקציות keySourceInfoOf ו-resetSourceInfo הוסרו. הם כבר לא נחוצים.
    • הפונקציה Composer.collectKeySourceInformation הוסרה. היא כבר לא נחוצה.
    • השיטות isJoinedKey,‏ joinedKeyLeft ו-joinedKeyRight הוסרו. הם כבר לא נחוצים.
    • ממשקי API שונים ברמה העליונה הועברו ואורגנו מחדש בקבצים שונים. בגלל הסמנטיקה של מחלקת הקבצים ב-Kotlin, השינוי הזה ישבור את התאימות הבינארית אבל לא את תאימות המקור, ולכן הוא לא אמור להוות בעיה עבור רוב המשתמשים.
    • (I99b7d, b/177245490)
  • ‫SnapshotStateObserver כבר לא ניסיוני (Id2e6a)

  • נמחקו כמה ממשקי API שהוצאו משימוש בעבר (Ice5da, ‏ b/178633932)

  • בוצעו השינויים הבאים ב-Material API:

    • הוספנו את הפרמטר contentPadding לרכיב Top/BottomAppBar כדי לאפשר התאמה אישית של הריווח שמוגדר כברירת מחדל.
    • הפרמטרים ב-BackdropScaffold סודרו מחדש בהתאם להנחיות ה-API, כך שהפרמטרים הנדרשים מופיעים לפני הפרמטרים האופציונליים.
    • הפרמטר icon הועבר ב-BottomNavigationItem כך שהוא מופיע אחרי selected ו-onClick.
    • השם של הפרמטר alwaysShowLabels ב-BottomNavigationItem שונה ל-alwaysShowLabel.
    • השם של הפרמטרים bodyContent בכמה רכיבים השתנה ל-content.
    • הפרמטרים ב-ButtonDefaults.buttonColors() סודרו מחדש. חשוב לשים לב: מכיוון שסוג הפרמטרים לא השתנה, לא תהיה שגיאה בקוד. עם זאת, חשוב לוודא שאתם משתמשים בפרמטרים עם שמות או מעדכנים את הסדר באופן ידני, אחרת הקוד לא יפעל כמו קודם.
    • הפרמטר secondaryVariant נוסף אל darkColors(). הצבע הזה בדרך כלל זהה לצבע secondary בעיצוב הכהה, אבל אנחנו מוסיפים אותו כדי לשמור על עקביות ולאפשר התאמה אישית נוספת.
    • הוסרו ElevationDefaults ו-animateElevation() מממשק ה-API הציבורי כי לא היה בהם שימוש נפוץ והם לא היו שימושיים.
    • השם של onValueChangeEnd ב-Slider שונה ל-onValueChangeFinished והוגדר כ-nullable.
    • כדי לשמור על עקביות, שינינו את השם של הפרמטר text ב-Snackbar ל-content.
    • נוסף הפרמטר contentPadding ל-DropdownMenuItem כדי לאפשר התאמה אישית של שולי ברירת המחדל, והוגדר ש-content יהיה תוסף ל-RowScope.
    • השם של ModalDrawerLayout שונה ל-ModalDrawer.
    • השם של BottomDrawerLayout שונה ל-BottomDrawer.
    • (I1cc66)

גרסה ‎1.0.0-alpha12

‫10 בפברואר 2021

‫androidx.compose.runtime:runtime-*:1.0.0-alpha12 מופץ. גרסה ‎1.0.0-alpha12 מכילה את השמירות האלה.

שינויים ב-API

  • התמיכה ב-ViewGroups הוסרה מ-UiApplier. הוסרו פונקציות ה-Composable ‏emitView שהוצאו משימוש. (Ifb214)
  • השם של CompositionReference שונה ל-CompositionContext ‏ (I53fcb)
  • הפונקציה ComponentActivity.setContent הועברה אל androidx.activity.compose.setContent במודול androidx.activity:activity-compose. (Icf416)
  • ה-API של Snapshot עודכן כדי להיות עקבי יותר עם הנחיות ה-API, וכדי להסתיר מחלקות הטמעה פנימיות מה-API הציבורי. (Id9e32)
  • שונה השם של Ambients כדי להתאים לשינוי השם של Ambient -> CompositionLocal. בעבר, השם של Ambients היה AmbientFoo, ועכשיו השם של CompositionLocals הוא LocalFoo. (I2d55d)
  • השם של Ambient שונה ל-CompositionLocal, והשמות של ambientOf / staticAmbientOf שונו ל-compositionLocalOf / staticCompositionLocalOf בהתאמה. השינוי הזה עוזר להבהיר את המטרה של CompositionLocal: מנגנון לאספקת ערכים מקומיים לקומפוזיציה או לאחזור שלהם. צריך להוסיף את הקידומת Local למופעים של CompositionLocal, כמו val LocalFoo = compositionLocalOf { Foo() }. (Ia55b6)
  • הפונקציות takeMutableSnapshot ו-takeSnapshot עברו להיות פונקציות עזר של Snapshot. (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)

  • עכשיו אפשר לסגור את כלי ההלחנה מחדש. רכיבי Composable סגורים ימשיכו את הרה-קומפוזיציה עד ששגרות המשך (coroutine) הצאצא של הקומפוזיציה יסתיימו. השם של הפונקציה Recomposer.shutDown שונה ל-cancel כדי ליצור ניגוד לפונקציה close. (Ib6d76)

  • הארטיפקט compose:runtime-dispatch יצא משימוש. המחלקות MonotonicFrameClock נמצאת עכשיו ב-compose:runtime והמחלקות AndroidUiDispatcher נמצאת ב-compose:ui. (Ib5c36)

  • ה-API שאליו מכוון פלאגין מהדר Compose עבר רפקטורינג כדי להשתמש בממשק במקום במחלקה קונקרטית. בנוסף, הממשק לא משתמש יותר בפרמטר מסוג.

    זהו שינוי פנימי שלא אמור להשפיע על התאימות של קוד המקור, אבל הוא שינוי בינארי שעלול לגרום לבעיות. (I3b922, b/169406779)

  • נוסף SnapshotMutableState ‏ (Icfd03)

  • השם של DisposableEffectDisposable שונה ל-DisposaleEffectResult ‏ (Ica7c6)

  • הוסר Recomposer.current(). [Abstract]ComposeView now default to lazily created, window-scoped Recomposers driven by the ViewTreeLifecycleOwner for the window. הרה-קומפוזיציה והטיקים של האנימציה שמבוססים על withFrameNanos מושהים בזמן שמחזור החיים של המארח מושהה. (I38e11)

  • ‫Recomposer.runningRecomposers מספק עכשיו StateFlow גלובלי של RecomposerInfo לקריאה בלבד, כדי לעקוב אחרי מצב הקומפוזיציה בתהליך. מומלץ להשתמש ב-API הזה במקום ב-Recomposer.current(), שהוצא משימוש. (If8ebe)

  • השם של DisposableEffectDisposable שונה ל-DisposaleEffectResult‏ (I3ea68)

גרסה ‎1.0.0-alpha11

‫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)
  • הפונקציות invalidate ו-compositionReference() הוצאו משימוש, ועכשיו משתמשים בפונקציות currentRecomposeScope ו-rememberCompositionReference בהתאמה. (I583a8)
  • חשוב לזכור: RememberObserver מחליף את 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)

תיקוני באגים

  • הקומפוזיציה WithConstraints עברה שינוי, נקראת עכשיו BoxWithConstraints והועברה אל foundation.layout. (I9420b, b/173387208)
  • שימוש ב-TestCoroutineDispatcher בבדיקות (I532b6)

גרסה ‎1.0.0-alpha10

‫13 בינואר 2021

‫androidx.compose.runtime:runtime-*:1.0.0-alpha10 מופץ. גרסה ‎1.0.0-alpha10 מכילה את השמירות האלה.

שינוי שעלול לגרום לכשלים

  • ארגון מחדש של ה-API הפנימי של הקומפיילר מאפשר לאגד שינויים בצמתים שנוצרו כתוצאה מקומפוזיציה בשלב 'החלת שינויים' של הקומפוזיציה, אחרי שכל הפונקציות @Composable הושלמו.

    זהו שינוי שעלול לשבור את ההתנהגות של קוד האפליקציה, כי הצמתים לא זמינים יותר מממשקי API פנימיים וניסיוניים עד להחלת השינויים. בדרך כלל אפשר לפתור את הבעיה הזו על ידי הוספת קוד עם תלויות כאלה לSideEffect composable כדי לדחות את ההרצה של הקוד עד ליצירה ולאתחול של הצמתים. (I018da)

שינויים ב-API

  • נוספה דרך לעקוב אחרי השינויים שבוצעו על ידי הכלי ליצירת תמונות חדשות. (I1b3e2)
  • הרחבת ממשקי ה-API של [Abstract]ComposeView כדי לאפשר שימוש חוזר בתצוגות שמבוססות על Compose, השבתת הקומפוזיציה שלהן כדי ליצור אותה מחדש מאוחר יותר. הוספת ממשקי API להתקנה ולגילוי של Recomposers בהיקף חלון ו-CompositionReferences ליצירת קומפוזיציות צאצא.

    מוסיפים ViewCompositionStrategy כדי להגדיר את אסטרטגיית הסילוק של הקומפוזיציה של [Abstract]ComposeViews. התנהגות ברירת המחדל היא סילוק כשחלון מנותק. (I860ab)

תיקוני באגים

  • הכלי Recomposer חושף עכשיו את ה-Flow של המצב הנוכחי שלו, ומאפשר לעקוב אחרי הפעילות שלו ואחרי הפעילות של האפקטים המשויכים. (Ifb2b9)
  • עכשיו אפשר לגשת ל-native keyEvent דרך keyEvent.nativeKeyEvent ‏ (I87c57, ‏ b/173086397)

גרסה ‎1.0.0-alpha09

‫16 בדצמבר 2020

‫androidx.compose.runtime:runtime-*:1.0.0-alpha09 מופץ. גרסה ‎1.0.0-alpha09 מכילה את השמירות האלה.

שינויים ב-API

  • הוסרו SlotTable, ‏ SlotReader ו-SlotWriter מה-API הציבורי. בעבר הם סומנו כ-InternalComposeAPI. עכשיו הם פנימיים למודול יצירת המוזיקה.

    הוספנו את CompositionData ו-CompositionGroup כתחליף ל-ui-tooling API, כדי להשתמש בהם לחילוץ פרטי קומפוזיציה. ממשקי ה-API האלה הם ציבוריים, אבל הם לא מיועדים לשימוש מחוץ ל-ui-tooling API, כי הם מספקים את המידע הגולמי ש-ui-tooling API מפרש (I31a9c)

  • הכיתה Applier כבר לא נחשבת ל- (Id85b0)

  • הממשק של Applier השתנה כדי לפשט את בניית העצים מלמטה למעלה במקום מלמעלה למטה.

    השם של ה-method‏ insert() השתנה ל-insertTopDown().

    נוספה שיטה חדשה: insertBottomUp().

    הכלי להחלת שינויים מוסיף צמתים לעץ שהוא עורך באמצעות insertTopDown() או insertBottomUp(), בהתאם לביצועים של כל אחת מהאפשרויות.

    יעיל יותר לבנות חלק מהעצים, כמו LayoutNode ו-View, מלמטה למעלה ולא מלמעלה למטה. לפני השינוי הזה, כדי להטמיע את השיטה מלמטה למעלה היה צריך להשתמש במערך של תוספים, והיה צריך להעתיק אותו לכל כלי שנדרשה בו בנייה מלמטה למעלה כדי לשפר את הביצועים. בעקבות השינוי הזה, Applier מחליף insertBottomUp() כדי לבנות עץ מלמטה למעלה, ו-insertTopDown() כדי לבנות את העץ מלמעלה למטה. (Icbdc2)

  • ‫Compose תומך בשיטות getter של מאפיינים שיכולות לבצע קריאות לרכיבים קומפוזביליים. התמיכה בזה לא תבוטל, אבל התחביר להצהרה על getter של מאפיין כ-@Composable ישתנה.

    התחביר שהוצא משימוש לביצוע הפעולה הזו היה באמצעות הוספת הערה לנכס עצמו:

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

    התחביר הנכון לביצוע הפעולה הזו הוא באמצעות הערה של ה-getter של המאפיין:

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

    שני סוגי התחביר יפעלו למשך זמן מסוים, אבל בסופו של דבר התחביר הראשון שהוצא משימוש יהפוך לשגיאת קומפילציה. (Id9197)

תיקוני באגים

  • AndroidOwner made internal (Ibcad0, b/170296980)
  • הפונקציה subcomposeInto(LayoutNode) הפכה לפנימית (Id724a)

גרסה ‎1.0.0-alpha08

‫2 בדצמבר 2020

‫androidx.compose.runtime:runtime-*:1.0.0-alpha08 מופץ. גרסה ‎1.0.0-alpha08 מכילה את השמירות האלה.

שינויים ב-API

  • נוספה בדיקת Lint לשמות ולמיקום של פרמטרים של lambda שניתנים להרכבה, כדי לבדוק את העקביות עם ההנחיות של Compose. בנוסף, בוצעה העברה של חלק מממשקי ה-API באמצעות children כשם של פונקציית ה-lambda האחרונה שלהם אל content, בהתאם לבדיקת ה-lint ולהנחיות. (Iec48e)
  • ‫Recomposer לא מקבל יותר EmbeddingContext. יחסי התלות הנדרשים בתזמון מתקבלים מ-effectCoroutineContext. ה-API ‏FrameManager הוצא משימוש. שילובים של פלטפורמות צריכים לאתחל את הטיפול בתמונת המצב הגלובלית שלהם. (I02369)
  • הפונקציה RestorableStateHolder.withRestorableState קיבלה את השם החדש RestorableStateProvider (I66640)

תיקוני באגים

  • הוצאנו משימוש את המאפיינים מסוג Ambient ששם המחלקה שלהם מסתיים ב-Ambient, והחלפנו אותם במאפיינים חדשים ששם המחלקה שלהם מתחיל ב-Ambient, בהתאם להנחיות לגבי מאפיינים מסוג Ambient ולגבי Compose API. (I33440)
  • הסרה של מודול ui-test ישן וה-stubs שלו (I3a7cb)

גרסה ‎1.0.0-alpha07

11 בנובמבר 2020

‫androidx.compose.runtime:runtime-*:1.0.0-alpha07 מופץ. גרסה ‎1.0.0-alpha07 מכילה את השמירות האלה.

תכונות חדשות

שינויים ב-API

  • ההערה @UnionType הוצאה משימוש (I57cde)
  • הפונקציה provideDefault נוספה כחלופה לפונקציה provide לצורך אספקת ערכים של מאפיינים סביבתיים. אפשר להשתמש בה כדי לציין ערכים של מאפיינים סביבתיים שיוגדרו רק אם לא סופק כבר ערך של מאפיין סביבתי. (Id6635, b/171024925)
  • השם של LaunchedTask שונה ל-LaunchedEffect כדי לשמור על עקביות עם ממשקי ה-API של SideEffect ו-DisposableEffect. כדי לעודד שימוש בשיטות מומלצות, אסור להפעיל את LaunchedEffect בלי פרמטרים של נושא. (Ifd3d4)
  • ל-Applier יש עכשיו קריאות חוזרות (callbacks) מסוג onBeginChanges/onEndChanges שמופעלות כש-Composer מתחיל להחיל שינויים על העץ או מסיים את התהליך. אפשר להשתמש בהם לניהול משאבים בקבוצות, אם צריך. (Icf476)
  • עכשיו נדרש CoroutineContext ב-Recomposer בזמן הבנייה (Ic4610)
  • שינויים בהטמעה הפנימית של SlotTable שלא אמורים להשפיע על ה-API הציבורי. (If9828)
  • הוסרו מתאמי rxjava2 שהוצאו משימוש ולא מקבלים את הערך ההתחלתי (Idb72f)

תיקוני באגים

  • ‫foundation.Text הוצא משימוש והוחלף ב-material.Text. אם אתם מחפשים API בסיסי לטקסט שלא משתמש בערכים מתוך ערכת נושא, כדאי לעיין במאמר בנושא androidx.compose.foundation.BasicText. (If64cb)
  • הוצא משימוש BaseTextField. במקום זאת, משתמשים ב-BasicTextField. (I896eb)
  • כמה סמלים שקשורים לפריסה הועברו מ-androidx.compose.ui אל androidx.compose.layout.ui. (I0fa98, ‏ b/170475424)

External Contribution

  • נוסף מודול runtime-rxjava3 לכתיבת הודעות. דומה לruntime-rxjava2 (I02cbf)

גרסה ‎1.0.0-alpha06

‫28 באוקטובר 2020

‫androidx.compose.runtime:runtime-*:1.0.0-alpha06 מופץ. גרסה ‎1.0.0-alpha06 מכילה את השמירות האלה.

שינויים ב-API

  • הקומפוזיציה מוגדרת עכשיו כ-CompositionReference וכקומפוזיציה תקפה ברמת ההורה. השימוש ב-Explicit Recomposer נדרש עכשיו בפחות מקומות. (I4036f)
  • נוסף API מקביל של DisposableEffect ל-SideEffect, שממלא את התפקיד של onCommit-with-params אבל עם onDispose נדרש.
    • נוסף rememberUpdatedState API לפרסום נתונים מ-רה-קומפוזיציה לתהליכים מתמשכים או ארוכי טווח, כמו DisposableEffects או LaunchedTasks.
    • (Id50b9)
  • המחלקות MutableVector מיישמות עכשיו את RandomAccess ‏ (I85d73, ‏ b/170461551)
  • נוסף קומפוזיציה מסוג SideEffect להחלת תופעות לוואי של קומפוזיציה על אובייקטים שמנוהלים על ידי הקומפוזיציה. ה-composable‏ SideEffect נועד להחליף את ה-composable‏ onCommit. (Ia77c2)
  • ‫API ניסיוני חדש: RestorableStateHolder. הוא מאפשר לשמור את המצב שהוגדר באמצעות [savedInstanceState] ו-[rememberSavedInstanceState] עבור עץ המשנה לפני השמדה שלו, כדי לאפשר את ההרכבה שלו מחדש בפעם הבאה עם המצב המשוחזר. (I66884, ‏ b/166586419)

תיקוני באגים

  • מפעילים מעברים ב-ComposeTestRule ומסירים את האפשרות להפעיל את הסמן המהבהב מ-ComposeTestRule. (If0de3)

גרסה ‎1.0.0-alpha05

‫14 באוקטובר 2020

‫androidx.compose.runtime:runtime-*:1.0.0-alpha05 מופץ. גרסה ‎1.0.0-alpha05 מכילה את השמירות האלה.

שינויים ב-API

  • התאמה ניסיונית.התאמה של קלט להשהיית קלט של מצביע (Ia77d2)
  • הביצועים של הגלילה ב-LazyColumn/Row משופרים כי מתבצעת פחות עבודה בהרכב המשנה בכל גלילה. נוספה השיטה החדשה hasInvalidations()‎ למחלקה Composition. השיטה hasPendingChanges()‎ מ-Recomposer שונתה ל-hasInvalidations()‎ (Ib2f32, ‏ b/168293643, ‏ b/167972292, ‏ b/165028371)
  • הוספנו את produceState API להפעלת קורוטינות מקומפוזיציה שמעדכנות ערך יחיד של State<T> לאורך זמן (Id4a57)
  • השם של launchInComposition שונה ל-LaunchedTask כדי להתאים להנחיות של Compose API (I99a8e)
  • הסדר של קריאות place() בפריסות בהתאמה אישית מגדיר עכשיו את סדר הציור של רכיבי הצאצא (Ibc9f6)

גרסה ‎1.0.0-alpha04

‫1 באוקטובר 2020

‫androidx.compose.runtime:runtime-*:1.0.0-alpha04 מופץ. גרסה ‎1.0.0-alpha04 מכילה את השמירות האלה.

שינויים ב-API

  • הוספנו את OwnerScope כדי לאפשר איסוף של היקפי תצפית על פריסות וציורים אחרי שהם כבר לא תקפים. (Ic4cf8)
  • נוסף API מסוג derivedStateOf ליצירת אובייקטים של State על סמך חישוב שיכול לקרוא (ולגזור) אובייקטים אחרים של State ‏ (If758b)
  • נוסף TestOnly API ל-SnapshotStateObserver ‏ (I6e2a9)

תיקוני באגים

  • הפונקציה foundation.Box הוצאה משימוש. במקומו צריך להשתמש ב-foundation.layout.Box. (Ie5950, b/167680279)

גרסה ‎1.0.0-alpha03

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 כבר לא מפעיל קורוטינות שלא נשלחו (Ief6af, ‏ b/166486000)

גרסה ‎1.0.0-alpha02

‫2 בספטמבר 2020

‫androidx.compose.runtime:runtime-*:1.0.0-alpha02 מופץ. גרסה ‎1.0.0-alpha02 מכילה את השמירות האלה.

שינויים ב-API

  • הוספת ממשקי API של snapshotFlow ו-withMutableSnapshot לצריכה וליצירה של שינויים בנתוני תמונת המצב. (I3e722)
  • המוסכמה לקריאה לפונקציות שאפשר להרכיב השתנתה. זהו שינוי בינארי שעלול לשבור את התאימות. צריך לקמפל מחדש את כל הספריות כדי שהן יפעלו עם הגרסה הזו של תוסף הקומפיילר של Compose.

    השינוי הזה לא יוצר שינוי שובר תאימות ברמת המקור, כי ממשקי ה-API היחידים שהשתנו הם ממשקי API של קומפיילר שנדרשת הסכמה מפורשת לשימוש בהם. ‫(I7afd2, ‏ b/158123185)

  • הוסרו שיטות תזמון מ-EmbeddingContext ‏ (I7b9be)

  • הפונקציה onPreCommit הוצאה משימוש. עכשיו הפונקציה onCommit מתנהגת כמו onPreCommit.

    הפונקציות onCommit ו-onActive פועלות עכשיו באותו פריים של כוריאוגרף שבו השינויים בהרכב בוצעו, ולא בתחילת הפריים הבא של הכוריאוגרף. (I70403)

גרסה ‎1.0.0-alpha01

‫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 מותאמות אישית שאפשר לדלג על אחת או יותר מהפונקציות setter שלהן ולבצע קומפוזיציה מחדש באופן עצמאי. (Ibbd13)
  • הוסרו קריאות FrameManager שיצאו משימוש.

    בוצעו שינויים בממשקי API פנימיים של Compose כדי לצמצם את התקורה של מעקב אחרי אובייקטים של מצב כמו mutableStateof() (I80ba6)

  • הקומפוזיציה state { ... } יצאה משימוש, ועכשיו משתמשים בקריאות מפורשות ל-remember { mutableStateOf(...) } כדי לשפר את הבהירות. זה מצמצם את כלל ממשקי ה-API ואת מספר המושגים לניהול מצב, ומתאים לדפוס by mutableStateOf() להעברת מאפייני מחלקה. (Ia5727)

  • הפונקציה Flow.collectAsState קובעת עכשיו את ברירת המחדל של ה-dispatcher מתוך הקומפוזיציה עצמה, במקום להשתמש ב-Dispatchers.Main כברירת מחדל. (I9c1d9)

  • תוקנה קריסה שקורית כשמשתמשים בלולאת for במשהו ששומר את המצב. עכשיו מותר להשתמש באותו מפתח ב-savedInstanceState(),‏ ה-API של UiSavedStateRegistry מותאם עכשיו לדרישה החדשה הזו (I4ab76, ‏ b/160042650, ‏ b/156853976, ‏ b/159026663, ‏ b/154920561)

תיקוני באגים

  • התכונה emitView הוצאה משימוש. אם אפשר, השתמשו ב-AndroidView במקום זאת כדי להוציא Views בתוך Compose. שימו לב: בעתיד לא תהיה תמיכה בהוספה ישירה של רכיבי View ו-ViewGroup, אלא אם הם רכיבי עלים בעץ ההרכב. במקרה כזה, אפשר להשתמש ב-AndroidView. (I29b1e, b/163871221)

גרסה 0.1.0-dev16

‫5 באוגוסט 2020

‫androidx.compose.runtime:runtime-*:0.1.0-dev16 מופץ. גרסה 0.1.0-dev16 מכילה את השמירות האלה.

שינויים ב-API

  • מדיניות המוטציה שמוגדרת כברירת מחדל ב-mutableStateOf(),‏ ambientOf() ו-savedInstanceStateOf() השתנתה מ-referentialEqualityPolicy() ל-structuralEqualityPolicy().

    ברירת המחדל להחלטה אם ערך חדש שמוקצה למופע של mutableStateOf() נחשב לשינוי היא עכשיו שימוש ב-== במקום ב-===.

    פרטים נוספים זמינים בכתובת https://kotlinlang.org/docs/reference/equality.html

    ‫ambientOf() ו-savedInstanceStateOf() משתמשים ב-mutableStateOf() בהטמעות שלהם, ולכן הם שונו כדי להיות עקביים עם mutableStateOf().

    שימוש בשוויון מבני תואם יותר לציפיות של המפתחים.

    לדוגמה,

    val state = mutableStateOf(1f)
    

    ואחריו

    state.value = 1f
    

    לא ייחשב יותר כשינוי ב-state, ולא יהיה צורך יותר ליצור מחדש את השימוש ב-state במהלך הכתיבה.

    זהו שינוי שעלול לשבור את התאימות לאחור, אבל ברוב המקרים (למשל כשמשתמשים במחלקות שלא מבטלות את equals()), לא תהיה לו השפעה ניכרת על אפליקציה.

    יכול להיות שיהיה שיפור בביצועים של מחלקות שמבצעות החלפה של equals(), כמו מחלקות data, כי ה-methods של equals() נקראים עכשיו כברירת מחדל כשהם מוקצים ל-mutableStateOf().

    כדי לשחזר את ההתנהגות הקודמת, צריך להוסיף את פרמטר המדיניות policy = referentialEqualityPolicy() לקריאות אל mutableStateOf(), ambientOf() ו-savedInstanceStateOf(). (Ic21a7)

  • ‫Row ו-Column הן עכשיו פונקציות מוטבעות, מה שמפחית באופן משמעותי את התקורה של השימוש בהן. (I75c10)

תיקוני באגים

  • הפונקציה setViewContent הוצאה משימוש. במקומה צריך להשתמש בפונקציה setContent. (I7e497, ‏ b/160335130)
  • נוסף MonotonicFrameAnimationClock שמאפשר להשתמש ב-MonotonicFrameClock כ-AnimationClockObservable כדי לגשר על הפער בין השעונים החדשים שמבוססים על קורוטינות לבין ממשקי API שעדיין משתמשים בשעונים הישנים שמבוססים על קריאות חוזרות (callback).

    הפונקציה המקבילה ל-ManualAnimationClock ב-MonotonicFrameClock היא עכשיו ManualFrameClock. ‫(I111c7, ‏ b/161247083)

  • הפונקציה Modifier.stateDraggable עברה שינוי משמעותי ושמה שונה ל-Modifier.swipeable. נוספה מחלקה חדשה בשם SwipeableState, והמחלקה DrawerState והמחלקה BottomDrawerState עברו שינוי כדי לרשת ממנה. ‫[Modal/Bottom]DrawerLayout לא מקבל יותר פרמטר onStateChange. (I72332, ‏ b/148023068)

  • השיטה Modifier.plus הוצאה משימוש. במקומה צריך להשתמש ב-Modifier.then. השימוש במילה 'ואז' מעביר מסר חזק יותר לגבי הסדר, וגם אוסר על הקלדת Modifier.padding().background() + anotherModifier, מה ששובר את הרצף ומקשה על הקריאה (Iedd58, b/161529964)

  • הקומפוננטה SubcomposeLayout נוספה. זהו פרימיטיב ברמה נמוכה שמאפשר להרכיב את הצאצאים במהלך המדידה, אם רוצים להשתמש בערכים שזמינים רק מאוחר יותר במהלך המדידה להרכבת עץ המשנה. לדוגמה, WithConstraints לא מיושם באמצעות SubcomposeLayout. (I25cc8)

  • השם של Material FilledTextField שונה ל-TextField, והשם של foundational TextField שונה ל-BaseTextField, כדי שיהיה קל יותר למצוא את ה-API הרצוי ולהשתמש בו (Ia6242,‏ b/155482676).

  • השם של Modifier.drawBackground השתנה ל-Modifier.background (I13677)

גרסה 0.1.0-dev15

‫22 ביולי 2020

‫androidx.compose.runtime:runtime-*:0.1.0-dev15 מופץ. גרסה ‎0.1.0-dev15 מכילה את השמירות האלה.

עדכון של יחסי תלות

  • כדי להשתמש בגרסה 0.1.0-dev15 של Compose, צריך לעדכן את יחסי התלות בהתאם לקטעי הקוד החדשים שמוצגים למעלה בקטע הצהרה על יחסי תלות.

שינויים ב-API

  • ההערה @Model הוצאה משימוש. אפשר להשתמש ב-state וב-mutableStateOf כחלופות. ההחלטה להוציא משימוש את התכונה הזו התקבלה אחרי דיונים מעמיקים.

    הצדקה

    ההסבר כולל, בין היתר:

    • צמצום שטח הפנים של ה-API והמושגים שאנחנו צריכים ללמד
    • התאמה טובה יותר לערכות כלים דומות אחרות (Swift UI, ‏ React, ‏ Flutter)
    • ההחלטה ניתנת לשינוי. תמיד אפשר להחזיר את @Model בהמשך.
    • הסרת מקרים מיוחדים של שימוש ושאלות קשות לגבי הגדרת @Model כדברים שאנחנו צריכים לטפל בהם
    • מחלקות נתונים @Model, equals,‏ hashcode וכו'.
    • איך אפשר להגדיר שחלק מהנכסים יהיו במצב 'במעקב' וחלק לא?
    • איך מציינים אם להשתמש בשוויון מבני או בשוויון של הפניה בתצפית?
    • מפחיתה את ה'קסם' במערכת. יקטין את הסיכוי שמישהו יניח שהמערכת חכמה יותר ממה שהיא (כלומר, שהיא יודעת להשוות בין רשימות)
    • הופך את רמת הפירוט של התצפית לאינטואיטיבית יותר.
    • משפר את האפשרות לבצע רפקטורינג ממשתנה -> מאפיין במחלקה
    • יכול להיות שיהיו אפשרויות לאופטימיזציות ספציפיות למדינה שנעשות באופן ידני
    • ההתאמה קרובה יותר לשאר המערכת האקולוגית ומפחיתה את העמימות לגבי מצב בלתי ניתן לשינוי או לגבי "אימוץ מצב ניתן לשינוי"

    הערות לגבי העברה

    כמעט כל השימושים הקיימים ב-@Model ניתנים לשינוי בקלות יחסית באחת משתי דרכים. בדוגמה שלמטה יש מחלקה @Model עם שני מאפיינים רק לצורך הדוגמה, והיא נמצאת בשימוש בקומפוזיציה.

    @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 }
     )
    }
    

    חלופה 1: משתמשים בפקודה State<OriginalClass> ויוצרים עותקים.

    הגישה הזו קלה יותר לשימוש עם מחלקות נתונים של Kotlin. בעצם, צריך להפוך את כל נכסי var הקודמים לנכסי val של מחלקת נתונים, ואז להשתמש ב-state במקום ב-remember, ולהקצות את ערך המצב לעותקים משוכפלים של המקור באמצעות שיטת הנוחות copy(...) של מחלקת הנתונים.

    חשוב לציין שהגישה הזו פועלת רק אם השינויים שבוצעו במחלקה הזו נעשו באותו היקף שבו נוצר המופע State. אם המחלקה משנה את עצמה באופן פנימי מחוץ להיקף השימוש, ואתם מסתמכים על התצפית הזו, כדאי להשתמש בגישה הבאה.

    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) }
     )
    }
    

    חלופה 2: שימוש ב-mutableStateOf ובנציגי מאפיינים

    הגישה הזו פשוטה יותר בזכות נציגי המאפיינים של Kotlin ו-mutableStateOf API, שמאפשרים ליצור מופעים של MutableState מחוץ לקומפוזיציה. בעצם, מחליפים את כל המאפיינים var של המחלקה המקורית במאפיינים var עם mutableStateOf כנציג המאפיין שלהם. היתרון הוא שהשימוש בכיתה לא ישתנה בכלל, רק ההטמעה הפנימית שלה. ההתנהגות לא זהה לחלוטין לדוגמה המקורית, כי כל נכס נצפה או נרשם בנפרד, ולכן יכול להיות שהקומפוזיציות מחדש שרואים אחרי השינוי הזה יהיו מצומצמות יותר (וזה טוב).

    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)

  • שינוי אסטרטגיית יצירת הקוד של מהדר Compose. לפני השינוי, מהדר ה-Compose היה משנה קריאות לפונקציות שניתנות להרכבה. בעקבות השינוי הזה, אנחנו משנים את הגוף של פונקציה קומפוזבילית, ומשאירים את מיקום הקריאה ללא שינוי (ברוב המקרים).

    המשמעות היא שרוב הלוגיקה שמתקשרת עם זמן הריצה של הכתיבה מתרחשת בתחילת גוף הפונקציה, במקום במיקום הקריאה.

    השינוי הזה אמור להיות תואם למקור בכל השימושים ב-Compose. רוב המשתמשים ב-Compose לא יצטרכו לעדכן קוד כתוצאה מהשינוי הזה.

    כדי לתמוך בעבודה הזו, חתימת ה-JVM של כל הפונקציות שניתנות להרכבה השתנתה. פונקציה קומפוזבילית שמקבלת פרמטר יחיד, הופכת לפונקציה שמקבלת 3 פרמטרים. הפרמטרים הנוספים הם Composer, מספר שלם מסוג 'key' ומספר שלם מסוג bitmask שמשמש להעברת מטא-נתונים באמצעות קריאות.

    Compose גם הופכת עכשיו ארגומנטים שמוגדרים כברירת מחדל לפונקציה קומפוזבילית. היא עושה את זה בלי להוסיף עומס יתר סינתטי של ברירת המחדל של הפונקציה עצמה, ולכן השינוי הזה יגרום להגדרת פחות פונקציות.

    אלה שינויים התנהגותיים מכוונים שנובעים מהעדכון הזה:

    1. חלק מהשיחות ידלגו על שלבים שלא היו מדלגות עליהם בעבר
    2. ביטויים שניתנים להרכבה בביטויי ארגומנטים שמוגדרים כברירת מחדל נרשמים עכשיו למינוי ומטופלים בצורה נכונה

    העבודה הזו כללה כמה אופטימיזציות: ‫1. התוצאה של השוואות בין פרמטרים מועברת דרך תרשים הקריאות לפונקציות אחרות שניתנות להרכבה. התוצאה היא פחות השוואות בזמן הריצה, צמצום הגודל של טבלת המשבצות ודילוג על יותר פונקציות שאפשר להרכיב שלא היה עליהן דילוג קודם ‫2. פרמטרים שנקבע שהם 'סטטיים' בזמן ההידור לא מושווים יותר ולא מאוחסנים בזמן הריצה. כך מצמצמים את מספר ההשוואות ואת גודל טבלת המשבצות. 3. מבנה בקרת הזרימה של גוף הפונקציות משמש לצמצום מספר הקבוצות שנוצרות. כך מצטמצם גודל טבלת המשבצות וזמן הריצה 4 צריך לבצע פחות עבודה. פרמטרים של שליחה וקבלה שלא נעשה בהם שימוש בפונקציות לא נכללים בקביעת האפשרות לדלג על הפונקציה אם לא נעשה בהם שימוש בגוף הפונקציה.

    רוב השינויים שעלולים לשבור את הקוד הם ב-API שהקומפיילר מכוון אליו ישירות, והשימוש הרגיל ב-Compose לא יושפע: ‫1. ‫Composer::startExpr הוסר ‫2. הפונקציה Composer::endExpr הוסרה ‫3. ‫Composer::call הוצא משימוש ‫4. העומסים העודפים שאינם varargs של key הוסרו. להשתמש בגרסה vararg מעכשיו והלאה. 5. ההערה Pivotal הוצאה משימוש. במקומה, צריך להשתמש ב-key. 6. הפונקציה ScopeUpdateScope::updateScope שונתה כך שהיא מצפה ל-Function3 במקום ל-Function1 7. הפונקציות restartableFunction ו-restartableFunctionN עודכנו כך שיכללו פרמטרים נוספים של זמן קומפילציה (I60756, b/143464846)

  • נוספו sortWith ו-removeRange ל-MutableVector (Icccf7)

  • נוספו הטמעות של שיטות ברירת מחדל עבור CompositionLifecycleObserver (I24289)

  • החל מגרסה 1.1.0, כדי להשתמש בממשק החלה צריך להשתמש בשיטה clear()‎ כדי להשמיד קומפוזיציות (Ibe697)

  • הפונקציה asMutableList() נוספה ל-MutableVector כדי לאפשר לה לעבור ל-API ציבורי בלי להעתיק את כל הרשימה. (I298df)

  • נוספה הפונקציה rememberCoroutineScope()‎ כדי לקבל CoroutineScope מנוהל בקומפוזיציה להפעלת משימות בתגובה לאירועים. (I0e264)

  • ‫MutableVector הוא אוסף חדש שלא מיישם אף אחד מממשקי האוסף הרגילים. האוסף הזה מציע מהירות גבוהה יותר מדרישות אחרות והוא מיועד לשימוש רק בהטמעות פנימיות. (I8ebd6)

  • הסרנו באופן זמני את StableMutableList ואת StableMutableMap כדי למנוע בעיה בגרסה של Kotlin compose שנדרשת. הממשקים האלה יחזרו כש-Compose יעודכן לגרסה של Kotlin שבה הבעיה לא קיימת.

    ‫SnapshotStateList ו-SnapshotStateMap גלויים עכשיו לכולם, אבל הם יוצאו משימוש אחרי ש-StableMutableList ו-StableMutableMap ישוחזרו. (Ia7769)

  • הוספה של הפונקציה withFrameNanos ברמה העליונה לתזמון אנימציה (Ie34c5)

  • ההערה @Untracked הוצאה משימוש. החלפה עם ‎ @ComposableContract(tracked=false)‎ (Id211e)

  • השמות של RestartableFunction וממשקי ה-API המשויכים שונו ל-ComposableLambda וכו'. ממשקי ה-API האלה טירגטו רק על ידי הקומפיילר, ולכן השינוי הזה לא אמור להשפיע על התאימות ברמת המקור בדרך כלל. השינוי בשם נעשה בעיקר כדי להבהיר מהו המחלקה הזו כשהיא מופיעה במעקב אחר מחסנית (I7eb25)

  • ההערה @Composable כבר לא תקפה לגבי מחלקות (Ia5f02)

  • ‫Ambient<T> הוא עכשיו @Stable במקום @Immutable (I0b4bb)

  • לפני השינוי הזה, פלאגין הקומפיילר של Compose היה מיירט באופן לא טריוויאלי קריאות ל-constructors בתוך פונקציית @Composable אם היה (I5205a, b/158123804)

  • הקומפוזיציה Recompose כבר לא מהווה הפשטה שימושית. רוב הרה-קומפוזיציה צריכה לקרות כתוצאה מהקצאות של MutableState. לכל דבר אחר, מומלץ להשתמש בפונקציה invalidate כדי להפעיל יצירה מחדש של ההיקף הנוכחי. (Ifc992)

  • ההפשטה Observe כבר לא שימושית. אם אתם צריכים לשכפל אותה, אפשר לשכפל את ההטמעה שלה פשוט על ידי יצירת פונקציה הניתנת להגדרה שמבצעת פרמטר lambda הניתן להגדרה. לדוגמה, @Composable fun Observe(body: @Composable () -> Unit) = body() (I40d37)

  • ההערה @Direct הוצאה משימוש לטובת @ComposableContract(restartable=false) (If4708)

  • הוספנו מתאם ל-StateFlow שהוצג לאחרונה, שמאפשר לנו לאכלס מראש את הערך הראשוני כדי שהמצב שמוחזר לא יהיה ניתן לאיפוס (I61dd8,‏ b/156233789)

  • הוספנו מתאם ל-Flow. דוגמה לשימוש: val value by flow.collectAsState() (If2198, b/153375923)

  • ‫[Mutable]אופרטורים של נציגי מאפיינים של מצב הועברו לתוספים כדי לתמוך באופטימיזציות של נציגי מאפיינים ב-Kotlin 1.4. כדי להמשיך להשתמש ב-by state { ... } או ב-by mutableStateOf(...), המתקשרים צריכים להוסיף ייבוא. (I5312c)

  • ‫androidx.compose.ViewComposer הועבר אל androidx.ui.node.UiComposer ‫androidx.compose.Emittable הוסר. הוא היה מיותר כי יש את ComponentNode. הספרייה androidx.compose.ViewAdapters הוסרה. הם כבר לא נחשבים לתרחיש שימוש נתמך. הפונקציה Compose.composeInto הוצאה משימוש. במקומה, צריך להשתמש ב-setContent או ב-setViewContent. הפונקציה Compose.disposeComposition הוצאה משימוש. במקום זאת, צריך להשתמש בשיטה dispose ב-Composition שמוחזר על ידי setContent. השיטה androidx.compose.Compose.subcomposeInto הועברה אל androidx.ui.core.subcomposeInto השם של השיטה ComponentNode#emitInsertAt שונה ל-ComponentNode#insertAt השם של השיטה ComponentNode#emitRemoveAt שונה ל-ComponentNode#removeAt השם של השיטה ComponentNode#emitMode שונה ל-ComponentNode#move ‏ (Idef00)

  • הדגל ComposeFlags.COMPOSER_PARAM עודכן ל-true, מה שישנה את אסטרטגיית יצירת הקוד לתוסף הכתיבה. ברמה גבוהה, הפעולה הזו גורמת ליצירה של פונקציות עם הערה @Composable עם פרמטר סינתטי נוסף, שמועבר לקריאות הבאות עם הערה @Composable כדי שזמן הריצה ינהל את הביצוע בצורה תקינה. זהו שינוי משמעותי שעלול לגרום לבעיות תאימות, אבל הוא אמור לשמור על תאימות ברמת המקור בכל השימושים המאושרים של Compose. (I7971c)

  • שינויים ב-API של ambients שעלולים לגרום לכשלים. פרטים נוספים מופיעים ביומן ובמסמכי התיעוד של Ambient<T> (I4c7ee, b/143769776)

  • נוסף ui-livedata – ארטיפקט חדש עם מתאם ל-LiveData. דוגמה לשימוש: val value by liveData.observeAsState() (Ie9e8c, b/150465596)

  • השימוש במתאמי Rx ללא ערך התחלתי מפורש הוצא משימוש. שימוש בערך null לא תמיד מומלץ כברירת מחדל, למשל כשמדובר ברשימה, עדיף להתחיל עם emptyList()‎ או עם ברירת מחדל סבירה אחרת (I00025,‏ b/161348384)

  • נוסף ui-rxjava2 – ארטיפקט חדש עם מתאמים ל-RxJava2. דוגמה לשימוש: val value by observable.subscribeAsState() (Ifab4b, b/153369097)

  • אפשר עכשיו להשתמש ב-savedInstanceState() עם סוגים שניתן להגדיר כ-nullable‏ (I6847f, ‏ b/153532190)

  • פונקציות חדשות: listSaver()‎ ו-mapSaver()‎, כדי להקל על כתיבת אובייקטים מותאמים אישית של Saver (I8cf68,‏ b/152331508)

  • פונקציות חדשות: savedInstanceState()‎ ו-rememberSavedInstanceState()‎. הן דומות ל-state()‎ ול-remember()‎, אבל יש להן תמיכה מובנית במצב של מופע שנשמר (If1987,‏ b/152025209)

תיקוני באגים

  • השם של runOnIdleCompose שונה לrunOnIdle (I83607)
  • הפכנו את LayoutNode ל-API ניסיוני (I4f2e9)
  • השימוש ב-androidx.ui.foundation.TextFieldValue וב-androidx.ui.input.EditorValue הוצא משימוש. גם רכיבי ה-TextField,‏ FilledTextField ו-CoreTextField composable שמשתמשים בסוג הזה הוצאו משימוש. במקומו, אפשר להשתמש ב-androidx.ui.input.TextFieldValue (I4066d,‏ b/155211005)
  • הוסר DrawBackground API שהוצא משימוש לטובת drawBackground extension APIs ב-Modifier. בוצע רפקטורינג של ההטמעות של color, ‏ brush ו-paint drawBackground כדי לצמצם את נתיבי הקוד וגם כדי להסיר את הדרישה ליצירת Modifier כחלק מהקומפוזיציה. (I0343a)
  • ממשקי API ברמה גבוהה יותר של Compose עודכנו כך שהם חושפים CanvasScope במקום Canvas. כך הצרכנים לא צריכים לתחזק אובייקטים משלהם של Paint. צרכנים שעדיין צריכים גישה ל-Canvas יכולים להשתמש בשיטה drawCanvas של התוסף, שמספקת קריאה חוזרת להנפקת פקודות ציור עם ה-Canvas הבסיסי. (I80afd)
  • בוצע שינוי ב-API של lambda עם Constraints trailing. עכשיו, במקום שני פרמטרים, יש לו היקף של מקבל, שכולל, בנוסף להגבלות ול-layoutDirection, את המאפיינים minWidth,‏ maxWidth,‏ minHeight ו-maxHeight ב-Dp ‏ (I91b9a,‏ b/149979702)
  • נוסף משנה של מרווח פנימי סימטרי. (I39840)
  • הפונקציות wrapContentWidth ו-wrapContentHeight עודכנו כך שהן מצפות ליישור אנכי או אופקי ולא ליישור כלשהו. העדכון של משנה הכבידה מאפשר יישור אנכי או אופקי. העדכונים שבוצעו ברכיבים Row, ‏ Column ו-Stack מאפשרים להגדיר יישור רציף בהתאמה אישית. (Ib0728)
  • המודול ui-text משנה את השם שלו ל-ui-text-core ‏ (I57dec)
  • שיפור DrawModifier API:
    • הגדרתי את היקף המקבל של draw() כ-ContentDrawScope
    • הוסרו כל הפרמטרים ב-draw()
    • ל-DrawScope יש את אותו ממשק כמו ל-CanvasScope הקודם
    • ל-ContentDrawScope יש שיטה drawContent()‎‏ (Ibaced, ‏ b/152919067)
  • התכונה ColoredRect הוצאה משימוש. במקומה, צריך להשתמש ב-method‏ Box(Modifier.preferredSize(width, height).drawBackground(color)). ‫(I499fa, ‏ b/152753731)
  • הוחלף Modifier plus operator בפונקציות של תוסף factory ‏ (I225e4)
  • מעכשיו אפשר לגשת לחברים ב-RowScope וב-ColumnScope מחוץ ל-Row ול-Column. (I3a641)
  • השם של הפריסה LayoutFlexible שונה ל-LayoutWeight. השם של הפרמטר tight שונה ל-fill. (If4738)
  • הפרמטר LayoutDirection נוסף ל-WithConstraints ‏ (I6d6f7)
  • השם של הרקע שונה ל-DrawBackground והוא מוגדר כברירת מחדל (Ia0bd3)
  • החלפנו את ButtonStyle בפונקציות נפרדות והסרנו את העומס של טקסט (מחרוזת). כדאי לעיין בדוגמאות המעודכנות כדי לקבל מידע על השימוש. (If63ab, b/146478620, b/146482131)
  • הפונקציות runOnIdleCompose ו-runOnUiThread הן עכשיו פונקציות גלובליות ולא שיטות ב-ComposeTestRule. (Icbe8f)

External Contribution

  • הוסר API מיותר כמו Looper ו-Handler משכבת ההעברה של Compose Runtime (I6847d)
  • הוצאה משימוש של Flow<T>.collectAsState() ללא ערך ראשוני. במקום זאת, צריך להשתמש ב-StateFlow<T> או להעביר ערך התחלתי מפורש. (I63f98, b/157674865)