Compose Runtime

هي اللبنات الأساسية لنموذج برمجة Compose وإدارة الحالة، ووقت التشغيل الأساسي الذي يستهدفه المكوّن الإضافي لبرنامج تجميع Compose.
آخر الأخبار الإصدار الثابت إصدار محتمل الإصدار التجريبي الإصدار الأوّلي
‫9 سبتمبر 2026 1.12.1 - - 1.13.0-alpha03

البنية

‫Compose هي مجموعة من 7 أرقام تعريف لمجموعات Maven ضمن androidx. تحتوي كل مجموعة على مجموعة فرعية مستهدَفة من الوظائف، ولكل منها مجموعة خاصة من ملاحظات الإصدار.

يوضّح هذا الجدول المجموعات ويتضمّن روابط لكل مجموعة من ملاحظات الإصدار.

مجموعةالوصف
compose.animationإنشاء رسوم متحركة في تطبيقات Jetpack Compose لإثراء تجربة المستخدم
compose.compilerيمكنك تحويل دوال ‎ @Composable وإتاحة عمليات التحسين باستخدام إضافة لبرنامج التجميع في Kotlin.
compose.foundationكتابة تطبيقات Jetpack Compose باستخدام وحدات أساسية جاهزة للاستخدام وتوسيع نطاق الأساس لإنشاء أجزاء نظام التصميم الخاص بك
compose.materialإنشاء واجهات مستخدم Jetpack Compose باستخدام "مكوّنات التصميم المتعدد الأبعاد" الجاهزة للاستخدام هذه هي نقطة الدخول الأعلى مستوى في Compose، وهي مصمَّمة لتوفير مكوّنات تتطابق مع تلك الموضّحة في www.material.io.
compose.material3يمكنك إنشاء واجهات مستخدم Jetpack Compose باستخدام مكوّنات التصميم المتعدد الأبعاد 3، وهي أحدث إصدار من التصميم المتعدد الأبعاد. يتضمّن تصميم Material 3 عناصر وميزات محدّثة لتخصيص التصميم، مثل الألوان الديناميكية في Material You، وهو مصمّم ليكون متوافقًا مع الأسلوب المرئي الجديد وواجهة مستخدم النظام في Android 12.
compose.runtimeهي اللبنات الأساسية لنموذج برمجة Compose وإدارة الحالة، ووقت التشغيل الأساسي الذي يستهدفه المكوّن الإضافي لبرنامج تجميع Compose.
compose.uiالمكوّنات الأساسية لواجهة مستخدم Compose اللازمة للتفاعل مع الجهاز، بما في ذلك التصميم والرسم والإدخال

تحديد الاعتماديات

لإضافة اعتمادية على Compose، يجب تضمين مستودع Google Maven في مشروعك. اطّلِع على مستودع 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"
    }
}

لمزيد من المعلومات حول الاعتماديات، يُرجى الاطّلاع على إضافة اعتماديات الإصدار.

الملاحظات

تساعدنا ملاحظاتك في تحسين Jetpack. يُرجى إعلامنا إذا اكتشفت مشاكل جديدة أو كانت لديك أفكار لتحسين هذه المكتبة. يُرجى الاطّلاع على المشاكل الحالية في هذه المكتبة قبل إنشاء مشكلة جديدة. يمكنك إضافة صوتك إلى مشكلة حالية من خلال النقر على زر النجمة.

إنشاء مشكلة جديدة

يُرجى الاطّلاع على مستندات Issue Tracker للحصول على مزيد من المعلومات.

الإصدار 1.13

الإصدار ‎1.13.0-alpha03

‫9 سبتمبر 2026

تم طرح androidx.compose.runtime:runtime-*:1.13.0-alpha03. يتضمّن الإصدار 1.13.0-alpha03 هذه التعديلات.

الأداء

  • تضمين SlotWriter.forAllDataInRememberOrder لإزالة عمليات التخصيص (Ie39f6)

الإصدار ‎1.13.0-alpha02

‫26 أغسطس 2026

تم طرح androidx.compose.runtime:runtime-*:1.13.0-alpha02. يتضمّن الإصدار 1.13.0-alpha02 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة withLocalRetainedValuesStore، ما يتيح لك عرض قيم من دالة lambda الخاصة بالمحتوى. (I8e871، b/542168593)
  • تمت إضافة عمليات تحميل زائدة تقبل القيم الفارغة من rememberSerializable إلى MutableState. (I77b83، b/543285462)

الإصدار ‎1.13.0-alpha01

‫12 أغسطس 2026

تم طرح androidx.compose.runtime:runtime-*:1.13.0-alpha01. يتضمّن الإصدار 1.13.0-alpha01 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • عدّلنا علامة الميزة 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 لتبسيط إدارة حالة التنقّل/سجلّ الرجوع وإزالة الحاجة إلى تتبُّع key خارجي. يمكنك الوصول إلى حسابك من خلال holder.keys وإزالة الحساب من خلال removeState. (I9bbbb، b/398887924)

  • تمت إضافة staticCompositionLocalWithComputedDefaultOf لإنشاء ProvidableCompositionLocals التي تعمل كقيم ثابتة عند توفيرها، أو يتم احتسابها عند عدم توفيرها. (I844e4)

إصلاح الأخطاء

  • تم إصلاح مشكلة في GapComposer يمكن أن تتسبّب في تنفيذ مثيلات RememberObserver بشكل غير صحيح لعمليات معاودة الاتصال الخاصة بالنسيان بعد حظر withCompositionLocal قبل مثيلات RememberObserver في الحظر. (I4d54c)
  • تم إصلاح استثناء منخفض الحجم عند الكتابة إلى عنصر حالة قابل للتغيير. (I48194، b/503110696)
  • تم إصلاح خطأ في SnapshotStateSet.writeToParcel كان يؤدي إلى تسلسل الإدخال الأول فقط. (I64f4c، b/537461421)
  • تم تعديل CancellationExceptions المستخدَمة لإلغاء LaunchedEffects وCoroutineScopes التي تم تذكُّرها لتكون أكثر وضوحًا عند ظهورها في عمليات تتبُّع تسلسل استدعاء الدوال البرمجية. (I89840، b/449897855)
  • تم تحسين عملية تهيئة العنصر المصاحب لفئات القيم compose:runtime (ComposeStackTraceMode وGroupKind) باستخدام دوال الجلب الديناميكية. (I50640)
  • إزالة شرط compileSdk 37 (If78b4)

المساهمة الخارجية

  • تم إصلاح مشكلة عدم استجابة التركيبات الرئيسية عند إزالة التركيبة الفرعية التي تتضمّن خطأ أثناء استخدام ميزة "التعديل في الوقت الفعلي". (I3717c)
  • تم إصلاح عملية استرداد التعديل في الوقت الفعلي بعد حدوث خطأ في التركيب الفرعي، ما يتيح للتركيبات الرئيسية مواصلة مراقبة تغييرات الحالة. (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 يقبل وسيطات المفتاح. يمكن استخدام واجهة برمجة التطبيقات الجديدة لتفعيل SideEffect لمرة واحدة بدون الحاجة إلى 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

‫01 يوليو 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)

المساهمة الخارجية

  • تمت إضافة تتبُّع مفصّل لعمليات DisposableEffect وSideEffect في وقت تشغيل Compose. (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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة تحميل زائد إلى SideEffect يقبل وسيطات المفتاح. يمكن استخدام واجهة برمجة التطبيقات الجديدة لتفعيل 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 إلى الإصدار 37 من واجهة برمجة التطبيقات. وهذا يعني أنّه يجب استخدام الإصدار 9.2.0 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" على الأقل عند استخدام Compose. (Id45cd، b/413674743)
  • تم إصلاح مشكلة التخزين المؤقت في LinkTable حيث يمكن أن تؤدي عمليات إدراج المحتوى التي تؤدي إلى تغيير الحجم إلى قراءة قيم قديمة، ما قد يؤدي إلى عدم حل CompositionLocals. (I8016c)
  • تم إصلاح الخطأ الذي كان يتسبّب في طرح T.writableRecord IllegalStateException غير ضرورية (Ia778f، b/440975176)

الإصدار 1.7 من ميزة "تتبُّع وقت التشغيل"

الإصدار ‎1.7.0-rc01

‫18 سبتمبر 2024

تم طرح androidx.compose.runtime:runtime-tracing:1.7.0-rc01. يتضمّن الإصدار 1.7.0-rc01 هذه التعديلات.

الإصدار 1.0 من ميزة "تتبُّع وقت التشغيل"

الإصدار 1.0.0-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 إلى التطبيق عند استخدام compose-runtime-tracing.

الإصدار ‎1.0.0-alpha04

‫23 أغسطس 2023

تم طرح androidx.compose.runtime:runtime-tracing:1.0.0-alpha04. يتضمّن الإصدار 1.0.0-alpha04 هذه التعديلات.

الميزات الجديدة

  • متوافق مع أحدث إصدارات أداتَي Benchmark وTracing Perfetto، ما يتيح إمكانية تتبُّع عملية إنشاء التطبيق عند بدء تشغيله (تشغيل على البارد)، مثلاً في AndroidX Benchmark واستوديو Android (بدءًا من الإصدار التجريبي الثاني من Hedgehog).

التغييرات في واجهة برمجة التطبيقات

  • تمت إعادة تسمية androidx.tracing.perfetto.Trace إلى androidx.tracing.perfetto.PerfettoSdkTrace. (I44af8)
  • جعل واجهات برمجة التطبيقات الخاصة بحزمة تطوير البرامج (SDK) لأداة "تتبُّع الأداء" متوافقة مع android.os.Trace (I73ba0، b/282199917)
  • المتطلبات الأساسية لتتبُّع الأخطاء عند بدء تشغيل التطبيق (Iad890)
  • تم دمج ملفات واجهة برمجة التطبيقات التجريبية والعامة (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

‫01 يوليو 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 Runtime لتتبُّع تسلسل التكوين الهرمي، وتحديد التغييرات الناتجة عن إعادة التكوين، وتخزين القيم التي تم تذكّرها. تركّز عملية إعادة الكتابة هذه على تحسين أداء إعادة التكوين، ويتم ذلك بشكل أساسي من خلال استخدام عدد أقل بكثير من عمليات نسخ الذاكرة مقارنةً بمخزن الفجوات SlotTable. يمكن أن تؤدي بعض التغييرات في التسلسل الهرمي للتكوين، مثل إعادة ترتيب قائمة طويلة من العناصر، إلى إعادة التكوين بسرعة تزيد عن ضعف سرعة الإصدار السابق SlotTable. تكون معظم العمليات الأخرى أسرع بنسبة% 10 تقريبًا عند إعادة الإنشاء باستخدام آلية تنفيذ سياسة SlotTable الجديدة. يؤثّر تنفيذ SlotTable الذي يستخدمه وقت التشغيل في جميع طرق Composable ولا يتطلّب إعادة تجميع. يُعد استخدام SlotTable الجديد تغييرًا على مستوى التطبيق، بما في ذلك التبعيات.
  • لا يزال تنفيذ SlotTable هذا تجريبيًا ويتم إيقافه تلقائيًا في الوقت الحالي. يمكن تفعيلها من خلال ضبط ComposeRuntimeFlags.isLinkBufferComposerEnabled على true. في إصدارات التطبيق التي تم تفعيل تصغير حجمها، يُفترض أن تكون هذه القيمة خطأ في ملف proguard-rules.pro التلقائي المتوفّر مع وقت التشغيل. لتفعيل SlotTable الجديد في الإصدار العلني، يجب تغيير هذا الافتراض إلى "صحيح" في ملف proguard-rules.pro الخاص بالتطبيق. لمزيد من المعلومات، يُرجى الاطّلاع على المستندات المتعلّقة بـ ComposeRuntimeFlags.isLinkBufferComposerEnabled.

المتغيرات المحلية للتركيب التلقائي للمضيف

  • تمت إضافة compositionLocalWithHostDefaultOf التي تتيح تحديد CompositionLocals التي تعود إلى بيئة الاستضافة (مثل علامات View في Android) لقيمها التلقائية.

مراقبة snapshotFlow أكثر كفاءة باستخدام SnapshotFlowManager

  • تم طرح واجهة برمجة التطبيقات SnapshotFlowManager لمراقبة 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 على سعة أصغر، ما يمنع حدوث أخطاء نفاد الذاكرة عند إنشاء العديد من التركيبات الفرعية على الأجهزة التي تتضمّن أحجام كومة أصغر (I112b9)

الإصدار ‎1.11.0-beta01

‫11 مارس 2026

تم طرح androidx.compose.runtime:runtime-*:1.11.0-beta01. يتضمّن الإصدار 1.11.0-beta01 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تم الآن وضع علامة "تجريبي" على SnapshotFlowManager وsnapshotFlow التي تقبل المَعلمة manager (I5c1a5 وb/486077876 وI0de71 وb/486077876).

إصلاح الأخطاء

  • إصلاح عُطل "تم استدعاء 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إزالة ComposeRuntimeFlags.isMovingNestedMovableContentEnabled، وهي علامة ميزة وقت التشغيل. (I3ee62، b/455588848)
  • تم تحويل HostDefaultKey من open class إلى interface. يتيح ذلك للمفاتيح تنفيذ آليات بحث متعدّدة (مثل ViewTreeHostDefaultKey) بدون أن تكون مقيّدة بالوراثة من فئة واحدة، ما يحسّن إمكانية التوسّع في بيئات الاستضافة المخصّصة. (I917a2)
  • أصبح HostDefaultProvider وLocalHostDefaultProvider الآن public، ما يسمح لبيئات الاستضافة المخصّصة بتحديد قيم للبيانات المحلية الخاصة بالنظام الأساسي. (I5bdbe)

إصلاح الأخطاء

  • تمت إزالة إمكانية حدوث توقّف تام عند تشغيل snapshotFlows في الوقت نفسه على مؤشّرَين. (Ib4339)
  • تم إصلاح مشكلة في جدول الروابط كان من الممكن أن تتسبّب في إغفال الأدوات للعناصر القابلة للإنشاء في التسلسل الهرمي وربط التركيبات الفرعية بشكلٍ غير صحيح (I7178e).

المساهمة الخارجية

  • تم إصلاح خطأ إيجابي زائف في Lint عند استخدام عامل أحادي لتعديل القيمة في كتلة produceState (I1c7c9)

الإصدار ‎1.11.0-alpha04

‫28 يناير 2026

تم طرح androidx.compose.runtime:runtime-*:1.11.0-alpha04. يتضمّن الإصدار 1.11.0-alpha04 هذه التعديلات.

تغييرات واجهة برمجة التطبيقات

  • أعدنا كتابة SlotTable، وهي بنية البيانات الداخلية التي يستخدمها Compose Runtime لتتبُّع التسلسل الهرمي للتكوين وتحديد التغييرات الناتجة عن إعادة التكوين وتخزين القيم التي تم تذكُّرها. تركّز عملية إعادة الكتابة هذه على تحسين أداء إعادة التكوين، ويتم ذلك بشكل أساسي من خلال استخدام عدد أقل بكثير من عمليات نسخ الذاكرة مقارنةً بمخزن الفجوات SlotTable. يمكن أن تؤدي بعض التغييرات في التسلسل الهرمي للتصميم، مثل إعادة ترتيب قائمة طويلة من العناصر، إلى إعادة إنشاء التصميم أسرع بمرتين مقارنةً بالإصدار السابق SlotTable. تكون معظم العمليات الأخرى أسرع بنسبة% 10 تقريبًا عند إعادة الإنشاء باستخدام عملية SlotTable الجديدة. يؤثّر تنفيذ SlotTable الذي يستخدمه وقت التشغيل في جميع طرق Composable ولا يتطلّب إعادة تجميع. يُعد استخدام SlotTable الجديد تغييرًا على مستوى التطبيق، بما في ذلك التبعيات.
  • هذه SlotTable غير مفعّلة تلقائيًا في الوقت الحالي، ويمكن تفعيلها من خلال ضبط ComposeRuntimeFlags.isLinkBufferComposerEnabled على true.
  • في إصدارات التطبيق التي تم تفعيل تصغير حجمها، يُفترض أن تكون هذه القيمة 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)

المساهمة الخارجية

  • واجهة برمجة التطبيقات التجريبية الجديدة 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تم تقديم الفئة 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إزالة العلامة isMovableContentUsageTrackingEnabled (I71e2b، b/427960130)

المساهمة الخارجية

  • تم إصلاح الخطأ في ميزة "التعديل المباشر" الذي لا يمكن استرداده. (Ieb34f)

الإصدار ‎1.11.0-alpha01

‫3 ديسمبر 2025

تم طرح androidx.compose.runtime:runtime-*:1.11.0-alpha01. يتضمّن الإصدار 1.11.0-alpha01 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إعادة تسمية "RetainedValuesStore.getExitedValueOrDefault" إلى "consumeExitedValueOrDefaultc7a0929"
  • إزالة واجهة برمجة التطبيقات التجريبية لإعادة الإنشاء المتزامن.(c8af15d)

الإصدار 1.10

الإصدار 1.10.6

‫25 مارس 2026

تم طرح androidx.compose.runtime:runtime-*:1.10.6. يتضمّن الإصدار 1.10.6 هذه التعديلات.

إصلاح الأخطاء

  • إصلاح الخطأ "لا يمكن إيقاف إعادة الاستخدام من الجذر إذا كان السبب مجموعات أخرى" في التركيب القابل للإيقاف المؤقت (I474b5، b/488433633)
  • إصلاح الخطأ "يتم استدعاء 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • لقد أجرينا العديد من التغييرات غير المتوافقة مع واجهة برمجة التطبيقات لتبسيط عملية تثبيت RetainedValuesStore وإدارتها. لن تتأثر المكالمات الحالية إلى retain وRetainedEffect، ولكن أي RetainedValuesStore مخصّص سيتطلّب نقل البيانات ليكون متوافقًا مع هذا الإصدار. (If3c2f، b/451921682، b/450539803)

  • لم يعُد RetainedValuesStore يعرض واجهات برمجة التطبيقات المنخفضة المستوى لبدء/إيقاف الاحتفاظ بالبيانات. تتّبع حالة الاحتفاظ بالمحتوى الآن المحتوى تلقائيًا. يتم الآن عرض LocalRetainedValuesStoreProvider لتثبيت RetainedValuesStore. يجب عدم تقديم LocalRetainedValuesStore مباشرةً. يمكنك الاطّلاع على المستندات والعينات المعدَّلة للحصول على مزيد من المعلومات حول هذه التغييرات.

  • تمت إعادة تسمية RetainedValuesStoreProvider إلى RetainedValuesStoreRegistry. لا يعرض هذا الصف الآن سوى واجهات برمجة التطبيقات لتثبيت RetainedValuesStore وإدارتها في التركيب.

  • تم استبدال "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()
          }
      }
  }

من خلال هذه التغييرات في واجهة برمجة التطبيقات، يمكن التعبير عن عملية التثبيت هذه باستخدام الرمز التالي بدلاً من ذلك:

  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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إعادة تسمية 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)
  • تم إصلاح مشكلة في حالة "اللقطة"، حيث إنّ استخدام سياسة دمج لنوع معيّن قد يؤدي إلى احتساب القيمة السابقة بشكل غير صحيح، ما يؤدي إلى عرض قيمة مستقبلية للحالة بدلاً من القيمة السابقة. سيحدث ذلك إذا كان هناك أكثر من لقطتَي بيانات قابلة للتغيير في انتظار المراجعة، وكانت إحدى القيم التي يتم تطبيقها على الأقل تتضمّن سياسة دمج. (I527b5، b/442791065)

الإصدار ‎1.10.0-alpha04

‫24 سبتمبر 2025

تم طرح androidx.compose.runtime:runtime-*:1.10.0-alpha04. يتضمّن الإصدار 1.10.0-alpha04 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة واجهة برمجة التطبيقات RetainScopeHolder لإدارة مجموعة من RetainScopes. يمكن استخدام ذلك لتنفيذ الاحتفاظ بالحاويات ومضيفي التنقّل الذين يتألفون من العديد من العناصر الفرعية التي تختلف مدة الاحتفاظ بها. (I10e0f)
  • تمت إضافة واجهتَي برمجة التطبيقات RetainedContentHost وretainControlledRetainScope، اللتين يمكن استخدامهما لإنشاء RetainScopes تتم إدارتها تلقائيًا للمحتوى الذي يختفي، مثل الألواح القابلة للطي (If81f6)
  • تم إيقاف التحميل الزائد المضمّن نهائيًا للرمز Updater#set لأنّه كان يغلف القيمة المقدَّمة عدة مرات. تمت إضافة تحميل زائد للدالة Updater#init يأخذ مَعلمة تتجنّب الحاجة إلى تعبير lambda لالتقاط البيانات. (Id679e)
  • تُقدّم هذه السمة RetainedEffect، وهي واجهة برمجة تطبيقات للتأثيرات الجانبية تشبه DisposableEffect وتتّبع دورة حياة الاحتفاظ بدلاً من دورة حياة التركيب. تم تصميم واجهة برمجة التطبيقات هذه لاستخدامها في التأثيرات المرتبطة بالاحتفاظ بكائن آخر لا يمكنه تنفيذ 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • توفّر هذه السمة تتبُّع تسلسل استدعاء الدوال البرمجية المستند إلى مفتاح المجموعة والذي يعمل في التطبيقات المصغّرة. سيتم إنشاء ملف ربط Proguard لهذه التتبُّعات من خلال المكوّن الإضافي Compose Compiler Gradle بدءًا من الإصدار 2.3.0 من Kotlin. يتم إيقاف تتبُّع تسلسل استدعاء الدوال البرمجية هذا تلقائيًا، لذا استخدِم ComposeStackTraceMode.GroupKeys لتفعيله. (Ifbcb5)
  • إضافة واجهة: IdentifiableRecomposeScope للأدوات (Idd5e0، b/434194620)
  • تم منع عمليات إبطال غير ضرورية من الحدوث في التركيبات التي تتضمّن CompositionLocalContext (I3fa21، b/412750209)

إصلاح الأخطاء

  • توضيح في المستندات والأدوات أنّ المفاتيح التي يتم تمريرها للاحتفاظ بها يتم الاحتفاظ بها أيضًا تجنَّب تمرير المفاتيح التي سيتم الاحتفاظ بها لأنّ ذلك سيؤدي إلى تسرُّب الذاكرة. (Ib553b، b/177562901)
  • تم إصلاح مشكلة كانت تحدث عندما يتم استدعاء resume() لتصميم مؤقت متوقف مؤقتًا في سلسلة تعليمات مختلفة، إذ قد يحدث تشويش في حالة الإشعارات المعلّقة عندما تحاول سلسلة التعليمات الرئيسية إعادة إنشاء التصميم القابل للإيقاف المؤقت للإطار التالي. (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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة @DoNotRetain، ويمكن استخدامها لإضافة تعليقات توضيحية إلى الأنواع التي يجب عدم استخدامها مع واجهة برمجة التطبيقات retain، ربما لأنّها ستؤدي إلى تسرّب الموارد. (Ie5435)
  • تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من المكوّن الإضافي لنظام Gradle المتوافق مع Kotlin. (Idb6b5)

إصلاح الأخطاء

  • تم إصلاح المحتوى القابل للنقل من أجل احتساب العمليات بشكل صحيح في Applier عندما يعدّل المحتوى العقدة الجذرية لأحد التركيبات. عند احتساب التغييرات على المحتوى القابل للنقل، قد يظل طلب up() معلّقًا ولم يتم إرساله إلى أداة التطبيق، ما يؤدي إلى تحديد موضع حالة أداة التطبيق بشكل غير صحيح لأي استخدام لاحق. (I7c583)، (I47b70)
  • يتم وضع علامة "متوقّف نهائيًا" على CheckResult لأنّه ليس مخصّصًا للاستخدام. (I32934)

الإصدار ‎1.10.0-alpha01

‫13 أغسطس 2025

تم طرح androidx.compose.runtime:runtime-*:1.10.0-alpha01. يتضمّن الإصدار 1.10.0-alpha01 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تعرض هذه الصفحة واجهة برمجة التطبيقات retain API. على غرار rememberSaveable، يمكن أن تحتفظ الدالة retain بالقيم المحفوظة التي تغادر التسلسل الهرمي للتكوين. لا يتم تسلسل القيم المحتفظ بها، كما أنّها تتمتّع بعمر أقصر من القيم المحفوظة، وتتصرّف بشكل مشابه لـ ViewModel في androidx. يمكنك الاطّلاع على المستندات لمزيد من التفاصيل. (Ia3105، b/177562901)
  • تمت إضافة واجهة برمجة تطبيقات awaitOrScheduleNextCompositionEnd()، والتي تصدر رد اتصال عند انتهاء Recomposer من إنشاء الإطار الحالي. إذا لم يكن Recomposer بصدد إنشاء إطار حاليًا، سيتم تعليق هذه الواجهة إلى أن تنتهي عملية إنشاء الإطار التالي ويتم تحديد موعد لإنشاء إطار جديد. (Ib873c)
  • إضافة واجهة برمجة تطبيقات لمزوّد محلي للتركيب لا يعرض وحدة (I22521، b/271871288)
  • تمت إضافة علامة ميزة، isMovableContentUsageTrackingEnabled، تتيح تتبُّع استخدام المحتوى القابل للنقل لتجنُّب بعض النفقات العامة عند إنشاء المحتوى في البداية. يتم حاليًا إيقاف علامات الميزات هذه تلقائيًا. (Ia713d)

إصلاح الأخطاء

  • إصلاح عُطل في المحتوى القابل للنقل عند نقله بين التركيبات الفرعية (I3fa1e، b/436858107)
  • إصلاح خطأ يتعلّق بعدم توفّر جزء من تتبُّع تسلسل استدعاء الدوال البرمجية القابلة للإنشاء عند استخدام عدة تركيبات فرعية متداخلة (I98c6f)
  • تغيير الحد الأدنى التلقائي لإصدار SDK من الإصدار 21 لواجهة برمجة التطبيقات إلى الإصدار 23 (Ibdfca، b/380448311، b/435705964، b/435705223)
  • تم إصلاح مشكلة تداخل عند تعديل الحالة الداخلية لتركيبة قابلة للإيقاف المؤقت من سلاسل محادثات متعددة. (I03895)
  • تعديل مراقب تسجيل التركيب ليتم استدعاؤه قبل التركيب الأولي (I4adca، b/430600932)
  • تم إصلاح خطأ بسيط لجعل AutoboxingStateValuePropertyDetector متوافقًا مع كل من K1 وK2. (Ie81c1)

المساهمة الخارجية

  • اجعل العنصر 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 الآن توفُّر الإصدار 8.8.2 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" كحد أدنى. إذا لم تتمكّن من ترقية AGP، يمكنك بدلاً من ذلك ترقية Lint بشكلٍ منفصل باستخدام android.experimental.lint.version=8.8.2 (أو إصدار أحدث) في ملف gradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث.
  • تم إنشاء مكتبة جديدة للتعليقات التوضيحية في وقت التشغيل. يحتوي هذا العنصر على تعريفات التعليقات التوضيحية بدون الاعتماد على وقت تشغيل Compose، لذا يمكن استخدامه من وحدات غير تابعة لـ Compose.
    • تم نقل @Stable و@Immutable و@StableMarker إلى وقت التشغيل-التعليق التوضيحي، للسماح بإضافة تعليقات توضيحية إلى الوحدات غير التابعة لـ Compose
    • تمت إضافة @FrequentlyChangingValue و@RememberInComposition إلى التعليق التوضيحي في وقت التشغيل. تضع العلامة @FrequentlyChangingValue على التصريحات التي يمكن أن تؤدي إلى إعادة إنشاء متكررة، وتضع العلامة @RememberInComposition على التصريحات التي يجب تذكّرها في عملية الإنشاء. تحذّر عمليات فحص Lint المقابلة من الاستخدام غير الصحيح.
  • ستتوافق androidx.compose.runtime:runtime الآن مع منصات إضافية. تمت إضافة دعم أهداف أجهزة الكمبيوتر وiOS والأهداف الأصلية من مشروع Compose Multiplatform التابع لشركة JetBrains، وسيتم طرحها من خلال Google Maven من الآن فصاعدًا. ولن تتأثر أي عناصر أخرى من Compose بهذا التغيير.

الإصدار ‎1.9.0-rc01

‫30 يوليو 2025

تم طرح androidx.compose.runtime:runtime-*:1.9.0-rc01. يتضمّن الإصدار 1.9.0-rc01 هذه التعديلات.

إصلاح الأخطاء

  • تعديل مراقب تسجيل التركيب ليتم استدعاؤه قبل التركيب الأولي (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 لطُرق إعادة التحميل السريع (Ic56a3، b/426871325)

الإصدار ‎1.9.0-beta01

‫18 يونيو 2025

تم طرح androidx.compose.runtime:runtime-*:1.9.0-beta01. يتضمّن الإصدار 1.9.0-beta01 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة واجهة برمجة تطبيقات للأدوات من أجل تحليل معلومات المصدر التي أضافها برنامج التجميع في Compose. (Iceaf9، b/408492167)
  • تستخدم SnapshotStateSet الآن Parcelable على Android، ويمكن استخدامها الآن كجزء من rememberSaveable { ... }. (I755dd، b/378623803)
  • تستخدم SnapshotStateList الآن Parcelable على Android، ويمكن استخدامها الآن كجزء من rememberSaveable { ... }. (Id18be، b/378623803)
  • تم الآن وضع التعليق التوضيحي @RememberInComposition على movableContentOf()، ما يسمح لأداة Lint برصد الاستخدامات غير الصحيحة (I2738d).
  • تم تعديل واجهة برمجة التطبيقات التجريبية الخاصة بمراقبة الإنشاء للسماح بمراقبة أكثر شمولاً لأسباب إعادة الإنشاء (I32b6a)
  • غيِّر القيمة setDiagnosticStackTraceEnabled إلى "تجريبي" لتوضيح أنّ هذه الميزة ستخضع للتطوير في المستقبل. (I11db3)
  • تم إيقاف currentCompositeKeyHash نهائيًا. يمكنك استخدام currentCompositeKeyHashCode كبديل. تشفّر واجهة برمجة التطبيقات البديلة التجزئة نفسها باستخدام عدد أكبر من البتات، ما يقلّل بشكل كبير من احتمال أن يكون لمجموعتَين عشوائيتَين غير مرتبطتَين في التسلسل الهرمي للتركيب مفتاح التجزئة نفسه. (I4cb6a، b/177562901)
  • تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP (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)
  • إصلاح عملية إرسال المراقبين الذين تم تذكّرهم في التركيب القابل للإيقاف المؤقت لتجنُّب إرسال المراقبين الذين تم تذكّرهم أو نسيانهم في عملية التطبيق نفسها (I570b2، b/404645679، b/407931790)
  • تم التبديل من LifecycleRegistry إلى الوضع غير الآمن في Compose Multiplatform لإيقاف عمليات التحقّق من MainThread وحلّ مشاكل سلاسل المحادثات. لمزيد من التفاصيل، يُرجى الاطّلاع على CMP-8227. (Icee87)

المساهمة الخارجية

  • تم إصلاح خطأ يؤثر في مستخدمي Molecule حيث يمكن أن يؤدي استخدام RecompositionMode.Immediate إلى عدم إعادة إنشاء بعض العناصر. (I9f3a9، b/419527812)
  • دوال جلب PausableComposition isApplied وisCancelled المكشوفة التي تتيح التحقّق من حالة PausableComposition (I994aa)
  • تمت إضافة AnnotationTarget.FUNCTION إلى التعليق التوضيحي FunctionKeyMeta. (I08021)

الإصدار ‎1.9.0-alpha04

‫4 يونيو 2025

تم طرح androidx.compose.runtime:runtime-*:1.9.0-alpha04. يتضمّن الإصدار 1.9.0-alpha04 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تتضمّن SnapshotStateSet الآن واجهة Parcelable على Android، ويمكن استخدامها كجزء من rememberSaveable { ... }. (I755dd، b/378623803)
  • تتضمّن SnapshotStateList الآن واجهة Parcelable على Android، ويمكن استخدامها كجزء من rememberSaveable { ... }. (Id18be، b/378623803)
  • تم الآن وضع التعليق التوضيحي @RememberInComposition على movableContentOf()، ما يسمح لأداة Lint برصد الاستخدامات غير الصحيحة (I2738d).
  • تم تعديل واجهة برمجة التطبيقات التجريبية الخاصة بمراقبة الإنشاء للسماح بمراقبة أكثر شمولاً لأسباب إعادة الإنشاء (I32b6a)

إصلاح الأخطاء

  • تم إصلاح مشكلة ترتيب في إرسال onForgotton، ما كان قد يؤدي مثلاً إلى تنفيذ onDispose للتأثيرات التي يمكن التخلص منها بترتيب خاطئ. (Ic1c91، b/417450712)
  • إصلاح لإعادة استخدام معالجة الحالة في التركيب القابل للإيقاف المؤقت (Ife96e، b/404058957)
  • إصلاح خطأ بسيط لجعل رصد المجموعات القابلة للتغيير متوافقًا مع كل من K1 وK2 (Ie4878)
  • إصلاح خطأ بسيط لجعل عملية البحث عن التعليقات التوضيحية في أدوات الوصول إلى المواقع التي تم تجاهلها متوافقة مع كلّ من K1 وK2 (I9900d)

المساهمة الخارجية

  • تم إصلاح خطأ يؤثر في مستخدمي Molecule حيث يمكن أن يؤدي استخدام RecompositionMode.Immediate إلى عدم إعادة التركيب. (I9f3a9، b/419527812)
  • يتم عرض دوال جلب PausableComposition isApplied وisCancelled التي تسمح بالتحقّق من حالة PausableComposition. (I994aa)

الإصدار 1.9.0-alpha03

‫20 مايو 2025

تم طرح androidx.compose.runtime:runtime-*:1.9.0-alpha03. يتضمّن الإصدار 1.9.0-alpha03 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • غيِّر القيمة setDiagnosticStackTraceEnabled إلى "تجريبي" لتوضيح أنّ هذه الميزة ستخضع للتطوير في المستقبل. (I11db3)

إصلاح الأخطاء

  • تم إصلاح مشكلة إعادة استخدام الحالة عند إيقاف تركيبة مؤقتًا وإعادة تشغيلها، ولكن كان يجب إعادة إنشاء بعض الحالات التي تم إيقافها مؤقتًا لأنّ بعض الحالات التي تم قراءتها قد تغيّرت أثناء إيقاف التركيبة مؤقتًا. (I441d1، b/416209738)
  • تم إكمال إصلاح مشكلة إرسال البيانات في الدالة remember الخاصة بالتركيب القابل للإيقاف المؤقت، لأنّ الإصلاح السابق كان غير مكتمل. (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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تم إيقاف rememberSaveable نهائيًا باستخدام "مفتاح" مخصّص. يتجاوز هذا الخيار النطاق الموضعي، ما يؤدي إلى حدوث أخطاء في الحالة وسلوك غير متسق (مثل مشاركة الحالة أو فقدانها بدون قصد، ومشاكل في LazyLayouts المتداخلة). يُرجى إزالة المَعلمة "key" لاستخدام النطاق الموضعي من أجل الحصول على حالة متسقة ومحدودة النطاق. يمكنك الاطّلاع على رسالة الالتزام الكاملة لمزيد من التفاصيل. (I5e6ff، b/357685851)

إصلاح الأخطاء

  • تتجاهل السمة OffsetApplier الآن السمة apply() بشكل صحيح، والتي تم تقديمها مع ميزة "التجميع القابل للإيقاف المؤقت". قد يؤدي عدم توفّر هذا الخيار إلى طرح تركيبة قابلة للإيقاف المؤقت استثناءً عند تعديل العُقد الافتراضية. (Idbf31، b/409291131)
  • تم إصلاح حالة توقّف تام قد تؤثر في مستخدمي Molecule عند إلغاء مكالمة معلّقة إلى FrameClock.withFrameNanos أثناء إرسال إطار. (I89cab، b/407027032)
  • قد يصبح Recomposer غير نشط مع استمرار حالة المحتوى القابل للنقل في انتظار تجاهله. لا يحدث ذلك عادةً لأنّه يتم تجاهل حالة المحتوى القابل للنقل في الحلقة الرئيسية لـ 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 الآن توفُّر الإصدار 8.8.2 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android" كحد أدنى. إذا لم تتمكّن من ترقية "مكوّن Android الإضافي في Gradle"، يمكنك بدلاً من ذلك ترقية Lint بشكلٍ منفصل باستخدام android.experimental.lint.version=8.8.2 (أو إصدار أحدث) في gradle.properties. لتشغيل عمليات التحقّق من أخطاء Compose البرمجية داخل بيئة التطوير المتكاملة، يجب استخدام Android Studio Ladybug أو إصدار أحدث.

التغييرات في واجهة برمجة التطبيقات

  • تم إيقاف currentCompositeKeyHash نهائيًا. يمكنك استخدام currentCompositeKeyHashCode كبديل. تشفّر واجهة برمجة التطبيقات البديلة التجزئة نفسها باستخدام عدد أكبر من البتات، ما يقلّل بشكل كبير من احتمال أن يكون لمجموعتَين عشوائيتَين غير مرتبطتَين في التسلسل الهرمي للتركيب مفتاح التجزئة نفسه. (I4cb6a، b/177562901)
  • تتطلّب المشاريع التي تم إصدارها باستخدام Kotlin 2.0 استخدام الإصدار 2.0.0 أو إصدار أحدث من KGP (Idb6b5)
  • تم نقل @Stable و@Immutable و@StableMarker إلى التعليقات التوضيحية في وقت التشغيل (بطريقة متوافقة). يمكنك الآن الاعتماد على runtime-annotation إذا كنت تريد استخدام هذه التعليقات التوضيحية من المكتبات التي لا تعتمد على Compose. (I23a16)
  • تتم إزالة onCreating وonDisposing لأنّهما أصبحا قديمَين وتمت إعادة تسميتهما إلى onPreCreate وonPreDispose. يكمل هذا التغيير عملية إعادة التسمية. (I97461)
  • عرض عنصر CompositionLocal يتيح إرفاق تتبُّع تسلسل استدعاء الدوال البرمجية في Compose استنادًا إلى موقع عقدة Compose في التركيب (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. ستبقى واجهة برمجة التطبيقات الحالية المستندة إلى Saver متاحة. (Iea4ab، b/376028110)

إصلاح الأخطاء

  • إصلاح عملية إرسال المراقبين الذين تم تذكّرهم في التركيب القابل للإيقاف المؤقت لتجنُّب إرسال المراقبين الذين تم تذكّرهم أو نسيانهم في عملية التطبيق نفسها (I570b2، b/404645679، b/407931790)
  • تمت إعادة تسمية الطرق SnapshotObserver من onCreating إلى onPreCreate ومن onDisposing إلى onPreDispose لتتوافق مع إرشادات واجهة برمجة التطبيقات. تم إيقاف الطرق السابقة نهائيًا، وتستدعي الطرق الجديدة الطرق القديمة تلقائيًا، لذا ستستمر عمليات التنفيذ الحالية لهذه الواجهة في العمل إلى أن تتم إزالة الطرق. ستتم إزالة هذه الطرق في الإصدار الأوّلي 1.9.0 في تغيير لاحق سيتبع هذا التغيير قريبًا. ستتم إزالتها من الإصدار التجريبي 1.8 قبل الإصدار الثابت 1.8. (I6d753)
  • تم إصلاح المشكلة التي قد يتم فيها نسيان القيم المحفوظة وإعادة احتسابها بشكل غير صحيح عند إعادة إنشاء مجموعة محذوفة تظهر بعد مجموعة قابلة للنقل (I62cab، b/383769314)
  • إتاحة تتبُّع تسلسل استدعاء الدوال البرمجية في LaunchedEffect وrememberCoroutineScope (I705c0، b/354163858)
  • تتطلّب عمليات التحقّق من أخطاء Compose الآن الحدّ الأدنى من إصدار "مكوّن Android الإضافي لنظام Gradle" وهو 8.8.2 من سطر الأوامر، والإصدار Ladybug من "استوديو Android" على الأقل للاستفادة من ميزات بيئة التطوير المتكاملة. إذا كنت تستخدم إصدارًا قديمًا من المكوّن الإضافي لنظام Gradle المتوافق مع Android‏ (AGP)، يمكنك ضبط android.experimental.lint.version=8.8.2 في ملف gradle.properties لترقية إصدار Lint بدون التأثير في AGP. (I6f2a8)

المساهمة الخارجية

  • تمت إضافة 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إعادة تسمية الطرق SnapshotObserver من onCreating إلى onPreCreate ومن onDisposing إلى onPreDispose لتتوافق مع إرشادات واجهة برمجة التطبيقات. تم إيقاف الطرق السابقة نهائيًا، وتستدعي الطرق الجديدة الطرق القديمة تلقائيًا، لذا ستستمر عمليات التنفيذ الحالية لهذه الواجهة في العمل إلى أن تتم إزالة الطرق. ستتم إزالة هذه الطرق في الإصدار الأوّلي 1.9.0 في تغيير لاحق سيتبع هذا التغيير قريبًا. ستتم إزالتها من الإصدار التجريبي 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 هذه التعديلات.

إصلاح الأخطاء

  • إعادة طرح الاستثناء الذي تم رصده في التركيبة القابلة للإيقاف المؤقت (384486d)

الإصدار ‎1.8.0-beta01

‫29 يناير 2025

تم طرح androidx.compose.runtime:runtime-*:1.8.0-beta01. يتضمّن الإصدار 1.8.0-beta01 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تم إصلاح مشكلة قد يؤدي فيها طرح عنصر قابل للطرح أثناء الإنشاء لا يمتد من 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة واجهة برمجة تطبيقات للأدوات تساعد "أداة فحص التنسيق" في ربط التركيبات الفرعية بالتركيب الأصلي في الحالات التي لا يتم فيها استخدام عقدة لربط التركيبات معًا. (I4ce3d)
  • تم جعل الثوابت الحسابية والخاصة في SnapshotId داخلية بدلاً من أن تكون عامة. يمكن إجراء العمليات الحسابية على SnasphotId، إذا لزم الأمر، عن طريق تحويلها إلى Int أو Long باستخدام toInt() أو toLong() على التوالي. (Ic3a57)

المساهمة الخارجية

  • تحسين مساحة التخزين لمَعلمات movableContentOf (ed87177)

الإصدار ‎1.8.0-alpha06

‫13 نوفمبر 2024

تم طرح androidx.compose.runtime:runtime-*:1.8.0-alpha06. يتضمّن الإصدار 1.8.0-alpha06 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تغييرات في واجهة برمجة التطبيقات PausableComposition تتضمّن هذه التغييرات غير المتوافقة إصدارات سابقة من 1.8.0-alpha (منذ 1.8.0-alpha02)، ولكن بما أنّ هذه واجهات برمجة تطبيقات جديدة في الإصدار 1.8.0، لا يتم الحفاظ على التوافق مع الإصدارات القديمة لأنّ واجهات برمجة التطبيقات لا تزال في مرحلة الإصدار الأولي. (I39819)
  • تضيف واجهات برمجة تطبيقات الأدوات لمراقبة إنشاء تركيبات جديدة ضمن Recomposer (Iaeb7e)
  • تمت إضافة snapshotId من النوع Long إلى Snapshot وإيقاف id نهائيًا. تم تغيير رقم تعريف اللقطة من Int إلى Long لتجنُّب تجاوز رقم تعريف اللقطة على الأنظمة التي تتضمّن معدلات لقطات عالية جدًا ورسومًا متحركة طويلة الأمد. تم تحديد النوع على أنّه متوقّع/فعلي للسماح بأن يكون هذا النوع Int أو نوعًا آخر على المنصات التي لا يتوفّر فيها نوع Long أصلي. يجب أن تتجنّب المنصات التي لا تتضمّن Long أصليًا، مثل JavaScript، معدّلات اللقطات العالية (أكثر من 1000 لقطة في الثانية) التي قد تتسبّب في حدوث تجاوز سعة Int كل 24 يومًا تقريبًا. (I38ac3، b/374821679)

إصلاح الأخطاء

الإصدار ‎1.8.0-alpha05

‫30 أكتوبر 2024

تم طرح androidx.compose.runtime:runtime-*:1.8.0-alpha05. يتضمّن الإصدار 1.8.0-alpha05 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة تجاوز سعة التخزين المؤقت عند إضافة Int.MAX_VALUE إلى SnapshotIdSet. (b/370536104، Ic4179f6)
  • تحسينات دقيقة في وقت التشغيل (I50c60)
  • السماح لأداة R8 بإزالة طلبات runtimeCheck الخاصة بتصحيح الأخطاء (I8c44)
  • جعل compoundKeyOf تكرارية بدلاً من تكرارية عودية (I5817f)

المساهمة الخارجية

  • تنفيذ حِزم باستخدام قوائم المجموعات (I7d47c)

الإصدار ‎1.8.0-alpha04

‫16 أكتوبر 2024

تم طرح androidx.compose.runtime:runtime-*:1.8.0-alpha04. يتضمّن الإصدار 1.8.0-alpha04 هذه التعديلات.

تحسينات على الأداء

  • توفير معرّف اللقطة لسجلات الحالة في الدالة الإنشائية (85c00f)
  • إعادة هيكلة SnapshotState*** لتجنُّب أخطاء التحقّق من الفئة (6ee4a6)
  • إصلاح قواعد R8 لمنع تضمين عمليات طرح الاستثناءات (5beb92)
  • تحسين العمليات بشكل دقيق (d73c5c)
  • تحسين عمليات تخصيص SynchronizedObject على جهاز JVM (2b043f)

الإصدار ‎1.8.0-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 من العناصر. لا يُفترض استخدام أي من هذه الاستهدافات، بل هي عناصر نائبة للمساعدة في جهود Jetbrains Compose.

الإصدار 1.7.0

‫4 سبتمبر 2024

تم طرح androidx.compose.runtime:runtime-*:1.7.0. يتضمّن الإصدار 1.7.0 هذه التعديلات.

التغييرات المهمة منذ الإصدار 1.6.0

  • تمت إضافة إمكانية توفير تركيبة محلية يتم احتسابها استنادًا إلى قيم التركيبات المحلية الأخرى إما تلقائيًا باستخدام compositionLocalWithComputedDefault() أو من خلال توفير تعبير لامدا لاستخدامه في احتساب القيمة باستخدام providesComputed بدلاً من provides.
  • يمكن الحصول على قيمة CompositionLocal باستخدام السمة currentValue الخاصة بـ CompositionLocal التي يمكن الوصول إليها من داخل دالة lambda التي تحتسب القيمة. يتم استخدام هذا النوع بدلاً من current الذي لا يمكن الوصول إليه إلا في دوال @Composable. (Iadbc0)
  • يمكن الوصول إلى عناصر الحالة التي تم إنشاؤها حديثًا على الفور من اللقطات الأخرى، بما في ذلك اللقطة العامة، مع حالتها الأولية. لن تظهر أي تعديلات لاحقة إلى أن يتم تطبيق اللقطة التي تم إنشاء العنصر فيها.
  • الحالة الأولية لـ mutableStateOf()، بالإضافة إلى إصداراتها الأساسية، هي القيمة التي تم تمريرها كمَعلمة إلى mutableStateOf(). الحالة الأولية لكل من mutableStateListOf() وmutableStateMapOf() هي فارغة.
  • تمت إضافة Snapshot.isInSnapshot وSnapshot.PreexistingSnapshotId اللذين يُستخدمان لإتاحة إمكانية الوصول إلى عنصر الحالة على الفور من اللقطة العامة عند إنشائه.
  • يمكن أن تتيح عناصر الحالة المخصّصة إمكانية الوصول إليها على الفور باتّباع نمط التغييرات التي تم إجراؤها على عناصر اللقطة المضمّنة. (I84a17)
  • فعِّل nonSkippingGroupOptimization لمكتبات الإنشاء. يؤدي ذلك إلى زيادة كفاءة الرمز البرمجي الذي تم إنشاؤه لجميع الدوال البرمجية القابلة للإنشاء وغير القابلة لإعادة التشغيل في androidx. نخطّط لإتاحة هذه الميزة تلقائيًا في المستقبل. I(acbc08)
  • إبطال صلاحية دوال lambda القابلة للإنشاء في التركيبات الفرعية على الإطار نفسه (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() أو من خلال توفير تعبير لامدا لاستخدامه في احتساب القيمة باستخدام providesComputed بدلاً من provides.
  • يمكن الحصول على قيمة CompositionLocal باستخدام السمة currentValue الخاصة بـ CompositionLocal التي يمكن الوصول إليها من داخل دالة lambda التي تحتسب القيمة. يتم استخدام هذا النوع بدلاً من current الذي لا يمكن الوصول إليه إلا في دوال @Composable. (Iadbc0)

التغييرات في واجهة برمجة التطبيقات

  • يمكن الوصول إلى عناصر الحالة التي تم إنشاؤها حديثًا على الفور من اللقطات الأخرى، بما في ذلك اللقطة العامة، مع حالتها الأولية. لن تظهر أي تعديلات لاحقة إلى أن يتم تطبيق اللقطة التي تم إنشاء العنصر فيها.
  • الحالة الأولية لـ mutableStateOf()، بالإضافة إلى إصداراتها الأساسية، هي القيمة التي تم تمريرها كمَعلمة إلى mutableStateOf(). الحالة الأولية لكل من mutableStateListOf() وmutableStateMapOf() هي فارغة.
  • تمت إضافة Snapshot.isInSnapshot وSnapshot.PreexistingSnapshotId اللذين يُستخدمان لإتاحة إمكانية الوصول إلى عنصر الحالة على الفور من اللقطة العامة عند إنشائه.
  • يمكن أن تتيح عناصر الحالة المخصّصة إمكانية الوصول إليها على الفور باتّباع نمط التغييرات التي تم إجراؤها على عناصر اللقطة المضمّنة. (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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • إضافة خيار استبدال المجموعات لتحسين رصد التغييرات (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 هذه التعديلات.

إصلاح الأخطاء

  • إبطال صلاحية دوال lambda القابلة للإنشاء في التركيبات الفرعية على الإطار نفسه (98301c)
  • يجب استدعاء onRelease رد الاتصال بالترتيب نفسه الذي تم به استدعاء onForgotten. (2cd790)
  • تغيير الفلتر الذي لم يتم رصده في snapshotFlow (796b80)

تحسينات على الأداء

  • تعديل أداة مراقبة اللقطات في مكانها عندما تكون شفافة (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)

إصلاح الأخطاء

  • إضافة بيانات وصفية للمَعلمات التلقائية في ميزة "التذكّر التلقائي" (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 إلا عند تخزينها في عملية حساب التذكير. (f6b4dc)
  • حصر عملية الالتقاط $dirty على تعبيرات lambda المضمّنة (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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • نشر قيم ثبات معيّنة في التعليق التوضيحي (274a4c)

إصلاح الأخطاء

  • استخدِم سياسة مرجعية لحالة النطاق المحلي للتركيب في السياق. (83361c)
  • يجب حصر عملية التقاط $dirty على تعبيرات lambda المضمّنة. (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 إلا عند تخزينها في عملية حساب التذكير. (f6b4dc)
  • تحسين عمليات التخصيص في ترتيب قائمة عمليات الإبطال (954d63)
  • استخدِم الخرائط الجديدة غير المخصّصة في SnapshotStateObserver. (4303ce)
  • محو عمليات الإبطال عند إيقاف التجميع (e001be)

الإصدار 1.6.0-alpha07

‫4 أكتوبر 2023

تم طرح androidx.compose.runtime:runtime-*:1.6.0-alpha07. يتضمّن الإصدار 1.6.0-alpha07 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تم الآن وضع علامة RandomAccess على SnapshotStateList لتفعيل استخدام إصدار أدوات المساعدة في القوائم الذي يتيح الفهرسة المباشرة. (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)

التغييرات في واجهة برمجة التطبيقات

  • أضفنا طريقة لإيقاف 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)
  • يتم وضع علامة @ExplicitGroupsComposable على SideEffect لتجنُّب إنشاء مجموعة. (I74815)
  • تجنُّب مقارنة الخرائط المحلية للتركيب عند إعادة الاستخدام (782071)

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة تحميل زائد لحالة خاصة لـ CompositionLocalProviders يتجنّب النفقات العامة المستخدَمة لتوفير قيم متعددة بشكل أسرع، ولكنّه يفرض نفقات عامة عند توفير قيمة واحدة. (I6d640، b/288169379)

إصلاح الأخطاء

  • إصلاح مشكلة تسريب الذاكرة في جدول الخانات (73fcfe)
  • إصلاح طريقة استعادة rememberSaveable عندما تعرض stateSaver قيمة فارغة (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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إزالة عمليات التخصيص في إعادة التركيب، والصور المتحركة الملوّنة، وAndroidComposeView. (Ib2bfa)
  • تمت إضافة التعليق التوضيحي @StateFactoryMarker لوضع علامة على الدوال التي تنشئ حالات ويجب تضمينها في استدعاء remember. (I64550)
  • إضافة إصدارات أولية من State وMutableState (fb3d89)
  • تمت الإضافة في ‎Snapshot.isApplyObserverNotificationPending (I672a5)
  • تمت إضافة إصدارات أولية من واجهة برمجة التطبيقات State، ما يتيح تتبُّع قيم Int وLong وFloat وDouble في عناصر State بدون فرض عقوبات على التعبئة التلقائية. استخدِم طرق الإنشاء الجديدة mutableIntState(Int) وmutableFloatStateOf(Float) وما إلى ذلك للاستفادة من هذه الميزات. (I48e43)

إصلاح الأخطاء

  • تخطّي إعادة إنشاء التركيبات الفرعية التي ستتم إزالتها (Ieeb99، b/254645321)
  • عدم الاحتفاظ بمرجع اللقطة في ComposerImpl (0206f7)
  • عدم تطبيق التركيب مرتين (f5791b)
  • ضمان إبطال قيم الحالة المشتقة غير المهيأة (aa2a92)
  • استدعاء onEndChanges أثناء التخلص من التركيب (62cc8c)
  • إصلاح مشكلة نقل المحتوى إلى مقطع فرعي (4beb41)
  • إصلاح حالات الإغلاق التام المحتملة (c1a425 و8edce0)
  • سيحظر أداة إعادة الإنشاء التي تم إنشاؤها لنافذة Android الآن المكالمات إلى withFrameNanos فقط بدلاً من كل التركيب عند تلقّي إشعار ON_STOP. وهذا يعني أنّ النوافذ المرتبطة بالأنشطة المتوقّفة ستستمر في إعادة الإنشاء عند حدوث تغييرات في البيانات، ولكن سيتم حظر الحركات أو أيّ برنامج آخر يستدعي withFrameNanos. (Id9e7f، b/240975572)
  • تنفيذ عمليات معاودة الاتصال لإيقاف LayoutNode قبل التخلص من التأثيرات 3784073
  • إصلاح العلامات المتغيرة لعمليات إعادة تشغيل lambdas ea81df9
  • إصلاح مشكلة تراجع التعديل المباشر في Composable مع العُقد 73fd4d8
  • يجب أن يؤدي ON_STOP إلى إيقاف عمليات بث ساعة عرض اللقطات مؤقتًا بدلاً من إنشاء ae276f1
  • إبطال نطاقات SnapshotStateObserver للحالات المشتقة غير المتغيرة 84d9b1c
  • إصلاح مشكلة محتملة في التوقف التام عند التخلص من التركيبات 28761fc
  • حلّ مشكلة نقل المحتوى إلى تركيبة فرعية 92d4156
  • إصلاح العلامات المتغيرة لعمليات إعادة تشغيل lambdas (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() إلى أنواعها المتخصّصة المقابلة للعناصر الأساسية. رقم تعريف أداة التدقيق هو AutoboxingStateCreation. في السابق، كان هذا الفحص مفعَّلاً تلقائيًا لجميع المشاريع. لعرض هذا التحذير في محرِّر "استوديو Android" وفي نواتج أداة 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إزالة عمليات التخصيص في إعادة التركيب، والصور المتحركة للألوان، وAndroidComposeView (Ib2bfa)
  • تمت إضافة التعليق التوضيحي @StateFactoryMarker لوضع علامة على الدوال التي تنشئ حالات ويجب تضمينها في استدعاء remember. (I64550)
  • إضافة إصدارات أولية من State وMutableState (fb3d89)
  • تمت الإضافة في ‎Snapshot.isApplyObserverNotificationPending (I672a5)

إصلاح الأخطاء

  • تخفيض المخصصات (I65c09 وd7ea77 و727974 و445808 )
  • عدم الاحتفاظ بمرجع اللقطة في ComposerImpl (0206f7)
  • إلغاء سريع لعملية الإنشاء CoroutineScopes (a55362 وbd382f)
  • عدم تطبيق التركيب مرتين (f5791b)
  • ضمان إبطال قيم الحالة المشتقة غير المهيأة (aa2a92)
  • استدعاء onEndChanges أثناء التخلص من التركيب (62cc8c)
  • إصلاح مشكلة نقل المحتوى إلى مقطع فرعي (4beb41)
  • إصلاح حالات الإغلاق التام المحتملة (c1a425
  • يجب أن يؤدي ON_STOP إلى إيقاف عمليات بث ساعة عرض اللقطات مؤقتًا بدلاً من إيقاف التركيب (f4a2d1)
  • إصلاح العلامات المتغيرة لعمليات إعادة تشغيل lambdas (8a03e9)
  • تنفيذ عمليات رد الاتصال لإيقاف التفعيل في LayoutNode قبل التخلص من التأثيرات (8b0fa4)

المساهمة الخارجية

  • تمت الإضافة في ‎Snapshot.isApplyObserverNotificationPending (I672a5)

الإصدار ‎1.5.0-alpha04

‫10 مايو 2023

تم طرح androidx.compose.runtime:runtime-*:1.5.0-alpha04. يتضمّن الإصدار 1.5.0-alpha04 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة إصدارات أولية من واجهة برمجة التطبيقات State، ما يتيح تتبُّع قيم 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • سيحظر أداة إعادة الإنشاء التي تم إنشاؤها لنافذة Android الآن المكالمات إلى withFrameNanos فقط بدلاً من كل التركيب عند تلقّي إشعار ON_STOP. وهذا يعني أنّ النوافذ المرتبطة بالأنشطة المتوقّفة ستستمر في إعادة الإنشاء عند حدوث تغييرات في البيانات، ولكن سيتم حظر الحركات أو أيّ برنامج آخر يستدعي withFrameNanos. (Id9e7f، b/240975572)

إصلاح الأخطاء

  • إصلاح حالة توقّف تام محتملة في قائمة اللقطات والخريطة 5c1a425
  • تنفيذ عمليات معاودة الاتصال لإيقاف LayoutNode قبل التخلص من التأثيرات 3784073
  • إصلاح العلامات المتغيرة لعمليات إعادة تشغيل lambdas ea81df9
  • إصلاح مشكلة تراجع التعديل المباشر في Composable مع العُقد 73fd4d8
  • يجب أن يؤدي ON_STOP إلى إيقاف عمليات بث ساعة عرض اللقطات مؤقتًا بدلاً من إنشاء ae276f1
  • إبطال نطاقات SnapshotStateObserver للحالات المشتقة غير المتغيرة 84d9b1c
  • إصلاح مشكلة محتملة في التوقف التام عند التخلص من التركيبات 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 لمراقبة مراحل نشاط عُقد Compose. 8b6a258
  • إضافة السمة parameterTypes إلى ComposableMethod 7b6c7ad

إصلاح الأخطاء وتحسينات على الأداء

  • محو كل من فهرسي النطاق في SnapshotStateObserver 29f4a3e
  • إضافة المجموعات المطلوبة في نص دوال lambda غير القابلة للتخطّي 7d06752
  • تحسين خصائص مرجع الذاكرة لحالة Snapshot 93fcae8
  • إزالة التحويل إلى نوع القيمة في عمليات البحث المحلية في التركيب 0875717
  • استخدام المفتاح الصحيح لمجموعات العُقد غير القابلة لإعادة الاستخدام 6388d8d
  • حماية SnapshotStateObserver من عمليات التطبيق المتكرّرة والمتزامنة 98cb6ba
  • تمت إضافة عملية التحقّق من حدود الفهرس في طريقة IdentityArraySet "get" 35a77d3
  • تعديل وحدة الإنشاء لاستخدام إضافات ViewTreeLifecycleOwner 21c2122
  • إرسال إشعارات التطبيق بعد أن ينتهي Recomposer من إنشاء الإطار 98f2641
  • إصلاح عُطل فهرس خارج النطاق عند إلغاء Recomposer 8f8656f
  • فرض إعادة الإنشاء دائمًا في حال تغيّر موفّرو العناصر الرئيسية في Composition 9526fcc
  • Recomposer tolerance for cancelled Jobs a55f7ed
  • تحسين معالجة عمليات الإبطال لعدد كبير من عمليات الإنشاء 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • المزيد من أنواع/إمكانية قبول القيم الفارغة للدالات المضمّنة/المخفية التي تم إيقافها نهائيًا (I24f91)

الإصدار 1.4.0-alpha04

‫11 يناير 2023

تم طرح androidx.compose.runtime:runtime-*:1.4.0-alpha04. يتضمّن الإصدار 1.4.0-alpha04 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تستخدم TestMonotonicFrameClock الآن التعليق التوضيحي التجريبي الصحيح. (I95c9e)

إصلاح الأخطاء

  • منع تطبيق SnapshotStateObserver بشكل متكرّر ومتزامن (d902fb)

الإصدار ‎1.4.0-alpha03

‫7 ديسمبر 2022

تم طرح androidx.compose.runtime:runtime-*:1.4.0-alpha03. يتضمّن الإصدار 1.4.0-alpha03 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • إضافة طريقة عرض عامة جديدة إلى الفئة 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • لدى 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 هذه التعديلات.

إصلاح الأخطاء

  • تم التحديث لدعم الإصدار 1.3.2 من androidx.compose.ui

الإصدار 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

التعامل مع الاستثناءات / إتاحة التعديل في الوقت الفعلي

تتبُّع التركيب

واجهات برمجة التطبيقات Composable Reflection

إصلاحات وقت التشغيل

نظام اللقطات

الإصدار 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 هذه التعديلات.

إصلاح الأخطاء

  • واجهة برمجة التطبيقات المعدَّلة (I64ca0)

الإصدار 1.3.0-beta01

‫24 أغسطس 2022

تم طرح androidx.compose.runtime:runtime-*:1.3.0-beta01. يتضمّن الإصدار 1.3.0-beta01 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة طريقة find إلى CompositionData للسماح لأدوات المطوّرين التي تستخدم واجهة برمجة التطبيقات هذه بالعثور بسرعة على مجموعة فرعية من التركيبة باستخدام هويتها. (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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • إعادة إضافة ComposerKt.traceEventStart(Int, String) لتحقيق التوافق مع الإصدارات القديمة (I6e6de)

الإصدار 1.3.0-alpha01

‫29 يونيو 2022

تم طرح androidx.compose.runtime:runtime-*:1.3.0-alpha01. يتضمّن الإصدار 1.3.0-alpha01 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • نقل وظائف الأداة إلى وقت التشغيل (I4f729)

الإصدار 1.2

الإصدار 1.2.1

‫10 أغسطس 2022

تم طرح androidx.compose.runtime:runtime-*:1.2.1. يتضمّن الإصدار 1.2.1 هذه التعديلات.

إصلاح الأخطاء

  • تم إصلاح مشكلة تسريب الذاكرة: التخلّص من اللقطات المتداخلة التي تم إنشاؤها من لقطات شفافة b/239603305

الإصدار 1.2.0

‫27 يوليو 2022

تم طرح androidx.compose.runtime:runtime-*:1.2.0. يتضمّن الإصدار 1.2.0 هذه التعديلات.

التغييرات المهمة منذ 1.1.0

  • تضمّن الإصدار 1.2.0 من Compose Runtime عددًا من الميزات، بالإضافة إلى العديد من إصلاحات الأخطاء التي تساهم في استقرار الأداء. كانت أهم ميزة جديدة هي طرح movableContentOfAPI، التي يمكن استخدامها لتفعيل تجربة مستخدم معقّدة، مثل انتقالات العناصر المشتركة. تحوّل واجهة برمجة التطبيقات movableContentOf دالة 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 هذه التعديلات.

إصلاح الأخطاء

  • في السابق، كانت تتم إزالة ملاحظات الحالة المشتقة بشكل غير مشروط من نطاق إعادة التركيب والتركيب معًا، ما أدّى إلى تعطيل نطاقات أخرى قد تظل تراقب الحالة المشتقة. لا يؤدي هذا التغيير إلى إزالة مثيلات الحالة المشتقة إلا إذا لم تعُد النطاقات الأخرى تستخدمها. (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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • أصبحت الواجهات في مكتبات Compose الآن تستخدم طرق الواجهة التلقائية في الإصدار 8 من حزمة تطوير البرامج (JDK) (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.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة ميزة تجريبية Snapshot.unsafeEnter/unsafeLeave (I108f3)
  • تمت إضافة واجهة برمجة التطبيقات التجريبية 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة TracingInProgress إلى واجهة CompositionTracer. (Ic6f12)
  • إضافة recomposeScopeIdentity إلى "الملحّن" (I0c873)
  • تم حصر واجهات برمجة التطبيقات لتتبُّع الأخطاء (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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة الدالة الجديدة Snapshot.withoutReadObservation { ... }. يسمح هذا الإجراء للمستخدمين بتنفيذ دالة lambda التي تم تمريرها بدون الاشتراك في تغييرات قيم الحالة التي تمت قراءتها أثناء هذا الرمز البرمجي. قد تجدها مفيدة في حالات الاستخدام التي تريد فيها الاستفادة من عمليات القراءة والكتابة الآمنة في سلاسل المحادثات المستندة إلى اللقطات، ولكنك تريد أن تتمكّن من قراءة القيمة بدون التسبّب في إعادة إنشاء أو إعادة قياس غير ضرورية. (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 هذه التعديلات.

المساهمة الخارجية

  • تم تعديلها لاستخدام الإصدار 1.6.0 من أنماط "كوروتين" في Kotlinx (I3366d)

الإصدار ‎1.2.0-alpha04

‫23 فبراير 2022

تم طرح androidx.compose.runtime:runtime-*:1.2.0-alpha04. يتضمّن الإصدار 1.2.0-alpha04 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة ComposableTarget وComposableTargetMarker وComposableOpenTarget التي تتيح إعداد تقارير في وقت التجميع عن الحالات التي يتم فيها استدعاء دالة مركّبة تستهدف واجهة تطبيقية (applier) لم يتم تصميمها لاستخدامها.

    في معظم الحالات، يمكن استنتاج التعليقات التوضيحية من خلال المكوّن الإضافي لبرنامج الترجمة البرمجية في Compose، لذا يجب أن يكون استخدام هذه التعليقات التوضيحية مباشرةً أمرًا نادرًا . تشمل الحالات التي لا يمكن استنتاجها إنشاء واستخدام أداة تطبيق مخصّصة، أو دوال قابلة للإنشاء مجرّدة (مثل طرق الواجهة)، أو حقول أو متغيرات عامة تكون تعبيرات lambda قابلة للإنشاء (يتم استنتاج المتغيرات والمعلَمات المحلية)، أو عند استخدام 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة movableContentOf التي تحوّل دالة lambda قابلة للإنشاء إلى دالة lambda تنقل حالتها والعُقد المقابلة إلى أي موقع جديد يتم استدعاؤها فيه. عندما تغادر المكالمة السابقة التركيب، يتم الاحتفاظ بالحالة مؤقتًا، وإذا انضمت مكالمة جديدة إلى التركيب، يتم نقل الحالة والعُقد المرتبطة بها إلى موقع المكالمة الجديدة. إذا لم تتم إضافة أي مكالمة جديدة، ستتم إزالة الحالة نهائيًا وسيتم إعلام المراقبين المسجّلين.

    إذا تم استدعاء دالة movableContentOf lambda عدة مرات في التركيب نفسه، يتم إنشاء حالة وعُقد جديدة لكل عملية استدعاء، وعندما تغادر عمليات الاستدعاء التركيب وتدخل عمليات استدعاء جديدة، يتم نقل الحالة من عمليات الاستدعاء الأولى المغادرة إلى عمليات الاستدعاء الداخلة بالترتيب الذي يتم استدعاؤها به. تتم إزالة جميع الحالات التي لم تتم المطالبة بها من خلال المكالمات الجديدة بشكل دائم. (Ib4850)

  • تمت إضافة واجهة برمجة تطبيقات لتتبُّع الإصدار إلى عملية الإنشاء لتتيح للأدوات تقديم عملية تتبُّع أكثر تفصيلاً للدوال البرمجية القابلة للإنشاء. يُنشئ المترجم البرمجي الآن طلبات إلى واجهة برمجة التطبيقات الخاصة بالتتبُّع تتضمّن معلومات المصدر. (Ib0eb5)

    لإزالة هذه عمليات الاستدعاء ومعلومات المصدر المرتبطة بها من بنية الإصدار، أضِف قاعدة 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة الحقل identity إلى CompositionData لإنشاء معرّفات ثابتة في "أداة فحص التنسيق". (Ic116e)

تحديثات الاعتماديات

  • يعتمد الآن على 1.6.10 Kotlin.

الإصدار 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)
  • إصلاح مشكلة عرض النصوص من اليمين إلى اليسار في 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 بشكل ثابت
  • تحسينات على حجم مساحة اللمس
  • يُرجى العِلم أنّه في ما يتعلّق بالإصدار 1.0 من Compose، ستوسّع مكوّنات Material مساحة التنسيق لتلبية إرشادات تسهيل الاستخدام في Material بشأن حجم مساحة اللمس. على سبيل المثال، سيتم توسيع مساحة لمس الزر إلى حدّ أدنى يبلغ 48x48dp، حتى إذا ضبطت حجم الزر على حجم أصغر. يؤدي ذلك إلى توافق Compose Material مع السلوك نفسه الذي تتّبعه "مكوّنات التصميم المتعدد الأبعاد"، ما يوفّر سلوكًا متسقًا في حال استخدام كلّ من Views وCompose. يضمن هذا التغيير أيضًا استيفاء الحد الأدنى من متطلبات إمكانية الوصول إلى مساحة اللمس عند إنشاء واجهة المستخدم باستخدام مكوّنات Compose Material.
  • إتاحة شريط التنقّل بشكل ثابت
  • نقل عدد من واجهات برمجة التطبيقات التجريبية السابقة إلى الإصدار الثابت
  • التوافق مع الإصدارات الأحدث من 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 هذه التعديلات.

الميزات الجديدة

  • تم تعديلها لتكون متوافقة مع الإصدار 1.6.0 من Kotlin

الإصدار ‎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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تم تقسيم رمز اللقطة إلى ملفات متعددة، ولكنها لا تزال كلها مضمّنة في فئة 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إزالة 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 Compiler الآن استخدام الإصدارات القديمة من Compose Runtime (الإصدار 1.0). قبل هذا التغيير، كان برنامج Compose Compiler متوافقًا فقط مع Compose Runtime من الإصدار نفسه أو إصدار أحدث. بعد هذا التغيير، يصبح Compose Compiler متوافقًا مع إصدار قديم من 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 هذه التعديلات.

تحديثات الاعتماديات

  • تم تعديلها لتعتمد على الإصدار 1.5.31 من Kotlin

الإصدار 1.0.3

‫29 سبتمبر 2021

تم طرح androidx.compose.runtime:runtime-*:1.0.3. يتضمّن الإصدار 1.0.3 هذه التعديلات.

تحديثات الاعتماديات

  • تم تعديلها لتعتمد على الإصدار 1.5.30 من Kotlin

الإصدار 1.0.2

‫1 سبتمبر 2021

تم طرح androidx.compose.runtime:runtime-*:1.0.2. يتضمّن الإصدار 1.0.2 هذه التعديلات.

تم تعديلها لتتوافق مع إصدار Compose 1.0.2. لا يزال الإصدار 1.0.2 من Compose متوافقًا مع الإصدار 1.5.21 من Kotlin.

الإصدار 1.0.1

‫4 أغسطس 2021

تم طرح androidx.compose.runtime:runtime-*:1.0.1. يتضمّن الإصدار 1.0.1 هذه التعديلات.

تحديثات الاعتماديات

  • تم تعديلها لتعتمد على الإصدار 1.5.21 من Kotlin.

الإصدار 1.0.0

‫28 يوليو 2021

تم طرح androidx.compose.runtime:runtime-*:1.0.0. يتضمّن الإصدار 1.0.0 هذه التعديلات.

الميزات الرئيسية في الإصدار 1.0.0

هذا هو أول إصدار ثابت من Compose. يُرجى الاطّلاع على مدوّنة Compose Release الرسمية لمزيد من التفاصيل.

المشاكل المعروفة

  • إذا كنت تستخدم الإصدار 4 من استوديو Android Bumblebee Canary أو الإصدار 7.1.0-alpha04/7.1.0-alpha05 من "المكوّن الإضافي لنظام Gradle المتوافق مع Android"، قد تواجه التعطّل التالي:

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

    لحلّ هذه المشكلة، عليك زيادة minSdkVersion مؤقتًا إلى 24 أو أكثر في ملف build.gradle. سيتم حلّ هذه المشكلة في الإصدار التالي من Android Studio Bumblebee و7.1. (b/194289155)

الإصدار ‎1.0.0-rc02

‫14 يوليو 2021

تم طرح androidx.compose.runtime:runtime-*:1.0.0-rc02. يتضمّن الإصدار 1.0.0-rc02 هذه التعديلات.

  • تم إصلاح حالات السباق في SnapshotStateObserver التي تسبّبت في حدوث أخطاء NullPointerException متقطّعة. (aosp/1763445 وaosp/1758105 وb/192677711)
  • تم إصلاح المشاكل المتعلقة باللقطات في وقت التشغيل التي كانت تؤدي إلى حدوث أعطال في java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been applied. (b/193006595 وb/192570897)

الإصدار ‎1.0.0-rc01

‫1 تموز (يوليو) 2021

تم طرح androidx.compose.runtime:runtime-*:1.0.0-rc01. يتضمّن الإصدار 1.0.0-rc01 هذه التعديلات.

الإصدار ‎1.0.0-beta09

‫16 حزيران (يونيو) 2021

تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta09. يتضمّن الإصدار 1.0.0-beta09 هذه التعديلات.

قواعد الملفات التجارية المُضافة

يضيف هذا الإصدار قواعد الملف الشخصي إلى وحدات الإنشاء التالية (I14ed6):

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

ما هي قواعد الملف الشخصي؟

  • يتم تحديد قواعد الملف الشخصي لمكتبة في ملف نصي baseline-prof.txt يقع في الدليل src/main أو دليل مكافئ. يحدّد الملف قاعدة واحدة لكل سطر، حيث تكون القاعدة في هذه الحالة عبارة عن نمط للمطابقة مع الطرق أو الفئات في المكتبة. بنية هذه القواعد هي مجموعة فرعية من تنسيق ملف ART الشخصي القابل للقراءة الذي يتم استخدامه عند استخدام adb shell profman --dump-classes-and-methods .... تتخذ هذه القواعد أحد الشكلين التاليين لاستهداف الطرق أو الفئات.

  • ستتّبع قاعدة الطريقة النمط التالي:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • وستتّبع قاعدة الفئة النمط التالي:

    <CLASS_DESCRIPTOR>
    
  • هنا، <FLAGS> هو واحد أو أكثر من الأحرف H وS وP للإشارة إلى ما إذا كان يجب تصنيف هذه الطريقة على أنّها "شائعة الاستخدام" أو "بدء التشغيل" أو "بعد بدء التشغيل".

  • <CLASS_DESCRIPTOR> هو واصف الفئة التي تنتمي إليها الطريقة المستهدَفة. على سبيل المثال، سيكون للفئة androidx.compose.runtime.SlotTable واصف Landroidx/compose/runtime/SlotTable;.

  • ‫<METHOD_SIGNATURE> هي توقيع الطريقة، وتشمل الاسم وأنواع المَعلمات وأنواع الإرجاع الخاصة بالطريقة. على سبيل المثال، يتضمّن الإجراء fun isPlaced(): Boolean في LayoutNode التوقيع isPlaced()Z.

  • يمكن أن تتضمّن هذه الأنماط أحرف بدل (** و* و?) لكي تشمل قاعدة واحدة طرقًا أو فئات متعدّدة.

ما هي وظيفة القواعد؟

  • تشير الطريقة التي تتضمّن العلامة H إلى أنّ هذه الطريقة هي طريقة "نشطة"، ويجب تجميعها مسبقًا.

  • تشير الطريقة التي تحمل العلامة S إلى أنّها طريقة يتم استدعاؤها عند بدء التشغيل، ويجب تجميعها مسبقًا لتجنُّب تكلفة التجميع وتفسير الطريقة عند بدء التشغيل.

  • تشير الطريقة التي تتضمّن العلامة P إلى أنّها طريقة يتم استدعاؤها بعد بدء التشغيل.

  • يشير أحد الصفوف المتوفّرة في هذا الملف إلى أنّه يتم استخدامه أثناء بدء التشغيل ويجب تخصيصه مسبقًا في الذاكرة المؤقتة لتجنُّب تكلفة تحميل الصف.

آلية العمل

  • يمكن للمكتبات تحديد هذه القواعد التي سيتم تضمينها في عناصر AAR. عند إنشاء تطبيق يتضمّن هذه العناصر، يتم دمج هذه القواعد معًا واستخدام القواعد المدمجة لإنشاء ملف ثنائي مضغوط خاص بالتطبيق في ART. ويمكن أن يستفيد ART من هذا الملف عند تثبيت التطبيق على الأجهزة من أجل تجميع مجموعة فرعية محدّدة من التطبيق مسبقًا لتحسين أداء التطبيق، وخاصةً عند تشغيله للمرة الأولى. يُرجى العِلم أنّ هذا الإجراء لن يؤثر في التطبيقات التي يمكن تصحيح أخطائها.

الإصدار ‎1.0.0-beta08

‫2 يونيو 2021

تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta08. يتضمّن الإصدار 1.0.0-beta08 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • ‫State<T> أصبح الآن State<out T> (I69049)
  • ControlledComposition تغيير في واجهة برمجة التطبيقات يتيح إعادة إنشاء التغييرات في عملية إعادة إنشاء واحدة. (Iaafd1، b/184173932)

الإصدار ‎1.0.0-beta07

‫18 أيار (مايو) 2021

تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta07. يتضمّن الإصدار 1.0.0-beta07 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة واجهات برمجة تطبيقات جديدة لمترجم Compose تتيح إزالة معلومات المصدر التي ينشئها المترجم أثناء تصغير حجم المصدر. (Ia34e6)
  • تضيف هذه السمة ReusableContent التي ستحاول إعادة استخدام العُقد في محتواها بدلاً من استبدالها عند تغيير المفتاح. عند تغيير المفتاح، يتم تجاهل القيم السابقة في جدول الخانات الخاص بالمحتوى، باستثناء العُقد التي تم إنشاؤها والقيم المستخدَمة لتعديل العُقد.

    تضيف هذه السمة ReusableComposeNode التي ستعيد استخدام العقدة التي تم إصدارها بدلاً من استبدالها كما هو الحال مع ComposeNode. (I1dd86)

  • لم يعُد @ComposeCompilerApi @RequiresOptIn (Iab690)

إصلاح الأخطاء

  • ستحتفظ السمة LazyColumn/Row الآن بما يصل إلى عنصرَين مرئيَين سابقًا نشطَين (لم يتم التخلص منهما) حتى عند إيقاف التمرير. يتيح ذلك للمكوّن إعادة استخدام التركيبات الفرعية النشطة عندما نحتاج إلى إنشاء عنصر جديد، ما يحسّن أداء التمرير. (Ie5555)

الإصدار ‎1.0.0-beta06

‫5 مايو 2021

تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta06. يتضمّن الإصدار 1.0.0-beta06 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • لم يعُد @ComposeCompilerApi @RequiresOptIn (Iab690)

الإصدار ‎1.0.0-beta05

‫21 أبريل 2021

تم طرح androidx.compose.runtime:runtime-*:1.0.0-beta05. يتضمّن الإصدار 1.0.0-beta05 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إزالة@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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تم إيقاف 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 هذه التعديلات.

إصلاح الأخطاء

  • فرض قيود على الاستخدام العام لواجهات برمجة التطبيقات التجريبية (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 هذه التعديلات.

هذا هو الإصدار الأول من الإصدار التجريبي 1.0.0 من Compose.

التغييرات في واجهة برمجة التطبيقات

  • أضِف Recomposer.runRecomposeConcurrentlyAndApplyChanges واجهة برمجة التطبيقات التجريبية لإعادة إنشاء التركيبات غير الصالحة خارج حلقة إطار العرض الرئيسية. (I342d0)
  • يتم الآن التحقّق من صحة أي عناصر قابلة للإنشاء تم وضع علامة ‎ @ReadOnlyComposable عليها في وقت الترجمة البرمجية لضمان أنّها لا تجري سوى عمليات استدعاء لعناصر أخرى تحمل العلامة ‎ @ReadOnlyComposables (I58961).
  • يجب الآن ملء الحقل defaultFactory الخاص بـ compositionLocalOf وstaticCompositionLocalOf، بعد أن كان اختياريًا.

    يزيل هذا التغيير خطأ محتملاً في النوع للأنواع غير القابلة للتصغير حيث لم يتم توفير إعدادات المصنع التلقائية. في السابق، كان هذا الإجراء يؤدي إلى توفير مرجع فارغ لنوع غير قابل للقيم الفارغة.

    بالنسبة إلى الأنواع القابلة للتصغير، ننصحك بتوفير { null } كإعداد تلقائي للمصنع.

    لا ننصح باستخدام متغيرات محلية مع أنواع غير قابلة للتصغير إلا إذا كان من الممكن توفير قيمة تلقائية معقولة. إذا لم تكن هناك قيمة تلقائية منطقية، يجب أن تعرض دالة defaultFactory lambda استثناءً. ومع ذلك، فإنّ طرح استثناء يعني أنّ مستهلكي اللغة المحلية سيكون لديهم تبعية ضمنية على توفيرها، وهي تبعية لا يفرضها نظام الأنواع. (Ifbd2a)

  • تمت إزالة الرموز المتوقّفة نهائيًا من وقت تشغيل Compose (I3252c)

  • تمت إزالة emptyContent() المتوقّفة نهائيًا. يمكنك استخدام {} كبديل. (Idb33f، b/179432510)

  • تمت إعادة تسمية "الموفّرون" إلى 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. لم يعُد ذلك ضروريًا.
    • تم نقل العديد من واجهات برمجة التطبيقات ذات المستوى الأعلى وإعادة تنظيمها في ملفات مختلفة. بسبب دلالات فئة الملف في Kotlin، سيؤدي ذلك إلى إيقاف التوافق الثنائي ولكن ليس التوافق مع المصدر، لذلك لن يمثّل ذلك مشكلة لمعظم المستخدمين.
    • (I99b7d، b/177245490)
  • لم يعُد SnapshotStateObserver تجريبيًا (Id2e6a)

  • تم حذف بعض واجهات برمجة التطبيقات التي تم إيقافها نهائيًا سابقًا (Ice5da وb/178633932)

  • تم إجراء التغييرات التالية على Material API:

    • تمت إضافة المَعلمة contentPadding إلى Top/BottomAppBar للسماح بتخصيص المساحة المتروكة التلقائية.
    • تمت إعادة ترتيب المَعلمات في BackdropScaffold لتتوافق مع إرشادات واجهة برمجة التطبيقات بشأن المَعلمات المطلوبة التي تسبق المَعلمات الاختيارية.
    • تم نقل المَعلمة icon في BottomNavigationItem لتصبح بعد selected وonClick.
    • تمت إعادة تسمية المَعلمة alwaysShowLabels في BottomNavigationItem إلى alwaysShowLabel.
    • تمت إعادة تسمية المَعلمات bodyContent في بعض المكوّنات إلى content فقط.
    • تمت إعادة ترتيب المَعلمات في ButtonDefaults.buttonColors(). يُرجى العِلم أنّه بما أنّ نوع المَعلمات لم يتغيّر، لن يتسبّب ذلك في حدوث خطأ في الرمز. يُرجى التأكّد من استخدام المَعلمات المسماة أو تعديل الترتيب يدويًا، وإلا لن يعمل الرمز بالطريقة نفسها كما كان في السابق.
    • تمت إضافة المَعلمة secondaryVariant إلى darkColors(). يكون هذا اللون عادةً هو نفسه secondary في "المظهر الداكن"، ولكن تتم إضافته لتحقيق التناسق والمزيد من التخصيص.
    • تمت إزالة ElevationDefaults وanimateElevation() من مساحة واجهة برمجة التطبيقات العامة لأنّهما لم يكونا شائعَي الاستخدام أو مفيدَين.
    • تمت إعادة تسمية onValueChangeEnd في Slider إلى onValueChangeFinished وتم السماح بقيم فارغة.
    • تمت إعادة تسمية المَعلمة 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إزالة إمكانية استخدام ViewGroups من UiApplier. تمت إزالة الدوال البرمجية القابلة للإنشاء emitView المتوقّفة نهائيًا. (Ifb214)
  • تمت إعادة تسمية CompositionReference إلى CompositionContext (I53fcb)
  • تم نقل ComponentActivity.setContent إلى androidx.activity.compose.setContent في الوحدة androidx.activity:activity-compose. (Icf416)
  • تم تعديل Snapshot API لتكون أكثر اتساقًا مع إرشادات واجهة برمجة التطبيقات، بالإضافة إلى إخفاء فئات التنفيذ الداخلية من واجهة برمجة التطبيقات المتاحة للجميع. (Id9e32)
  • تمت إعادة تسمية Ambients لتتطابق مع إعادة تسمية Ambient -> CompositionLocal. كانت أسماء Ambients في السابق AmbientFoo، وأصبحت أسماء CompositionLocals الآن LocalFoo. (I2d55d)
  • تمت إعادة تسمية Ambient إلى CompositionLocal، وambientOf / staticAmbientOf إلى compositionLocalOf / staticCompositionLocalOf على التوالي. يساعد هذا التغيير في توضيح الغرض من CompositionLocal بشكل أكبر: آلية لتوفير / استرداد القيم المحلية لتكوين. يجب أن تكون بادئة مثيلات CompositionLocal هي Local، مثل 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)

  • يمكن الآن إغلاق أدوات إعادة التجميع. ستستمر عمليات إعادة التركيب المغلقة في إعادة التركيب إلى أن تكتمل الكوروتينات الفرعية للتركيب. تمت إعادة تسمية Recomposer.shutDown إلى cancel للتمييز بينها وبين close. (Ib6d76)

  • تم الآن إيقاف العنصر compose:runtime-dispatch نهائيًا. يمكن الآن العثور على MonotonicFrameClock في compose:runtime، ويمكن العثور على AndroidUiDispatcher في compose:ui. (Ib5c36)

  • تمت إعادة تصميم واجهة برمجة التطبيقات التي يستهدفها المكوّن الإضافي لمترجم Compose لاستخدام واجهة بدلاً من فئة مجردة. لم تعُد الواجهة تستخدم مَعلمة نوع.

    هذا تغيير داخلي لا يؤثّر في توافق الرمز المصدري، ولكنّه تغيير يؤدي إلى عدم توافق الرمز الثنائي. (I3b922، b/169406779)

  • تم تقديم SnapshotMutableState (Icfd03)

  • تمت إعادة تسمية DisposableEffectDisposable إلى DisposaleEffectResult (Ica7c6)

  • تمت إزالة Recomposer.current(). [Abstract]ComposeView الآن يتم إنشاؤه تلقائيًا بشكل مؤجّل، ويتم تشغيل Recomposers بنطاق النافذة من خلال ViewTreeLifecycleOwner للنافذة. يتم إيقاف إعادة التركيب وعلامات الصورة المتحركة المستندة إلى withFrameNanos مؤقتًا أثناء إيقاف Lifecycle المضيف. (I38e11)

  • توفّر Recomposer.runningRecomposers الآن StateFlow العالمي الخاص بـ RecomposerInfo للقراءة فقط، وذلك لمراقبة حالة التركيب الجارية في العملية. ننصحك باستخدام واجهة برمجة التطبيقات هذه بدلاً من Recomposer.current()‎، التي تم إيقافها نهائيًا. (If8ebe)

  • تمت إعادة تسمية DisposableEffectDisposable إلى DisposaleEffectResult (I3ea68)

الإصدار ‎1.0.0-alpha11

‫28 يناير 2021

تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha11. يتضمّن الإصدار 1.0.0-alpha11 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تم إيقاف onCommit وonDispose وonActive نهائيًا لصالح واجهتَي برمجة التطبيقات SideEffect وDisposableEffect (If760e)
  • تم إيقاف واجهة برمجة التطبيقات emit() وجميع عمليات التحميل الزائد نهائيًا، وتمت إعادة تسميتها إلى ComposeNode. واجهات برمجة التطبيقات متطابقة، ولكنّها تحمل اسمًا مختلفًا من أجل اتّباع اصطلاحات التسمية في Compose (I4137b).
  • تم الآن إيقاف invalidate وcompositionReference() نهائيًا واستبدالهما بـ currentRecomposeScope وrememberCompositionReference على التوالي. (I583a8)
  • يحلّ RememberObserver محل CompositionLifecycleObserver، وأصبح CompositionLifecycleObserver نهائيًا الآن.

    ‫RememberObserver هو بديل عن CompositionLifecycleObserver مع دلالات معدَّلة وطرق تمت إعادة تسميتها. يمكن إجراء التغيير إلى واجهة برمجة التطبيقات الجديدة بشكل آلي للعناصر التي يتم تذكّرها مرة واحدة فقط، وهو ما يظل الإجراء المُوصى به. ومع ذلك، إذا تم تذكُّر مرجع أكثر من مرة في تركيبة، يتم استدعاء 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 هذه التعديلات.

تغيير قد يؤدي إلى أعطال

  • تتيح إعادة هيكلة واجهة برمجة التطبيقات الداخلية للمترجم تجميع التغييرات في العُقد التي تم إنشاؤها نتيجة التركيب في مرحلة "تطبيق التغييرات" من عملية التركيب، وذلك بعد اكتمال جميع دوال @Composable.

    هذا تغيير غير متوافق في السلوك قد يؤثر في الرمز البرمجي للتطبيق، لأنّه لن تعود العُقد متاحة من واجهات برمجة التطبيقات الداخلية والتجريبية إلا بعد تطبيق التغييرات. يمكن عادةً حلّ هذه المشكلة من خلال إحاطة الرمز البرمجي الذي يتضمّن هذه التبعيات بعنصر SideEffect قابل للإنشاء لتأجيل تنفيذ الرمز البرمجي إلى ما بعد إنشاء العُقد وإعدادها. (I018da)

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة طريقة لتتبُّع ما إذا كان قد طبّق المكوّن المعاد تركيبه التغييرات. (I1b3e2)
  • توسيع نطاق واجهات برمجة التطبيقات [Abstract]ComposeView للسماح بإعادة استخدام طرق العرض المستندة إلى Compose، والتخلّص من تركيبها لإعادة إنشائها لاحقًا إضافة واجهات برمجة تطبيقات لتثبيت Recomposers ونطاقها ضمن النافذة واكتشافها وCompositionReferences لإنشاء عمليات تركيب فرعية

    إضافة ViewCompositionStrategy لضبط استراتيجية التخلص من التركيبة في [Abstract]ComposeViews، ويكون السلوك التلقائي هو التخلص عند فصل النافذة (I860ab)

إصلاح الأخطاء

  • تعرض Recomposer الآن تدفّقًا لحالتها الحالية، ما يتيح رصد نشاطها ونشاط التأثيرات المرتبطة بها. (Ifb2b9)
  • يمكن الآن الوصول إلى keyEvent الأصلي من خلال keyEvent.nativeKeyEvent (I87c57، b/173086397).

الإصدار ‎1.0.0-alpha09

‫16 كانون الأول (ديسمبر) 2020

تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha09. يتضمّن الإصدار 1.0.0-alpha09 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إزالة SlotTable وSlotReader وSlotWriter من واجهة برمجة التطبيقات العامة. وكانت هذه الأخطاء مصنّفة سابقًا على أنّها InternalComposeAPI. وهي الآن مضمّنة في وحدة Compose.

    تمت إضافة CompositionData وCompositionGroup كبديل لواجهة برمجة التطبيقات ui-tooling لاستخدامها في استخراج معلومات التركيب. هذه الحقول عامة ولكنها غير مخصّصة للاستخدام خارج واجهة برمجة التطبيقات ui-tooling لأنّها توفّر المعلومات الأولية التي تفسّرها واجهة برمجة التطبيقات ui-tooling (I31a9c).

  • لم يعُد يتم اعتبار فئة Applier (Id85b0)

  • تم تغيير واجهة Applier لتسهيل إنشاء بنى تصاعدية بدلاً من التنازلية.

    تمت إعادة تسمية الطريقة insert() لتصبح insertTopDown().

    تمت إضافة طريقة جديدة، وهي insertBottomUp().

    يُدرج التطبيق إما عُقدًا في الشجرة التي يعدّلها باستخدام insertTopDown() أو insertBottomUp()، وذلك حسب الأداء الأفضل.

    بعض الأشجار، مثل LayoutNode وView، تكون أكثر فعالية عند إنشائها من الأسفل إلى الأعلى مقارنةً بإنشائها من الأعلى إلى الأسفل. قبل هذا التغيير، كان يجب توفير مجموعة من عمليات الإدراج لتنفيذ عملية الإنشاء من الأسفل إلى الأعلى، وكان يجب نسخها إلى كل أداة تطبيق تحتاج إلى عملية الإنشاء من الأسفل إلى الأعلى لتحسين الأداء. من خلال هذا التغيير، Applier تتجاوز insertBottomUp() لإنشاء شجرة من الأسفل إلى الأعلى، وinsertTopDown() لإنشاء الشجرة من الأعلى إلى الأسفل. (Icbdc2)

  • تتيح Compose دوال جلب الخصائص التي يمكنها إنشاء استدعاءات قابلة للإنشاء. لن يتم إيقاف هذه الميزة، ولكن سيتم تغيير بنية تعريف أداة إرجاع قيمة الخصائص على أنّها ‎ @Composable.

    كانت البنية التي تم إيقافها نهائيًا لإجراء ذلك هي إضافة تعليق توضيحي إلى السمة نفسها:

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

    بنية الجملة الصحيحة الآن لإجراء ذلك هي إضافة علامة توضيح إلى دالة إرجاع القيمة للسمة:

       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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة عملية فحص lint لتسمية مَعلمات lambda القابلة للإنشاء وموضعها، وذلك للتحقّق من التوافق مع إرشادات Compose. تم أيضًا نقل بعض واجهات برمجة التطبيقات التي تستخدم children كاسم لدالة lambda اللاحقة إلى content، وذلك وفقًا لفحص lint والإرشادات. (Iec48e)
  • لم يعُد Recomposer يقبل EmbeddingContext، ويتم الحصول على تبعيات الجدولة المطلوبة من effectCoroutineContext. تم إيقاف FrameManager نهائيًا، ويجب أن تبدأ عمليات الدمج مع الأنظمة الأساسية معالجة اللقطات العامة الخاصة بها. (I02369)
  • تمت إعادة تسمية الدالة RestorableStateHolder.withRestorableState إلى RestorableStateProvider (I66640)

إصلاح الأخطاء

  • تم إيقاف Ambients القديمة التي تحمل اللاحقة Ambient، واستبدالها بسمات جديدة مسبوقة بـ Ambient، وذلك وفقًا لإرشادات Ambients الأخرى وواجهة برمجة تطبيقات Compose. (I33440)
  • إزالة الوحدة القديمة ui-test ورموزها (I3a7cb)

الإصدار ‎1.0.0-alpha07

11 تشرين الثاني (نوفمبر)، 2020

تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha07. يتضمّن الإصدار 1.0.0-alpha07 هذه التعديلات.

الميزات الجديدة

التغييرات في واجهة برمجة التطبيقات

  • تم إيقاف التعليق التوضيحي "@UnionType" نهائيًا (I57cde)
  • تمت إضافة provideDefault كبديل لـ provide من أجل توفير بيانات البيئة المحيطة، ويمكن استخدامه لتحديد قيم البيئة المحيطة التي سيتم ضبطها فقط عندما لا تكون هناك قيمة بيئة محيطة متوفّرة. (Id6635، b/171024925)
  • تمت إعادة تسمية LaunchedTask إلى LaunchedEffect لضمان التناسق مع واجهتَي برمجة التطبيقات SideEffect وDisposableEffect. لا يُسمح باستخدام LaunchedEffect بدون معلَمات موضوع لتشجيع أفضل الممارسات. (Ifd3d4)
  • يتضمّن Applier الآن عمليات ردّ الاتصال onBeginChanges/onEndChanges التي يتم استدعاؤها عندما يبدأ Composer في تطبيق التغييرات على الشجرة أو ينتهي من ذلك. ويمكن استخدامها لإدارة الموارد المجمّعة إذا لزم الأمر. (Icf476)
  • يتطلّب Recomposer الآن CoroutineContext عند الإنشاء (Ic4610)
  • تغييرات على التنفيذ الداخلي لـ SlotTable، والتي من المفترض ألا تؤثّر في واجهة برمجة التطبيقات العامة (If9828)
  • تمت إزالة المحوّلات المتوقّفة نهائيًا rxjava2 التي لا تأخذ القيمة الأولية (Idb72f)

إصلاح الأخطاء

  • تم إيقاف foundation.Text نهائيًا واستبداله بـ material.Text. للحصول على واجهة برمجة تطبيقات نصية أساسية وغير مشروطة لا تستخدم قيمًا من سمة، اطّلِع على androidx.compose.foundation.BasicText. (If64cb)
  • تم إيقاف BaseTextField نهائيًا. استخدِم BasicTextField بدلاً من ذلك. (I896eb)
  • تم نقل العديد من الرموز ذات الصلة بالتصميم من androidx.compose.ui إلى androidx.compose.layout.ui. (I0fa98، b/170475424)

المساهمة الخارجية

  • تمت إضافة الوحدة runtime-rxjava3 لإنشاء الرسائل. مشابهة لـ runtime-rxjava2 (I02cbf)

الإصدار ‎1.0.0-alpha06

‫28 أكتوبر 2020

تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha06. يتضمّن الإصدار 1.0.0-alpha06 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • أصبح Recomposer الآن CompositionReference وCompositionParent صالحًا. أصبح Recomposer الصريح مطلوبًا الآن في أماكن أقل. (I4036f)
  • تمت إضافة واجهة برمجة تطبيقات DisposableEffect مكافئة إلى SideEffect، ما يتيح تنفيذ وظيفة onCommit-with-params ولكن مع onDispose المطلوبة.
    • تمت إضافة واجهة برمجة التطبيقات rememberUpdatedState لنشر البيانات من إعادة التركيب إلى العمليات المستمرة أو الطويلة الأمد، مثل DisposableEffects أو LaunchedTasks.
    • (Id50b9)
  • تتضمّن فئة MutableVector الآن واجهة RandomAccess (I85d73، b/170461551)
  • تمت إضافة دالة SideEffect قابلة للإنشاء لتطبيق الآثار الجانبية للتركيب على العناصر التي يديرها التركيب. تم تصميم SideEffect ليحل محل الدالة المركّبة onCommit. (Ia77c2)
  • واجهة برمجة تطبيقات تجريبية جديدة باسم 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • مُعدِّل تجريبي يعلّق مُعدِّل الإدخال pointerInput (Ia77d2)
  • تم تحسين أداء التمرير في LazyColumn/Row من خلال تقليل العمل في التركيب الفرعي عند كل تمرير. تمت إضافة طريقة hasInvalidations() الجديدة إلى فئة Composition. تمت إعادة تسمية طريقة hasPendingChanges() من Recomposer إلى hasInvalidations() (Ib2f32 وb/168293643 وb/167972292 وb/165028371)
  • إضافة واجهة برمجة التطبيقات produceState لإطلاق إجراءات روتينية متزامنة من التركيب التي تعدّل قيمة State<T> واحدة بمرور الوقت (Id4a57)
  • تمت إعادة تسمية launchInComposition إلى LaunchedTask لتتوافق مع إرشادات واجهة برمجة التطبيقات في Compose (I99a8e)
  • يحدّد ترتيب طلبات place() في التصاميم المخصّصة الآن ترتيب الرسم للعناصر الفرعية (Ibc9f6)

الإصدار ‎1.0.0-alpha04

‫1 أكتوبر 2020

تم طرح androidx.compose.runtime:runtime-*:1.0.0-alpha04. يتضمّن الإصدار 1.0.0-alpha04 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تمت إضافة OwnerScope للسماح بجمع نطاقات مراقبة التنسيق والرسم بعد أن تصبح غير صالحة. (Ic4cf8)
  • تمت إضافة واجهة برمجة التطبيقات 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • لم يعُد 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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • إضافة واجهتَي برمجة التطبيقات snapshotFlow وwithMutableSnapshot لاستهلاك التغييرات في بيانات Snapshot وإنتاجها (I3e722)
  • تم تغيير اصطلاح الاستدعاء للدوال القابلة للإنشاء. هذا تغيير قد يؤدي إلى عطل في البرنامج الثنائي. يجب إعادة تجميع جميع المكتبات لتعمل مع هذا الإصدار من مكوّن Compose الإضافي للمترجم.

    لا يؤدي هذا التغيير إلى حدوث تغيير على مستوى المصدر، لأنّ واجهات برمجة التطبيقات الوحيدة التي تم تغييرها هي واجهات برمجة التطبيقات الخاصة بالمترجم والتي تتطلّب موافقة صريحة. (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 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • يمكن الآن أن تحدّد عمليات الإرسال المخصّصة أنّه يمكن تخطّي دالة تحديد القيمة واحدة أو أكثر وإعادة التكوين بشكل مستقل عن عملية الإرسال. (Ibbd13)
  • تمت إزالة طلبات FrameManager المتوقّفة نهائيًا.

    تم تغيير واجهات برمجة التطبيقات الداخلية الخاصة بـ Compose لتقليل مقدار الحمل الزائد اللازم لتتبُّع عناصر الحالة، مثل mutableStateof() (I80ba6).

  • تم الآن إيقاف العنصر المركّب state { ... } نهائيًا واستبداله باستدعاءات صريحة إلى remember { mutableStateOf(...) } لزيادة الوضوح. يقلّل ذلك من مساحة واجهة برمجة التطبيقات الإجمالية وعدد المفاهيم الخاصة بإدارة الحالة، ويتطابق مع نمط by mutableStateOf() لتفويض سمات الفئة. (Ia5727)

  • تحدّد الدالة Flow.collectAsState الآن أداة الإرسال التلقائية من التركيب نفسه بدلاً من استخدام Dispatchers.Main كقيمة تلقائية. (I9c1d9)

  • تم إصلاح مشكلة التعطُّل عند استخدام عنصر يحفظ الحالة داخل حلقة for. أصبح من المسموح الآن استخدام المفتاح نفسه في savedInstanceState()، وتم تعديل واجهة برمجة التطبيقات UiSavedStateRegistry لتتوافق مع هذا الشرط الجديد (I4ab76 وb/160042650 وb/156853976 وb/159026663 وb/154920561).

إصلاح الأخطاء

  • تم إيقاف emitView نهائيًا. استخدِم AndroidView بدلاً من ذلك إذا كان ذلك ممكنًا لعرض طرق العرض داخل Compose. يُرجى العِلم أنّه لن يكون متاحًا في المستقبل إنشاء Views وViewGroups مباشرةً إلا إذا كانت هذه العناصر عبارة عن أوراق في شجرة الإنشاء، وهي الحالة التي يمكن فيها تحقيق ذلك باستخدام AndroidView. (I29b1e، b/163871221)

الإصدار 0.1.0-dev16

‫5 آب (أغسطس) 2020

تم طرح androidx.compose.runtime:runtime-*:0.1.0-dev16. يتضمّن الإصدار 0.1.0-dev16 هذه التعديلات.

التغييرات في واجهة برمجة التطبيقات

  • تم تغيير سياسة التعديل التلقائية الخاصة بـ mutableStateOf() وambientOf() وsavedInstanceStateOf() لتصبح structuralEqualityPolicy() بدلاً من referentialEqualityPolicy().

    إنّ الإعداد التلقائي لتحديد ما إذا كانت القيمة الجديدة المعيّنة لمثيل mutableStateOf() تُعتبر تغييرًا هو الآن استخدام == بدلاً من ===.

    يمكنك الاطّلاع على https://kotlinlang.org/docs/reference/equality.html

    تستخدم ambientOf() وsavedInstanceStateOf() mutableStateOf() في عمليات التنفيذ، لذا تم تغييرها لتتطابق مع mutableStateOf().

    يؤدي استخدام المساواة البنيوية إلى تطابق أكبر مع توقعات المطوّرين.

    على سبيل المثال:

    val state = mutableStateOf(1f)
    

    يليها

    state.value = 1f
    

    لن يتم اعتبارها تغييرًا في state، ولن يكون من الضروري إعادة إنشاء استخدامات state أثناء الإنشاء.

    هذا تغيير غير متوافق مع الإصدارات السابقة، ولكن في معظم الحالات (مثل استخدام الفئات التي لا تتجاوز equals())، لن يكون له تأثير ملحوظ على التطبيق.

    قد تشهد الفئات التي تتجاوز equals()، مثل فئات data، تدهورًا في الأداء لأنّه يتم الآن، بشكل تلقائي، استدعاء طرق equals() الخاصة بها عند تعيينها إلى mutableStateOf().

    يمكن استعادة السلوك السابق من خلال إضافة المَعلمة policy = referentialEqualityPolicy() إلى طلبات البيانات من mutableStateOf() وambientOf() وsavedInstanceStateOf(). (Ic21a7)

  • أصبحت الدالتان Row وColumn الآن دالتين مضمّنتين، ما يقلّل بشكل كبير من تكلفة استخدامهما. (I75c10)

إصلاح الأخطاء

  • تم إيقاف setViewContent نهائيًا، ويجب استخدام setContent بدلاً منها. (I7e497، b/160335130)
  • تمت إضافة MonotonicFrameAnimationClock التي تتيح لك استخدام MonotonicFrameClock كـ AnimationClockObservable لسد الفجوة بين الساعات الجديدة المستندة إلى الروتينات المشتركة وواجهات برمجة التطبيقات التي لا تزال تستخدم الساعات القديمة المستندة إلى عمليات معاودة الاستدعاء.

    أصبح MonotonicFrameClock المكافئ لـ ManualAnimationClock هو 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، وإعادة تسمية TextField الأساسي إلى BaseTextField لتسهيل العثور على أبسط واجهة برمجة تطبيقات مطلوبة واستخدامها (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، عليك تعديل التبعيات وفقًا لمقتطفات الرموز الجديدة الموضّحة أعلاه في تعريف التبعيات.

التغييرات في واجهة برمجة التطبيقات

  • تم إيقاف التعليق التوضيحي @Model نهائيًا. استخدِم state وmutableStateOf كبدائل. تم اتّخاذ قرار الإيقاف النهائي هذا بعد مناقشات دقيقة.

    التبرير

    تشمل الأسباب على سبيل المثال لا الحصر:

    • تقليل مساحة واجهة برمجة التطبيقات والمفاهيم التي نحتاج إلى شرحها
    • يتوافق بشكل أكبر مع مجموعات الأدوات المشابهة الأخرى (Swift UI وReact وFlutter)
    • قرار يمكن التراجع عنه يمكننا إعادة @Model في أي وقت لاحق.
    • إزالة حالات الاستخدام النادرة والأسئلة الصعبة التي يجب الإجابة عنها بشأن إعداد @Model
    • فئات بيانات @Model، وعلامة يساوي، ورمز التجزئة، وما إلى ذلك
    • كيف يمكنني إعداد بعض المواقع على أنّها "مراقَبة" وإعداد مواقع أخرى على أنّها غير مراقَبة؟
    • كيف يمكنني تحديد المساواة البنيوية مقابل المساواة المرجعية لاستخدامها في المراقبة؟
    • تقليل "السحر" في النظام سيؤدي ذلك إلى تقليل احتمالية افتراض المستخدم أنّ النظام أكثر ذكاءً مما هو عليه (أي أنّه يعرف كيفية مقارنة قائمة).
    • يجعل مستوى التفاصيل في الملاحظة أكثر سهولة.
    • تحسين إمكانية إعادة البناء من متغير إلى سمة في الفئة
    • قد يتيح ذلك إمكانية إجراء تحسينات مخصّصة لكل ولاية
    • تتوافق بشكل أكبر مع بقية المنظومة المتكاملة وتقلّل من الغموض بشأن البيانات غير القابلة للتغيير أو "اعتماد الحالة القابلة للتغيير"

    ملاحظات حول نقل البيانات

    يمكن تحويل جميع الاستخدامات الحالية تقريبًا للرمز @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 وproperty delegates

    يتم تسهيل هذا الأسلوب باستخدام أدوات تفويض السمات في Kotlin وواجهة برمجة التطبيقات mutableStateOf التي تتيح لك إنشاء مثيلات 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 وعدد صحيح "مفتاح" وعدد صحيح لقناع البت يُستخدم لنقل البيانات الوصفية من خلال عمليات الاستدعاء.

    تحوّل Compose الآن أيضًا الوسيطات التلقائية إلى دالة مركّبة. ويتم ذلك بدون إضافة حمل زائد اصطناعي إضافي على الدالة نفسها، لذا سيؤدي هذا التغيير إلى تحديد عدد أقل من الدوال.

    في ما يلي التغييرات المعروفة والمقصودة في السلوك الناتجة عن ذلك:

    1. سيتم تخطّي بعض المكالمات التي لم يكن من الممكن تخطّيها سابقًا
    2. أصبحت التعبيرات القابلة للإنشاء في تعبيرات الوسيطة التلقائية متاحة الآن ويمكن التعامل معها بشكل صحيح

    تضمّنت هذه التعديلات بعض التحسينات: 1. يتم نقل نتيجة مقارنات المَعلمات من خلال الرسم البياني لعمليات الاستدعاء إلى الدوال المركّبة الأخرى. سيؤدي ذلك إلى تقليل عمليات المقارنة في وقت التشغيل، وتقليل حجم جدول الفتحات، بالإضافة إلى تخطّي المزيد من الدوال القابلة للإنشاء التي لم يتم تخطّيها سابقًا. لم يعُد يتمّ تخزين المَعلمات التي يتمّ تحديدها على أنّها "ثابتة" في وقت التجميع أو مقارنتها في وقت التشغيل. يقلّل ذلك من عدد عمليات المقارنة ويقلّل من حجم جدول الفتحات. 3- يتم استخدام بنية التحكّم في سير عمل نص الدوال لتقليل عدد المجموعات التي يتم إنشاؤها. يؤدي ذلك إلى تقليل حجم جدول المواضع، ما يقلّل من الجهد المطلوب من وقت التشغيل 4. لا يتم تضمين مَعلمات الإرسال والاستقبال غير المستخدَمة للدوال في تحديد ما إذا كان يمكن تخطّي الدالة إذا لم يتم استخدامها داخل نص الدالة.

    كانت معظم التغييرات غير المتوافقة مخصّصة لواجهات برمجة التطبيقات التي يستهدفها المحول البرمجي مباشرةً، ولن يتأثّر الاستخدام العادي لـ Compose بما يلي: 1. تمت إزالة Composer::startExpr 2. تمت إزالة Composer::endExpr 3. تم إيقاف Composer::call نهائيًا 4. تمت إزالة عمليات التحميل الزائد غير المتغيرة لـ key. استخدِم الإصدار vararg من الآن فصاعدًا. 5. تم إيقاف التعليق التوضيحي Pivotal نهائيًا. استخدِم key كبديل. 6. تم تغيير ScopeUpdateScope::updateScope لتوقُّع Function3 بدلاً من Function1 7. تم تعديل restartableFunction وrestartableFunctionN لتضمين مَعلمات إضافية في وقت الترجمة (I60756، b/143464846)

  • تمّت إضافة sortWith وremoveRange إلى MutableVector (Icccf7)

  • تمت إضافة عمليات تنفيذ الطريقة التلقائية إلى CompositionLifecycleObserver (I24289)

  • يتطلّب Applier الآن طريقة clear() للتخلّص من التركيبات (Ibe697)

  • تمت إضافة asMutableList() إلى MutableVector للسماح بتمريرها إلى واجهة برمجة التطبيقات العامة بدون الحاجة إلى نسخ القائمة بأكملها. (I298df)

  • تمت إضافة rememberCoroutineScope() للحصول على CoroutineScope مُدارة في التركيب لتشغيل المهام استجابةً للأحداث. (I0e264)

  • ‫MutableVector هي مجموعة جديدة لا تنفّذ أيًا من واجهة Collection العادية. توفّر هذه المجموعة سرعة أكبر من المتطلبات الأخرى، وهي مخصّصة للاستخدام في عمليات التنفيذ الداخلية فقط. (I8ebd6)

  • تمت إزالة StableMutableList وStableMutableMap مؤقتًا لتجنُّب مشكلة في إصدار Kotlin الذي يتطلبه Compose. ستتم إعادة طرح هذه الواجهات بعد تعديل Compose إلى إصدار من Kotlin لا يتضمّن المشكلة.

    أصبح SnapshotStateList وSnapshotStateMap متاحَين للجميع، ولكن سيتم إيقافهما نهائيًا بعد استعادة StableMutableList وStableMutableMap. (Ia7769)

  • إضافة دالة withFrameNanos ذات المستوى الأعلى لتحديد توقيت الصورة المتحركة (Ie34c5)

  • تم إيقاف التعليق التوضيحي ‎@Untracked نهائيًا. استبدِلها بـ ‎ @ComposableContract(tracked=false)‎ (Id211e)

  • تمت إعادة تسمية RestartableFunction وواجهات برمجة التطبيقات المرتبطة بها إلى ComposableLambda وما إلى ذلك. كانت هذه الواجهات تستهدف المترجم البرمجي فقط، لذا من المفترض ألا يؤثر ذلك في التوافق على مستوى المصدر عادةً. تمت إعادة التسمية بشكل أساسي لتوضيح الغرض من هذه الفئة بشكل أفضل عند ظهورها في عمليات تتبُّع تسلسل استدعاء الدوال البرمجية (I7eb25).

  • لم يعُد التعليق التوضيحي ‎@Composable صالحًا في الفئات (Ia5f02)

  • أصبحت السمة Ambient<T> الآن ‎ @Stable بدلاً من ‎ @Immutable (I0b4bb)

  • قبل إجراء هذا التغيير، كان المكوّن الإضافي لبرنامج تجميع Compose يعترض بشكل غير بسيط على طلبات المنشئات داخل دالة مركّبة إذا كان هناك (I5205a، b/158123804)

  • لم يعُد العنصر القابل للإنشاء Recompose تجريدًا مفيدًا. يجب أن تحدث معظم عمليات إعادة التركيب نتيجة لعمليات تعيين MutableState. بالنسبة إلى أي شيء آخر، يُنصح باستخدام الدالة invalidate لتفعيل إعادة إنشاء النطاق الحالي. (Ifc992)

  • لم يعُد Observe تجريدًا مفيدًا. إذا كنت بحاجة إلى تكرارها، يمكن تكرار تنفيذها من خلال إنشاء دالة مركّبة تنفّذ مَعلمة lambda قابلة للإنشاء. على سبيل المثال، @Composable fun Observe(body: @Composable () -> Unit) = body() (I40d37)

  • تم إيقاف @Direct نهائيًا واستبداله بـ @ComposableContract(restartable=false) (If4708)

  • تمت إضافة أداة ربط إلى StateFlow التي تم طرحها مؤخرًا، ما يتيح لنا ملء القيمة الأولية مسبقًا ليكون State المعروض غير قابل للتصغير (I61dd8، b/156233789)

  • تمت إضافة محوّل لـ Flow. مثال على الاستخدام: val value by flow.collectAsState() (If2198، b/153375923)

  • تم نقل عوامل تفويض سمة [Mutable]State إلى الإضافات لإتاحة تحسينات تفويض سمة 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، ما سيؤدي إلى تغيير استراتيجية إنشاء الرموز البرمجية لمكوّن Compose الإضافي. على مستوى عالٍ، يؤدي ذلك إلى إنشاء دوال @Composable مع مَعلمة اصطناعية إضافية يتم تمريرها إلى عمليات استدعاء @Composable اللاحقة لكي يتمكّن وقت التشغيل من إدارة التنفيذ بشكلٍ سليم. هذا تغيير كبير في التوافق الثنائي، ولكن من المفترض أن يحافظ على التوافق على مستوى المصدر في جميع الاستخدامات المسموح بها لـ Compose. (I7971c)

  • تغييرات قد تؤدي إلى أعطال في واجهة برمجة التطبيقات ambients API راجِع مستندات السجلّ وAmbient<T> للحصول على التفاصيل (I4c7ee، b/143769776)

  • تمت إضافة ui-livedata، وهو عنصر جديد يتضمّن أداة ربط لـ LiveData. مثال على الاستخدام: val value by liveData.observeAsState() (Ie9e8c، b/150465596)

  • تم إيقاف محوّلات Rx التي لا تحتوي على قيمة أولية صريحة نهائيًا. لا يكون استخدام القيمة الخالية دائمًا هو الخيار التلقائي الأفضل، على سبيل المثال، عندما يكون لديك قائمة، من الأفضل البدء باستخدام emptyList() أو أي قيمة تلقائية معقولة أخرى (I00025، b/161348384).

  • تمت إضافة ui-rxjava2 - عنصر جديد يتضمّن محوّلات RxJava2. مثال على الاستخدام: val value by observable.subscribeAsState() (Ifab4b، b/153369097)

  • يمكن الآن استخدام savedInstanceState() مع الأنواع التي تقبل القيم الخالية (I6847f، b/153532190)

  • تمت إضافة الدالتَين listSaver() وmapSaver() لتسهيل كتابة عناصر Saver المخصّصة (I8cf68، b/152331508)

  • دالتان جديدتان: savedInstanceState() وrememberSavedInstanceState()، وهما تشبهان الدالتَين state() وremember() ولكنّهما تتضمّنان إمكانية حفظ حالة مثيل (If1987، b/152025209)

إصلاح الأخطاء

  • تمت إعادة تسمية "runOnIdleCompose" إلى "runOnIdle" (I83607)
  • إتاحة واجهة برمجة التطبيقات التجريبية LayoutNode (‫I4f2e9)
  • تم إيقاف androidx.ui.foundation.TextFieldValue وandroidx.ui.input.EditorValue نهائيًا. تم أيضًا إيقاف العناصر القابلة للإنشاء TextField وFilledTextField وCoreTextField التي تستخدم هذا النوع نهائيًا. يُرجى استخدام androidx.ui.input.TextFieldValue بدلاً من ذلك (I4066d، b/155211005)
  • تمت إزالة واجهة برمجة التطبيقات DrawBackground المتوقّفة نهائيًا واستبدالها بواجهات برمجة التطبيقات الخاصة بإضافة drawBackground إلى Modifier. تمت إعادة تصميم عمليات تنفيذ اللون والفرشاة وdrawBackground لتقليل مسارات الرموز البرمجية بالإضافة إلى إزالة شرط إنشاء Modifier كجزء من التركيب. (I0343a)
  • تم تعديل واجهات برمجة التطبيقات ذات المستوى الأعلى في Compose التي تعرض Canvas لعرض CanvasScope بدلاً من ذلك. ويؤدي ذلك إلى عدم حاجة المستهلكين إلى الاحتفاظ بكائنات Paint الخاصة بهم. بالنسبة إلى المستهلكين الذين ما زالوا بحاجة إلى الوصول إلى Canvas، يمكنهم استخدام طريقة drawCanvas الإضافية التي توفّر برنامج معالجة لإصدار أوامر الرسم باستخدام Canvas الأساسي. (I80afd)
  • تم تغيير واجهة برمجة التطبيقات WithConstraints trailing lambda. الآن، بدلاً من مَعلمتَين، يحتوي على نطاق مستقبل يوفّر بالإضافة إلى القيود وlayoutDirection خصائص minWidth وmaxWidth وminHeight وmaxHeight بوحدات بكسل مستقلة الكثافة (I91b9a وb/149979702).
  • تمت إضافة معدِّل المساحة المتروكة المتماثلة. (I39840)
  • تم تعديل wrapContentWidth وwrapContentHeight لتوقُّع محاذاة عمودية أو أفقية بدلاً من أي محاذاة. تم تعديل أداة تعديل الجاذبية لقبول المحاذاة العمودية أو الأفقية. تم تعديل الصف والعمود والحزمة لتتوافق مع عمليات المحاذاة المستمرة المخصّصة. (Ib0728)
  • تمت إعادة تسمية وحدة ui-text لتصبح ui-text-core (I57dec)
  • تحسين واجهة برمجة التطبيقات DrawModifier:
    • تم إنشاء نطاق المتلقّي للدالة draw() باسم ContentDrawScope
    • تمت إزالة جميع المَعلمات من draw()
    • تتضمّن DrawScope الواجهة نفسها التي كانت تتضمّنها CanvasScope سابقًا
    • يحتوي ContentDrawScope على طريقة drawContent() (Ibaced، b/152919067)
  • تم إيقاف ColoredRect نهائيًا. يمكن استخدام Box(Modifier.preferredSize(width, height).drawBackground(color)) كبديل. (I499fa، b/152753731)
  • استبدال المعدِّل وعامل التشغيل بوظائف إضافة المصنع (I225e4)
  • يمكن الآن الوصول إلى عناصر RowScope وColumnScope خارج Row وColumn. (I3a641)
  • تمت إعادة تسمية LayoutFlexible إلى LayoutWeight. تمت إعادة تسمية المَعلمة "ضيق" إلى "ملء". (If4738)
  • إضافة المَعلمة LayoutDirection إلى WithConstraints‏ (I6d6f7)
  • تغيير اسم الخلفية إلى DrawBackground وضبطها على أن يتم تذكّرها تلقائيًا (Ia0bd3)
  • تم استبدال ButtonStyle بوظائف مميزة وإزالة التحميل الزائد للنص (السلسلة). اطّلِع على نماذج محدَّثة لمعلومات الاستخدام. (If63ab، b/146478620، b/146482131)
  • أصبحت runOnIdleCompose وrunOnUiThread دالتَين عامتَين بدلاً من طريقتَين في ComposeTestRule. (Icbe8f)

المساهمة الخارجية

  • إزالة واجهات برمجة التطبيقات غير الضرورية، مثل مشّغل رسائل وHandler، من طبقة تكييف البرنامج لوقت تشغيل Compose (I6847d)
  • إيقاف Flow<T>.collectAsState() نهائيًا بدون قيمة أولية استخدِم StateFlow<T> أو مرِّر قيمة أولية صريحة بدلاً من ذلك. (I63f98، b/157674865)