কম্পোজ রানটাইম
androidx.compose.runtime
androidx.compose.runtime.rxjava2
androidx.compose.runtime.rxjava3
androidx.compose.runtime.saveable
androidx.compose.runtime.snapshots
(সব কম্পোজ প্যাকেজের জন্য API রেফারেন্স ডকুমেন্ট দেখুন)
| লেটেস্ট আপডেট | স্টেবল রিলিজ | রিলিজ ক্যান্ডিডেট | বিটা রিলিজ | আলফা রিলিজ |
|---|---|---|---|---|
| ০৭ অক্টোবর, ২০২৬ | ১.১২.১ | - | 1.13.0-beta01 | - |
গঠন
androidx-এর মধ্যে ৭টি Maven Group Id-এর কম্বিনেশন হল Compose. প্রতিটি গ্রুপে
কার্যকারিতার একটি টার্গেট করা সাবসেট থাকে, প্রতিটি গ্রুপের নিজস্ব রিলিজ
নোট থাকে।
এই সারণীতে গ্রুপ ও রিলিজ নোটের প্রতিটি সেটের লিঙ্ক ব্যাখ্যা করা হয়েছে।
| গ্রুপ | বর্ণনা |
|---|---|
| compose.animation | ব্যবহারকারীর অভিজ্ঞতা আরও ভাল করতে Jetpack Compose অ্যাপ্লিকেশনে অ্যানিমেশন তৈরি করা। |
| compose.compiler | Kotlin কম্পাইলার প্লাগ-ইনের মাধ্যমে @Composable ফাংশন ট্রান্সফর্ম করুন এবং অপ্টিমাইজেশন চালু করুন। |
| compose.foundation | বিল্ডিং ব্লক ব্যবহার করার জন্য রেডি এবং আপনার নিজস্ব ডিজাইন সিস্টেমের অংশ তৈরি করার জন্য ফাউন্ডেশন এক্সটেন্ড করে Jetpack Compose অ্যাপ্লিকেশন লিখুন। |
| compose.material | ব্যবহার করার জন্য রেডি মেটেরিয়াল ডিজাইন কম্পোনেন্ট দিয়ে Jetpack Compose UI তৈরি করুন। এটি হল Compose-এর উচ্চতর লেভেল এন্ট্রি পয়েন্ট, যা www.material.io-তে বর্ণিত কম্পোনেন্টগুলির সাথে ম্যাচ করে এমন কম্পোনেন্ট প্রদান করার জন্য ডিজাইন করা হয়েছে। |
| compose.material3 | মেটেরিয়াল ডিজাইন ৩ কম্পোনেন্ট ব্যবহার করে Jetpack Compose UI তৈরি করুন, এটি হল মেটেরিয়াল ডিজাইনের পরবর্তী উন্নত ভার্সন। Material 3-এ আপডেট করা থিমিং ও কম্পোনেন্ট এবং ডায়নামিক কালারের মতো Material You পছন্দমতো সাজিয়ে নেওয়ার ফিচার অন্তর্ভুক্ত থাকে এবং এটি নতুন Android 12-এর ভিজ্যুয়াল স্টাইল ও সিস্টেম UI-এর সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য ডিজাইন করা হয়েছে। |
| compose.runtime | Compose-এর প্রোগ্রামিং মডেল ও স্টেট ম্যানেজমেন্টের মৌলিক বিল্ডিং ব্লক এবং টার্গেট করার জন্য Compose Compiler Plugin-এর মূল রানটাইম। |
| compose.ui | লেআউট, ড্রয়িং ও ইনপুট সহ ডিভাইসের সাথে ইন্টার্যাক্ট করার জন্য প্রয়োজনীয় কম্পোজ UI-এর মৌলিক কম্পোনেন্ট। |
ডিপেন্ডেন্সি ঘোষণা করা
Compose-এ কোনও ডিপেন্ডেন্সি যোগ করতে, আপনাকে অবশ্যই নিজের প্রোজেক্টে Google Maven রিপোজিটরি যোগ করতে হবে। আরও তথ্যের জন্য Google-এর Maven রিপোজিটরি পড়ুন।
আপনার অ্যাপ বা মডিউলের জন্য build.gradle ফাইলে প্রয়োজনীয় আর্টিফ্যাক্টের জন্য
ডিপেন্ডেন্সি যোগ করুন:
গ্ৰুভি
plugins { id 'org.jetbrains.kotlin.plugin.compose' } 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 } kotlinOptions { jvmTarget = "1.8" } }
Kotlin
plugins { kotlin("plugin.compose") } 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 } kotlinOptions { jvmTarget = "1.8" } }
নির্ভরতা সম্পর্কে আরও তথ্যের জন্য, বিল্ড নির্ভরতা যোগ করুন দেখুন।
মতামত
আপনার মতামত Jetpack-কে আরও ভালো করে তুলতে সাহায্য করে। আপনি যদি নতুন কোনও সমস্যা খুঁজে পান বা এই লাইব্রেরি উন্নত করার জন্য কোনও আইডিয়া থাকে, তাহলে আমাদের জানান। নতুন লাইব্রেরি তৈরি করার আগে এই লাইব্রেরিতে আগে থেকে থাকা সমস্যা দেখে নিন। আপনি তারকাচিহ্ন বোতামে ক্লিক করে আগে থেকে থাকা কোনও সমস্যাতে আপনার ভোট যোগ করতে পারবেন।
আরও তথ্যের জন্য ইস্যু ট্র্যাকার ডকুমেন্টেশন দেখুন।
ভার্সন 1.13
ভার্সন 1.13.0-beta01
০৭ অক্টোবর, ২০২৬
androidx.compose.runtime:runtime-*:1.13.0-beta01 রিলিজ করা হয়েছে। 1.13.0-beta01 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- লাইব্রেরি এখন Kotlin 2.2-কে টার্গেট করে এবং kotlinc 2.2 (I82396, b/498369605) প্রয়োজন
সমস্যার সমাধান
Float.NaNবাDouble.NaN-কে কোনও@Composableফাংশনে পাস করলে, সেই ফাংশনটি কখনওই রিকম্পোজিশন এড়িয়ে যেতে পারত না, এমনকি সমস্ত আর্গুমেন্ট অপরিবর্তিত থাকলেও। এই বাগটি সমাধান করা হয়েছে। এই বাগটি সেইসব ফাংশনকে প্রভাবিত করেছে যেগুলিDp.Unspecifiedপেয়েছে কারণDp.Unspecified-এর ব্যাক-এন্ডেFloat.NaNআছে। (I7a643, b/564569402)CompositionObserverসমস্যাটি এখন কম্পোজিশন পাস পিছু একবার করে সমাধান করা হয়েছে। কম্পোজিশন চলাকালীনsetObserverদিয়ে সেটি সেট বা রিপ্লেস করলে, পরের পাস থেকে সেটি কার্যকর হয়। মুভেবল কন্টেন্ট ইনসার্শনের মাধ্যমে এখনonBeginCompositionওonEndComposition-এর ব্যাপারেও রিপোর্ট করা যায়। (Iad280)computedStateOf-এর ক্যালকুলেশন ব্লক এখন রিড-অনলি হিসেবে এনফোর্স করা হয়েছে। এই ব্লকের মধ্যে কোনও স্টেটে লেখার চেষ্টা করলেIllegalStateExceptionহবে। (Id045f, b/456249371)LinkComposer-এ মেমরি লিক সংক্রান্ত সমস্যার সমাধান করা হয়েছে যেখানেmovableContentসরানোর সময় র্যাপার গ্রুপ স্লটগুলি সবকটি মুভ জুড়ে বজায় থাকে। (I17af2)androidx.lifecycle:lifecycle-runtimeডিপেনডেন্সি আপডেট করে 2.10.0 করা হয়েছে। AGP 9.5.0-alpha04 বা এর পরের যেকোনও ভার্সনের সাথে বান্ডেল করা লাইফসাইকেল রানটাইম লিন্ট চেক চালানোর জন্য এই ভার্সনটি প্রয়োজন। (I99bfd, b/556807521)ComposeTracer-এর অফ-মেইন থ্রেড ব্যবহার করা যায়। (I139e4)
এক্সটার্নাল কন্ট্রিবিউশন
computedStateOf-এ একটি সমস্যার সমাধান করা হয়েছে যাSnapshotStateObserver-এর সাথে পড়লে অপ্রত্যাশিত বাতিলকরণের দিকে নিয়ে যেতে পারে। (Ie3f8b, b/561372470)
ভার্সন 1.13.0-alpha03
৯ সেপ্টেম্বর, ২০২৬
androidx.compose.runtime:runtime-*:1.13.0-alpha03 রিলিজ করা হয়েছে। 1.13.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।
পারফর্ম্যান্স
- অ্যালোকেশন (Ie39f6) বাদ দিতে ইনলাইন
SlotWriter.forAllDataInRememberOrder
ভার্সন 1.13.0-alpha02
২৬ আগস্ট, ২০২৬
androidx.compose.runtime:runtime-*:1.13.0-alpha02 রিলিজ করা হয়েছে। 1.13.0-alpha02 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
withLocalRetainedValuesStoreযোগ করা হয়েছে, যা আপনাকে কন্টেন্ট ল্যাম্বডা থেকে ভ্যালু রিটার্ন করতে দেয়। (I8e871, b/542168593)MutableState-এর জন্যrememberSerializable-এর নাল মান নেওয়া যায় এমন ওভারলোড যোগ করা হয়েছে। (I77b83, b/543285462)
ভার্সন 1.13.0-alpha01
১২ আগস্ট, ২০২৬
androidx.compose.runtime:runtime-*:1.13.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.13.0-alpha01-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
মার্জ করা প্রগার্ড রুল সেটে
LinkTableবিরোধ কমানোর জন্য আমরা ফিচার ফ্ল্যাগ অ্যাডজাস্ট করেছি এবং Gradle-এর বাইরে কোনও অ্যাপ মিনিফাই করা হলে সেটির সাথে সামঞ্জস্য বাড়াতে এটি করা হয়েছে। ফ্ল্যাগ কনফিগার করার জন্য ব্যবহৃত proguard সিনট্যাক্স সামান্য পরিবর্তিত হয়েছে। নিচে দেখুন এবং অতিরিক্ত প্যারেন্থেসিস (I419da) লক্ষ্য করুন:-assumevalues public class androidx.compose.runtime.ComposeRuntimeFlags { static boolean isLinkBufferComposerEnabled() return true; }produceState()এবংFlow.collectAsState()এখন অন্তর্নিহিতStateঅবজেক্টের সমতা ও মার্জ করা সংক্রান্ত নীতি নিয়ন্ত্রণ করার জন্যSnapshotMutationPolicyআর্গুমেন্ট গ্রহণ করে। (I0c167, b/405128869)@ComposableTargetরিপিট করার উপযুক্ত করে তোলা হয়েছে। আরও তথ্যের জন্য আপডেট করা ডকুমেন্টেশন দেখুন। (I99a89, b/481422057)রেকর্ড রিকম্পোজিশন বাতিল করার ফ্লোতে
RecompositionTracerযোগ করা হয়েছে (I1dbc1, Ia991d, b/531813367)নেভিগেশন/ব্যাক স্ট্যাক স্টেট ম্যানেজমেন্ট সহজ করতে এবং এক্সটার্নাল
keyট্র্যাকিংয়ের প্রয়োজনীয়তা দূর করতেSaveableStateHolder-এ এক্সপোজ করা যায় এমন অবজার্ভেবলkeys।holder.keys-এর মাধ্যমে অ্যাক্সেস করুন;removeState-এর মাধ্যমে সরিয়ে দিন। (I9bbbb, b/398887924)staticCompositionLocalWithComputedDefaultOfযোগ করা হয়েছে, যা প্রদান করা হলে স্ট্যাটিক হিসেবে কাজ করে অথবা প্রদান করা না হলে কম্পিউট করা হয়ProvidableCompositionLocals। (I844e4)
সমস্যার সমাধান
GapComposer-এ একটি সমস্যার সমাধান করা হয়েছে যাwithCompositionLocalব্লক করার পরেRememberObserverইনস্ট্যান্সের কারণ হতে পারে। এর ফলে ব্লকের মধ্যে থাকাRememberObserver-এর আগে ভুলভাবে তাদের ফরগেট কলব্যাক এক্সিকিউট করা হয়। (I4d54c)- পরিবর্তনযোগ্য স্টেট অবজেক্টে লেখার সময় কম ভলিউম সংক্রান্ত ব্যতিক্রমের সমাধান করা হয়েছে। (I48194, b/503110696)
SnapshotStateSet.writeToParcel-এ একটি সমস্যার সমাধান করা হয়েছে যেখানে এটি শুধুমাত্র প্রথম এন্ট্রি সিরিয়ালাইজ করছিল। (I64f4c, b/537461421)- স্ট্যাক ট্রেসে দেখানোর সময় স্পষ্টতা বজায় রাখতে,
LaunchedEffectবাতিল করতে ব্যবহৃতCancellationExceptions এবং মনে রাখাCoroutineScopes-এ সামান্য পরিবর্তন করা হয়েছে। (I89840, b/449897855) - ডায়নামিক গেটার ব্যবহার করে
compose:runtimeভ্যালু ক্লাসের (ComposeStackTraceMode,GroupKind) অপ্টিমাইজ করা কম্প্যানিয়ন অবজেক্ট ইনিশিয়ালাইজেশন। (I50640) compileSdk37 (If78b4)-এর জন্য প্রয়োজনীয়তা সরিয়ে দিন
এক্সটার্নাল কন্ট্রিবিউশন
- লাইভ এডিট চলাকালীন ভুল সাবকম্পোজিশন সরিয়ে দিলে প্যারেন্ট কম্পোজিশন আর কাজ না করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I3717c)
- সাব-কম্পোজিশনে কোনও সমস্যা হলে লাইভ এডিট রিকভারি সংক্রান্ত সমস্যার সমাধান করা হয়েছে, যাতে প্যারেন্ট কম্পোজিশন স্টেট পরিবর্তন পর্যবেক্ষণ করা চালিয়ে যেতে পারে। (I63fb5)
ভার্সন 1.12
ভার্সন 1.12.1
৯ সেপ্টেম্বর, ২০২৬
1.12.0 ভার্সনের পর থেকে androidx.compose.runtime:runtime-*:1.12.1-এ কোনও পরিবর্তন করা হয়নি। 1.12.1 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.12.0
১২ আগস্ট, ২০২৬
androidx.compose.runtime:runtime-*:1.12.0 রিলিজ করা হয়েছে। 1.12.0 ভার্সনে এইসব কমিট আছে।
1.11.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন:
এক্সপেরিমেন্টাল স্লট টেবিলের আপডেট
- 1.11 ভার্সনে চালু করা এক্সপেরিমেন্টাল
LinkTableপ্রয়োগকে স্থিতিশীল করার ব্যাপারে আমরা উন্নতি করেছি। নতুন ইমপ্লিমেন্টেশন, রিকম্পোজিশন পারফর্ম্যান্স উন্নত করার জন্য ডিজাইন করা হয়েছে, বিশেষ করে ছোটখাটো র্যান্ডম পরিবর্তনের ক্ষেত্রে। আমরা ব্যবহারকারীদের নতুনSlotTableব্যবহার করে দেখতে এবং কোনও সমস্যা হলে তা জানানোর জন্য উৎসাহিত করি। আরও তথ্যের জন্যComposeRuntimeFlags.isLinkBufferComposerEnabledদেখুন।
Keys API সহ সাইড এফেক্ট
SideEffect-এ একটি ওভারলোড যোগ করা হয়েছে যা মূল যুক্তি গ্রহণ করে। নতুন API ব্যবহার করে এমনLaunchedEffectবাDisposableEffect-এর প্রয়োজন ছাড়াই ওয়ান-শটSideEffectফায়ার করা যায় যেগুলিরCoroutineScopeবাonDisposeব্লক ব্যবহার করা হয়নি। (I528b2, b/476108743)
ভার্সন 1.12.0-rc01
২৯ জুলাই, ২০২৬
androidx.compose.runtime:runtime-*:1.12.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.12.0-rc01-এ এইসব কমিট রয়েছে।
ভার্সন 1.12.0-beta02
১ জুলাই, ২০২৬
androidx.compose.runtime:runtime-*:1.12.0-beta02 রিলিজ করা হয়েছে। 1.12.0-beta02 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- নেস্টেড
MovableContentব্যবহার করার সময়LinkComposer-এ থাকাArrayIndexOutOfBoundsExceptionসংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I85daf)
ভার্সন 1.12.0-beta01
১৭ জুন, ২০২৬
androidx.compose.runtime:runtime-*:1.12.0-beta01 রিলিজ করা হয়েছে। 1.12.0-beta01 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- একটি স্ন্যাপশটে কোনও স্টেট অবজেক্ট তৈরি করা হলে এবং প্রথমটি প্রয়োগ করার আগে একই সাথে চলা স্ন্যাপশটে সেটি পরিবর্তন করা হলে, স্ন্যাপশট প্রয়োগ করার পর্যবেক্ষকদের বিজ্ঞপ্তি না পাঠানো সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (Ide27f, b/451479063)
- কম্পোজিশনে
derivedStateOf()ভ্যালু কীভাবে ট্র্যাক করা হয় সেই সংক্রান্ত সম্ভাব্য মেমরি লিকেজ ঠিক করা হয়েছে। ডেরাইভড স্টেট দ্বারা রিড করা অবজেক্টে ফরওয়ার্ড রাইট করার ফলে কম্পোজিশন ডিসপোজ না হওয়া পর্যন্তderivedStateOf()ইনস্ট্যান্সটি কম্পোজিশন দ্বারা রিটেন করা হয়।derivedStateOf()সঠিকভাবে মনে রাখতে না পারলে, এই লিক গুরুতর হতে পারে কারণ প্রতিটি কম্পোজিশন একটি নতুন তৈরি করতে পারে। (Ib5d87, b/516904513) LinkComposer-এ একটি সমস্যার সমাধান করা হয়েছে যা কম্পোজিশনের সময় ইনভ্যালিড হয়ে গেলে, কম্পোজ করার পরিবর্তে কম্পোজ করার মতো আইটেম এড়িয়ে যেতে পারে। (Ie29fe)remember-এর vararg ওভারলোডের একটি সমস্যা সমাধান করা হয়েছে যা মনে রাখা মানকে বাতিল করা থেকে বাধা দেবে এবং মনে রাখা থেকে একটি ভুল মান রিটার্ন করার কারণ হবে। এটি তখন ঘটে যখনrememberকম কী দিয়ে আবার কম্পোজ করা হয় যা আগের কীয়ের মতোই হয়, তবে অ্যারের শেষ থেকে এলিমেন্ট বাদ দেওয়া হয়। এই সমস্যার সমাধান পেতে প্রভাবিত কোড আবার কম্পাইল করতে হবে। (I0736b)
এক্সটার্নাল কন্ট্রিবিউশন
- Compose রানটাইমে
DisposableEffectওSideEffectকাজের জন্য বিস্তারিত ট্রেসিং যোগ করা হয়েছে। (Ie451f)
ভার্সন 1.12.0-alpha03
১৯ মে, ২০২৬
androidx.compose.runtime:runtime-*:1.12.0-alpha03 রিলিজ করা হয়েছে। 1.12.0-alpha03 ভার্সনে এইসব কমিট আছে।
সমস্যার সমাধান
LinkTable-এ একাধিক সমস্যার সমাধান করা হয়েছে যেখানে ডায়াগনস্টিক স্ট্যাক ট্রেস খালি থাকবে বা তথ্য অনুপস্থিত থাকবে (I3918c)- মুভেবল কন্টেন্ট সহ বিরল ক্ষেত্রে ব্যতিক্রম ঘটাতে পারে এমন একটি ইন্টার্নাল ডেটা টাইপের সমস্যা সমাধান করা হয়েছে। (Ic478f, b/507724717)
LinkComposer-এর স্কিপ করার আচরণে হওয়া সমস্যা সমাধান করা হয়েছে, এর ফলেGapComposer-এর তুলনায় অসঙ্গতিপূর্ণ আচরণ, ডিফল্ট আর্গুমেন্টের অপ্রত্যাশিত রিক্যালকুলেশন এবং টেস্ট টাইম-আউট হয়। (I783dc)
ভার্সন 1.12.0-alpha02
৬ মে, ২০২৬
androidx.compose.runtime:runtime-*:1.12.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.12.0-alpha02-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
SideEffect-এ একটি ওভারলোড যোগ করা হয়েছে যা মূল যুক্তি গ্রহণ করে।LaunchedEffectবাDisposableEffect-এরCoroutineScopeবাonDisposeব্লক ব্যবহার না করেই নতুন API ব্যবহার করে ওয়ান-শটSideEffectsফায়ার করা যায়। (I528b2, b/476108743)
ভার্সন 1.12.0-alpha01
২২ এপ্রিল, ২০২৬
androidx.compose.runtime:runtime-*:1.12.0-alpha01 রিলিজ করা হয়েছে। 1.12.0-alpha01 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- LinkTable-এ একটি সমস্যার সমাধান করা হয়েছে যা ভুল নোড অপারেশন ঘটাতে পারে। (I491c3)
- Compose compileSdk API 37-এ আপডেট করা হয়েছে। এর অর্থ হল, Compose ব্যবহার করার সময় ন্যূনতম AGP ভার্সন 9.2.0 প্রয়োজন। (Id45cd, b/413674743)
- LinkTable-এ ক্যাশিং সংক্রান্ত একটি সমস্যার সমাধান করা হয়েছে যেখানে কন্টেন্ট ইনসার্শনের ফলে রিসাইজ ট্রিগার হলে, পুরনো ভ্যালু রিড করা হতে পারে, যার ফলে CompositionLocals সমাধান করা নাও যেতে পারে। (I8016c)
T.writableRecord-এর কারণে অপ্রয়োজনীয়IllegalStateException(Ia778f, b/440975176) সংক্রান্ত সমস্যার সমাধান করা হয়েছে
রানটাইম ট্রেসিং ভার্সন 1.7
ভার্সন 1.7.0-rc01
১৮ সেপ্টেম্বর, ২০২৪
androidx.compose.runtime:runtime-tracing:1.7.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.7.0-rc01-এ এইসব কমিট রয়েছে।
রানটাইম ট্রেসিং ভার্সন 1.0
ভার্সন 1.0.0-beta01
২৯ নভেম্বর, ২০২৩
androidx.compose.runtime:runtime-tracing:1.0.0-beta01 রিলিজ করা হয়েছে। 1.0.0-beta01 ভার্সনে এইসব কমিট আছে।
ভার্সন 1.0.0-alpha05
১৫ নভেম্বর, ২০২৩
androidx.compose.runtime:runtime-tracing:1.0.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha05-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- সবচেয়ে কম কাজ করে এমন স্থিতিশীল ভার্সনে পিন করা নির্ভরতা (যেমন, compose-runtime ও tracing-perfetto) - এর ফলে compose-runtime-tracing অ্যাপে compose-runtime-এর নতুন ভার্সন নিয়ে আসার ক্ষেত্রে হওয়া সমস্যার সমাধান করা হয়েছে।
ভার্সন 1.0.0-alpha04
২৩ আগস্ট, ২০২৩
androidx.compose.runtime:runtime-tracing:1.0.0-alpha04 রিলিজ করা হয়েছে। 1.0.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।
নতুন ফিচার
- Benchmark ও Tracing Perfetto-এর লেটেস্ট ভার্সনের সাথে মানানসই, যা অ্যাপ চালু (কোল্ড স্টার্ট) করার সময় কম্পোজিশন ট্রেসিংয়ের জন্য সহায়তা প্রদান করে, যেমন, AndroidX Benchmark ও Android Studio (Hedgehog Beta 2 থেকে শুরু)।
API-তে পরিবর্তন
androidx.tracing.perfetto.Trace-এর নাম পরিবর্তন করেandroidx.tracing.perfetto.PerfettoSdkTraceকরা হয়েছে। (I44af8)- Tracing Perfetto SDK API-কে
android.os.Trace-এর সাথে সামঞ্জস্যপূর্ণ করা। (I73ba0, b/282199917) - অ্যাপ স্টার্ট-আপে ট্রেস করার পূর্বশর্ত। (Iad890)
- এক্সপেরিমেন্টাল ও পাবলিক API ফাইল মার্জ করা হয়েছে (I0f2e1, b/278769092)
ভার্সন 1.0.0-alpha02
৮ ফেব্রুয়ারি, ২০২৩
androidx.compose.runtime:runtime-tracing:1.0.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha02-এ এইসব কমিট আছে।
নতুন ফিচার
- কার্যকারিতায় কোনও পরিবর্তন হয়নি। ডাউনস্ট্রিম ডিপেন্ডেন্সি
androidx.tracing:tracing-perfetto*-তে একাধিক পারফর্ম্যান্স অপ্টিমাইজেশন।
ভার্সন 1.0.0-alpha01
৭ সেপ্টেম্বর, ২০২২
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
১ জুলাই, ২০২৬
androidx.compose.runtime:runtime-*:1.11.4 রিলিজ করা হয়েছে। 1.11.4 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.11.3
১৭ জুন, ২০২৬
androidx.compose.runtime:runtime-*:1.11.3 রিলিজ করা হয়েছে। ভার্সন 1.11.3-এ এইসব কমিট রয়েছে।
ভার্সন 1.11.2
১৯ মে, ২০২৬
androidx.compose.runtime:runtime-*:1.11.2 রিলিজ করা হয়েছে। 1.11.2 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- অভ্যন্তরীণ ডেটা টাইপে একটি সমস্যার সমাধান করা হয়েছে যা মুভেবল কন্টেন্টের ক্ষেত্রে বিরল কিছু ব্যতিক্রম ঘটাতে পারে। (Ic478f, b/507724717)
ভার্সন 1.11.1
৬ মে, ২০২৬
androidx.compose.runtime:runtime-*:1.11.1 রিলিজ করা হয়েছে। 1.11.1 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.11.0
২২ এপ্রিল, ২০২৬
androidx.compose.runtime:runtime-*:1.11.0 রিলিজ করা হয়েছে। 1.11.0 ভার্সনে এইসব কমিট রয়েছে।
1.10.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন:
নতুন পরীক্ষামূলক SlotTable
- আমরা
SlotTableআবার লিখেছি, এটি হল ইন্টার্নাল ডেটা স্ট্রাকচার যা আপনার কম্পোজিশন হায়ারার্কি ট্র্যাক করতে, রিকম্পোজিশনের কারণে হওয়া পরিবর্তন নির্ধারণ করতে এবং মনে রাখা ভ্যালু স্টোর করতে Compose রানটাইম ব্যবহার করে। এই রিরাইটটি রিকম্পোজিশন পারফর্ম্যান্স উন্নত করার উপর ফোকাস করে এবং এটি মূলত গ্যাপ বাফারSlotTable-এর তুলনায় অনেক কম মেমরি কপি অপারেশন ব্যবহার করে। আপনার কম্পোজিশন হায়ারার্কিতে নির্দিষ্ট কিছু পরিবর্তন, যেমন আইটেমের একটি দীর্ঘ তালিকা আবার সাজানো, আগেরSlotTable-এর তুলনায় দ্বিগুণ দ্রুত আবার কম্পোজ করতে পারে। নতুনSlotTableপ্রয়োগের ফলে অন্যান্য বেশিরভাগ অপারেশন ১০% দ্রুততর হয়। রানটাইম দ্বারা ব্যবহৃতSlotTableপ্রয়োগ সমস্ত কম্পোজ করার উপযুক্ত পদ্ধতিকে প্রভাবিত করে এবং এর জন্য আবার কম্পাইল করার প্রয়োজন হয় না। নতুনSlotTableব্যবহার করা হল অ্যাপ-ব্যাপী পরিবর্তন, এর মধ্যে ডিপেন্ডেন্সিও অন্তর্ভুক্ত। - এই
SlotTableপ্রয়োগ এখনও পরীক্ষামূলক এবং বর্তমানে ডিফল্ট হিসেবে বন্ধ করা আছে।ComposeRuntimeFlags.isLinkBufferComposerEnabled-এর মানtrueসেট করে এটি চালু করা যেতে পারে। মিনিফিকেশন চালু করা রিলিজ বিল্ডে, রানটাইমের সাথে দেওয়া ডিফল্ট proguard-rules.pro ফাইলে এই ভ্যালু false হিসেবে ধরে নেওয়া হয়। প্রোডাকশনে নতুনSlotTableচালু করতে, এই অনুমানকে অ্যাপ্লিকেশনproguard-rules.proফাইলে 'ট্রু' (true) হিসেবে পরিবর্তন করতে হবে। আরও তথ্যের জন্যComposeRuntimeFlags.isLinkBufferComposerEnabled-এ ডকুমেন্টেশন দেখুন।
হোস্ট-ডিফল্ট কম্পোজিশন লোকাল
compositionLocalWithHostDefaultOfযোগ করা হয়েছে যা ডিফল্ট ভ্যালুর জন্য হোস্টিং এনভায়রনমেন্টে (যেমন, AndroidViewট্যাগ) ফলব্যাক করে এমন CompositionLocals-কে ডিফাইন করার অনুমতি দেয়।
SnapshotFlowManager-এর মাধ্যমে snapshotFlow আরও কার্যকর পর্যবেক্ষণ
snapshotFlow-এর আরও কার্যকর পর্যবেক্ষণের জন্যSnapshotFlowManagerAPI চালু করা হয়েছে। একাধিকsnapshotFlowইনস্ট্যান্সের জন্য একইSnapshotFlowManagerআবার ব্যবহার করলে, কম স্ন্যাপশট প্রয়োগকারী অবজারভার রেজিস্টার হয়, ফলে প্রসেসিং স্টেট আপডেট আরও দ্রুত হয়।
ভার্সন 1.11.0-rc01
৮ এপ্রিল, ২০২৬
androidx.compose.runtime:runtime-*:1.11.0-rc01 রিলিজ করা হয়েছে। 1.11.0-rc01 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.11.0-beta02
২৫ মার্চ, ২০২৬
androidx.compose.runtime:runtime-*:1.11.0-beta02 রিলিজ করা হয়েছে। 1.11.0-beta02 ভার্সনে এইসব কমিট আছে।
সমস্যার সমাধান
- WASM-এ একটি সমস্যার সমাধান করে যেখানে আইডেন্টিটি হ্যাশ কোড সবসময় ০ রিটার্ন করে (I9d70c)
- নেস্টেড ডেরিভড স্টেটের ডিপেন্ডেন্সি পরিবর্তন হলে (Ia7981, b/481750019) প্যারেন্ট ডেরিভড স্টেট সঠিকভাবে ইনভ্যালিডেট করতে না পারার সমস্যা সমাধান করা হয়েছে
LinkTable-এ একটি সমস্যার সমাধান করে যা কম্পোজিশন ডিসপোজ করার পরে ভুল লেখা হতে পারে। (I5c97a)LinkTable-এ একটি সমস্যার সমাধান করে যা কপি অপারেশন চলাকালীন টেবিলের সাইজ পরিবর্তন করার সময় ভুল লেখা হতে পারে (Ie7edf)LinkTable-এ একটি সমস্যার সমাধান করে যা কোনও নোডের (I58a4a) সেভ করা ভ্যালুকে ভুলভাবে আপডেট করেLinkTableএখন কম ক্যাপাসিটিতে ইনিশিয়ালাইজ হয়, এর ফলে কম হিপ সাইজ (I112b9) সহ ডিভাইসে অনেক সাবকম্পোজিশন তৈরি করার সময় OOM সংক্রান্ত সমস্যা হয় না
ভার্সন 1.11.0-beta01
১১ মার্চ, ২০২৬
androidx.compose.runtime:runtime-*:1.11.0-beta01 রিলিজ করা হয়েছে। 1.11.0-beta01 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
SnapshotFlowManagerএবংsnapshotFlow-এর ওভারলোড যাmanagerপ্যারামিটার গ্রহণ করে, এখন সেগুলিকে এক্সপেরিমেন্টাল (I5c1a5, b/486077876, I0de71, b/486077876) হিসেবে চিহ্নিত করা হয়েছে
সমস্যার সমাধান
- পজ করা যায় এমন কম্পোজিশনে "ডিঅ্যাক্টিভেট করা নোডে প্রয়োগ করা হয়েছে" ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা (I880c0, b/484300733)
LinkTable-এ একটি সমস্যার সমাধান করা হয়েছে যাArrayIndexOutOfBoundsExceptionsবাMovableContentব্যবহার করার সময় মেটাডেটা নষ্ট করে দিতে পারে। (I8452b)LinkTable-এ একটি সমস্যার সমাধান করা হয়েছে যা ডায়াগনস্টিক ট্রেস সঠিকভাবে পপুলেট করা থেকে আটকাতে পারে (I59868)- নতুন SlotTable-এ একটি সমস্যার সমাধান করা হয়েছে যেখানে
MovableContent-এ ব্যবহৃতRememberObserversসরিয়ে দিলেOutOfMemoryError/infiniteলুপ তৈরি হতে পারত। (I884e7)
ভার্সন 1.11.0-alpha06
২৫ ফেব্রুয়ারি, ২০২৬
androidx.compose.runtime:runtime-*:1.11.0-alpha06 রিলিজ করা হয়েছে। 1.11.0-alpha06 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.11.0-alpha05
১১ ফেব্রুয়ারি, ২০২৬
androidx.compose.runtime:runtime-*:1.11.0-alpha05 রিলিজ করা হয়েছে। 1.11.0-alpha05 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
ComposeRuntimeFlags.isMovingNestedMovableContentEnabled, একটি রানটাইম ফিচার ফ্ল্যাগ, সরিয়ে দেওয়া হয়েছে। (I3ee62, b/455588848)HostDefaultKey-কেopen classথেকেinterface-এ কনভার্ট করা হয়েছে। এটি কীগুলিকে একাধিক লুক-আপ মেকানিজম (যেমনViewTreeHostDefaultKey) প্রয়োগ করার অনুমতি দেয়, যা একক-ক্লাস ইনহেরিটেন্স দ্বারা সীমাবদ্ধ নয় এবং কাস্টম হোস্টিং এনভায়রনমেন্টের জন্য এক্সটেনসিবিলিটি উন্নত করে। (I917a2)HostDefaultProviderওLocalHostDefaultProviderএখনpublic, যা প্ল্যাটফর্ম-নির্দিষ্ট লোকালে ভ্যালু নির্ধারণ করার জন্য কাস্টম হোস্টিং এনভায়রনমেন্টকে অনুমতি দেয়। (I5bdbe)
সমস্যার সমাধান
- দুটি থ্রেডে একসাথে দুটি
snapshotFlows চালানোর সময় ডেডলকিংয়ের সম্ভাবনা দূর করে। (Ib4339) - লিঙ্ক টেবিলে হওয়া একটি সমস্যার সমাধান করা হয়েছে, এর ফলে টুলিং, হায়ারার্কিতে কম্পোজ করার উপযুক্ত আইটেম বাদ দিতে এবং সাব-কম্পোজিশন ভুলভাবে লিঙ্ক করতে পারত (I7178e)
এক্সটার্নাল কন্ট্রিবিউশন
- produceState ব্লকে ভ্যালু পরিবর্তন করার জন্য unary অপারেটর ব্যবহার করার সময় Lint-এর ভুল পজিটিভ সংক্রান্ত সমস্যা সমাধান করা হয়েছে (I1c7c9)
ভার্সন 1.11.0-alpha04
২৮ জানুয়ারি, ২০২৬
androidx.compose.runtime:runtime-*:1.11.0-alpha04 রিলিজ করা হয়েছে। 1.11.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন।
- আমরা
SlotTableআবার লিখেছি, এটি হল ইন্টার্নাল ডেটা স্ট্রাকচার যা আপনার কম্পোজিশন হায়ারার্কি ট্র্যাক করতে, রিকম্পোজিশনের কারণে হওয়া পরিবর্তন নির্ধারণ করতে এবং মনে রাখা ভ্যালু স্টোর করতে Compose রানটাইম ব্যবহার করে। এই রিরাইটটি রিকম্পোজিশন পারফর্ম্যান্স উন্নত করার উপর ফোকাস করে এবং এটি মূলত গ্যাপ বাফারSlotTable-এর তুলনায় অনেক কম মেমরি কপি অপারেশন ব্যবহার করে। আপনার কম্পোজিশন হায়ারার্কিতে নির্দিষ্ট কিছু পরিবর্তন, যেমন আইটেমের একটি দীর্ঘ তালিকা আবার সাজানো, আগেরSlotTable-এর তুলনায় দ্বিগুণ দ্রুত আবার কম্পোজ করতে পারে। নতুনSlotTableপ্রয়োগের ফলে অন্যান্য বেশিরভাগ অপারেশন ১০% দ্রুততর হয়। রানটাইম দ্বারা ব্যবহৃতSlotTableপ্রয়োগ সমস্ত কম্পোজ করার উপযুক্ত পদ্ধতিকে প্রভাবিত করে এবং এর জন্য আবার কম্পাইল করার প্রয়োজন হয় না। নতুনSlotTableব্যবহার করা হল অ্যাপ-ব্যাপী পরিবর্তন, এর মধ্যে নির্ভরতাও অন্তর্ভুক্ত। - এই
SlotTableপ্রয়োগ বর্তমানে ডিফল্ট হিসেবে বন্ধ করা আছে এবংComposeRuntimeFlags.isLinkBufferComposerEnabled-এর মানtrueহিসেবে সেট করে এটি চালু করা যেতে পারে। - মিনিফিকেশন চালু করা রিলিজ বিল্ডে, রানটাইমের সাথে দেওয়া ডিফল্ট
proguard-rules.proফাইলে এই ভ্যালুfalseহিসেবে ধরে নেওয়া হয়। প্রোডাকশনে নতুনSlotTableচালু করতে, এই অনুমানকে অ্যাপ্লিকেশনproguard-rules.proফাইলের মধ্যেtrueহিসেবে পরিবর্তন করতে হবে। আরও তথ্যের জন্যComposeRuntimeFlags.isLinkBufferComposerEnabled-এ ডকুমেন্টেশন দেখুন। (Ib741d, b/268366116)
নতুন ফিচার
compositionLocalWithHostDefaultOfযোগ করা হয়েছে যাCompositionLocals-কে তার ডিফল্ট ভ্যালুর জন্য হোস্টিং এনভায়রনমেন্টে (যেমন, Android View ট্যাগ) ফলব্যাক করার অনুমতি দেয়। (I15b81)
সমস্যার সমাধান
- নিশ্চিত করা হয়েছে যে প্রয়োজনীয় প্রয়োগ সংক্রান্ত বিজ্ঞপ্তি না পাঠানো পর্যন্ত
Snapshot.sendApplyNotificationsকল ফেরত আসতে পারবে না। (I95f20, b/418800424) - রানটাইমে সোর্স সংক্রান্ত তথ্য না থাকলে, সোর্স সংক্রান্ত তথ্য স্ট্যাক ট্রেসকে গ্রুপ কী-তে ডাউনগ্রেড করা থেকে আটকায়। (If3712)
ComposeToolingFlags-এর ব্যাপারে জানুন। এইসব ফ্ল্যাগ স্থায়ী (ComposeRuntimeFlags-এর বিপরীত) হওয়ার কথা এবং পারফর্ম্যান্সের উপর গুরুত্বপূর্ণ প্রভাব ফেলে এমন টুলিং ফিচারের জন্য ব্যবহার করা হয়। (I87863)
এক্সটার্নাল কন্ট্রিবিউশন
- নতুন এক্সপেরিমেন্টাল
RecomposerInfo#errorStateAPI (I0decc) FunctionKeyMetaঅ্যানোটেশনেরAnnotationRetentionপরিবর্তন করে 'BINARY' (I53495) করুন
ভার্সন 1.11.0-alpha03
১৪ জানুয়ারি, ২০২৬
androidx.compose.runtime:runtime-*:1.11.0-alpha03 রিলিজ করা হয়েছে। 1.11.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
SnapshotFlowManagerক্লাস চালু করা হয়েছে এবংsnapshotFlow-এ একটি ঐচ্ছিকSnapshotFlowManagerপ্যারামিটার যোগ করা হয়েছে, এর ফলে ব্যবহারকারীরা রেজিস্টার করা স্ন্যাপশট প্রয়োগকারী পর্যবেক্ষকের সংখ্যা অপ্টিমাইজ করতে পারবেন। (I6289b, b/446746211)
সমস্যার সমাধান
- মুভেবল কন্টেন্ট ইনসার্শনের জন্য ট্রেস অ্যানোটেশন যোগ করা হয়েছে (Ibf176)
ভার্সন 1.11.0-alpha02
১৭ ডিসেম্বর, ২০২৫
androidx.compose.runtime:runtime-*:1.11.0-alpha02 রিলিজ করা হয়েছে। 1.11.0-alpha02 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
isMovableContentUsageTrackingEnabledফ্ল্যাগ সরিয়ে দেওয়া হয়েছে (I71e2b, b/427960130)
এক্সটার্নাল কন্ট্রিবিউশন
- লাইভ এডিট সংক্রান্ত সমস্যার সমাধান করা হয়েছে যা সমস্যার কারণে রিকভার করা যায় না। (Ieb34f)
ভার্সন 1.11.0-alpha01
৩ ডিসেম্বর, ২০২৫
androidx.compose.runtime:runtime-*:1.11.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.11.0-alpha01-এ এইসব কমিট আছে।
API-তে পরিবর্তন
RetainedValuesStore.getExitedValueOrDefault-এর নাম পরিবর্তন করেconsumeExitedValueOrDefaultc7a0929 করা হয়েছে- পরীক্ষামূলক কনকারেন্ট রিকম্পোজিশন API সরিয়ে দেওয়া হয়েছে।(c8af15d)
ভার্সন 1.10
ভার্সন 1.10.6
২৫ মার্চ, ২০২৬
androidx.compose.runtime:runtime-*:1.10.6 রিলিজ করা হয়েছে। 1.10.6 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- পজ করা যায় এমন কম্পোজিশনে "অন্য গ্রুপের কারণে হলে রুট থেকে আবার ব্যবহার করা বন্ধ করা যায় না" ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে (I474b5, b/488433633)
- পজ করা যায় এমন কম্পোজিশনে "ডিঅ্যাক্টিভেট করা নোডে প্রয়োগ করা হয়েছে" ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা (I880c0, b/484300733)
ভার্সন 1.10.5
১১ মার্চ, ২০২৬
androidx.compose.runtime:runtime-*:1.10.5 রিলিজ করা হয়েছে। 1.10.5 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.10.4
২৫ ফেব্রুয়ারি, ২০২৬
1.10.3 থেকে androidx.compose.runtime:runtime-*:1.10.4-এ কোনও পরিবর্তন করা হয়নি। ভার্সন 1.10.4-এ এইসব কমিট আছে।
ভার্সন 1.10.3
১১ ফেব্রুয়ারি, ২০২৬
androidx.compose.runtime:runtime-*:1.10.3 রিলিজ করা হয়েছে। 1.10.3 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.10.2
২৮ জানুয়ারি, ২০২৬
androidx.compose.runtime:runtime-*:1.10.2 রিলিজ করা হয়েছে। 1.10.2 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.10.1
১৪ জানুয়ারি, ২০২৬
androidx.compose.runtime:runtime-*:1.10.1 রিলিজ করা হয়েছে। ভার্সন 1.10.1-এ এইসব কমিট রয়েছে।
ভার্সন 1.10.0
৩ ডিসেম্বর, ২০২৫
androidx.compose.runtime:runtime-*:1.10.0 রিলিজ করা হয়েছে। 1.10.0 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.10.0-rc01
১৯ নভেম্বর, ২০২৫
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
৫ নভেম্বর, ২০২৫
androidx.compose.runtime:runtime-*:1.10.0-beta02 রিলিজ করা হয়েছে। 1.10.0-beta02 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
RetainedValuesStoreইনস্টল ও ম্যানেজ করার প্রক্রিয়া সহজ করতে আমরা API-এর সাথে মানানসই নয় এমন একাধিক পরিবর্তন করেছি।retainওRetainedEffect-তে আগে থেকে থাকা কল প্রভাবিত হবে না, তবে কাস্টমRetainedValuesStore-কে এই রিলিজের সাথে মানানসই করতে মাইগ্রেট করতে হবে। (If3c2f, b/451921682, b/450539803)RetainedValuesStoreআর ধরে রাখার সুবিধা শুরু/বন্ধ করার জন্য লো-লেভেল API প্রকাশ করে না। রিটেনশন স্টেট এখন অটোমেটিক কন্টেন্ট ফলো করে।LocalRetainedValuesStoreProviderএখনRetainedValuesStoreইনস্টল করার জন্য অফার করা হয়েছে।LocalRetainedValuesStoreসরাসরি প্রদান করা উচিত নয়। এইসব পরিবর্তন সম্পর্কে আরও তথ্য পেতে, আপডেট করা ডকুমেন্টেশন ও নমুনা দেখুন।RetainedValuesStoreProvider-এর নাম পরিবর্তন করেRetainedValuesStoreRegistryকরা হয়েছে। এই ক্লাস এখন শুধুমাত্র কম্পোজিশনেRetainedValuesStores ইনস্টল ও ম্যানেজ করার জন্য API এক্সপোজ করে।ManagedRetainedValuesStoreদিয়েControlledRetainedValuesStoreপরিবর্তন করা হয়েছে।RetainedValuesStoreএখন একটি ইন্টারফেস।
আগে, কাস্টম RetainedValuesStore ইনস্টল করার পদ্ধতিটি হয়ত এইরকম ছিল:
val retainedValuesStore = retainControlledRetainedValuesStore()
if (active) {
CompositionLocalProvider(LocalRetainedValuesStore provides retainedValuesStore) {
content()
}
val composer = currentComposer
DisposableEffect(retainedValuesStore) {
val cancellationHandle =
if (retainedValuesStore.retainExitedValuesRequestsFromSelf > 0) {
composer.scheduleFrameEndCallback {
retainedValuesStore.stopRetainingExitedValues()
}
} else {
null
}
onDispose {
cancellationHandle?.cancel()
retainedValuesStore.startRetainingExitedValues()
}
}
}
এইসব API পরিবর্তনের সাথে, এই ইনস্টলেশনটি পরিবর্তে এই কোড দিয়ে প্রকাশ করা যেতে পারে:
val retainedValuesStore = retainManagedRetainedValuesStore()
if (active) {
LocalRetainedValuesStoreProvider(retainedValuesStore) {
content()
}
}
সমস্যার সমাধান
- স্লট টেবিল থেকে কন্টেন্ট সরানোর আগে মুভেবল কন্টেন্টে স্কোপের ইনভ্যালিডেশন ট্রান্সফার করা (I9d123, b/451651649)
ভার্সন 1.10.0-beta01
২২ অক্টোবর, ২০২৫
androidx.compose.runtime:runtime-*:1.10.0-beta01 রিলিজ করা হয়েছে। 1.10.0-beta01 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
RetainedValuesStore.getExitedValueOrDefault-এর নাম পরিবর্তন করেRetainedValuesStore.getExitedValueOrElseরাখা হয়েছে (If9653, b/452340613)isKeepingExitedValues-এর নাম পরিবর্তন করেisRetainingExitedValuesরাখা হয়েছে (I660bf, b/437095756)RetainScope-এর নাম পরিবর্তন করেRetainedValuesStoreকরা হয়েছে।RetainScopeHolder-এর নাম পরিবর্তন করেRetainedValuesStoreRegistryকরা হয়েছে।RetainScopeHolder.RetainScopeProvider-এর নাম পরিবর্তন করেRetainedValuesStoreRegistry.ProvideChildRetainedValuesStoreকরা হয়েছে। (Idf23a, b/437095756)
সমস্যার সমাধান
- প্রথমবার ব্যবহার না করা পর্যন্ত
SaveableStateRegistry-এSavedStateদেরিতে চালু করা। (Ic0a93)
ভার্সন 1.10.0-alpha05
৮ অক্টোবর, ২০২৫
androidx.compose.runtime:runtime-*:1.10.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.10.0-alpha05-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- রিলিজ মোডে
DiagnosticComposeException-এর জন্য স্ট্যাক ট্রেস পূরণ করুন। (Ib76cb) - স্ন্যাপশট স্টেটে একটি সমস্যার সমাধান করা হয়েছে যেখানে, কোনও ধরনের জন্য মার্জ নীতি ব্যবহার করার সময় আগের ভ্যালু ভুলভাবে গণনা করা হতে পারে, যার ফলে আগের ভ্যালুর পরিবর্তে স্টেটের ভবিষ্যতের ভ্যালু রিটার্ন করা হবে। দুটির বেশি পরিবর্তনযোগ্য স্ন্যাপশট বাকি থাকলে এবং প্রয়োগ করা অন্তত একটি ভ্যালুতে মার্জ করার নীতি থাকলে এটি ঘটবে। (I527b5, b/442791065)
ভার্সন 1.10.0-alpha04
২৪ সেপ্টেম্বর, ২০২৫
androidx.compose.runtime:runtime-*:1.10.0-alpha04 রিলিজ করা হয়েছে। 1.10.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
RetainScopes-এর সংগ্রহ ম্যানেজ করার জন্যRetainScopeHolderAPI যোগ করা হয়েছে। এটি কন্টেনার ও নেভিগেশন হোস্টের জন্য ডেটা ধরে রাখার নীতি প্রয়োগ করতে ব্যবহার করা যেতে পারে, যেগুলি বিভিন্ন ডেটা ধরে রাখার মেয়াদ সহ অনেক চাইল্ড কম্পোজ করে। (I10e0f)RetainedContentHostওretainControlledRetainScopeAPI যোগ করা হয়েছে, যেগুলি ব্যবহার করে অটোমেটিক ম্যানেজ করাRetainScopesতৈরি করা যায়, যেমন, কলাপ্স করা প্যানে (If81f6)Updater#set-এর পুরানো ইনলাইন ওভারলোড সরানো হয়েছে কারণ এটি প্রদত্ত ভ্যালুকে অনেকবার বক্সিং করছিল।Updater#init-এর একটি ওভারলোড যোগ করা হয়েছে যা এমন একটি প্যারামিটার নেয় যার জন্য ক্যাপচারিং ল্যাম্বডার প্রয়োজন হয় না। (Id679e)RetainedEffect-এর সূচনা করা হয়েছে, এটিDisposableEffect-এর মতো একটি সাইড-ইফেক্ট API যা কম্পোজিশন লাইফসাইকেলের পরিবর্তে রিটেনশন লাইফসাইকেল অনুসরণ করে। এই API-এর উদ্দেশ্য হল এমন অবজেক্টের রিটেনশন সংক্রান্ত এফেক্টের জন্য ব্যবহার করা যাRetainObserverপ্রয়োগ করে না বা করতে পারে না। (I1c61f, b/177562901)RetainObserver.onRetained-এর ডকুমেন্টেশন সংশোধন করা হয়েছে এবংRetainObserver.onUnusedযোগ করা হয়েছে, যাRememberObserver.onAbandoned-এর (Ia6fc5) মিরর
সমস্যার সমাধান
- ফাংশনের (যেমন, কম্পোজ করার উপযুক্ত কল) প্রথম গ্রুপের পরে এবং সরানো যেতে পারে এমন গ্রুপের (যেমন,
ifস্টেটমেন্ট) আগে ডিসপ্যাচ করার কথা মনে রাখার বিষয়টি ঠিক করা হয়েছে, যাonForgottenভুল ক্রমে ডিসপ্যাচ করতে পারে। (I453f6, b/346821372) LaunchedEffectইনিশিয়ালাইজ করার সময় কোরাউটিন কন্টেক্সট ট্রাভার্স করা এড়িয়ে চলুন। (I8d2c3b)
ভার্সন 1.10.0-alpha03
১০ সেপ্টেম্বর, ২০২৫
androidx.compose.runtime:runtime-*:1.10.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.10.0-alpha03-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- মিনিফাই করা অ্যাপে কাজ করে এমন গ্রুপ কী ভিত্তিক কম্পোজ স্ট্যাক ট্রেস চালু করে। এইসব ট্রেসের জন্য প্রোগার্ড ম্যাপিং, Kotlin 2.3.0 থেকে শুরু করে Compose compiler Gradle প্লাগ-ইন দ্বারা তৈরি করা হবে। এইসব স্ট্যাক ট্রেস সাধারণত বন্ধ থাকে, সেগুলি চালু করতে
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
২৭ আগস্ট, ২০২৫
androidx.compose.runtime:runtime-*:1.10.0-alpha02 রিলিজ করা হয়েছে। 1.10.0-alpha02 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
@DoNotRetainযোগ করা হয়েছে, যাretainAPI-এর সাথে ব্যবহার করা উচিত নয় এমন ধরনের অ্যানোটেশনের জন্য ব্যবহার করা যেতে পারে, সম্ভবত কারণ সেগুলি রিসোর্স লিক করবে। (Ie5435)- Kotlin 2.0-এর সাথে রিলিজ করা প্রোজেক্ট ব্যবহার করার জন্য KGP 2.0.0 বা এর পরের যেকোনও ভার্সন প্রয়োজন। (Idb6b5)
সমস্যার সমাধান
- কম্পোজিশনের রুট নোড পরিবর্তন করা হলে, অ্যাপ্লায়ারের অপারেশন সঠিকভাবে গণনা করার জন্য মুভেবল কন্টেন্ট ফিক্স করা হয়েছে। মুভেবল কন্টেন্টের জন্য পরিবর্তন কম্পিউট করার সময়,
up()কল পেন্ডিং থাকতে পারে এবং প্রয়োগকারীর কাছে ডিসপ্যাচ করা নাও হতে পারে, এর ফলে প্রয়োগকারীর স্টেট পরবর্তী ব্যবহারের জন্য ভুলভাবে পজিশন করা হতে পারে। (I7c583), (I47b70) CheckResult-কে অপ্রচলিত হিসেবে চিহ্নিত করে কারণ এটি ব্যবহার করার জন্য তৈরি করা হয়নি। (I32934)
ভার্সন 1.10.0-alpha01
১৩ আগস্ট, ২০২৫
androidx.compose.runtime:runtime-*:1.10.0-alpha01 রিলিজ করা হয়েছে। 1.10.0-alpha01 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- রিটেইন API চালু করা হয়েছে।
rememberSaveable-এর মতো, রিটেন কম্পোজিশন হায়ারার্কি থেকে বেরিয়ে যাওয়া মনে রাখা ভ্যালু সেভ ও পারসিস্ট করতে পারে। রিটেন করা ভ্যালু সিরিয়ালাইজ করা হয় না এবং সেভ করা ভ্যালুর চেয়ে কম সময় ধরে থাকে এবং androidxViewModel-এর মতো আচরণ করে। আরও বিবরণের জন্য ডকুমেন্টেশন দেখুন। (Ia3105, b/177562901) awaitOrScheduleNextCompositionEnd()API যোগ করা হয়েছে, যা Recomposer বর্তমান ফ্রেম কম্পোজ করা শেষ করলে একটি কলব্যাক ইস্যু করে। Recomposer বর্তমানে কোনও ফ্রেম কম্পোজ না করলে, পরবর্তী ফ্রেমের কম্পোজিশন শেষ না হওয়া পর্যন্ত এই API সাসপেন্ড হয়ে যায় এবং কম্পোজ করার জন্য একটি নতুন ফ্রেম শিডিউল করে। (Ib873c)- ইউনিট রিটার্ন না করা কম্পোজিশন লোকাল প্রোভাইডার API যোগ করুন (I22521, b/271871288)
- ফিচার ফ্ল্যাগ,
isMovableContentUsageTrackingEnabledযোগ করা হয়েছে যা কন্টেন্ট প্রাথমিকভাবে তৈরি করার সময় কিছু ওভারহেড এড়াতে মুভেবল কন্টেন্টের ব্যবহার ট্র্যাক করার অনুমতি দেয়। এই ফিচার ফ্ল্যাগ বর্তমানে ডিফল্ট হিসেবে বন্ধ করা আছে। (Ia713d)
সমস্যার সমাধান
- সাবকম্পোজিশনের মধ্যে সরানো হলে মুভেবল কন্টেন্টে ক্র্যাশ হওয়ার সমস্যা সমাধান করে। (I3fa1e, b/436858107)
- একাধিক নেস্টেড সাবকম্পোজিশনের মধ্যে থাকলে কম্পোজ করার মতো স্ট্যাক ট্রেসের অংশটি মিসিং হওয়া সংক্রান্ত সমস্যার সমাধান করে। (I98c6f)
- ডিফল্ট minSdk API 21 থেকে API 23-এ সরানো হচ্ছে (Ibdfca, b/380448311, b/435705964, b/435705223)
- একাধিক থ্রেড থেকে পজ করা যায় এমন কম্পোজিশনের ইন্টার্নাল স্টেট আপডেট করার সময় রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I03895)
- প্রাথমিক কম্পোজিশনের আগে কল করার জন্য কম্পোজিশন রেজিস্ট্রেশন অবজারভার আপডেট করে। (I4adca, b/430600932)
- K1 ও K2, দু'টির সাথেই মানানসই করে তুলতে
AutoboxingStateValuePropertyDetector-এ ছোটখাটো সমস্যার সমাধান করা হয়েছে। (Ie81c1)
এক্সটার্নাল কন্ট্রিবিউশন
- runtime-rxjava2 আর্টিফ্যাক্টকে মাল্টিপ্ল্যাটফর্ম করুন এবং JVM-কে কাজ করে এমন টার্গেট হিসেবে যোগ করুন। (I5409e)
- runtime-rxjava3 আর্টিফ্যাক্টকে মাল্টিপ্ল্যাটফর্ম করুন এবং JVM-কে কাজ করে এমন টার্গেট হিসেবে যোগ করুন। (I97e84)
ভার্সন 1.9
ভার্সন ১.৯.৫
১৯ নভেম্বর, ২০২৫
androidx.compose.runtime:runtime-*:1.9.5 রিলিজ করা হয়েছে। ভার্সন 1.9.5-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- স্লট টেবিল থেকে কন্টেন্ট সরানোর আগে মুভেবল কন্টেন্টে স্কোপের ইনভ্যালিডেশন ট্রান্সফার করে (I9d123, b/451651649)
ভার্সন 1.9.4
২২ অক্টোবর, ২০২৫
androidx.compose.runtime:runtime-*:1.9.4 রিলিজ করা হয়েছে। ভার্সন 1.9.4-এ এইসব কমিট রয়েছে।
ভার্সন 1.9.3
৮ অক্টোবর, ২০২৫
androidx.compose.runtime:runtime-*:1.9.3 রিলিজ করা হয়েছে। 1.9.3 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.9.2
২৪ সেপ্টেম্বর, ২০২৫
androidx.compose.runtime:runtime-*:1.9.2 রিলিজ করা হয়েছে। ভার্সন 1.9.2-এ এইসব কমিট রয়েছে।
ভার্সন 1.9.1
১০ সেপ্টেম্বর, ২০২৫
androidx.compose.runtime:runtime-*:1.9.1 রিলিজ করা হয়েছে। ভার্সন 1.9.1-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- যেসব কম্পোজিশন কম্পোজ করা হচ্ছে, সেগুলি আবার কম্পোজ করা এড়িয়ে চলুন। (Iacb01)
- দুবার পজ করা থেকে রিকম্পোজ স্কোপকে আটকান। (I060b2, b/431584881)
ভার্সন 1.9.0
১৩ আগস্ট, ২০২৫
androidx.compose.runtime:runtime-*:1.9.0 রিলিজ করা হয়েছে। 1.9.0 ভার্সনে এইসব কমিট আছে।
1.8.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন
- Compose-এর সাথে শিপ করা লিন্ট চেকের জন্য এখন ন্যূনতম AGP ভার্সন 8.8.2 প্রয়োজন। আপনি AGP আপগ্রেড করতে না পারলে, gradle.properties-এ
android.experimental.lint.version=8.8.2(বা এর পরের যেকোনও ভার্সন) ব্যবহার করে পরিবর্তে Lint আপগ্রেড করতে পারবেন। IDE-এর মধ্যে Compose লিন্ট চেক রান করাতে, Android Studio Ladybug বা এর পরের যেকোনও ভার্সন প্রয়োজন। - নতুন রানটাইম-অ্যানোটেশন লাইব্রেরি তৈরি করা হয়েছে। এতে Compose রানটাইমের উপর নির্ভরতা ছাড়াই অ্যানোটেশন সংজ্ঞা থাকে, তাই এটি নন-Compose মডিউল থেকে ব্যবহার করা যেতে পারে।
@Stable,@Immutableও@StableMarker-কে রানটাইম-অ্যানোটেশনে সরানো হয়েছে, যাতে নন-কম্পোজ মডিউলকে অ্যানোটেট করা যায়@FrequentlyChangingValueও@RememberInCompositionরানটাইম-অ্যানোটেশনে যোগ করা হয়েছে।@FrequentlyChangingValueচিহ্ন সেইসব ঘোষণা চিহ্নিত করে যা ঘন ঘন রিকম্পোজিশনের কারণ হতে পারে এবং@RememberInCompositionচিহ্ন সেইসব ঘোষণা চিহ্নিত করে যা কম্পোজিশনে মনে রাখতে হবে। সংশ্লিষ্ট লিন্ট চেক ভুল ব্যবহারের ব্যাপারে সতর্ক করে।
androidx.compose.runtime:runtimeএখন অতিরিক্ত প্ল্যাটফর্মে কাজ করবে। ডেস্কটপ, iOS এবং নেটিভ টার্গেটের জন্য সহায়তা JetBrains-এর Compose Multiplatform প্রজেক্ট থেকে আপস্ট্রিম করা হয়েছে এবং ভবিষ্যতে Google Maven-এর মাধ্যমে প্রকাশ করা হবে। অন্য কোনও কম্পোজ আর্টিফ্যাক্ট প্রভাবিত হয় না।
ভার্সন 1.9.0-rc01
৩০ জুলাই, ২০২৫
androidx.compose.runtime:runtime-*:1.9.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.9.0-rc01-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- প্রাথমিক কম্পোজিশনের আগে কল করার জন্য কম্পোজিশন রেজিস্ট্রেশন অবজারভার আপডেট করে। (I4adca, b/430600932)
ভার্সন 1.9.0-beta03
১৬ জুলাই, ২০২৫
androidx.compose.runtime:runtime-*:1.9.0-beta03 রিলিজ করা হয়েছে। 1.9.0-beta03 ভার্সনে এইসব কমিট আছে।
ভার্সন 1.9.0-beta02
২ জুলাই, ২০২৫
androidx.compose.runtime:runtime-*:1.9.0-beta02 রিলিজ করা হয়েছে। 1.9.0-beta02 ভার্সনে এইসব কমিট আছে।
সমস্যার সমাধান
- কম্পোজিশনের মধ্যে স্লট টেবিলে ভ্যালুর রেফারেন্স লাইফটাইম কমানো হয়েছে। এমন কিছু ঘটনা ঘটে যেখানে স্লট টেবিলের রেফারেন্স প্রয়োজনের চেয়ে এক ফ্রেম বেশি সময় ধরে চলতে পারে। (I49e74, b/418516940)
- হট রিলোড পদ্ধতির জন্য Kotlin ম্যানগেল সরান। (Ic56a3, b/426871325)
ভার্সন 1.9.0-beta01
১৮ জুন, ২০২৫
androidx.compose.runtime:runtime-*:1.9.0-beta01 রিলিজ করা হয়েছে। 1.9.0-beta01 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- Compose কম্পাইলারের যোগ করা সোর্স সংক্রান্ত তথ্য পার্স করার জন্য টুলিং API যোগ করা হয়েছে। (Iceaf9, b/408492167)
SnapshotStateSetএখন Android-এParcelableপ্রয়োগ করে, এটি এখনrememberSaveable { ... }হিসেবে ব্যবহার করার জন্য কাজ করে। (I755dd, b/378623803)SnapshotStateListএখন Android-এParcelableপ্রয়োগ করে, এটি এখনrememberSaveable { ... }হিসেবে ব্যবহার করার জন্য কাজ করে। (Id18be, b/378623803)movableContentOf()এখন@RememberInCompositionঅ্যানোটেশন দিয়ে চিহ্নিত করা হয়েছে, যা ভুল ব্যবহার (I2738d) ধরতে লিন্টকে সাহায্য করে- রীকম্পোজিশনের কারণ আরও ভালভাবে পর্যবেক্ষণ করার জন্য আপডেট করা পরীক্ষামূলক কম্পোজিশন অবজারভার API (I32b6a)
- এই ফিচারের ভবিষ্যতের ডেভেলপমেন্টের জন্য
setDiagnosticStackTraceEnabled-কে পরীক্ষামূলক হিসেবে পরিবর্তন করুন। (I11db3) currentCompositeKeyHashএখন বন্ধ করে দেওয়া হয়েছে। পরিবর্তেcurrentCompositeKeyHashCodeব্যবহার করুন। রিপ্লেসমেন্ট API একই হ্যাশকে আরও বেশি বিট দিয়ে এনকোড করে, যা কম্পোজিশন হায়ারার্কিতে দুটি র্যান্ডম অসংশ্লিষ্ট গ্রুপের একই হ্যাশ কী থাকার সম্ভাবনাকে অনেক কমিয়ে দেয়। (I4cb6a, b/177562901)- Kotlin 2.0-এর সাথে রিলিজ করা প্রোজেক্ট ব্যবহার করার জন্য KGP 2.0.0 বা এর পরের যেকোনও ভার্সন প্রয়োজন (Idb6b5)
@Stable,@Immutableও@StableMarker-কে রানটাইম-অ্যানোটেশনে (মানানসই উপায়ে) সরানো হয়েছে। আপনি এখন রানটাইম-অ্যানোটেশনের উপর নির্ভর করতে পারেন, যদি আপনি কম্পোজের উপর নির্ভর করে না এমন লাইব্রেরি থেকে এইসব অ্যানোটেশন ব্যবহার করতে চান। (I23a16)rememberSaveableওভারলোডের নাম পরিবর্তন করেKSerializerকরা হয়েছে যাrememberSerializableগ্রহণ করে। এই পরিবর্তনের ফলেkotlinx.serialization-এর সাথে এর উদ্দেশ্যমূলক ব্যবহার আরও স্পষ্ট হয়ে যায়।rememberSaveable-এ সরাসরি সাধারণkotlinx.Serializableক্লাস কাজ করার জন্যreifiedটাইপ প্যারামিটার প্রয়োজন হবে, এর ফলে সোর্স কোড কম্প্যাটিবিলিটি ভেঙে যাবে কারণ কম্পাইল করার সময় সব কল সাইটকে রিফাইন্ড টাইপ সংক্রান্ত তথ্য দিতে হবে। (Idb875, I38627, b/376028110)
সমস্যার সমাধান
- পজ করা যায় এমন কন্টেন্ট দিয়ে তৈরি কম্পোজিশন বাতিল করা হলে তা সরিয়ে দিতে হবে। এটি এখন কম্পোজিশন দ্বারা চেক করা হয় এবং এটি আবার ব্যবহার করা হলে, তা বাতিল করে দেওয়া হয়। (I2daa5, b/406792785)
- পজ করা যায় এমন কম্পোজিশন ডিসপোজ করার সময় পর্যবেক্ষকদের কথা মনে করিয়ে দেওয়ার জন্য আর কোনও স্পুরিয়াস
onForgottenপাঠানো হবে না, এই সমস্যা সমাধান করা হয়েছে।RememberObserversবাতিল করা যায় এমন পজ করা কম্পোজিশনে শুধুমাত্র onAbandoned পাঠানো উচিত। (I26f54) - মুভেবল কন্টেন্ট সংক্রান্ত একটি সমস্যার সমাধান করা হয়েছে যেখানে মুভেবল কন্টেন্ট প্রসেস করার লেট স্টেজে আসা ইনভ্যালিডেশন কম্পোজারে যোগ করা হয়, কিন্তু কন্টেন্ট সরানোর সময় এই ইনভ্যালিডেশন আপডেট করা হয় না, এর ফলে কন্টেন্ট ভুল জায়গায় আবার কম্পোজ করা হয়। (Icd2fa, b/409439507)
- কম্পোজ করার পরে কিন্তু সরানোর আগে সরাতে-পারার মতো কন্টেন্ট বাতিল হয়ে যাওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I99eac, b/229001114)
previous()কল করার পরেSnapshotStateList-এর মাধ্যমে তৈরি করা লিস্ট ইটারেটরেরremove()কল করলে, তালিকা থেকে ভুল এলিমেন্ট সরিয়ে দেওয়া হতে পারে এবংArrayList-এর ক্ষেত্রে কল করার একই সিকোয়েন্সের সাথে তা ম্যাচ করে না। (I05ab7, b/417493222)onForgottonডিসপ্যাচ করার ক্ষেত্রে অর্ডার সংক্রান্ত সমস্যার সমাধান করা হয়েছে, এর ফলে, যেমন, ডিসপোজেবল এফেক্টonDisposeভুল ক্রমে এক্সিকিউট হতে পারত। (Ic1c91, b/417450712)- পজ করা যায় এমন কম্পোজিশনে স্টেট ম্যানেজমেন্ট আবার ব্যবহার করার জন্য সমাধান (Ife96e, b/404058957)
- কম্পোজিশন পজ করে আবার চালু করার পরে, কম্পোজিশন পজ করা থাকাকালীন কিছু স্টেট পরিবর্তন হয়ে যাওয়ার কারণে আগে পজ করা কিছু স্টেট আবার কম্পোজ করতে হলে, সেটির রিইউজিং স্টেট সংক্রান্ত সমস্যা সমাধান করা হয়েছে। (I441d1, b/416209738)
- b/404058957 সমস্যার জন্য পজ করা যায় এমন কম্পোজিশন মনে রাখার ডিসপ্যাচ সংক্রান্ত সমস্যার সমাধান করা হয়েছে, আগের সমাধানটি সম্পূর্ণ ছিল না। (I1afd4, b/404058957)
- পজ করা যায় এমন কম্পোজিশনের সাথে
apply()চালু করা হয়েছিল, যাOffsetApplierএখন সঠিকভাবে ওভাররাইড করে। এটি না থাকলে, ভার্চুয়াল নোড আপডেট করার সময় পজ করা যায় এমন কম্পোজিশন ব্যতিক্রম দেখাতে পারে। (Idbf31, b/409291131) FrameClock.withFrameNanos-এ সাসপেন্ড করা কল বাতিল করার সময় ফ্রেম ডিসপ্যাচ করা হলে, Molecule ব্যবহারকারীদের প্রভাবিত করতে পারে এমন একটি ডেডলক সমাধান করা হয়েছে। (I89cab, b/407027032)- মুভেবল কন্টেন্ট (Ie5416, b/409267170) থাকলে রিকম্পোজার নিষ্ক্রিয় হয়ে যেতে পারে
- পজ করা যায় এমন কম্পোজিশনের সময়
onReuseওonDeactivate-এর ক্রম উল্টে যেতে পারে। এগুলি এখনonDeactivate/onReuseক্রমে ঘটবে বলে গ্যারান্টি দেওয়া যায়। (I996e4, b/404058957) - পজ করা যায় এমন কম্পোজিশনে মনে রাখা পর্যবেক্ষক ডিসপ্যাচ করার বিষয়টি ঠিক করুন, যাতে একই অ্যাপ্লাইয়ে মনে রাখা/ভুলে যাওয়া ডিসপ্যাচ করা এড়ানো যায় (I570b2, b/404645679, b/407931790)
MainThreadচেক বন্ধ করতে এবং থ্রেডিং সংক্রান্ত সমস্যা সমাধান করতে Compose Multiplatform-এLifecycleRegistry-এ পরিবর্তন করা হয়েছে। বিবরণের জন্য CMP-8227 দেখুন। (Icee87)
এক্সটার্নাল কন্ট্রিবিউশন
- Molecule ব্যবহারকারীদের প্রভাবিত করে এমন একটি বাগ সমাধান করা হয়েছে যেখানে
RecompositionMode.Immediateব্যবহার করলে মিসড রিকম্পোজিশন হতে পারে। (I9f3a9, b/419527812) - এক্সপোজ করা
PausableCompositionisAppliedওisCancelledগেটার যাPausableComposition-এর অবস্থা চেক করার অনুমতি দেয়। (I994aa) FunctionKeyMetaঅ্যানোটেশনেAnnotationTarget.FUNCTIONযোগ করা হয়েছে। (I08021)
ভার্সন 1.9.0-alpha04
৪ জুন, ২০২৫
androidx.compose.runtime:runtime-*:1.9.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 1.9.0-alpha04-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
SnapshotStateSetএখন Android-এ Parcelable প্রয়োগ করে, এটি এখনrememberSaveable { ... }-এর অংশ হিসেবে ব্যবহার করা যায়। (I755dd, b/378623803)SnapshotStateListএখন Android-এ Parcelable প্রয়োগ করে, এটি এখনrememberSaveable { ... }-এর অংশ হিসেবে ব্যবহার করা যায়। (Id18be, b/378623803)movableContentOf()এখন@RememberInCompositionঅ্যানোটেশন দিয়ে চিহ্নিত করা হয়েছে, যা ভুল ব্যবহার (I2738d) ধরতে লিন্টকে সাহায্য করে- রীকম্পোজিশনের কারণ আরও ভালভাবে পর্যবেক্ষণ করার জন্য আপডেট করা পরীক্ষামূলক কম্পোজিশন অবজারভার API (I32b6a)
সমস্যার সমাধান
onForgottonডিসপ্যাচ করার ক্ষেত্রে অর্ডার সংক্রান্ত সমস্যার সমাধান করা হয়েছে, এর ফলে, যেমন, ডিসপোজেবল এফেক্টonDisposeভুল ক্রমে এক্সিকিউট হতে পারত। (Ic1c91, b/417450712)- পজ করা যায় এমন কম্পোজিশনে স্টেট ম্যানেজমেন্ট আবার ব্যবহার করার জন্য সমাধান (Ife96e, b/404058957)
- K1 ও K2 (Ie4878) দু'টির ক্ষেত্রেই পরিবর্তনযোগ্য কালেকশন শনাক্তকরণকে মানানসই করে তুলতে ছোটখাটো সমস্যার সমাধান করা হয়েছে
- ওভাররাইড করা প্রপার্টি অ্যাক্সেসরের উপর ভিত্তি করে করা অ্যানোটেশন লুক-আপকে K1 ও K2 (I9900d) দুটির সাথেই মানানসই করে তোলার জন্য ছোটখাটো সমস্যার সমাধান করা হয়েছে
এক্সটার্নাল কন্ট্রিবিউশন
- Molecule ব্যবহারকারীদের প্রভাবিত করে এমন একটি বাগ সমাধান করা হয়েছে যেখানে
RecompositionMode.Immediateব্যবহার করলে মিসড রিকম্পোজিশন হতে পারে। (I9f3a9, b/419527812) - এক্সপোজ করা
PausableCompositionisApplied এবংisCancelledগেটার যাPausableComposition-এর অবস্থা চেক করার অনুমতি দেয়। (I994aa)
ভার্সন 1.9.0-alpha03
২০ মে, ২০২৫
androidx.compose.runtime:runtime-*:1.9.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.9.0-alpha03-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- এই ফিচারের ভবিষ্যতের ডেভেলপমেন্টের জন্য
setDiagnosticStackTraceEnabled-কে পরীক্ষামূলক হিসেবে পরিবর্তন করুন। (I11db3)
সমস্যার সমাধান
- কম্পোজিশন পজ করে আবার চালু করার পরে, কম্পোজিশন পজ করা থাকাকালীন কিছু স্টেট পরিবর্তন হয়ে যাওয়ার কারণে আগে পজ করা কিছু স্টেট আবার কম্পোজ করতে হলে, সেটির রিইউজিং স্টেট সংক্রান্ত সমস্যা সমাধান করা হয়েছে। (I441d1, b/416209738)
- b/404058957 সমস্যার জন্য পজ করা যায় এমন কম্পোজিশন মনে রাখা সংক্রান্ত ডিসপ্যাচ ফিক্স সম্পূর্ণ করা হয়েছে, আগের ফিক্স সম্পূর্ণ ছিল না। (I1afd4, b/404058957)
SaveableStateHolder.SaveableStateProviderএখন কম্পোজিশনের মাধ্যমে এর কন্টেন্টেরLocalSavedStateRegistryOwnerপ্রদান করে। (Ia2761, b/413108878)androidx.compose.runtime.saveableএখনandroidx.lifecycle.runtime.compose-এর উপর নির্ভর করে। (I53228, b/413108878)
ভার্সন 1.9.0-alpha02
৭ মে, ২০২৫
androidx.compose.runtime:runtime-*:1.9.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.9.0-alpha02-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- কাস্টম 'কী' সহ
rememberSaveableবাতিল করা হয়েছে। এটি পজিশনাল স্কোপিংকে বাইপাস করে, যার ফলে স্টেট বাগ এবং অসঙ্গতিপূর্ণ আচরণ (যেমন, অনিচ্ছাকৃত স্টেট শেয়ার করা বা হারিয়ে যাওয়া, নেস্টেডLazyLayouts-এ সমস্যা) হয়। সামঞ্জস্যপূর্ণ, লোকালি-স্কোপড স্টেটের জন্য পজিশনাল স্কোপিং ব্যবহার করতে, 'কী' প্যারামিটার সরিয়ে দিন। আরও বিবরণের জন্য সম্পূর্ণ কমিট মেসেজ দেখুন। (I5e6ff, b/357685851)
সমস্যার সমাধান
- পজ করা যায় এমন কম্পোজিশনের সাথে চালু করা
apply()-কেOffsetApplierএখন সঠিকভাবে ওভাররাইড করে। এটি না থাকলে, ভার্চুয়াল নোড আপডেট করার সময় পজ করা যায় এমন কম্পোজিশন একটি ব্যতিক্রম দেখাতে পারে। (Idbf31, b/409291131) FrameClock.withFrameNanos-এ সাসপেন্ড করা কল বাতিল করার সময় ফ্রেম ডিসপ্যাচ করা হলে, Molecule ব্যবহারকারীদের প্রভাবিত করতে পারে এমন একটি ডেডলক সমাধান করা হয়েছে। (I89cab, b/407027032)- মুছে ফেলার জন্য এখনও বাকি থাকা মুভেবল কন্টেন্ট স্টেট সহ Recomposer নিষ্ক্রিয় হয়ে যেতে পারে। এটি সাধারণত ঘটে না কারণ Recomposer-এর মূল লুপে মুভেবল কন্টেন্ট স্টেট বাতিল করা হয়। তবে,
resume()(Ie5416, b/409267170) চলাকালীন মুভেবল কন্টেন্ট বাতিল করা হলে, পজ করা যায় এমন কম্পোজিশনে এটি ঘটতে পারে - পজ করা যায় এমন কম্পোজিশনের সময়
onReuseওonDeactivate-এর ক্রম উল্টে যেতে পারে। এগুলি এখনonDeactivate/onReuse-এর ক্রম অনুযায়ী ঘটবে বলে গ্যারান্টি দেওয়া হয়। (I996e4, b/404058957)
ভার্সন 1.9.0-alpha01
২৩ এপ্রিল, ২০২৫
androidx.compose.runtime:runtime-*:1.9.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.9.0-alpha01-এ এইসব কমিট রয়েছে।
আচরণে পরিবর্তন
- Compose-এর সাথে শিপ করা লিন্ট চেকের জন্য এখন ন্যূনতম AGP ভার্সন 8.8.2 প্রয়োজন। আপনি AGP আপগ্রেড করতে না পারলে, তার পরিবর্তে আপনার
gradle.properties-এandroid.experimental.lint.version=8.8.2(বা এর পরের যেকোনও ভার্সন) ব্যবহার করে Lint-কে আলাদাভাবে আপগ্রেড করতে পারবেন। IDE-এর মধ্যে Compose লিন্ট চেক রান করাতে, Android Studio Ladybug বা এর পরের যেকোনও ভার্সন প্রয়োজন।
API-তে পরিবর্তন
currentCompositeKeyHashএখন বন্ধ করে দেওয়া হয়েছে। পরিবর্তেcurrentCompositeKeyHashCodeব্যবহার করুন। রিপ্লেসমেন্ট API একই হ্যাশকে আরও বেশি বিট দিয়ে এনকোড করে, যা কম্পোজিশন হায়ারার্কিতে দুটি র্যান্ডম অসংশ্লিষ্ট গ্রুপের একই হ্যাশ কী থাকার সম্ভাবনাকে অনেক কমিয়ে দেয়। (I4cb6a, b/177562901)- Kotlin 2.0-এর সাথে রিলিজ করা প্রোজেক্ট ব্যবহার করার জন্য KGP 2.0.0 বা এর পরের যেকোনও ভার্সন প্রয়োজন (Idb6b5)
@Stable,@Immutableও@StableMarker-কে রানটাইম-অ্যানোটেশনে (মানানসই উপায়ে) সরানো হয়েছে। আপনি এখন রানটাইম-অ্যানোটেশনের উপর নির্ভর করতে পারেন, যদি আপনি কম্পোজের উপর নির্ভর করে না এমন লাইব্রেরি থেকে এইসব অ্যানোটেশন ব্যবহার করতে চান। (I23a16)onCreatingওonDisposingসরিয়ে দেয় কারণ সেগুলি আর ব্যবহার করা হয় না এবং নাম পরিবর্তন করেonPreCreateওonPreDisposeকরা হয়েছে। এই পরিবর্তন নাম পরিবর্তন করার প্রসেস সম্পূর্ণ করে। (I97461)- এমন একটি কম্পোজিশন লোকাল এক্সপোজ করুন যা কম্পোজিশনে কম্পোজ নোডের লোকেশনের উপর ভিত্তি করে কম্পোজ স্ট্যাক ট্রেস অ্যাটাচ করার অনুমতি দেয়। (Ie0bda, b/354163858)
- কম্পোজিশনে সেভ করা সোর্স তথ্যের উপর ভিত্তি করে ডায়াগনস্টিক কম্পোজ স্ট্যাক ট্রেস যোগ করুন। (I3db9f, b/354163858)
runWithMeasurementDisabled-এর পরিবর্তেrunWithTimingDisabled-কে বাতিল করুন, যা আচরণকে আরও স্পষ্টভাবে বর্ণনা করে - সমস্ত মেট্রিক পজ করা আছে। এছাড়াও,MicrobenchmarkScopeসুপারক্লাস এক্সপোজ করুন, কারণrunWithMeasurementDisabledফাংশনটি ইনলাইন হওয়ার কারণে ওপেন অ্যাক্সেস হিসেবে আবার ঘোষণা করা সম্ভব নয়। (I9e23b, b/389149423, b/149979716)@FrequentlyChangingValueযোগ করে: এমন একটি অ্যানোটেশন যা ফাংশন ও প্রপার্টি গেটারকে চিহ্নিত করতে পারে, যাতে এটি বোঝানো যায় যে কম্পোজিশনের মধ্যে সেগুলিকে সরাসরি কল করা উচিত নয়, কারণ এর ফলে ঘন ঘন রিকম্পোজিশন হতে পারে। যেমন, স্ক্রল পজিশন ভ্যালু ও অ্যানিমেটিং ভ্যালু চিহ্নিত করতে। সংশ্লিষ্ট লিন্ট চেকের মাধ্যমে সতর্কতা প্রদান করা হয়। (I83630, b/234042500)@RememberInCompositionযোগ করে: এমন একটি অ্যানোটেশন যা কনস্ট্রাক্টর, ফাংশন ও প্রপার্টি গেটারকে চিহ্নিত করতে পারে, যাতে বোঝা যায় যে কম্পোজিশনের মধ্যে এগুলিকে সরাসরি কল করা যাবে না। সংশ্লিষ্ট লিন্ট চেকের মাধ্যমে সমস্যাগুলি চিহ্নিত করা হবে। এই অ্যানোটেশন সেইসব ঘোষণা চিহ্নিত করতে ব্যবহার করা যেতে পারে যেগুলি স্টেটফুল / মিউটেবল অবজেক্ট, এমন অবজেক্ট রিটার্ন করে যেগুলির পরিচয় কম্পোজিশন জুড়ে বজায় রাখা গুরুত্বপূর্ণ অথবা এমন অবজেক্ট যেগুলি ইনস্ট্যানশিয়েট করতে অনেক খরচ হয় এবং কম্পোজিশন জুড়ে ক্যাশে করা উচিত। (Ie7db0)- KotlinX Serialization ব্যবহার করে টাইপ-সেফ স্টেট পারসিস্টেন্সের জন্য
KSerializerকাজ করে এমন নতুনrememberSaveableওভারলোড যোগ করা হয়েছে। আগে থেকে থাকাSaver-ভিত্তিক API কাজ করে। (Iea4ab, b/376028110)
সমস্যার সমাধান
- একই অ্যাপ্লাইয়ে মনে রাখা/ভুলে যাওয়া ডিসপ্যাচ করা এড়াতে পজেবল কম্পোজিশনে মনে রাখা অবজ়ার্ভার ডিসপ্যাচ করার সমস্যা সমাধান করুন (I570b2, b/404645679, b/407931790)
- API নির্দেশিকা মেনে চলার জন্য,
SnapshotObserver-এর নাম পরিবর্তন করেonPreCreateএবংonDisposing-এর নাম পরিবর্তন করেonPreDisposeকরা হয়েছে। আগের পদ্ধতিগুলি বাতিল করা হয়েছে এবং নতুন পদ্ধতিগুলি ডিফল্ট হিসেবে পুরনো পদ্ধতিগুলিকে কল করে, তাই এই ইন্টারফেসের আগে থেকে থাকা প্রয়োগগুলি পদ্ধতিগুলি সরিয়ে না দেওয়া পর্যন্ত কাজ করা চালিয়ে যাবে। এইসব পদ্ধতি 1.9.0 আলফা ভার্সনে সরিয়ে দেওয়া হবে। এর জন্য একটি ফলো-আপ CL তৈরি করা হবে যা শীঘ্রই এই CL-এর পরে আসবে। 1.8 স্টেবল ভার্সনের আগে 1.8 বিটা ভার্সন থেকে সেগুলি সরিয়ে দেওয়া হবে। (I6d753) - মুভেবল গ্রুপের পরে (I62cab, b/383769314) এলিপ্স করা গ্রুপ আবার কম্পোজ করার সময় মনে রাখা মান ভুলভাবে ভুলে যাওয়া ও আবার গণনা করার সমস্যা সমাধান করা হয়েছে
LaunchedEffectওrememberCoroutineScope-এ কম্পোজ স্ট্যাক ট্রেসের জন্য সহায়তা যোগ করা হয়েছে (I705c0, b/354163858)- Compose লিন্ট চেকের জন্য এখন কমান্ড লাইন থেকে ন্যূনতম AGP ভার্সন 8.8.2 এবং IDE সহায়তার জন্য অন্তত Android Studio Ladybug প্রয়োজন। আপনি AGP-র পুরনো ভার্সন ব্যবহার করলে, AGP-তে কোনও প্রভাব না ফেলেই Lint ভার্সন আপগ্রেড করতে, gradle.properties-এ
android.experimental.lint.version=8.8.2সেট করতে পারবেন। (I6f2a8)
এক্সটার্নাল কন্ট্রিবিউশন
FunctionKeyMetaঅ্যানোটেশনেAnnotationTarget.FUNCTIONযোগ করা হয়েছে। (I08021)
ভার্সন ১.৮
ভার্সন 1.8.3
১৮ জুন, ২০২৫
androidx.compose.runtime:runtime-*:1.8.3 রিলিজ করা হয়েছে। ভার্সন 1.8.3-এ এইসব কমিট রয়েছে।
ভার্সন 1.8.2
২০ মে, ২০২৫
androidx.compose.runtime:runtime-*:1.8.2 রিলিজ করা হয়েছে। ভার্সন 1.8.2-এ এইসব কমিট রয়েছে।
ভার্সন 1.8.1
৭ মে, ২০২৫
androidx.compose.runtime:runtime-*:1.8.1 রিলিজ করা হয়েছে। ভার্সন 1.8.1-এ এইসব কমিট রয়েছে।
ভার্সন 1.8.0
২৩ এপ্রিল, ২০২৫
androidx.compose.runtime:runtime-*:1.8.0 রিলিজ করা হয়েছে। 1.8.0 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.8.0-rc03
৯ এপ্রিল, ২০২৫
androidx.compose.runtime:runtime-*:1.8.0-rc03 রিলিজ করা হয়েছে। 1.8.0-rc03 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.8.0-rc02
২৬ মার্চ, ২০২৫
androidx.compose.runtime:runtime-*:1.8.0-rc02 রিলিজ করা হয়েছে। ভার্সন 1.8.0-rc02-এ এইসব কমিট রয়েছে।
ভার্সন 1.8.0-rc01
১২ মার্চ, ২০২৫
androidx.compose.runtime:runtime-*:1.8.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.8.0-rc01-এ এইসব কমিট আছে।
API-তে পরিবর্তন
- API নির্দেশিকা মেনে চলার জন্য,
SnapshotObserver-এর নাম পরিবর্তন করেonPreCreateএবংonDisposing-এর নাম পরিবর্তন করেonPreDisposeকরা হয়েছে। আগের পদ্ধতিগুলি বাতিল করা হয়েছে এবং নতুন পদ্ধতিগুলি ডিফল্ট হিসেবে পুরনো পদ্ধতিগুলিকে কল করে, তাই এই ইন্টারফেসের আগে থেকে থাকা প্রয়োগগুলি পদ্ধতিগুলি সরিয়ে না দেওয়া পর্যন্ত কাজ করা চালিয়ে যাবে। এইসব পদ্ধতি 1.9.0 আলফা ভার্সনে সরিয়ে দেওয়া হবে। এর জন্য একটি ফলো-আপ CL তৈরি করা হবে যা শীঘ্রই এই CL-এর পরে আসবে। 1.8 স্টেবল ভার্সনের আগে 1.8 বিটা ভার্সন থেকে সেগুলি সরিয়ে দেওয়া হবে। (I6d753)
ভার্সন 1.8.0-beta03
২৬ ফেব্রুয়ারি, ২০২৫
androidx.compose.runtime:runtime-*:1.8.0-beta03 রিলিজ করা হয়েছে। 1.8.0-beta03 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.8.0-beta02
১২ ফেব্রুয়ারি, ২০২৫
androidx.compose.runtime:runtime-*:1.8.0-beta02 রিলিজ করা হয়েছে। 1.8.0-beta02 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- পজ করা যায় এমন কম্পোজিশনে ধরা পড়া ব্যতিক্রম আবার থ্রো করা হয়েছে।(384486d)
ভার্সন 1.8.0-beta01
২৯ জানুয়ারি, ২০২৫
androidx.compose.runtime:runtime-*:1.8.0-beta01 রিলিজ করা হয়েছে। ভার্সন 1.8.0-beta01-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- কম্পোজিশনের সময় Exception থেকে এক্সটেন্ড করা যায় না এমন থ্রোয়েবল রেজ করলে 'পেন্ডিং কম্পোজিশন প্রয়োগ করা হয়নি' সমস্যা হতে পারে, সেই সমস্যার সমাধান করা হয়েছে। (I356be, b/382094412)
ভার্সন 1.8.0-alpha08
১৫ জানুয়ারি, ২০২৫
androidx.compose.runtime:runtime-*:1.8.0-alpha08 রিলিজ করা হয়েছে। ভার্সন 1.8.0-alpha08-এ এইসব কমিট রয়েছে।
ভার্সন 1.8.0-alpha07
১১ ডিসেম্বর, ২০২৪
androidx.compose.runtime:runtime-*:1.8.0-alpha07 রিলিজ করা হয়েছে। ভার্সন 1.8.0-alpha07-এ এইসব কমিট আছে।
API-তে পরিবর্তন
- টুলিং API যোগ করা হয়েছে যা লেআউট ইনস্পেক্টরকে এমন ক্ষেত্রে সাবকম্পোজিশনকে প্যারেন্ট কম্পোজিশনের সাথে কোরিলেট করতে সাহায্য করে যেখানে কোনও নোড কম্পোজিশনকে একসাথে ব্রিজ করতে ব্যবহার করা হয় না। (I4ce3d)
SnapshotId-এর জন্য গাণিতিক ও বিশেষ ধ্রুবক সর্বজনীন না করে ইন্টার্নাল করা হয়েছে।SnasphotId-এর উপর গাণিতিক অপারেশন করা যেতে পারে, যদি প্রয়োজন হয়, তাহলেtoInt()বাtoLong()ব্যবহার করে এটিকেIntবাLong-এ পরিবর্তন করে নেওয়া যেতে পারে। (Ic3a57)
এক্সটার্নাল কন্ট্রিবিউশন
movableContentOfপ্যারামিটারের জন্য স্টোরেজ অপ্টিমাইজ করুন। (ed87177)
ভার্সন 1.8.0-alpha06
১৩ নভেম্বর, ২০২৪
androidx.compose.runtime:runtime-*:1.8.0-alpha06 রিলিজ করা হয়েছে। 1.8.0-alpha06 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
PausableCompositionAPI-তে পরিবর্তন। 1.8.0-alpha (1.8.0-alpha02 থেকে) এর আগের রিলিজের সাথে সম্পর্কিত এইসব ব্রেকিং পরিবর্তন, কিন্তু যেহেতু 1.8.0-এ এইসব নতুন API, তাই API এখনও আলফা ভার্সনে থাকার কারণে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি বজায় রাখা হয় না। (I39819)- Recomposer-এর মধ্যে নতুন কম্পোজিশন তৈরি করা পর্যবেক্ষণ করার জন্য টুলিং API যোগ করে (Iaeb7e)
Snapshot-এLongধরনেরsnapshotIdযোগ করা হয়েছে এবংidসরিয়ে দেওয়া হয়েছে। খুব বেশি ফ্রেম রেট ও দীর্ঘক্ষণ ধরে চলা অ্যানিমেশন সহ সিস্টেমে স্ন্যাপশট আইডি ওভারফ্লো হওয়া এড়াতে, স্ন্যাপশটের আইডিIntথেকে পরিবর্তন করেLongকরা হয়েছে। যেসব প্ল্যাটফর্মে নেটিভLongধরন নেই, সেখানে এই ধরনকেIntবা অন্য ধরন হিসেবে দেখানোর অনুমতি দেওয়ার জন্য ধরনটিকে প্রত্যাশিত/প্রকৃত হিসেবে তৈরি করা হয়েছে। JavaScript-এর মতো নেটিভLongনেই এমন প্ল্যাটফর্মের ক্ষেত্রে বেশি ফ্রেম রেট (১০০০ FPS-এর বেশি) এড়িয়ে চলা উচিত, কারণ এর ফলেIntআনুমানিক প্রতি ২৪ দিনে ওভারফ্লো হতে পারে। (I38ac3, b/374821679)
সমস্যার সমাধান
- একটি
provides-এর জন্যprovidesDefaultফিক্স করা হয়েছে। (aosp/3318540 b/374263387) ChangeListঅপ্টিমাইজ করুন। (3318538)
ভার্সন 1.8.0-alpha05
৩০ অক্টোবর, ২০২৪
androidx.compose.runtime:runtime-*:1.8.0-alpha05 রিলিজ করা হয়েছে। 1.8.0-alpha05 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
SnapshotIdSet-এInt.MAX_VALUEযোগ করার সময় স্ট্যাক ওভারফ্লো সংক্রান্ত সমস্যার সমাধান করুন। (b/370536104, Ic4179f6)- রানটাইম মাইক্রো-অপ্টিমাইজেশন (I50c60)
- R8-কে ডিবাগিং রানটাইমচেক কল (I8c44) সরানোর অনুমতি দিন
compoundKeyOf-কে রিকার্সিভ না করে ইটারেটিভ করুন (I5817f)
এক্সটার্নাল কন্ট্রিবিউশন
- সংগ্রহের তালিকা সহ স্ট্যাক প্রয়োগ করা (I7d47c)
ভার্সন 1.8.0-alpha04
১৬ অক্টোবর, ২০২৪
androidx.compose.runtime:runtime-*:1.8.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 1.8.0-alpha04-এ এইসব কমিট রয়েছে।
পারফর্ম্যান্স উন্নত করা
- কনস্ট্রাক্টরে (85c00f) স্টেট রেকর্ডের জন্য স্ন্যাপশট আইডি প্রদান করুন
- ক্লাস যাচাইকরণ সংক্রান্ত সমস্যা (6ee4a6) এড়াতে
SnapshotState***রিফ্যাক্টর করুন - থ্রো ইনলাইনিং (5beb92) আটকাতে R8 নিয়ম ঠিক করুন
- অপারেশন মাইক্রো-অপ্টিমাইজ করা (d73c5c)
- JVM-এ
SynchronizedObjectঅ্যালোকেশন অপ্টিমাইজ করা (2b043f)
ভার্সন 1.8.0-alpha03
২ অক্টোবর, ২০২৪
androidx.compose.runtime:runtime-*:1.8.0-alpha03 রিলিজ করা হয়েছে। 1.8.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।
পারফর্ম্যান্স উন্নত করা
rememberCoroutineScope-এর জন্য অলসভাবে চাইল্ড কনটেক্সট তৈরি করা (f61464)rememberCoroutineScopeসাধারণত কম্পোজিশনের পরে হওয়া ইভেন্টের উত্তরে কোরাউটিন লঞ্চ করতে ব্যবহার করা হয়। কিছু পরিস্থিতিতে, এই ইভেন্টগুলি কখনওই নাও ঘটতে পারে, যার ফলে কোনও সুবিধা ছাড়াই জব তৈরি ও বাতিল করার জন্য অতিরিক্ত খরচ হতে পারে।rememberCoroutineScope-এর মাধ্যমে রিটার্ন করা স্কোপকেcoroutineContext-এর মাধ্যমে অ্যাক্সেস করা হলে, সেটি অলসভাবে তৈরি করুন। এর ফলে, স্কোপ কখনও ব্যবহার করা না হলে, জব তৈরি ও বাতিল করার প্রয়োজন হবে না।
ভার্সন 1.8.0-alpha02
১৮ সেপ্টেম্বর, ২০২৪
androidx.compose.runtime:runtime-*:1.8.0-alpha02 রিলিজ করা হয়েছে। 1.8.0-alpha02 ভার্সনে এইসব কমিট আছে।
নতুন ফিচার
PausableCompositionযোগ করা হয়েছে যা কম্পোজিশনের সময় পজ করা যায় এবং কম্পোজিশনে অ্যাসিঙ্ক্রোনাসভাবে প্রয়োগ করা যায় এমন সাবকম্পোজিশন তৈরি করতে দেয়। পজ করার জন্য কম্পাইলার সহায়তা প্রয়োজন যা বর্তমানে ডেভেলপ করা হচ্ছে। (I3394b)
ভার্সন 1.8.0-alpha01
৪ সেপ্টেম্বর, ২০২৪
androidx.compose.runtime:runtime-*:1.8.0-alpha01 রিলিজ করা হয়েছে। 1.8.0-alpha01 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.7
ভার্সন 1.7.8
১২ ফেব্রুয়ারি, ২০২৫
androidx.compose.runtime:runtime-*:1.7.8 রিলিজ করা হয়েছে। ভার্সন 1.7.8-এ এইসব কমিট রয়েছে।
ভার্সন 1.7.7
২৯ জানুয়ারি, ২০২৫
androidx.compose.runtime:runtime-*:1.7.7 রিলিজ করা হয়েছে। 1.7.6 থেকে কোনও পরিবর্তন হয়নি।
androidx.compose.runtime:runtime-*:1.7.6 রিলিজ করা হয়েছে। ভার্সন 1.7.6-এ এইসব কমিট রয়েছে।
ভার্সন 1.7.5
৩০ অক্টোবর, ২০২৪
androidx.compose.runtime:runtime-*:1.7.5 রিলিজ করা হয়েছে। ভার্সন 1.7.5-এ এইসব কমিট রয়েছে।
ভার্সন 1.7.4
১৬ অক্টোবর, ২০২৪
androidx.compose.runtime:runtime-*:1.7.4 রিলিজ করা হয়েছে। ভার্সন 1.7.4-এ এইসব কমিট রয়েছে।
ভার্সন 1.7.3
২ অক্টোবর, ২০২৪
androidx.compose.runtime:runtime-*:1.7.3 রিলিজ করা হয়েছে। ভার্সন 1.7.3-এ এইসব কমিট রয়েছে।
ভার্সন 1.7.2
১৮ সেপ্টেম্বর, ২০২৪
androidx.compose.runtime:runtime-*:1.7.2 রিলিজ করা হয়েছে। ভার্সন 1.7.2-এ এইসব কমিট রয়েছে।
ভার্সন 1.7.1
১০ সেপ্টেম্বর, ২০২৪
- Android আর্টিফ্যাক্টে কোনও পরিবর্তন করা হয়নি।
-desktopআর্টিফ্যাক্ট সরিয়ে দেওয়া হয়েছে এবং-jvmStubsও-linuxx64Stubsআর্টিফ্যাক্ট যোগ করা হয়েছে। এইসব টার্গেটের কোনওটিই ব্যবহার করার জন্য নয়, Jetbrains Compose-এর প্রচেষ্টায় সাহায্য করার জন্য এগুলি প্লেসহোল্ডার হিসেবে ব্যবহার করা হয়।
ভার্সন 1.7.0
৪ সেপ্টেম্বর, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0 রিলিজ করা হয়েছে। 1.7.0 ভার্সনে এইসব কমিট আছে।
1.6.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন
- ডিফল্ট হিসেবে
compositionLocalWithComputedDefault()ব্যবহার করে অথবাprovides-এর পরিবর্তেprovidesComputedব্যবহার করে ভ্যালু গণনা করার জন্য ল্যাম্বডা প্রদান করে অন্যান্য কম্পোজিশন লোকালের ভ্যালুর উপর ভিত্তি করে গণনা করা কম্পোজিশন লোকাল প্রদান করার ক্ষমতা যোগ করা হয়েছে। - ভ্যালু গণনা করা lambda-এর মধ্যে থেকে অ্যাক্সেস করা যায় এমন কম্পোজিশন লোকালের
currentValueপ্রপার্টি ব্যবহার করে কম্পোজিশন লোকালের ভ্যালু পাওয়া যেতে পারে। এটিcurrent-এর পরিবর্তে ব্যবহার করা হয় যা শুধুমাত্র@Composableফাংশনে অ্যাক্সেস করা যায়। (Iadbc0) - নতুন তৈরি করা স্টেট অবজেক্ট, গ্লোবাল স্ন্যাপশট সহ অন্যান্য স্ন্যাপশট থেকে অবিলম্বে অ্যাক্সেস করা যায় এবং এর প্রাথমিক স্টেটও অ্যাক্সেস করা যায়। অবজেক্ট তৈরি করা স্ন্যাপশট প্রয়োগ না করা পর্যন্ত পরবর্তী কোনও পরিবর্তন দেখা যাবে না।
mutableStateOf()-এর প্রাথমিক অবস্থা এবং এর আদিম ভার্সন হলmutableStateOf()-এ প্যারামিটার হিসেবে পাস করা ভ্যালু।mutableStateListOf()ওmutableStateMapOf()-এর প্রাথমিক অবস্থা ফাঁকা থাকে।Snapshot.isInSnapshotওSnapshot.PreexistingSnapshotIdযোগ করা হয়েছে, এগুলি কোনও স্টেট অবজেক্ট তৈরি হওয়ার সাথে সাথেই গ্লোবাল স্ন্যাপশট থেকে অ্যাক্সেস করা যায় কিনা তা নিশ্চিত করতে ব্যবহার করা হয়।- বিল্ট-ইন স্ন্যাপশট অবজেক্টে করা পরিবর্তনের প্যাটার্ন অনুসরণ করে কাস্টম স্টেট অবজেক্ট অবিলম্বে অ্যাক্সেস করা যায়। (I84a17)
- কম্পোজ লাইব্রেরির জন্য
nonSkippingGroupOptimizationচালু করুন। এর ফলে, androidx-এ সব নন-রিস্টার্টেবল কম্পোজ করার উপযুক্ত ফাংশনের জন্য জেনারেট করা কোড আরও বেশি কার্যকর হয়। ভবিষ্যতে আমরা এটি ডিফল্ট হিসেবে চালু করার পরিকল্পনা করেছি। I(acbc08) - একই ফ্রেমে সাবকম্পোজিশনে কম্পোজ করার উপযুক্ত ল্যাম্বডা বাতিল করুন। (98301c)
onForgotten-এর মতো একই ক্রমেonReleaseকলব্যাক করুন। (2cd790)- শক্তিশালী স্কিপিং মোড চালু করুন (ed1766)
- আরও বেশি ক্ষেত্রে
currentCompoundHashKeyঅনন্য করে তুলুন (d4a872)
ভার্সন 1.7.0-rc01
২১ আগস্ট, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.7.0-rc01-এ এইসব কমিট রয়েছে।
ভার্সন 1.7.0-beta07
৭ আগস্ট, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-beta07 রিলিজ করা হয়েছে। 1.7.0-beta07 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.7.0-beta06
২৪ জুলাই, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-beta06 রিলিজ করা হয়েছে। 1.7.0-beta06 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.7.0-beta05
১০ জুলাই, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-beta05 রিলিজ করা হয়েছে। ভার্সন 1.7.0-beta05-এ এইসব কমিট আছে।
ভার্সন 1.7.0-beta04
২৬ জুন, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-beta04 রিলিজ করা হয়েছে। 1.7.0-beta04 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.7.0-beta03
১২ জুন, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-beta03 রিলিজ করা হয়েছে। 1.7.0-beta03 ভার্সনে এইসব কমিট আছে।
ভার্সন 1.7.0-beta02
২৯ মে, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-beta02 রিলিজ করা হয়েছে। ভার্সন 1.7.0-beta02-এ এইসব কমিট আছে।
ভার্সন 1.7.0-beta01
১৪ মে, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-beta01 রিলিজ করা হয়েছে। ভার্সন 1.7.0-beta01-এ এইসব কমিট রয়েছে।
ভার্সন 1.7.0-alpha08
১ মে, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-alpha08 রিলিজ করা হয়েছে। ভার্সন 1.7.0-alpha08-এ এইসব কমিট রয়েছে।
ভার্সন 1.7.0-alpha07
১৭ এপ্রিল, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-alpha07 রিলিজ করা হয়েছে। ভার্সন 1.7.0-alpha07-এ এইসব কমিট রয়েছে।
নতুন ফিচার
- ডিফল্ট হিসেবে
compositionLocalWithComputedDefault()ব্যবহার করে অথবাprovides-এর পরিবর্তেprovidesComputedব্যবহার করে ভ্যালু গণনা করার জন্য ল্যাম্বডা প্রদান করে অন্যান্য কম্পোজিশন লোকালের ভ্যালুর উপর ভিত্তি করে গণনা করা কম্পোজিশন লোকাল প্রদান করার ক্ষমতা যোগ করা হয়েছে। - ভ্যালু গণনা করা lambda-এর মধ্যে থেকে অ্যাক্সেস করা যায় এমন কম্পোজিশন লোকালের
currentValueপ্রপার্টি ব্যবহার করে কম্পোজিশন লোকালের ভ্যালু পাওয়া যেতে পারে। এটিcurrent-এর পরিবর্তে ব্যবহার করা হয় যা শুধুমাত্র@Composableফাংশনে অ্যাক্সেস করা যায়। (Iadbc0)
API-তে পরিবর্তন
- নতুন তৈরি করা স্টেট অবজেক্ট, গ্লোবাল স্ন্যাপশট সহ অন্যান্য স্ন্যাপশট থেকে, সেটির প্রাথমিক স্টেট সহ সাথে সাথেই অ্যাক্সেস করা যায়। অবজেক্ট তৈরি করা স্ন্যাপশট প্রয়োগ না করা পর্যন্ত পরবর্তী কোনও পরিবর্তন দেখা যাবে না।
mutableStateOf()-এর প্রাথমিক অবস্থা এবং এর আদিম ভার্সন হলmutableStateOf()-এ প্যারামিটার হিসেবে পাস করা ভ্যালু।mutableStateListOf()ওmutableStateMapOf()-এর প্রাথমিক অবস্থা ফাঁকা থাকে।Snapshot.isInSnapshotওSnapshot.PreexistingSnapshotIdযোগ করা হয়েছে, এগুলি কোনও স্টেট অবজেক্ট তৈরি হওয়ার সাথে সাথেই গ্লোবাল স্ন্যাপশট থেকে অ্যাক্সেস করা যায় কিনা তা নিশ্চিত করতে ব্যবহার করা হয়।- বিল্ট-ইন স্ন্যাপশট অবজেক্টে করা পরিবর্তনের প্যাটার্ন অনুসরণ করে কাস্টম স্টেট অবজেক্ট অবিলম্বে অ্যাক্সেস করা যায়। (I84a17)
সমস্যার সমাধান
- নেস্টেড স্ন্যাপশটে
readObserverমার্জ করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। এর ফলেsnapshotFlow-এর মধ্যে ব্যবহার করা হলে নেস্টেড ডেরিভড স্টেট আন্ডার-ইনভ্যালিডেট হয়ে যায়। (Idf138)
ভার্সন 1.7.0-alpha06
৩ এপ্রিল, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-alpha06 রিলিজ করা হয়েছে। ভার্সন 1.7.0-alpha06-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- প্রদান করা সিঙ্গেল ভ্যালু হ্যান্ডেল করার সমস্যা সমাধান করুন
providesDefault(538f45) - ফ্রেম ক্লক (07e5c6) অ্যাক্সেস করার সময় Recomposer-এ ডেডলক এড়িয়ে চলুন
ভার্সন 1.7.0-alpha05
২০ মার্চ, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.7.0-alpha05-এ এইসব কমিট আছে।
সমস্যার সমাধান
- ডিঅ্যাক্টিভেট করা কম্পোজিশনে (5950bc) লেট পরিবর্তন মুছে দেওয়া
ভার্সন 1.7.0-alpha04
৬ মার্চ, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 1.7.0-alpha04-এ এইসব কমিট রয়েছে।
পারফর্ম্যান্স উন্নত করা
- ডেরাইভ করা স্টেট মূল্যায়ন (ee7daf) পিছু একবার
Snapshot.current-কে কল করুন - কম্পোজিশনে (b882b2) প্রতি অবজারভেশনে একবার করে
currentRecordপড়ুন snapshotFlow-এ (231e56) ভুলবশত ইটারেটর অ্যাসাইনমেন্ট সরানো হয়েছে- কম্পোজ লাইব্রেরির জন্য
nonSkippingGroupOptimizationচালু করুন। এর ফলে, androidx-এ সব নন-রিস্টার্টেবল কম্পোজ করার উপযুক্ত ফাংশনের জন্য জেনারেট করা কোড আরও বেশি কার্যকর হয়। ভবিষ্যতে আমরা এটি ডিফল্ট হিসেবে চালু করার পরিকল্পনা করেছি। I(acbc08)
ভার্সন 1.7.0-alpha03
২১ ফেব্রুয়ারি, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-alpha03 রিলিজ করা হয়েছে। 1.7.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- পরিবর্তন শনাক্ত করার প্রসেস উন্নত করতে রিপ্লেস গ্রুপ যোগ করা হয়েছে (0941b5)
পারফর্ম্যান্স উন্নত করা
- পরিবর্তন শনাক্ত করার সময় মেমরি অ্যালোকেশন উন্নত করা (53e7fd)
- কম্পোজারে মেমরি লিক সংক্রান্ত সমস্যার সমাধান করা হয়েছে (0e097d)
- আবার কম্পোজ করার সময় (e19a7e) বাতিল করার জন্য
ScopeMapব্যবহার করুন - শুধুমাত্র প্রাপ্ত স্টেট (f11c44) রাখার জন্য ইনভ্যালিডেশন ম্যাপ অপ্টিমাইজ করা
IdentityArraySet-এর ব্যবহারScatterSetদিয়ে পরিবর্তন করো (db572e)ScopeMap-এremoveScopeঅপ্টিমাইজ করুন (bb0530)
ভার্সন 1.7.0-alpha02
৭ ফেব্রুয়ারি, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.7.0-alpha02-এ এইসব কমিট আছে।
সমস্যার সমাধান
- একই ফ্রেমে সাবকম্পোজিশনে কম্পোজ করার উপযুক্ত ল্যাম্বডা বাতিল করুন। (98301c)
onForgotten-এর মতো একই ক্রমেonReleaseকলব্যাক করুন। (2cd790)snapshotFlow-এ দেখা যায়নি এমন পরিবর্তিত স্টেট ফিল্টার করা হয়েছে। (796b80)
পারফর্ম্যান্স উন্নত করা
- আগে থেকেই ট্রান্সপারেন্ট থাকলে, স্ন্যাপশট অবজারভার পরিবর্তন করুন। (f60f30)
SnapshotIdSet.lowest()অপ্টিমাইজ করুন। (7ae149)SnapshotIdSet-এ কোনও অ্যালোকেশন-ফ্রিfold()ব্যবহার করুন। (532b7d)- ইটারেটর অ্যালোকেশন সরানো হয়েছে (83f96b)
ভার্সন 1.7.0-alpha01
২৪ জানুয়ারি, ২০২৪
androidx.compose.runtime:runtime-*:1.7.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.7.0-alpha01-এ এইসব কমিট আছে।
পারফর্ম্যান্স অপ্টিমাইজেশন
- চাইল্ড গ্রুপ যোগ করার পরে স্লট তৈরি করার সুবিধা যোগ করা হয়েছে (b5960c)
- স্ন্যাপশট স্টেটের রেকর্ডিংয়ের পরিবর্তন অপ্টিমাইজ করা (28c3fe)
- শক্তিশালী স্কিপিং মোড চালু করুন (ed1766)
সমস্যার সমাধান
- ইন্ট্রিন্সিক রিমেম্বারে ডিফল্ট প্যারামিটার মেটার জন্য অ্যাকাউন্ট (096665)
- আরও বেশি ক্ষেত্রে
currentCompoundHashKeyঅনন্য করে তুলুন (d4a872) - ইনলাইন ফাংশন কল (2a90fc) থেকে বেরোনোর সময় গ্রুপ রিয়ালাইজ করা
ভার্সন 1.6
ভার্সন 1.6.8
১২ জুন, ২০২৪
androidx.compose.runtime:runtime-*:1.6.8 রিলিজ করা হয়েছে। 1.6.8 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.6.7
১ মে, ২০২৪
androidx.compose.runtime:runtime-*:1.6.7 রিলিজ করা হয়েছে। ভার্সন 1.6.7-এ এইসব কমিট রয়েছে।
ভার্সন 1.6.6
১৭ এপ্রিল, ২০২৪
androidx.compose.runtime:runtime-*:1.6.6 রিলিজ করা হয়েছে। শেষ রিলিজের পর থেকে কোনও পরিবর্তন হয়নি।
ভার্সন 1.6.5
৩ এপ্রিল, ২০২৪
androidx.compose.runtime:runtime-*:1.6.5 রিলিজ করা হয়েছে। ভার্সন 1.6.5-এ এইসব কমিট রয়েছে।
ভার্সন 1.6.4
২০ মার্চ, ২০২৪
androidx.compose.runtime:runtime-*:1.6.4 রিলিজ করা হয়েছে। ভার্সন 1.6.4-এ এইসব কমিট রয়েছে।
ভার্সন 1.6.3
৬ মার্চ, ২০২৪
androidx.compose.runtime:runtime-*:1.6.3 রিলিজ করা হয়েছে। ভার্সন 1.6.3-এ এইসব কমিট রয়েছে।
ভার্সন 1.6.2
২১ ফেব্রুয়ারি, ২০২৪
androidx.compose.runtime:runtime-*:1.6.2 রিলিজ করা হয়েছে। 1.6.2 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.6.1
৭ ফেব্রুয়ারি, ২০২৪
androidx.compose.runtime:runtime-*:1.6.1 রিলিজ করা হয়েছে। 1.6.1 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
onForgotten-এর মতো একই ক্রমেonReleaseকলব্যাক করুন। (2cd790)snapshotFlow-এ দেখা যায়নি এমন পরিবর্তিত স্টেট ফিল্টার করা হয়েছে। (796b80)
ভার্সন 1.6.0
২৪ জানুয়ারি, ২০২৪
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ক্যাপচার সীমাবদ্ধ করুন। (acfca0) - মুভেবল কন্টেন্ট কখনও কখনও ভুল কম্পোজিশন লোকালে পাচ্ছে, সেই সমস্যার সমাধান করা। (035cd6)
ভার্সন 1.6.0-rc01
১০ জানুয়ারি, ২০২৪
androidx.compose.runtime:runtime-*:1.6.0-rc01 রিলিজ করা হয়েছে। 1.6.0-rc01 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.6.0-beta03
১৩ ডিসেম্বর, ২০২৩
androidx.compose.runtime:runtime-*:1.6.0-beta03 রিলিজ করা হয়েছে। 1.6.0-beta03 ভার্সনে এইসব কমিট আছে।
ভার্সন 1.6.0-beta02
২৯ নভেম্বর, ২০২৩
androidx.compose.runtime:runtime-*:1.6.0-beta02 রিলিজ করা হয়েছে। 1.6.0-beta02 ভার্সনে এই কমিটগুলি রয়েছে।
ভার্সন 1.6.0-beta01
১৫ নভেম্বর, ২০২৩
androidx.compose.runtime:runtime-*:1.6.0-beta01 রিলিজ করা হয়েছে। 1.6.0-beta01 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
- অ্যানোটেশনে নির্দিষ্ট স্থিতিশীলতা সংক্রান্ত ভ্যালু প্রোপাগেট করা। (274a4c)
সমস্যার সমাধান
- কন্টেক্সটে কম্পোজিশন লোকাল স্কোপ স্টেটের জন্য রেফারেন্সিয়াল নীতি ব্যবহার করুন। (83361c)
- ইনলাইন ল্যাম্বডায় $dirty ক্যাপচার সীমাবদ্ধ করুন। (acfca0)
- মুভেবল কন্টেন্ট কখনও কখনও ভুল কম্পোজিশন লোকালে পাচ্ছে, সেই সমস্যার সমাধান করা। (035cd6)
RecomposeScopeImpl-এ আরও দ্রুত নন-অ্যালোকেটিং হ্যাশম্যাপ ব্যবহার করুন। (d79494)DerivedState-এObjectIntMapব্যবহার করুন। (21862e)DerivedState-এ intSnapshotThreadLocal-এর জন্যIntRefব্যবহার করুন। (04eaf4)
ভার্সন 1.6.0-alpha08
১৮ অক্টোবর, ২০২৩
androidx.compose.runtime:runtime-*:1.6.0-alpha08 রিলিজ করা হয়েছে। 1.6.0-alpha08 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- মনে রাখার ক্যালকুলেশনে সেভ করা থাকলে তবেই
RememberObserverলাইফসাইকেল ট্রিগার করুন। (f6b4dc) - বাতিল করার তালিকা সাজানোর ক্ষেত্রে অ্যাসাইনমেন্ট উন্নত করুন। (954d63)
SnapshotStateObserver-এ নতুন নন-অ্যালোকেটিং ম্যাপ ব্যবহার করুন। (4303ce)- কম্পোজিশন ডিঅ্যাক্টিভেট করা হলে ইনভ্যালিডেশন মুছে দিন। (e001be)
ভার্সন 1.6.0-alpha07
৪ অক্টোবর, ২০২৩
androidx.compose.runtime:runtime-*:1.6.0-alpha07 রিলিজ করা হয়েছে। 1.6.0-alpha07 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
SnapshotStateList-কে এখনRandomAccessহিসেবে চিহ্নিত করা হয়েছে যাতে লিস্ট হেল্পারের ডাইরেক্ট ইন্ডেক্সিং ভার্সন ব্যবহার করা যায়। (I5210c, b/219554654)
ভার্সন 1.6.0-alpha06
২০ সেপ্টেম্বর, ২০২৩
androidx.compose.runtime:runtime-*:1.6.0-alpha06 রিলিজ করা হয়েছে। 1.6.0-alpha06 ভার্সনে এইসব কমিট আছে।
ভার্সন 1.6.0-alpha05
৬ সেপ্টেম্বর, ২০২৩
androidx.compose.runtime:runtime-*:1.6.0-alpha05 রিলিজ করা হয়েছে। 1.6.0-alpha05 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.6.0-alpha04
২৩ আগস্ট, ২০২৩
androidx.compose.runtime:runtime-*:1.6.0-alpha04 রিলিজ করা হয়েছে। 1.6.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।
নতুন ফিচার
- রিকম্পোজিশন লুপ চলাকালীন (4dff9a) যেসব ব্যতিক্রম এড়িয়ে যাওয়া হয়েছে, সেগুলি আবার থ্রো করা
API-তে পরিবর্তন
ReusableCompositionডিঅ্যাক্টিভেট করার একটি পদ্ধতি যোগ করা হয়েছে, এর ফলে অবজার্ভেশন সরিয়ে দেওয়া হবে কিন্তু নোডগুলি একই জায়গায় থাকবে।setContentকল করে বন্ধ করা কম্পোজিশন আবার চালু করা যেতে পারে। (Ib7f31)- সাবকম্পোজিশনের লাইফসাইকেল ম্যানেজ করা ও সেগুলি আবার ব্যবহার করার জন্য
ReusableCompositionইন্টারফেস যোগ করুন। (I812d1, b/252846775)
ভার্সন 1.6.0-alpha03
৯ আগস্ট, ২০২৩
androidx.compose.runtime:runtime-*:1.6.0-alpha03 রিলিজ করা হয়েছে। 1.6.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- নতুন
CompositionLocalProviderঅপ্টিমাইজেশন সংক্রান্ত সমস্যার সমাধান করা (3118e88) - মুভেবল কন্টেন্ট নোড কীভাবে ডিসঅ্যাসেম্বল করা হয় তা ঠিক করুন। (5e3d59b)
ভার্সন 1.6.0-alpha02
২৬ জুলাই, ২০২৩
androidx.compose.runtime:runtime-*:1.6.0-alpha02 রিলিজ করা হয়েছে। 1.6.0-alpha02 ভার্সনে এই কমিটগুলি রয়েছে।
নতুন ফিচার ও পারফর্ম্যান্স উন্নত করা
- অপ্টিমাইজ করা
rememberSaveable(f01d79) - পরিবর্তন রেকর্ড না হওয়া পর্যন্ত ডেরিভ করা স্টেট আবার রি-রিড করা ডিফার করা (f38099)
- কম্পোজিশন লোকাল ভ্যালু (a337ea) প্রদান করার বিষয়টি উন্নত করা
- গ্রুপ তৈরি করা এড়াতে
SideEffect-কে@ExplicitGroupsComposableহিসেবে চিহ্নিত করা হয়েছে। (I74815) - রিইউজে কম্পোজিশন লোকাল ম্যাপ তুলনা করা এড়িয়ে চলুন (782071)
API-তে পরিবর্তন
CompositionLocalProviders-এর জন্য একটি বিশেষ কেস ওভারলোড যোগ করা হয়েছে যা একাধিক মান প্রদানকে দ্রুততর করার জন্য ব্যবহৃত ওভারহেড এড়ায় তবে একটি মান প্রদান করার সময় ওভারহেড হয়। (I6d640, b/288169379)
সমস্যার সমাধান
- স্লট টেবিল মেমরি লিকেজ সংক্রান্ত সমস্যার সমাধান করা হয়েছে (73fcfe)
stateSaverথেকে কোনও ভ্যালু না পেলে কীভাবেrememberSaveableরিস্টোর করা যায় তা ঠিক করুন (90748c)
ভার্সন 1.6.0-alpha01
২১ জুন, ২০২৩
androidx.compose.runtime:runtime-*:1.6.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.6.0-alpha01-এ এইসব কমিট আছে।
সমস্যার সমাধান
- সরিয়ে দেওয়া হবে এমন সাবকম্পোজিশনের রিকম্পোজিশন এড়িয়ে যান। (Ieeb99, b/254645321)
- স্ন্যাপশট প্রয়োগ করার সময় বরাদ্দ কমে যায়। (I65c09)
- স্ন্যাপশট পরিবর্তন করা না হলে
DerivedState-এreadableHashগণনা করা এড়িয়ে চলুন (68c565)
ভার্সন 1.5
ভার্সন 1.5.4
১৮ অক্টোবর, ২০২৩
androidx.compose.runtime:runtime-*:1.5.4 রিলিজ করা হয়েছে। 1.5.4 ভার্সনে এইসব কমিট আছে।
ভার্সন 1.5.3
৪ অক্টোবর, ২০২৩
androidx.compose.runtime:runtime-*:1.5.3 রিলিজ করা হয়েছে। 1.5.3 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.5.2
২৭ সেপ্টেম্বর, ২০২৩
androidx.compose.runtime:runtime-*:1.5.2 রিলিজ করা হয়েছে। ভার্সন 1.5.2-এ এইসব কমিট রয়েছে।
ভার্সন 1.5.1
৬ সেপ্টেম্বর, ২০২৩
androidx.compose.runtime:runtime-*:1.5.1 রিলিজ করা হয়েছে। 1.5.1 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.5.0
৯ আগস্ট, ২০২৩
androidx.compose.runtime:runtime-*:1.5.0 রিলিজ করা হয়েছে। 1.5.0 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
- রিকম্পোজিশন, কালার অ্যানিমেশন ও
AndroidComposeView-এ অ্যাসাইনমেন্ট সরানো হয়েছে। (Ib2bfa) rememberকলের মধ্যে র্যাপ করতে হবে এমন ফাংশন চিহ্নিত করতে@StateFactoryMarkerঅ্যানোটেশন যোগ করা হয়েছে। (I64550)- State ও
MutableState-এর (fb3d89) আদিম ভার্সন যোগ করুন Snapshot.isApplyObserverNotificationPending-এ যোগ করা হয়েছে (I672a5)StateAPI-এর আদিম ভার্সন যোগ করা হয়েছে, এর ফলেStateঅবজেক্টে Int, Long, Float ও Double ভ্যালু ট্র্যাক করা যায় এবং এর জন্য অটোবক্সিং সংক্রান্ত কোনও পেনাল্টি দিতে হয় না। এগুলি ব্যবহার করার জন্য নতুন ফ্যাক্টরি পদ্ধতিmutableIntState(Int),mutableFloatStateOf(Float)ইত্যাদি ব্যবহার করুন। (I48e43)
সমস্যার সমাধান
- সরিয়ে দেওয়া হবে এমন সাবকম্পোজিশনের রিকম্পোজিশন এড়িয়ে যান। (Ieeb99, b/254645321)
ComposerImpl-এ (0206f7) স্ন্যাপশট রেফারেন্স রিটেন করবেন না- কম্পোজিশন দু'বার প্রয়োগ করবেন না (f5791b)
- ইনিশিয়ালাইজ না করা ডেরিভড স্টেট ভ্যালু (aa2a92) বাতিল করা হয়েছে কিনা তা নিশ্চিত করুন
- কম্পোজিশন ডিসপোজ করার সময়
onEndChanges-এ কল করুন। (62cc8c) - সাব-কম্পোজিশনে কন্টেন্ট সরানোর সমস্যা সমাধান করা (4beb41)
- সম্ভাব্য ডেডলক (c1a425 এবং 8edce0) সংক্রান্ত সমস্যার সমাধান করা
- Android উইন্ডোর জন্য তৈরি রিকম্পোজার এখন ON_STOP বিজ্ঞপ্তি পেলে, সব কম্পোজিশনের পরিবর্তে শুধুমাত্র
withFrameNanos-এ কল ব্লক করবে। এর অর্থ হল, বন্ধ করা অ্যাক্টিভিটির সাথে যুক্ত উইন্ডো ডেটা পরিবর্তনের জন্য আবার কম্পোজ করা চালিয়ে যাবে, কিন্তু অ্যানিমেশন বাwithFrameNanos-এর অন্য কোনও কলার ব্লক হয়ে যাবে। (Id9e7f, b/240975572) - এফেক্ট ডিসপোজ করার আগে
LayoutNode-এর জন্য ডিঅ্যাক্টিভেশন কলব্যাক এক্সিকিউট করো 3784073 - রিস্টার্ট করা ল্যাম্বডার জন্য পরিবর্তিত ফ্ল্যাগ সংক্রান্ত সমস্যার সমাধান করুন ea81df9
- নোড সহ কম্পোজ করার উপযুক্ত আইটেমের জন্য লাইভ এডিট রিগ্রেশন সংক্রান্ত সমস্যার সমাধান করা 73fd4d8
- ON_STOP-কে কম্পোজিশন ae276f1-এর পরিবর্তে ফ্রেম ক্লক ব্রডকাস্ট পজ করতে হবে
- পরিবর্তিত না হওয়া ডেরিভড স্টেটের জন্য
SnapshotStateObserverস্কোপ বাতিল করুন 84d9b1c - কম্পোজিশন ডিসপোজ করার সময় সম্ভাব্য ডেড-লক সংক্রান্ত সমস্যার সমাধান করা 28761fc
- সাব-কম্পোজিশনে মুভিং কন্টেন্ট ঠিক করা 92d4156
- রিস্টার্ট করা ল্যাম্বডার জন্য পরিবর্তিত ফ্ল্যাগ সংক্রান্ত সমস্যার সমাধান করা হয়েছে (8a03e9)
- এফেক্ট ডিসপোজ করার আগে
LayoutNode-এর জন্য ডিঅ্যাক্টিভেশন কলব্যাক এক্সিকিউট করা (8b0fa4) - নোড গ্রুপ শেষ করার সময়
endToMarker()সংক্রান্ত সমস্যার সমাধান করা। (d71d980) - বন্ধ করার সময় চেক করার জন্য বর্তমান
SlotWriterগ্রুপ ব্যবহার করা (a0b518b) SlotTable.moveSlotGapTo()-এর মধ্যে থাকাfillসরিয়ে দিন এবং এটিকে ক্লোজ (81f9935) আইকনে নিয়ে যান- মুভেবল কন্টেন্ট সরানোর সময় ইনভ্যালিডেশন সংক্রান্ত সমস্যা সমাধান করা (1d7c024)
- মুভ করা যায় এমন কন্টেন্ট সরিয়ে নেওয়ার সাথে সাথেই তা বাতিল করা সংক্রান্ত সমস্যার সমাধান করা (8676618)
পারফর্ম্যান্স উন্নত করা
- স্ন্যাপশট পরিবর্তন করা না হলে,
DerivedState-এreadableHashগণনা করা এড়িয়ে চলুন। (307102) - কমানো অ্যালোকেশন (I65c09, d7ea77, 727974 এবং 445808 )
- কম্পোজ করার সুবিধা দ্রুত বাতিল করা
CoroutineScopes(a55362 এবং bd382f) - অ্যাক্সেস করা যায় না এমন স্টেট রেকর্ড (c986960) দিয়ে স্টেট অবজেক্টের রেকর্ড ওভাররাইট করা
- গ্রুপ (9a5e5b6) রিয়ালাইজ করার সময় সঠিক স্কোপের কম্পোজার ব্যবহার করা
- স্ন্যাপশট ইনভ্যালিডেশন (7f60cca) সেভ করতে
IdentityArraySetব্যবহার করুন - স্ন্যাপশট অবজারভেশনের জন্য বরাদ্দ কমানো (5bc535f)
ভার্সন 1.5.0-rc01
২৬ জুলাই, ২০২৩
androidx.compose.runtime:runtime-*:1.5.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.5.0-rc01-এ এইসব কমিট আছে।
সমস্যার সমাধান
পরিবর্তন রেকর্ড না হওয়া পর্যন্ত ডেরিভ করা স্টেট আবার পড়া পিছিয়ে দেওয়া (f38099)
প্রিমিটিভের জন্য সংশ্লিষ্ট বিশেষ ধরনের
mutableStateOf()কল মাইগ্রেট করার সাজেশন দিতে একটি ঐচ্ছিক পরিদর্শন উপলভ্য। এর লিন্ট আইডি হলAutoboxingStateCreation. আগে, এই পরিদর্শন সব প্রোজেক্টের জন্য ডিফল্ট হিসেবে চালু করা থাকত। Android Studio-এর এডিটরে এবং আপনার প্রোজেক্টের লিন্ট আউটপুটে এই সতর্কতা দেখতে, আপনার মডিউলের build.gradle বা build.gradle.kts কনফিগারেশনের মধ্যেwarning "AutoboxingStateCreation"ঘোষণা করে এর গুরুত্ব তথ্যমূলক থেকে সতর্কতা (বা আরও বেশি) হিসেবে পরিবর্তন করুন, যেমন দেখানো হয়েছে (I34f7e):android { lint { warning "AutoboxingStateCreation" } ... }
ভার্সন 1.5.0-beta03
২৮ জুন, ২০২৩
androidx.compose.runtime:runtime-*:1.5.0-beta03 রিলিজ করা হয়েছে। 1.5.0-beta03 ভার্সনে এইসব কমিট আছে।
সমস্যার সমাধান
- সরিয়ে দেওয়া হবে এমন সাবকম্পোজিশনের রিকম্পোজিশন এড়িয়ে যান। (Ieeb99, b/254645321)
ভার্সন 1.5.0-beta02
৭ জুন, ২০২৩
androidx.compose.runtime:runtime-*:1.5.0-beta02 রিলিজ করা হয়েছে। 1.5.0-beta02 ভার্সনে এইসব কমিট আছে।
পারফর্ম্যান্স উন্নত করা
- স্ন্যাপশট পরিবর্তন করা না হলে,
DerivedState-এreadableHashগণনা করা এড়িয়ে চলুন। (307102)
ভার্সন 1.5.0-beta01
২৪ মে, ২০২৩
androidx.compose.runtime:runtime-*:1.5.0-beta01 রিলিজ করা হয়েছে। 1.5.0-beta01 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
- রিকম্পোজিশন, কালার অ্যানিমেশন ও
AndroidComposeView(Ib2bfa) থেকে অ্যালোকেশন সরানো হয়েছে rememberকলের মধ্যে র্যাপ করতে হবে এমন স্টেট তৈরি করা ফাংশন চিহ্নিত করতে@StateFactoryMarkerঅ্যানোটেশন যোগ করা হয়েছে। (I64550)- State ও
MutableState-এর (fb3d89) আদিম ভার্সন যোগ করুন Snapshot.isApplyObserverNotificationPending-এ যোগ করা হয়েছে (I672a5)
সমস্যার সমাধান
- কমানো অ্যালোকেশন (I65c09, d7ea77, 727974 এবং 445808 )
ComposerImpl-এ (0206f7) স্ন্যাপশট রেফারেন্স রিটেন করবেন না- কম্পোজ করার সুবিধা দ্রুত বাতিল করা
CoroutineScopes(a55362 এবং bd382f) - কম্পোজিশন দু'বার প্রয়োগ করবেন না (f5791b)
- ইনিশিয়ালাইজ না করা ডেরিভড স্টেট ভ্যালু (aa2a92) বাতিল করা হয়েছে কিনা তা নিশ্চিত করুন
- কম্পোজিশন ডিসপোজ করার সময়
onEndChanges-এ কল করুন। (62cc8c) - সাব-কম্পোজিশনে কন্টেন্ট সরানোর সমস্যা সমাধান করা (4beb41)
- সম্ভাব্য ডেডলক সংক্রান্ত সমস্যার সমাধান করা (c1a425
- ON_STOP-কে কম্পোজিশনের (f4a2d1) পরিবর্তে ফ্রেম ক্লক ব্রডকাস্ট পজ করা উচিত
- রিস্টার্ট করা ল্যাম্বডার জন্য পরিবর্তিত ফ্ল্যাগ সংক্রান্ত সমস্যার সমাধান করা হয়েছে (8a03e9)
- এফেক্ট ডিসপোজ করার আগে
LayoutNode-এর জন্য ডিঅ্যাক্টিভেশন কলব্যাক এক্সিকিউট করা (8b0fa4)
এক্সটার্নাল কন্ট্রিবিউশন
Snapshot.isApplyObserverNotificationPending-এ যোগ করা হয়েছে (I672a5)
ভার্সন 1.5.0-alpha04
১০ মে, ২০২৩
androidx.compose.runtime:runtime-*:1.5.0-alpha04 রিলিজ করা হয়েছে। 1.5.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
StateAPI-এর আদিম ভার্সন যোগ করা হয়েছে, এর ফলেStateঅবজেক্টে Int, Long, Float ও Double ভ্যালু ট্র্যাক করা যাবে এবং এর জন্য অটোবক্সিং সংক্রান্ত কোনও পেনাল্টি লাগবে না। এগুলি ব্যবহার করার জন্য নতুন ফ্যাক্টরি পদ্ধতিmutableIntState(Int),mutableFloatStateOf(Float)ইত্যাদি ব্যবহার করুন। (I48e43)
সমস্যার সমাধান
কম্পোজিশন ডিসপোজ করার সময়
onEndChanges-এ কল করুন।Composition.disposeচলাকালীন সরিয়ে দেওয়া ফোকাস নোড, ফোকাস রিসেট করার জন্যonEndChanges-এ সাবস্ক্রাইব করছে।(03d4a47)ইনিশিয়ালাইজ না করা ডেরিভড স্টেট ভ্যালুর জন্য ইনভ্যালিডেশন নিশ্চিত করুন।
SnapshotStateObserver-এ প্রতিটি ডেরিভড স্টেট তার ডিপেন্ডেন্সির একটি তালিকার সাথে যুক্ত থাকে, ডিপেন্ডেন্সিতে কোনও পরিবর্তন হলে ডেরিভড স্টেটের সাথে যুক্ত স্কোপকে ইনভ্যালিডেট করতে এটি ব্যবহার করা হয়। ডিপেন্ডেন্সি পরিবর্তন স্ন্যাপশট অ্যাডভান্সের উপর রেজিস্টার করা হয়, যা ডেরিভড স্টেট রিডের পরে হতে পারে (Snapshot.notifyObjectsInitialized()-এ কল করার কারণে)।SnapshotStateObserver-এ আগেকার ডিরাইভ করা স্টেট অবজার্ভেশন লজিক পুরনো ডিপেন্ডেন্সি পরিষ্কার করত, তারপর নতুন ভ্যালু পড়ত। এর ফলে, ক্লিন-আপ স্টেটে ইনভ্যালিডেশন হওয়ার কারণে রেস কন্ডিশন তৈরি হয়, যেখানে ডিপেন্ডেন্সি ইনভ্যালিডেশন রেজিস্টার করা হয় না।এই পরিবর্তনটি ডেরিভ করা স্টেট রিড ও ডিপেন্ডেন্সি ক্লিন-আপের ক্রম পরিবর্তন করে, যাতে ইনভ্যালিডেশন সবসময় বৈধ স্টেটে হয়। (c472be6)
ভার্সন 1.5.0-alpha03
১৯ এপ্রিল, ২০২৩
androidx.compose.runtime:runtime-*:1.5.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.5.0-alpha03-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- Android উইন্ডোর জন্য তৈরি রিকম্পোজার এখন ON_STOP বিজ্ঞপ্তি পেলে, সব কম্পোজিশনের পরিবর্তে শুধুমাত্র
withFrameNanos-এ কল ব্লক করবে। এর অর্থ হল, বন্ধ করা অ্যাক্টিভিটির সাথে যুক্ত উইন্ডো ডেটা পরিবর্তনের জন্য আবার কম্পোজ করা চালিয়ে যাবে, কিন্তু অ্যানিমেশন বাwithFrameNanos-এর অন্য কোনও কলার ব্লক হয়ে যাবে। (Id9e7f, b/240975572)
সমস্যার সমাধান
- স্ন্যাপশট তালিকা ও ম্যাপে সম্ভাব্য ডেডলক সংক্রান্ত সমস্যার সমাধান করা 5c1a425
- এফেক্ট ডিসপোজ করার আগে
LayoutNode-এর জন্য ডিঅ্যাক্টিভেশন কলব্যাক এক্সিকিউট করো 3784073 - রিস্টার্ট করা ল্যাম্বডার জন্য পরিবর্তিত ফ্ল্যাগ সংক্রান্ত সমস্যার সমাধান করুন ea81df9
- নোড সহ কম্পোজ করার উপযুক্ত আইটেমের জন্য লাইভ এডিট রিগ্রেশন সংক্রান্ত সমস্যার সমাধান করা 73fd4d8
- ON_STOP-কে কম্পোজিশন ae276f1-এর পরিবর্তে ফ্রেম ক্লক ব্রডকাস্ট পজ করতে হবে
- পরিবর্তিত না হওয়া ডেরিভড স্টেটের জন্য
SnapshotStateObserverস্কোপ বাতিল করুন 84d9b1c - কম্পোজিশন ডিসপোজ করার সময় সম্ভাব্য ডেড-লক সংক্রান্ত সমস্যার সমাধান করা 28761fc
- সাব-কম্পোজিশনে মুভিং কন্টেন্ট ঠিক করা 92d4156
ভার্সন 1.5.0-alpha02
৫ এপ্রিল, ২০২৩
androidx.compose.runtime:runtime-*:1.5.0-alpha02 রিলিজ করা হয়েছে। 1.5.0-alpha02 ভার্সনে এইসব কমিট আছে।
নতুন ফিচার
- Kotlin-এর
getValueঅপারেটর এখন কম্পোজ করা যায় (f174f6e)
সমস্যার সমাধান, পারফর্ম্যান্সের উন্নতি
- অ্যাক্সেস করা যায় না এমন স্টেট রেকর্ড (c986960) দিয়ে স্টেট অবজেক্টের রেকর্ড ওভাররাইট করা
- গ্রুপ (9a5e5b6) রিয়ালাইজ করার সময় সঠিক স্কোপের কম্পোজার ব্যবহার করা
- নোড গ্রুপ শেষ করার সময়
endToMarker()সংক্রান্ত সমস্যার সমাধান করা। (d71d980) - বন্ধ করার সময় চেক করার জন্য বর্তমান
SlotWriterগ্রুপ ব্যবহার করা (a0b518b) - স্ন্যাপশট ইনভ্যালিডেশন (7f60cca) সেভ করতে
IdentityArraySetব্যবহার করুন SlotTable.moveSlotGapTo()-এর মধ্যে থাকাfillসরিয়ে দিন এবং এটিকে ক্লোজ (81f9935) আইকনে নিয়ে যান- মুভেবল কন্টেন্ট সরানোর সময় ইনভ্যালিডেশন সংক্রান্ত সমস্যা সমাধান করা (1d7c024)
- মুভ করা যায় এমন কন্টেন্ট সরিয়ে নেওয়ার সাথে সাথেই তা বাতিল করা সংক্রান্ত সমস্যার সমাধান করা (8676618)
- স্ন্যাপশট অবজারভেশনের জন্য বরাদ্দ কমানো (5bc535f)
ভার্সন 1.5.0-alpha01
২২ মার্চ, ২০২৩
androidx.compose.runtime:runtime-*:1.5.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.5.0-alpha01-এ এইসব কমিট রয়েছে।
নতুন ফিচার
Modifier.Nodes-কে কোরাউটিন (I76ef9) লঞ্চ করার অনুমতি দিতেModifier.Node#coroutineScopeযোগ করেCompositionLocalConsumerModifierNodeইন্টারফেস প্রয়োগ করেModifier.Nodes-কেCompositionLocalsপড়ার অনুমতি দিন। (Ib44df)
ভার্সন 1.4
ভার্সন 1.4.3
৩ মে, ২০২৩
androidx.compose.runtime:runtime-*:1.4.3 কোনও পরিবর্তন ছাড়াই রিলিজ করা হয়েছে।
ভার্সন 1.4.2
১৯ এপ্রিল, ২০২৩
androidx.compose.runtime:runtime-*:1.4.2 রিলিজ করা হয়েছে। 1.4.2 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
স্ন্যাপশট তালিকা ও ম্যাপে সম্ভাব্য ডেডলক সংক্রান্ত সমস্যার সমাধান করা 2eb6570
SnapshotStateListবাSnapshotStateMap-এ কন্টেন্ট যোগ করার সময়, স্টেট রেকর্ডে সরাসরি লেখার সাথে একই সময়ে পরিবর্তন করা হলে ডেডলক হতে পারে। 93fcae828b-এর মাধ্যমে চালু করা পরিবর্তনের ফলে এটি অনেক বেশি বার দেখা যাওয়ার সম্ভাবনা তৈরি হয়েছে, যা অব্যবহৃত রেকর্ড রিলিজ করার জন্য সরাসরি লেখার সুবিধা ব্যবহার করে।লকগুলি এখন এমনভাবে সাজানো হয়েছে যে ম্যাপ বা তালিকা লক করা থাকলে স্ন্যাপশট লক নেওয়ার চেষ্টা করা হয় না।
ভার্সন 1.4.1
৫ এপ্রিল, ২০২৩
androidx.compose.runtime:runtime-*:1.4.1 রিলিজ করা হয়েছে। 1.4.1 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- নোড গ্রুপ শেষ করার সময়
endToMarker()সংক্রান্ত সমস্যার সমাধান করুন। d71d980
ভার্সন 1.4.0
২২ মার্চ, ২০২৩
androidx.compose.runtime:runtime-*:1.4.0 রিলিজ করা হয়েছে। 1.4.0 ভার্সনে এই কমিটগুলি রয়েছে।
1.3.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন
- প্রথম কম্পোজিশন 3680e25-এর জন্য
LiveDataথেকে ইনিশিয়ালাইজ করা ভ্যালু ব্যবহার করুন - কম্পোজ নোডের লাইফসাইকেল পর্যবেক্ষণ করতে
ComposeNodeLifecycleCallbackযোগ করুন। 8b6a258 ComposableMethod7b6c7ad-এparameterTypesপ্রপার্টি যোগ করুন
সমস্যার সমাধান ও পারফর্ম্যান্সের উন্নতি
SnapshotStateObserver29f4a3e-এ দুটি স্কোপ ইন্ডেক্সই মুছে দিন- বাদ দেওয়া যায় না এমন ল্যাম্বডার বডিতে প্রয়োজনীয় গ্রুপ যোগ করুন 7d06752
- Snapshot স্টেট 93fcae8-এর মেমরি রেফারেন্সের বৈশিষ্ট্য উন্নত করা
- কম্পোজিশন লোকাল লুক-আপে বক্সিং সরানো 0875717
- পুনর্ব্যবহারযোগ্য নয় এমন নোড গ্রুপের জন্য সঠিক কী ব্যবহার করুন 6388d8d
SnapshotStateObserver-কে রিকার্সিভ ও কনকারেন্ট প্রয়োগ থেকে রক্ষা করা 98cb6baIdentityArraySet"get" পদ্ধতিতে চেক-ইনডেক্স-বাউন্ড চেক যোগ করা হয়েছে 35a77d3ViewTreeLifecycleOwnerএক্সটেনশন 21c2122 ব্যবহার করতে কম্পোজ মডিউল আপডেট করুন- Recomposer ফ্রেম সম্পূর্ণ করার পরে প্রয়োগ করার বিজ্ঞপ্তি পাঠাও। 98f2641
- Recomposer 8f8656f বাতিল করার সময় ইন্ডেক্স আউট অফ বাউন্ডস ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা
- কম্পোজিশনের মূল প্রোভাইডার পরিবর্তন হলে সবসময় আবার কম্পোজ করতে হবে 9526fcc
- বাতিল করা জবের জন্য রিকম্পোজার টলারেন্স a55f7ed
- অনেক বেশি কম্পোজারের জন্য বাতিল করার প্রসেস উন্নত করা 9b7ed67
- স্থানীয় নয় এমন রিটার্নের জন্য ক্লোজিং গ্রুপ তৈরি করার সমস্যা সমাধান করা b6f590c
ভার্সন 1.4.0-rc01
৮ মার্চ, ২০২৩
androidx.compose.runtime:runtime-*:1.4.0-rc01 রিলিজ করা হয়েছে। 1.4.0-rc01 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
ভার্সন 1.4.0-beta02
২২ ফেব্রুয়ারি, ২০২৩
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
৮ ফেব্রুয়ারি, ২০২৩
androidx.compose.runtime:runtime-*:1.4.0-beta01 রিলিজ করা হয়েছে। 1.4.0-beta01 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
ComposeNodeLifecycleCallbackযোগ করা হয়েছে যা Compose নোডের লাইফসাইকেল (I3731b) পর্যবেক্ষণ করতে দেয়@TestOnly-এComposer.disableSourceInformation()যোগ করা হয়েছে, কারণ এই ফাংশনটি শুধুমাত্র টেস্টে কল করা নিরাপদ। (I896c8)
সমস্যার সমাধান
- কম্পোজিশন লোকাল লুক-আপে বক্সিং সরানো (62f66a)
- স্ন্যাপশট স্টেটের মেমরি রেফারেন্সের বৈশিষ্ট্য উন্নত করা (dfb451)
ভার্সন 1.4.0-alpha05
২৫ জানুয়ারি, ২০২৩
androidx.compose.runtime:runtime:1.4.0-alpha05 ও androidx.compose.runtime:runtime-saveable:1.4.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.4.0-alpha05-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- ইনলাইন/পুরনো-লুকানো ফাংশনের আরও বেশি ধরন/নালিবিলিটি (I24f91)
ভার্সন 1.4.0-alpha04
১১ জানুয়ারি, ২০২৩
androidx.compose.runtime:runtime-*:1.4.0-alpha04 রিলিজ করা হয়েছে। 1.4.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
TestMonotonicFrameClockএখন সঠিক পরীক্ষামূলক অ্যানোটেশন ব্যবহার করে। (I95c9e)
সমস্যার সমাধান
- রিকাসিভ ও কনকারেন্ট প্রয়োগ থেকে
SnapshotStateObserver-কে সুরক্ষিত রাখা (d902fb)
ভার্সন 1.4.0-alpha03
৭ ডিসেম্বর, ২০২২
androidx.compose.runtime:runtime-*:1.4.0-alpha03 রিলিজ করা হয়েছে। 1.4.0-alpha03 ভার্সনে এই কমিটগুলি রয়েছে।
API-তে পরিবর্তন
ComposableMethodক্লাসেjava.lang.reflect.Method#getParameterTypes()-এর (Iab0c3) মতো নতুন পাবলিক মেথড যোগ করা
সমস্যার সমাধান
Recomposerপরিবর্তন প্রয়োগ করা শেষ করার পরে এখন স্ন্যাপশট প্রয়োগ করার বিজ্ঞপ্তি পাঠানো হয়। (Iad6c0, b/222093277)
ভার্সন 1.4.0-alpha02
৯ নভেম্বর, ২০২২
androidx.compose.runtime:runtime-*:1.4.0-alpha02 রিলিজ করা হয়েছে। 1.4.0-alpha02 ভার্সনে এই কমিটগুলি রয়েছে।
ভার্সন 1.4.0-alpha01
২৪ অক্টোবর, ২০২২
androidx.compose.runtime:runtime-*:1.4.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.4.0-alpha01-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
SnapshotStateListওSnapshotStateMap-এর কাছে এখন যথাক্রমেtoList()ওtoMap()-এর স্পষ্ট প্রয়োগ রয়েছে। এইসব পদ্ধতি কপি না করেই তাদের বর্তমান কন্টেন্ট রিটার্ন করে, কারণ তারা কন্টেন্ট স্টোর করার জন্য ব্যবহৃত ইন্টার্নাল অপরিবর্তনীয় ডেটা রিটার্ন করে। এই ভ্যালু, উদাহরণস্বরূপ, ডেটা কপি করার প্রয়োজন ছাড়াইsnapshotFlowব্যবহার করে ভ্যালুর ফ্লো তৈরি করতে ব্যবহার করা যেতে পারে। (Ica2bd)
ভার্সন 1.3
ভার্সন 1.3.3
১১ জানুয়ারি, ২০২৩
androidx.compose.runtime:runtime-*:1.3.3 রিলিজ করা হয়েছে। 1.3.3 ভার্সনে এইসব কমিট রয়েছে।
- 1.3.2 ভার্সনের পর থেকে কোনও পরিবর্তন করা হয়নি
ভার্সন 1.3.2
৭ ডিসেম্বর, ২০২২
androidx.compose.runtime:runtime-*:1.3.2 রিলিজ করা হয়েছে। 1.3.2 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- androidx.compose.ui 1.3.2 ভার্সনে কাজ করার জন্য আপডেট করা হয়েছে
ভার্সন 1.3.1
৯ নভেম্বর, ২০২২
androidx.compose.runtime:runtime-*:1.3.1 রিলিজ করা হয়েছে। 1.3.1 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.3.0
২৪ অক্টোবর, ২০২২
androidx.compose.runtime:runtime-*:1.3.0 রিলিজ করা হয়েছে। 1.3.0 ভার্সনে এই কমিটগুলি রয়েছে।
1.2.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন
ব্যতিক্রম ম্যানেজ করা / লাইভ এডিট সহায়তা
- লাইভ এডিট আরও ভালোভাবে সাপোর্ট করার জন্য, কম্পোজিশনের সময় ব্যতিক্রম ম্যানেজ করার সুবিধা চালু করতে API যোগ করা হয়েছে
- হট রিলোডের জন্য কম্পোজিশন সংক্রান্ত সমস্যার সমাধান
- সেভ/রিস্টোর করার সময় লাইভ এডিট সংক্রান্ত সমস্যার সমাধান করা
কম্পোজিশন ট্রেসিং
- নতুন কম্পোজিশন ট্রেসিং টুলিংয়ের জন্য রানটাইম ট্রেসিং API যোগ করা হয়েছে
- কম্পোজ করা যায় এমন ট্রেস ইভেন্ট শুরু/শেষ করার কল জেনারেট করা
- ComposerKt.traceEventStart(Int, String) আবার যোগ করা হয়েছে
Composable Reflection API
- কম্পোজ করা যায় এমন API-এর আরও নির্ভরযোগ্য রিফ্লেকশন-ভিত্তিক ইনভোকেশন করার অনুমতি দিতে একটি নতুন
ComposableMethodAPI যোগ করা হয়েছে। - invokeComposable-কে কম্পোজ রানটাইমে সরান
- কম্পোজ করা যায় এমন মেথড ইনভোক করতে API-তে আবার কাজ করা
রানটাইম সংক্রান্ত সমস্যার সমাধান
- মার্কার চেক করার জন্য স্লট টেবিল চেকিংয়ের ক্ষেত্রে ভুল রেঞ্জ টেস্ট সংক্রান্ত সমস্যার সমাধান করা
- SubcomposeLayout-এর মধ্যে ও বাইরে মুভ করা যায় এমন কন্টেন্টকে মুভ করার অনুমতি দিন
- সাবকম্পোজিশনের নতুন কন্টেন্টে সরানো কন্টেন্ট ঠিক করা
স্ন্যাপশট সিস্টেম
- মেমরি ম্যানেজমেন্ট, পারফর্ম্যান্স ও নির্ভুলতা সংক্রান্ত বিভিন্ন উন্নতি স্ন্যাপশট সিস্টেমে করা হয়েছে।
- SnapshotStateObserver-এ স্কোপ সরিয়ে দেওয়া অপ্টিমাইজ করা
- স্বচ্ছ স্ন্যাপশট থেকে তৈরি নেস্টেড স্ন্যাপশট ডিসপোজ করা
- গ্লোবাল স্ন্যাপশট থেকে স্টেট রিড করার সময় রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে
- SnapshotStateObserver-এ DerivedState কাজ করে
- অন্য স্কোপে কম্পোজিশন রিড করার সময়, কম্পোজিশন থেকে ডেরিভড স্টেট সরানো আটকায়
- DerivedState-এর মধ্যে HashMap-এর পরিবর্তে IdentityArrayMap ব্যবহার করুন
- পরিবর্তনযোগ্য ভেক্টর ব্যবহার করতে, প্রাপ্ত স্টেট অবজারভার আপডেট করুন
- SnapshotStateObserver স্টেট ক্লিন-আপ আপডেট করুন
- ArraySet-এর মাধ্যমে SnapshotStateObserver.invalidated পরিবর্তন করুন
- গ্লোবাল স্ন্যাপশট থেকে স্টেট রিড করার সময় রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে
- DerivedState হ্যাশ গণনায় পুরনো রেকর্ড ব্যবহার করা সংক্রান্ত সমস্যার সমাধান করা
- গ্লোবাল স্ন্যাপশট অ্যাডভান্স করার সময় রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করা
- SnapshotStateObserver-এ স্কোপ অবজারভেশনের ক্লিন-আপের স্পিড বাড়ানো
ভার্সন 1.3.0-rc01
৫ অক্টোবর, ২০২২
androidx.compose.runtime:runtime-*:1.3.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.3.0-rc01-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- স্লট টেবিল থেকে আসা
ArrayIndexOutOfBoundsExceptionসংক্রান্ত সমস্যা সমাধান করা হয়েছে (b/249076084)
ভার্সন 1.3.0-beta03
২১ সেপ্টেম্বর, ২০২২
androidx.compose.runtime:runtime-*:1.3.0-beta03 রিলিজ করা হয়েছে। 1.3.0-beta03 ভার্সনে এইসব কমিট রয়েছে।
আচরণ সংক্রান্ত ব্রেকিং পরিবর্তন
rememberওrememberCoroutineScopeপ্যারামিটার পরিবর্তন করেcrossinlineকরা হয়েছে। এর ফলে, তাড়াতাড়ি রিটার্ন করার অনুমতি না দিয়ে, তাড়াতাড়ি রিটার্ন করার জন্য একটি সমস্যার রিপোর্ট করা হবে, যার ফলে পরে একটি ইন্টার্নাল সমস্যার রিপোর্ট করতে হবে।- এই পরিবর্তনের ফলে নতুন কম্পাইলার সংক্রান্ত সমস্যা রিপোর্ট করতে হতে পারে, এর জন্য এই ফাংশনে পাস করা ল্যাম্বডা থেকে নন-লোকাল রিটার্ন সরিয়ে দিতে হবে। (Ibea62)
ভার্সন 1.3.0-beta02
৭ সেপ্টেম্বর, ২০২২
androidx.compose.runtime:runtime-*:1.3.0-beta02 রিলিজ করা হয়েছে। 1.3.0-beta02 ভার্সনে এইসব কমিট আছে।
সমস্যার সমাধান
- আপডেট করা API (I64ca0)
ভার্সন 1.3.0-beta01
২৪ আগস্ট, ২০২২
androidx.compose.runtime:runtime-*:1.3.0-beta01 রিলিজ করা হয়েছে। ভার্সন 1.3.0-beta01-এ এইসব কমিট আছে।
API-তে পরিবর্তন
CompositionData-এ একটিfindপদ্ধতি যোগ করা হয়েছে যাতে এই API ব্যবহার করা ডেভেলপার টুল, এর পরিচয় ব্যবহার করে কম্পোজিশনের একটি সাব-গ্রুপ দ্রুত খুঁজে পেতে পারে। (I5794f)
ভার্সন 1.3.0-alpha03
১০ আগস্ট, ২০২২
androidx.compose.runtime:runtime-*:1.3.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.3.0-alpha03-এ এইসব কমিট আছে।
ভার্সন 1.3.0-alpha02
২৭ জুলাই, ২০২২
androidx.compose.runtime:runtime-*:1.3.0-alpha02 রিলিজ করা হয়েছে। 1.3.0-alpha02 ভার্সনে এই কমিটগুলি রয়েছে।
API-তে পরিবর্তন
- পুরনো ভার্সনের সাথে মানানসই করার জন্য
ComposerKt.traceEventStart(Int, String)আবার যোগ করা হয়েছে (I6e6de)
ভার্সন 1.3.0-alpha01
২৯ জুন, ২০২২
androidx.compose.runtime:runtime-*:1.3.0-alpha01 রিলিজ করা হয়েছে। 1.3.0-alpha01 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
- ইউটিলিটি ফাংশনালিটি রানটাইমে সরানো (I4f729)
ভার্সন 1.2
ভার্সন 1.2.1
১০ আগস্ট, ২০২২
androidx.compose.runtime:runtime-*:1.2.1 রিলিজ করা হয়েছে। 1.2.1 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- মেমরি লিক সংক্রান্ত সমস্যার সমাধান করা হয়েছে: স্বচ্ছ স্ন্যাপশট থেকে তৈরি নেস্টেড স্ন্যাপশট ডিসপোজ করা হয়েছে b/239603305
ভার্সন 1.2.0
২৭ জুলাই, ২০২২
androidx.compose.runtime:runtime-*:1.2.0 রিলিজ করা হয়েছে। 1.2.0 ভার্সনে এই কমিটগুলি রয়েছে।
1.1.0 থেকে হওয়া গুরুত্বপূর্ণ পরিবর্তন
Compose Runtime-এ 1.2.0 ভার্সনে বেশ কিছু ফিচার যোগ করা হয়েছে এবং এর পাশাপাশি অনেক স্থিতিশীলতা সংক্রান্ত বাগ সমাধান করা হয়েছে। সবচেয়ে গুরুত্বপূর্ণ নতুন ফিচার হল
movableContentOfAPI-এর সংযোজন, যা শেয়ার করা এলিমেন্ট ট্রানজিশনের মতো জটিল UX চালু করতে ব্যবহার করা যেতে পারে।movableContentOfAPI একটি কম্পোজ করার উপযুক্ত ল্যাম্বডাকে এমন একটি ল্যাম্বডায় কনভার্ট করে যা সেটির স্টেট এবং সংশ্লিষ্ট নোডকে কল করা হয় এমন যেকোনও নতুন লোকেশনে সরিয়ে দেয়। আগের কলটি কম্পোজিশন থেকে বেরিয়ে গেলে, স্টেট সাময়িকভাবে সংরক্ষিত থাকে এবং ল্যাম্বডাতে নতুন কল কম্পোজিশনে প্রবেশ করলে, স্টেট ও সংশ্লিষ্ট নোড, নতুন কলের লোকেশনে সরিয়ে দেওয়া হয়। কোনও নতুন কল যোগ করা না হলে, স্ট্যাটাসটি স্থায়ীভাবে সরিয়ে দেওয়া হয় এবং মনে রাখবেন যে পর্যবেক্ষকদের বিজ্ঞপ্তি পাঠানো হয়।একই কম্পোজিশনে একাধিকবার
movableContentOfল্যাম্বডাকে কল করা হলে, প্রতিটি কলের জন্য নতুন স্টেট ও নোড তৈরি করা হয় এবং কলগুলি কম্পোজিশন থেকে বেরিয়ে গেলে ও নতুন কল প্রবেশ করলে, কল করার ক্রম অনুযায়ী প্রথম বেরিয়ে যাওয়া কল থেকে প্রবেশ করা কলে স্টেট সরানো হয়। নতুন কলের মাধ্যমে দাবি করা হয়নি এমন সব স্টেট স্থায়ীভাবে সরিয়ে দেওয়া হয়।এটি ও অন্যান্য কয়েকটি নতুন ফিচার ছাড়াও, রানটাইম ও স্ন্যাপশট স্টেট সিস্টেম স্থিতিশীল করার জন্য অনেক সময় ব্যয় করা হয়েছে। বিভিন্ন মেমরি লিকেজ সরিয়ে দেওয়া হয়েছে এবং কোড পাথ অপ্টিমাইজ করা হয়েছে।
পরিবর্তনগুলির একটি সংক্ষিপ্ত তালিকা নিচে দেওয়া হল:
1.2-এ নতুন ফিচার
- এক্সপেরিমেন্টাল স্ন্যাপশট যোগ করুন নিরাপদ নয়Enter/Leave
- পরীক্ষামূলক API হিসেবে Snapshot.asContextElement যোগ করুন
- Snapshot.withoutReadObservation যোগ করা হয়েছে
- কম্পোজিশনের মধ্যে স্টেটকে সরানোর অনুমতি দিন
- কম্পোজে রিকম্পোজিশন ট্র্যাক করা
1.2-এ পারফর্ম্যান্স
- কম্পোজিশনের স্থানীয় পারফর্ম্যান্স উন্নত করা
- কম্পোজের জন্য বেসলাইন প্রোফাইল বেঞ্চমার্ক ব্যবহার করে তৈরি করতে হবে
1.2-এ সমস্যার সমাধান
- রিলিজ রিকম্পোজ স্কোপ থেকে ট্র্যাকিং তথ্য সরানো
- অন্য স্কোপে কম্পোজিশন রিড করার সময়, কম্পোজিশন থেকে ডেরিভড স্টেট সরানো আটকায়
- SnapshotStateObserver-এ আরও বেশি কার্যকর removeScope() ব্যবহার করুন
- কম্পোজিশনে প্রাপ্ত স্টেট ডিপেন্ডেন্সি ক্লিন-আপ করা
- মুভেবল কন্টেন্টের মধ্যে ইন্টার্নাল রিকম্পোজিশনের পরে currentCompositeKeyHash পরিবর্তন হওয়া সংক্রান্ত সমস্যার সমাধান করা
- ডিসপোজ করার সময় বাতিল হয়ে যাওয়া কম্পোজিশন ক্লিন-আপ করা
- রিকম্পোজিশনের সময় প্রাপ্ত ডেটা সংক্রান্ত সমস্যার সমাধান করা
- ডেরাইভ করা স্টেট অবজেক্ট পর্যবেক্ষণ করার সময় মেমরি লিক সংক্রান্ত সমস্যার সমাধান করা
- স্থির movableContent কম্পোজিট হ্যাশ কী যাতে একই থাকে তা নিশ্চিত করা
- কম্পোজার ক্র্যাশ হয়ে যাওয়া সংক্রান্ত সমস্যার সমাধান করা
- কোনও গ্রুপের জন্য জোর করে ইনভ্যালিডেশন নিশ্চিত করা হলে, তা যেন রিকম্পোজিশন করতে বাধ্য করে
- ইনপুট সহ rememberSaveable ভুল ক্রমে রিস্টোর করা হলে সমস্যার সমাধান করা
ভার্সন 1.2.0-rc03
২৯ জুন, ২০২২
androidx.compose.runtime:runtime-*:1.2.0-rc03 রিলিজ করা হয়েছে। ভার্সন 1.2.0-rc03-এ এইসব কমিট রয়েছে।
সমস্যার সমাধান
- আগে, ডেরিভড স্টেট অবজারভেশনকে আনকন্ডিশনালি রিকম্পোজ স্কোপ ও কম্পোজিশন থেকে সরিয়ে দেওয়া হত। এর ফলে অন্যান্য স্কোপ ভেঙে যেত, যেগুলি এখনও ডেরিভড স্টেট অবজারভেশনকে অবজার্ভ করতে পারে। অন্যান্য স্কোপ আর পর্যবেক্ষণ না করলে, এই পরিবর্তন শুধুমাত্র প্রাপ্ত স্টেট ইনস্ট্যান্স সরিয়ে দেয়। (b/236618362)
ভার্সন 1.2.0-rc02
২২ জুন, ২০২২
androidx.compose.runtime:runtime-*:1.2.0-rc02 রিলিজ করা হয়েছে। ভার্সন 1.2.0-rc02-এ এইসব কমিট রয়েছে।
ভার্সন 1.2.0-rc01
১৫ জুন, ২০২২
androidx.compose.runtime:runtime-*:1.2.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.2.0-rc01-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- Compose লাইব্রেরির ইন্টারফেস এখন jdk8 ডিফল্ট ইন্টারফেস পদ্ধতি ব্যবহার করে তৈরি করা হয় (I5bcf1)
ভার্সন 1.2.0-beta03
১ জুন, ২০২২
androidx.compose.runtime:runtime-*:1.2.0-beta03 রিলিজ করা হয়েছে। 1.2.0-beta03 ভার্সনে এইসব কমিট আছে।
ভার্সন 1.2.0-beta02
১৮ মে, ২০২২
androidx.compose.runtime:runtime-*:1.2.0-beta02 রিলিজ করা হয়েছে। 1.2.0-beta02 ভার্সনে এইসব কমিট আছে।
ভার্সন 1.2.0-beta01
১১ মে, ২০২২
androidx.compose.runtime:runtime-*:1.2.0-beta01 রিলিজ করা হয়েছে। 1.2.0-beta01 ভার্সনে এইসব কমিট আছে।
নতুন ফিচার
- এটি হল 1.2-এর প্রথম বিটা রিলিজ!
API-তে পরিবর্তন
- এক্সপেরিমেন্টাল
Snapshot.unsafeEnter/unsafeLeave(I108f3) যোগ করা হয়েছে - পরীক্ষামূলক
Snapshot.asContextElement()API যোগ করা হয়েছে (Iff072) @ComposableTargetঅ্যানোটেশন এবং@ComposableTargetMarker-এর মাধ্যমে চিহ্নিত অ্যানোটেশন এখন@fileপ্রিফিক্স ব্যবহার করে ফাইল স্কোপে ব্যবহার করা যেতে পারে। ফাইল স্কোপে টার্গেট অ্যানোটেশন ব্যবহার করলে, কম্পাইলার ধরে নেবে যে ফাইলের সব কম্পোজ করার উপযুক্ত ফাংশন সংশ্লিষ্ট অ্যাপ্লায়ারকে টার্গেট করার জন্য তৈরি করা হয়েছে। যেমন,@file:UiComposableব্যবহার করে ঘোষণা করা হয় যে সব@Composableফাংশন কম্পোজ UI অ্যাপ্লায়ারকে টার্গেট করে। যে ফাংশনকে অন্য কোনও অ্যাপ্লায়ারকে টার্গেট করতে হবে, সেটিকে অবশ্যই কাঙ্ক্ষিত অ্যাপ্লায়ারের জন্য টার্গেট মার্কার অ্যানোটেশন প্রদান করতে হবে। (I40804)
ভার্সন 1.2.0-alpha08
২০ এপ্রিল, ২০২২
androidx.compose.runtime:runtime-*:1.2.0-alpha08 রিলিজ করা হয়েছে। 1.2.0-alpha08 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
CompositionTracerইন্টারফেসেTracingInProgressযোগ করা হয়েছে। (Ic6f12)- Composer-এ
recomposeScopeIdentityযোগ করুন (I0c873) OptIn(InternalComposeTracingApi)-এ সীমিত ট্র্যাকিং API (Composer.setTracer)। (I9187f)ResuableContentHostযোগ করা হয়েছে যা আবার ব্যবহারযোগ্য কন্টেন্টের জন্য তৈরি করা স্টেটের লাইফটাইম আরও ভালোভাবে কন্ট্রোল করতে দেয়। যেমন, কোনও সাব-কম্পোজিশন সাময়িকভাবে ব্যবহার করা না হলে, কন্টেন্ট ডিঅ্যাক্টিভেট করা যেতে পারে, এর ফলে কম্পোজিশনে মনে রাখা সব স্টেট ভুলে যাওয়া হয়, যেমন, সব ডিসপোজেবল এফেক্ট। (I2c0f2, b/220322704)
ভার্সন 1.2.0-alpha07
৬ এপ্রিল, ২০২২
androidx.compose.runtime:runtime-*:1.2.0-alpha07 রিলিজ করা হয়েছে। 1.2.0-alpha07 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- নতুন ফাংশন
Snapshot.withoutReadObservation { ... }যোগ করা হয়েছে। এটি ব্যবহারকারীকে এই ব্লকের সময় পড়া স্টেট ভ্যালুর পরিবর্তন সাবস্ক্রাইব না করেই পাস করা ল্যাম্বডা চালানোর অনুমতি দেয়। স্ন্যাপশট ভিত্তিক থ্রেড সেফ রাইট/রিড থেকে সুবিধা পেতে চাইলে, কিন্তু অপ্রয়োজনীয় রিকম্পোজিশন বা রিমজার না করেই ভ্যালু রিড করতে চাইলে, এই ফিচারটি আপনার কাজে লাগতে পারে। (I9f365, b/214054486)
ভার্সন 1.2.0-alpha06
২৩ মার্চ, ২০২২
androidx.compose.runtime:runtime-*:1.2.0-alpha06 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha06-এ এইসব কমিট রয়েছে।
ভার্সন 1.2.0-alpha05
৯ মার্চ, ২০২২
androidx.compose.runtime:runtime-*:1.2.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha05-এ এইসব কমিট রয়েছে।
এক্সটার্নাল কন্ট্রিবিউশন
- Kotlinx coroutines 1.6.0 (I3366d) ব্যবহার করার জন্য আপডেট করা হয়েছে
ভার্সন 1.2.0-alpha04
২৩ ফেব্রুয়ারি, ২০২২
androidx.compose.runtime:runtime-*:1.2.0-alpha04 রিলিজ করা হয়েছে। 1.2.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
ComposableTarget,ComposableTargetMarkerএবংComposableOpenTargetযোগ করা হয়েছে যা কম্পাইল করার সময় রিপোর্ট করার অনুমতি দেয় যখন কোনও কম্পোজেবল ফাংশন এমন কোনও অ্যাপ্লায়ারকে টার্গেট করে কল করা হয় যা ব্যবহার করার জন্য ডিজাইন করা হয়নি।বেশিরভাগ ক্ষেত্রে, কম্পোজ কম্পাইলার প্লাগ-ইন থেকে অ্যানোটেশন অনুমান করা যেতে পারে, তাই এই অ্যানোটেশন সরাসরি ব্যবহার করা বিরল হওয়া উচিত। যেসব ক্ষেত্রে অনুমান করা যায় না তার মধ্যে রয়েছে কাস্টম অ্যাপ্লায়ার তৈরি ও ব্যবহার করা, অ্যাবস্ট্র্যাক্ট কম্পোজ করার উপযুক্ত ফাংশন (যেমন ইন্টারফেস পদ্ধতি), ফিল্ড বা গ্লোবাল ভেরিয়েবল যা কম্পোজ করার উপযুক্ত ল্যাম্বডা (লোকাল ভেরিয়েবল ও প্যারামিটার অনুমান করা হয়), অথবা
ComposeNodeবা সম্পর্কিত কম্পোজ করার উপযুক্ত ফাংশন ব্যবহার করার সময়।কাস্টম অ্যাপ্লায়ারের জন্য, কম্পোজ করা যায় এমন ফাংশন যা
ComposeNodeবাReusableComposeNodeকল করে, সেগুলিকে ফাংশন ও যেকোনও কম্পোজ করা যায় এমন ল্যামডা প্যারামিটারCompoableTargetটাইপের জন্য অ্যানোটেশন যোগ করতে হবে। তবে, এটি সাজেস্ট করা হয় যে,ComposableTargetMarkerদিয়ে অ্যানোটেট করা একটি অ্যানোটেশন তৈরি করুন এবং তারপরে সরাসরিComposableTarget-এর পরিবর্তে চিহ্নিত অ্যানোটেশন ব্যবহার করুন।ComposableTargetMarkerচিহ্নিত কম্পোজ করার উপযুক্ত অ্যানোটেশন হলComposbleTarget, যার মধ্যে অ্যাপ্লায়ার প্যারামিটার হিসেবে অ্যাট্রিবিউট ক্লাসের সম্পূর্ণ কোয়ালিফায়েড নাম থাকে।ComposableTargetMarkerব্যবহারের উদাহরণ দেখতেanroidx.compose.ui.UiComposableদেখুন। (I38f11)
ভার্সন 1.2.0-alpha03
৯ ফেব্রুয়ারি, ২০২২
androidx.compose.runtime:runtime-*:1.2.0-alpha03 রিলিজ করা হয়েছে। 1.2.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
movableContentOfযোগ করা হয়েছে যা কম্পোজ করা যায় এমন lambda-কে এমন lambda-তে কনভার্ট করে যা সেটির স্টেট এবং সংশ্লিষ্ট নোডকে যে নতুন লোকেশন থেকে কল করা হয় সেখানে সরিয়ে দেয়। আগের কলটি কম্পোজিশন থেকে বেরিয়ে গেলে সেটির স্টেট সাময়িকভাবে সেভ করা হয় এবং যদি নতুন কল কম্পোজিশনে প্রবেশ করে, তাহলে স্টেট ও সংশ্লিষ্ট নোড নতুন কলের লোকেশনে সরিয়ে দেওয়া হয়। নতুন কোনও কল যোগ করা না হলে, স্টেটটি স্থায়ীভাবে সরিয়ে দেওয়া হয় এবং মনে রাখবেন, পর্যবেক্ষকদের এই বিষয়ে জানানো হয়।একই কম্পোজিশনে একাধিকবার
movableContentOflambda কল করা হলে, প্রতিটি কলের জন্য নতুন স্টেট ও নোড তৈরি করা হয় এবং কল কম্পোজিশন থেকে বেরিয়ে গেলে ও নতুন কল প্রবেশ করলে, কল করার ক্রম অনুযায়ী প্রথম বেরিয়ে যাওয়া কল থেকে প্রবেশ করা কলে স্টেট সরিয়ে দেওয়া হয়। নতুন কলের মাধ্যমে দাবি করা হয়নি এমন সব স্টেট স্থায়ীভাবে সরিয়ে দেওয়া হয়। (Ib4850)কম্পোজিশনে ট্রেসিং API যোগ করা হয়েছে যাতে টুলগুলি কম্পোজ করা যায় এমন ফাংশনের আরও বিস্তারিত ট্রেসিং প্রদান করতে পারে। কম্পাইলার এখন ট্রেসিং API-তে কল জেনারেট করে যার মধ্যে সোর্স সংক্রান্ত তথ্য থাকে। (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
২৬ জানুয়ারি, ২০২২
androidx.compose.runtime:runtime-*:1.2.0-alpha02 রিলিজ করা হয়েছে। 1.2.0-alpha02 ভার্সনে এই কমিটগুলি রয়েছে।
ভার্সন 1.2.0-alpha01
১২ জানুয়ারি, ২০২২
androidx.compose.runtime:runtime-*:1.2.0-alpha01 রিলিজ করা হয়েছে। 1.2.0-alpha01 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- Layout Inspector-এ ইনভেরিয়েন্ট আইডি জেনারেট করার জন্য
CompositionData-এidentityফিল্ড যোগ করা হয়েছে। (Ic116e)
নির্ভরতা সংক্রান্ত আপডেট
- এখন Kotlin
1.6.10-এর উপর নির্ভর করে।
ভার্সন 1.1
ভার্সন 1.1.1
২৩ ফেব্রুয়ারি, ২০২২
androidx.compose.runtime:runtime-*:1.1.1 রিলিজ করা হয়েছে। 1.1.1 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList-এNullPointerExceptionসংক্রান্ত সমস্যার সমাধান করুন (aosp/1947059, b/206677462)- Android-এ ক্লিপবোর্ড থেকে রিড করার সময় ক্লিপবোর্ড কন্টেন্টের কারণে হওয়া ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I06020, b/197769306)
LazyVerticalGrid-এ RTL সংক্রান্ত সমস্যা সমাধান করা হয়েছে (aosp/1931080, b/207510535)
ভার্সন 1.1.0
৯ ফেব্রুয়ারি, ২০২২
androidx.compose.runtime:runtime-*:1.1.0 রিলিজ করা হয়েছে। 1.1.0 ভার্সনে এইসব কমিট রয়েছে।
1.0.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন
- Android 12-এর জন্য স্থিতিশীল সহায়তা ওভারস্ক্রল এফেক্ট
- টাচ টার্গেটের সাইজ সংক্রান্ত উন্নতি
- মনে রাখবেন, Compose 1.0-এর ক্ষেত্রে, মেটেরিয়াল কম্পোনেন্ট, টাচ টার্গেট সাইজের জন্য মেটেরিয়াল অ্যাক্সেসিবিলিটি নির্দেশিকা মেনে চলতে, লেআউট স্পেস বাড়াবে। যেমন, আপনি বোতামের সাইজ ছোট করে সেট করলেও, বোতামের টাচ টার্গেট
48x48dp-এর ন্যূনতম সাইজে প্রসারিত হবে। এটি মেটেরিয়াল ডিজাইন কম্পোনেন্টের একই আচরণে Compose Material-কে অ্যালাইন করে, এর ফলে আপনি ভিউ ও Compose মিশিয়ে ব্যবহার করলেও আচরণে কোনও পরিবর্তন হয় না। এছাড়াও, এই পরিবর্তন নিশ্চিত করে যে আপনি Compose Material কম্পোনেন্ট ব্যবহার করে UI তৈরি করলে, টাচ টার্গেট অ্যাক্সেসিবিলিটির ন্যূনতম প্রয়োজনীয়তা পূরণ হবে। - নেভিগেশন রেলের জন্য স্থিতিশীল সহায়তা
- আগে পরীক্ষামূলক API-এর সংখ্যাকে স্থিতিশীল করে
- Kotlin-এর নতুন ভার্সনের জন্য সহায়তা
ভার্সন 1.1.0-rc03
২৬ জানুয়ারি, ২০২২
androidx.compose.runtime:runtime-*:1.1.0-rc03 রিলিজ করা হয়েছে। Version 1.1.0-rc03-এ এইসব কমিট আছে।
সমস্যার সমাধান
- Compose Material
1.1.0-rc03-এর সাথে কাজ করার জন্য আপডেট করা হয়েছে
ভার্সন 1.1.0-rc01
১৫ ডিসেম্বর, ২০২১
androidx.compose.runtime:runtime-*:1.1.0-rc01 রিলিজ করা হয়েছে। 1.1.0-rc01 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.1.0-beta04
১ ডিসেম্বর, ২০২১
androidx.compose.runtime:runtime-*:1.1.0-beta04 রিলিজ করা হয়েছে। 1.1.0-beta04 ভার্সনে এইসব কমিট আছে।
নতুন ফিচার
- Kotlin
1.6.0-এর সাথে মানানসই করে আপডেট করা হয়েছে
ভার্সন 1.1.0-beta03
১৭ নভেম্বর, ২০২১
androidx.compose.runtime:runtime-*:1.1.0-beta03 রিলিজ করা হয়েছে। 1.1.0-beta03 ভার্সনে এইসব কমিট আছে।
ভার্সন 1.1.0-beta02
৩ নভেম্বর, ২০২১
androidx.compose.runtime:runtime-*:1.1.0-beta02 রিলিজ করা হয়েছে। 1.1.0-beta02 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- স্ন্যাপশট কোড একাধিক ফাইলে বিভক্ত করা হয়েছে, কিন্তু সেগুলি এখনও একই JVM ক্লাসে আছে। (Ic6c98)
ভার্সন 1.1.0-beta01
২৭ অক্টোবর, ২০২১
androidx.compose.runtime:runtime-*:1.1.0-beta01 রিলিজ করা হয়েছে। 1.1.0-beta01 ভার্সনে এইসব কমিট আছে।
ভার্সন 1.1.0-alpha06
১৩ অক্টোবর, ২০২১
androidx.compose.runtime:runtime-*:1.1.0-alpha06 রিলিজ করা হয়েছে। 1.1.0-alpha06 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
- ক্রস-মডিউল কল করার জন্য প্রয়োজনীয়
InternalCompilerApiকম্পোজার পদ্ধতি থেকে সরানো হয়েছে (I1aa0b) Recomposer.state-এর ব্যবহার বন্ধ করে দেওয়া হয়েছে এবং এর পরিবর্তেRecomposer.currentStateব্যবহার করা হচ্ছে, যাতে এর ধরন পরিবর্তন করে StateFlow (Ic2ab3, b/197773820) করা যায়
ভার্সন 1.1.0-alpha05
২৯ সেপ্টেম্বর, ২০২১
androidx.compose.runtime:runtime-*:1.1.0-alpha05 রিলিজ করা হয়েছে। 1.1.0-alpha05 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.1.0-alpha04
১৫ সেপ্টেম্বর, ২০২১
androidx.compose.runtime:runtime-*:1.1.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha04-এ এইসব কমিট রয়েছে।
ভার্সন 1.1.0-alpha03
১ সেপ্টেম্বর, ২০২১
androidx.compose.runtime:runtime-*:1.1.0-alpha03 রিলিজ করা হয়েছে। 1.1.0-alpha03 ভার্সনে এইসব কমিট আছে।
নতুন ফিচার
- Compose Compiler এখন Compose Runtime (1.0)-এর পুরনো ভার্সনে কাজ করে। এই পরিবর্তনের আগে, কম্পোজ কম্পাইলার শুধুমাত্র একই ভার্সন বা তার পরের ভার্সনের কম্পোজ রানটাইমের সাথে মানানসই ছিল। এই পরিবর্তনের পরে, Compose Compiler, Compose Runtime-এর (1.0) পুরনো ভার্সনের সাথে মানানসই হবে। (aosp/1796968)
- Compose
1.1.0-alpha03-কে Kotlin1.5.30-এর উপর নির্ভর করার জন্য আপডেট করা হয়েছে। (I74545)
ভার্সন 1.1.0-alpha02
১৮ আগস্ট, ২০২১
androidx.compose.runtime:runtime-*:1.1.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha02-এ এইসব কমিট রয়েছে।
ভার্সন 1.1.0-alpha01
৪ আগস্ট, ২০২১
androidx.compose.runtime:runtime-*:1.1.0-alpha01 রিলিজ করা হয়েছে। 1.1.0-alpha01 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন ১.০
ভার্সন 1.0.5
৩ নভেম্বর, ২০২১
androidx.compose.runtime:runtime-*:1.0.5 রিলিজ করা হয়েছে। 1.0.5 ভার্সনে এই কমিটগুলি রয়েছে।
সমস্যার সমাধান
- ক্র্যাশ ট্র্যাকিং derivedStateOf ইনস্ট্যান্স সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (aosp/1792247)
ভার্সন 1.0.4
১৩ অক্টোবর, ২০২১
androidx.compose.runtime:runtime-*:1.0.4 রিলিজ করা হয়েছে। 1.0.4 ভার্সনে এইসব কমিট রয়েছে।
নির্ভরতা সংক্রান্ত আপডেট
- Kotlin
1.5.31-এর উপর নির্ভর করার জন্য আপডেট করা হয়েছে
ভার্সন 1.0.3
২৯ সেপ্টেম্বর, ২০২১
androidx.compose.runtime:runtime-*:1.0.3 রিলিজ করা হয়েছে। 1.0.3 ভার্সনে এইসব কমিট রয়েছে।
নির্ভরতা সংক্রান্ত আপডেট
- Kotlin
1.5.30-এর উপর নির্ভর করার জন্য আপডেট করা হয়েছে
ভার্সন 1.0.2
১ সেপ্টেম্বর, ২০২১
androidx.compose.runtime:runtime-*:1.0.2 রিলিজ করা হয়েছে। 1.0.2 ভার্সনে এইসব কমিট রয়েছে।
Compose 1.0.2 রিলিজের সাথে কাজ করার জন্য আপডেট করা হয়েছে। Compose 1.0.2 এখনও Kotlin 1.5.21-এর সাথে মানানসই।
ভার্সন 1.0.1
৪ আগস্ট, ২০২১
androidx.compose.runtime:runtime-*:1.0.1 রিলিজ করা হয়েছে। 1.0.1 ভার্সনে এইসব কমিট রয়েছে।
নির্ভরতা সংক্রান্ত আপডেট
- Kotlin
1.5.21-এর উপর নির্ভর করার জন্য আপডেট করা হয়েছে।
ভার্সন 1.0.0
২৮ জুলাই, ২০২১
androidx.compose.runtime:runtime-*:1.0.0 রিলিজ করা হয়েছে। ভার্সন 1.0.0-এ এইসব কমিট আছে।
1.0.0 ভার্সনের প্রধান ফিচার
Compose-এর এটিই প্রথম স্থিতিশীল রিলিজ। আরও বিবরণের জন্য অফিসিয়াল Compose রিলিজ ব্লগ দেখুন!
পরিচিত সমস্যা
আপনি Android Studio Bumblebee Canary 4 বা AGP
7.1.0-alpha04/7.1.0-alpha05ব্যবহার করলে, নিম্নলিখিত ক্র্যাশ হতে পারে:java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"এটি সমাধান করতে, আপনার
build.gradleফাইলে সাময়িকভাবে minSdkVersion বাড়িয়ে 24+ করুন। Android Studio Bumblebee এবং AGP7.1-এর পরবর্তী ভার্সনে এই সমস্যার সমাধান করা হবে। (b/194289155)
ভার্সন 1.0.0-rc02
১৪ জুলাই, ২০২১
androidx.compose.runtime:runtime-*:1.0.0-rc02 রিলিজ করা হয়েছে। 1.0.0-rc02 ভার্সনে এইসব কমিট রয়েছে।
- SnapshotStateObserver-এ রেস কন্ডিশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে যার ফলে স্পোরাডিক NullPointerExceptions দেখা দিত। (aosp/1763445, aosp/1758105, b/192677711)
- রানটাইম স্ন্যাপশট সংক্রান্ত সমস্যার সমাধান করা হয়েছে যার ফলে
java.lang.IllegalStateException: Reading a state that was created after the snapshot was taken or in a snapshot that has not yet been appliedক্র্যাশ হয়ে যাচ্ছিল। (b/193006595, b/192570897)
ভার্সন 1.0.0-rc01
১ জুলাই, ২০২১
androidx.compose.runtime:runtime-*:1.0.0-rc01 রিলিজ করা হয়েছে। 1.0.0-rc01 ভার্সনে এইসব কমিট রয়েছে।
ভার্সন 1.0.0-beta09
১৬ জুন, ২০২১
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
প্রোফাইল সংক্রান্ত নিয়ম কী কী?
লাইব্রেরির প্রোফাইল সংক্রান্ত নিয়ম
src/mainবা সমতুল্য ডিরেক্টরিতে থাকাbaseline-prof.txtটেক্সট ফাইলে উল্লেখ করা থাকে। ফাইলটি প্রতি লাইনে একটি করে নিয়ম নির্দিষ্ট করে, যেখানে এই ক্ষেত্রে নিয়ম হল লাইব্রেরিতে মেথড বা ক্লাসের সাথে ম্যাচ করার একটি প্যাটার্ন। এইসব নিয়মের সিনট্যাক্স হল মানুষের-পঠনযোগ্য 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>হল পদ্ধতির সিগনেচার এবং এতে পদ্ধতির নাম, প্যারামিটারের ধরন ও রিটার্ন ধরন অন্তর্ভুক্ত থাকে। যেমন,LayoutNode-এরfun isPlaced(): Booleanপদ্ধতিতেisPlaced()Zসিগনেচার আছে।একাধিক পদ্ধতি বা ক্লাসকে একটি নিয়মের মধ্যে অন্তর্ভুক্ত করার জন্য এইসব প্যাটার্নে ওয়াইল্ডকার্ড (
**,*ও?) থাকতে পারে।
নিয়ম কী করে?
যে পদ্ধতিতে
Hফ্ল্যাগ আছে, সেটি "হট" পদ্ধতি এবং এটি আগে থেকেই কম্পাইল করা উচিত।Sফ্ল্যাগ থাকা কোনও পদ্ধতি থেকে বোঝা যায় যে এটি এমন একটি পদ্ধতি যা স্টার্ট-আপে কল করা হয় এবং স্টার্ট-আপের সময় পদ্ধতি কম্পাইল ও ইন্টারপ্রেট করার খরচ এড়াতে আগে থেকেই কম্পাইল করা উচিত।Pফ্ল্যাগ আছে এমন কোনও পদ্ধতি থেকে বোঝা যায় যে এটি এমন একটি পদ্ধতি যা স্টার্ট-আপের পরে কল করা হয়।এই ফাইলে উপস্থিত কোনও ক্লাস ইঙ্গিত করে যে এটি স্টার্ট-আপের সময় ব্যবহার করা হয় এবং ক্লাস লোডিংয়ের খরচ এড়াতে হিপে আগে থেকেই বরাদ্দ করা উচিত।
এটি কীভাবে কাজ করে?
- লাইব্রেরি এইসব নিয়ম নির্ধারণ করতে পারে যা AAR আর্টিফ্যাক্টে প্যাকেজ করা হবে। এইসব আর্টিফ্যাক্ট অন্তর্ভুক্ত করে কোনও অ্যাপ তৈরি করা হলে, এইসব নিয়ম একসাথে মার্জ করা হয় এবং মার্জ করা নিয়মগুলি অ্যাপ-নির্দিষ্ট কম্প্যাক্ট বাইনারি ART প্রোফাইল তৈরি করতে ব্যবহার করা হয়। অ্যাপ ডিভাইসে ইনস্টল করা হলে, ART এই প্রোফাইল ব্যবহার করতে পারে যাতে অ্যাপ্লিকেশনের পারফর্ম্যান্স, বিশেষ করে প্রথমবার রান করার সময়, উন্নত করতে অ্যাপ্লিকেশনটির নির্দিষ্ট সাবসেট আগে থেকেই কম্পাইল করা যায়। মনে রাখবেন, এটি ডিবাগ করা যায় এমন অ্যাপ্লিকেশনের উপর কোনও প্রভাব ফেলবে না।
ভার্সন 1.0.0-beta08
২ জুন, ২০২১
androidx.compose.runtime:runtime-*:1.0.0-beta08 রিলিজ করা হয়েছে। 1.0.0-beta08 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
State<T>এখনState<out T>(I69049)ControlledCompositionআবার কম্পোজ করার সুবিধা চালু করতে API-তে পরিবর্তন সিঙ্গেল পাস আবার কম্পোজ করার ক্ষেত্রে পরিবর্তন। (Iaafd1, b/184173932)
ভার্সন 1.0.0-beta07
১৮ মে, ২০২১
androidx.compose.runtime:runtime-*:1.0.0-beta07 রিলিজ করা হয়েছে। 1.0.0-beta07 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- নতুন কম্পোজ কম্পাইলার API যোগ করা হয়েছে যা কম্পাইলারের মাধ্যমে তৈরি সোর্স তথ্যকে সোর্স মিনিফিকেশনের সময় সরিয়ে দেওয়ার অনুমতি দেয়। (Ia34e6)
ReusableContentযোগ করা হয়েছে যা কী পরিবর্তন করা হলে, কন্টেন্টে থাকা নোডগুলি পরিবর্তন না করে সেগুলি আবার ব্যবহার করার চেষ্টা করবে। কী পরিবর্তন করা হলে, কন্টেন্টের জন্য স্লট টেবিলে আগের ভ্যালু উপেক্ষা করা হয়। তবে, জেনারেট করা নোড এবং নোড আপডেট করার জন্য ব্যবহৃত ভ্যালু উপেক্ষা করা হয় না।ReusableComposeNodeযোগ করা হয়েছে যাComposeNode-এর ক্ষেত্রে করা হয় সেইভাবে পরিবর্তন না করে এমনিতেই নির্গত নোড আবার ব্যবহার করবে। (I1dd86)@ComposeCompilerApiআর@RequiresOptIn(Iab690)
সমস্যার সমাধান
- LazyColumn/Row এখন আগে থেকে দৃশ্যমান থাকা সর্বাধিক ২টি আইটেম অ্যাক্টিভ (ডিসপোজ করা হয়নি) রাখবে, এমনকি সেগুলি স্ক্রল করে সরিয়ে দেওয়া হলেও। এর ফলে, নতুন আইটেম কম্পোজ করার প্রয়োজন হলে কম্পোনেন্ট অ্যাক্টিভ সাবকম্পোজিশন আবার ব্যবহার করতে পারে, যা স্ক্রল করার পারফর্ম্যান্স উন্নত করে। (Ie5555)
ভার্সন 1.0.0-beta06
৫ মে, ২০২১
androidx.compose.runtime:runtime-*:1.0.0-beta06 রিলিজ করা হয়েছে। 1.0.0-beta06 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
@ComposeCompilerApiআর@RequiresOptIn(Iab690)
ভার্সন 1.0.0-beta05
২১ এপ্রিল, ২০২১
androidx.compose.runtime:runtime-*:1.0.0-beta05 রিলিজ করা হয়েছে। 1.0.0-beta05 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
- রেকর্ডিং স্ন্যাপশট রিড ও রাইটের জন্য
@InternalComposeApiসরানো হয়েছে (Id134d)
সমস্যার সমাধান
- ui-test-manifest এবং ui-tooling-data থেকে AndroidManifest ফাইল এখন Android 12-এর সাথে মানানসই (I6f9de, b/184718994)
ভার্সন 1.0.0-beta04
৭ এপ্রিল, ২০২১
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") } }এই পরিবর্তনের আগে,
countপ্যারামিটার আপডেট করা হলেওShowCountকম্পোজ করার উপযুক্ত ফাংশন সবসময় এড়িয়ে যাওয়া হত। এখন আর তা হয় না। (I5648a)ইনপুট প্যারামিটার (I1b110, b/182403380) সহ ব্যবহার করা হলে
rememberSaveable()পুরনো ভ্যালু রিস্টোর করার সময় হওয়া সমস্যার সমাধান করা হয়েছে
ভার্সন 1.0.0-beta03
২৪ মার্চ, ২০২১
androidx.compose.runtime:runtime-*:1.0.0-beta03 রিলিজ করা হয়েছে। 1.0.0-beta03 ভার্সনে এইসব কমিট আছে।
API-তে পরিবর্তন
DefaultMonotonicFrameClockবন্ধ করা হয়েছে।MonotonicFrameClockনা দিয়েwithFrameNanosবাRecomposer.runRecomposeAndApplyChanges-এ কল করলেIllegalStateExceptionদেখানো হবে। (I4eb0d)
ভার্সন 1.0.0-beta02
১০ মার্চ, ২০২১
androidx.compose.runtime:runtime-*:1.0.0-beta02 রিলিজ করা হয়েছে। 1.0.0-beta02 ভার্সনে এইসব কমিট রয়েছে।
সমস্যার সমাধান
- এক্সপেরিমেন্টাল API-এর (I6aa29, b/174531520) সর্বজনীন ব্যবহারের উপর বিধিনিষেধ আরোপ করা
- নেভিগেশন-কম্পোজের মধ্যে ব্যবহার করা হলে, ভাঙা
rememberSaveable { mutableStateOf(0) }ঠিক করা হয়। (I1312b, b/180042685, b/180701630)
ভার্সন 1.0.0-beta01
২৪ ফেব্রুয়ারি, ২০২১
androidx.compose.runtime:runtime-*:1.0.0-beta01 রিলিজ করা হয়েছে। 1.0.0-beta01 ভার্সনে এইসব কমিট আছে।
এটি হল Compose 1.0.0 Beta-এর প্রথম রিলিজ।
API-তে পরিবর্তন
- মূল
ফ্রেম লুপ থেকে বাতিল করা কম্পোজিশন আবার কম্পোজ করার জন্য
Recomposer.runRecomposeConcurrentlyAndApplyChangesপরীক্ষামূলক API যোগ করুন। (I342d0) - @ReadOnlyComposable হিসেবে চিহ্নিত যেকোনও কম্পোজ করার উপযুক্ত আইটেম এখন কম্পাইল-টাইম ভ্যালিডেট করা হয় যাতে নিশ্চিত করা যায় যে সেগুলি শুধুমাত্র অন্যান্য @ReadOnlyComposables-এ কল করে (I58961)
compositionLocalOfওstaticCompositionLocalOf-এর জন্যdefaultFactoryএখন প্রয়োজন, ঐচ্ছিক নয়।যেখানে কোনও ডিফল্ট ফ্যাক্টরি প্রদান করা হয়নি, সেখানে এই পরিবর্তনটি নন-নাল টাইপের জন্য সম্ভাব্য টাইপ সংক্রান্ত সমস্যা সরিয়ে দেয়। আগে এটি নন-নাল ধরনের জন্য একটি নাল রেফারেন্স প্রদান করত।
নাল হতে পারে এমন ধরনের জন্য,
{ null }কে ডিফল্ট ফ্যাক্টরি হিসেবে সাপ্লাই করার কথা বিবেচনা করুন।আমরা নাল মান গ্রহণ করে না এমন ধরনের লোকাল ভেরিয়েবল ব্যবহার করার সাজেশন দিই না, যদি না কোনও যুক্তিসঙ্গত ডিফল্ট মান প্রদান করা যায়। কোনও উপযুক্ত ডিফল্ট না থাকলে,
defaultFactorylambda-কে একটি ব্যতিক্রম দেখাতে হবে। তবে, কোনও ব্যতিক্রম ঘটানো মানে হল যে লোকালের কনজিউমারদের এটি প্রদান করার উপর একটি অন্তর্নিহিত নির্ভরতা থাকবে যা টাইপ সিস্টেম দ্বারা এনফোর্স করা হয় না। (Ifbd2a)কম্পোজ রানটাইম থেকে (I3252c) পুরনো হয়ে যাওয়া সিম্বল সরিয়ে দেওয়া হয়েছে
বন্ধ করে দেওয়া
emptyContent()সরিয়ে দেওয়া হয়েছে। পরিবর্তে{}ব্যবহার করুন। (Idb33f, b/179432510)Providers-এর নাম পরিবর্তন করে CompositionLocalProvider করা হয়েছে
- Composition কনস্ট্রাক্টর আর কোনও কী প্যারামিটার গ্রহণ করে না এবং এটি বন্ধ করে দেওয়া হয়েছে।
- currentCompositeKeyHash-কে কম্পোজেবল টপ লেভেল ফাংশনের পরিবর্তে কম্পোজেবল টপ লেভেল প্রপার্টিতে পরিবর্তন করা হয়েছে।
- CompositionData ও CompositionGroup-কে androidx.compose.runtime.tooling নেমস্পেসে সরানো হয়েছে
- ComposableLambda-কে কনক্রিট ক্লাসের পরিবর্তে ইন্টারফেস করা হয়েছে এবং এতে আর কোনও টাইপ প্যারামিটার নেই।
- ComposableLambdaN-কে কনক্রিট ক্লাসের পরিবর্তে ইন্টারফেস করা হয়েছে এবং এতে আর কোনও টাইপ প্যারামিটার নেই।
- snapshotFlow ফাংশনটি androidx.compose.runtime নেমস্পেসে সরানো হয়েছে
- SnapshotMutationPolicy-এর মার্জ করার পদ্ধতি আর পরীক্ষামূলক নয়
- @TestOnly টপ লেভেল clearRoots ফাংশন সরিয়ে দেওয়া হয়েছে। এটি আর প্রয়োজনীয় নয়।
- keySourceInfoOf ও resetSourceInfo ফাংশন সরিয়ে দেওয়া হয়েছে। সেগুলির আর প্রয়োজন নেই।
- Composer.collectKeySourceInformation সরিয়ে দেওয়া হয়েছে। এটি আর প্রয়োজনীয় নয়।
- isJoinedKey, joinedKeyLeft এবং joinedKeyRight পদ্ধতি সরিয়ে দেওয়া হয়েছে। সেগুলির আর প্রয়োজন নেই।
- বিভিন্ন টপ লেভেল API সরিয়ে দেওয়া হয়েছে এবং আলাদা আলাদা ফাইলে নতুন করে সাজানো হয়েছে। Kotlin-এর ফাইল ক্লাস সিম্যান্টিক্সের কারণে, এটি বাইনারি কম্প্যাটিবিলিটি ভেঙে দেবে, তবে সোর্স কম্প্যাটিবিলিটি ভাঙবে না, তাই বেশিরভাগ ব্যবহারকারীর জন্য এটি কোনও সমস্যা হওয়ার কথা নয়।
- (I99b7d, b/177245490)
SnapshotStateObserver আর পরীক্ষামূলক নয় (Id2e6a)
আগে বাতিল করা কিছু API মুছে দেওয়া হয়েছে (Ice5da, b/178633932)
নিম্নলিখিত Material API পরিবর্তন করা হয়েছে:
- ডিফল্ট প্যাডিং কাস্টমাইজ করার অনুমতি দিতে Top/BottomAppBar-এ contentPadding প্যারামিটার যোগ করা হয়েছে।
- প্রয়োজনীয় প্যারামিটারকে ঐচ্ছিক প্যারামিটারের আগে রাখার জন্য API নির্দেশিকা মেনে BackdropScaffold-এ প্যারামিটারগুলি আবার সাজানো হয়েছে।
selectedওonClick-এর পরে BottomNavigationItem-এiconপ্যারামিটার সরানো হয়েছে।- BottomNavigationItem-এ
alwaysShowLabelsপ্যারামিটারের নাম পরিবর্তন করেalwaysShowLabelকরা হয়েছে। - কয়েকটি কম্পোনেন্টে
bodyContentপ্যারামিটারের নাম পরিবর্তন করে শুধুcontentকরা হয়েছে। ButtonDefaults.buttonColors()-এ প্যারামিটার আবার সাজানো হয়েছে। মনে রাখবেন, প্যারামিটারের ধরন পরিবর্তন না হওয়ার কারণে, এটি আপনার কোডে কোনও সমস্যা সৃষ্টি করবে না - আপনি যে নামযুক্ত প্যারামিটার ব্যবহার করছেন তা নিশ্চিত করুন অথবা ম্যানুয়ালি অর্ডারিং আপডেট করুন, অন্যথায় আপনার কোড আগের মতো কাজ করবে না।darkColors()-এsecondaryVariantপ্যারামিটার যোগ করা হয়েছে। এই রঙটি সাধারণত ডার্ক থিমেsecondary-এর মতো একই রকম, তবে সামঞ্জস্য এবং আরও কাস্টমাইজেশনের জন্য যোগ করা হয়েছে।- পাবলিক API সারফেস থেকে ElevationDefaults এবং animateElevation() সরিয়ে দেওয়া হয়েছে কারণ সেগুলি সাধারণত ব্যবহার করা হয় না / প্রয়োজনীয় নয়।
Slider-এonValueChangeEnd-এর নাম পরিবর্তন করেonValueChangeFinishedকরা হয়েছে এবং এটিকে নাল করা হয়েছে।- সামঞ্জস্য বজায় রাখতে
Snackbar-এtextপ্যারামিটারের নাম পরিবর্তন করেcontentকরা হয়েছে। - ডিফল্ট প্যাডিং কাস্টমাইজ করার অনুমতি দিতে
DropdownMenuItem-এcontentPaddingপ্যারামিটার যোগ করা হয়েছে এবংRowScope-এcontent-কে এক্সটেনশন হিসেবে তৈরি করা হয়েছে। ModalDrawerLayout-এর নাম পরিবর্তন করেModalDrawerকরা হয়েছে।BottomDrawerLayout-এর নাম পরিবর্তন করেBottomDrawerকরা হয়েছে।- (I1cc66)
ভার্সন 1.0.0-alpha12
১০ ফেব্রুয়ারি, ২০২১
androidx.compose.runtime:runtime-*:1.0.0-alpha12 রিলিজ করা হয়েছে। 1.0.0-alpha12 ভার্সনে এই কমিটগুলি রয়েছে।
API-তে পরিবর্তন
- UiApplier থেকে ViewGroups-এর জন্য সহায়তা সরিয়ে দেওয়া হয়েছে। সিস্টেম থেকে বাতিল করা emitView কম্পোজ করার উপযুক্ত আইটেম সরিয়ে দেওয়া হয়েছে। (Ifb214)
- CompositionReference-এর নাম পরিবর্তন করে CompositionContext করা হয়েছে (I53fcb)
- ComponentActivity.setContent androidx.activity:activity-compose মডিউলের মধ্যে androidx.activity.compose.setContent-এ সরানো হয়েছে। (Icf416)
- API নির্দেশিকা মেনে চলার পাশাপাশি সর্বজনীন API থেকে ইন্টার্নাল ইমপ্লিমেন্টেশন ক্লাস লুকিয়ে রাখার জন্য Snapshot API আপডেট করা হয়েছে। (Id9e32)
- Ambient-এর নাম পরিবর্তন করে CompositionLocal-এর সাথে ম্যাচ করানো হয়েছে। আগে অ্যাম্বিয়েন্টকে 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 কম্পাইলার প্লাগ-ইন যে API-কে টার্গেট করে সেটি রিফ্যাক্টর করা হয়েছে যাতে কংক্রিট ক্লাসের পরিবর্তে ইন্টারফেস ব্যবহার করা যায়। এছাড়াও, ইন্টারফেসটি আর কোনও টাইপ প্যারামিটার ব্যবহার করে না।
এটি একটি ইন্টার্নাল পরিবর্তন যা সোর্স কোড কম্প্যাটিবিলিটির উপর প্রভাব ফেলবে না, তবে এটি একটি বাইনারি ব্রেকিং পরিবর্তন। (I3b922, b/169406779)
SnapshotMutableState যোগ করা হয়েছে (Icfd03)
DisposableEffectDisposable-এর নাম পরিবর্তন করে DisposaleEffectResult করা হয়েছে (Ica7c6)
Recomposer.current() সরানো হয়েছে। [Abstract]ComposeView এখন ডিফল্ট হিসেবে লেজি ক্রিয়েটেড, উইন্ডো-স্কোপড রিকম্পোজার ব্যবহার করে, যা উইন্ডোর জন্য ViewTreeLifecycleOwner দ্বারা পরিচালিত হয়। হোস্ট লাইফসাইকেল বন্ধ থাকাকালীন রিকম্পোজিশন এবং withFrameNanos-ভিত্তিক অ্যানিমেশন টিক পজ করা থাকে। (I38e11)
Recomposer.runningRecomposers এখন প্রসেসে চলমান কম্পোজিশন স্টেট পর্যবেক্ষণ করার জন্য রিড-অনলি RecomposerInfo-এর একটি গ্লোবাল StateFlow অফার করে। Recomposer.current()-এর পরিবর্তে এই API ব্যবহার করুন, এটি এখন অননুমোদিত। (If8ebe)
DisposableEffectDisposable-এর নাম পরিবর্তন করে DisposaleEffectResult রাখা হয়েছে (I3ea68)
ভার্সন 1.0.0-alpha11
২৮ জানুয়ারি, ২০২১
androidx.compose.runtime:runtime-*:1.0.0-alpha11 রিলিজ করা হয়েছে। 1.0.0-alpha11 ভার্সনে এই কমিটগুলি রয়েছে।
API-তে পরিবর্তন
- SideEffect এবং DisposableEffect API-এর (If760e) পরিবর্তে onCommit, onDispose এবং onActive বন্ধ করে দেওয়া হয়েছে
- emit() API এবং এর সব ওভারলোড বন্ধ করে দেওয়া হয়েছে এবং ComposeNode নামে রিনেম করা হয়েছে। APIগুলি একই রকম, শুধু Compose-এর (I4137b) নামকরণ সংক্রান্ত নিয়মাবলী মেনে চলার জন্য আলাদা নাম দেওয়া হয়েছে
- invalidate এবং compositionReference() এখন যথাক্রমে currentRecomposeScope এবং rememberCompositionReference-এর পরিবর্তে ব্যবহার করা হয়। (I583a8)
RememberObserver, CompositionLifecycleObserver -এর পরিবর্তে ব্যবহার করা হয় এবং CompositionLifecycleObserver এখন আর ব্যবহার করা হয় না।
RememberObserverহলCompositionLifecycleObserver-এর একটি রিপ্লেসমেন্ট, যার পরিবর্তিত সিম্যান্টিক্স ও রিনেম করা পদ্ধতি রয়েছে। নতুন API-তে পরিবর্তন করার কাজটি মেকানিক্যালি করা যেতে পারে যেসব অবজেক্ট শুধুমাত্র একবার মনে রাখা হয়, এটি হল সাজেস্ট করা প্র্যাকটিস এবং এটি চালিয়ে যেতে হবে। তবে, কোনও রেফারেন্স যদি কম্পোজিশনে একাধিকবার মনে রাখা হয়, তাহলেonRemembered-কে প্রতিটি রেফারেন্সের জন্য কল করা হয়, যেখানেonEnter-কে শুধুমাত্র একবার কল করা হয়।onEnterসাবকম্পোজিশনে অবজেক্ট ব্যবহার করা হলে একাধিকবার কল করা হয়, যেমনWithConstraintsওScaffold, এর ফলে সিঙ্গেলonEnterকল গ্যারান্টি নির্ভরযোগ্য থাকে না এবং এটিRememberObserver-এর জন্য সরিয়ে দেওয়া হয়েছে।RememberObserver,onAbandonedযোগ করে যা কল করা হয় যদিRememberObserverইনস্ট্যান্স,remember-এ পাস করা কলব্যাক থেকে ফেরত আসে কিন্তু কম্পোজিশন স্টেটে মনে রাখা না হয় এবং সেই কারণে,onRememberedকখনও কল করা হবে না। কম্পোজিশন সম্পূর্ণ হওয়ার আগে কোনও ব্যতিক্রম সেটি বন্ধ করে দিলে অথবা কম্পোজিশন বাতিল করা হলে এটি হতে পারে, কারণ যে স্টেটের জন্য কম্পোজিশন তৈরি করা হচ্ছিল সেটি আর বর্তমান নেই অথবা অন্য কোনও কারণে আর প্রয়োজন নেই।RememberObserverউপরের একটি রেফারেন্স সংক্রান্ত সাজেশন অনুসরণ করার উদাহরণটি যদি কোনও এক্সটার্নাল রিসোর্স ট্র্যাক করে, তাহলেonForgottenওonAbandonedদু'টিই ইঙ্গিত করে যে রিসোর্সটির আর প্রয়োজন নেই। অবজেক্টটি যদিonRemembered-এ শুরু হওয়া কাজ ট্র্যাক করে বা রিসোর্স বরাদ্দ করে, তাহলেonAbandonedএড়িয়ে যাওয়া যেতে পারে, কারণonRememberedকল করা হলে এটি কল করা হবে না। (I02c36)collectAsState()ফাংশনকে ইনলাইন হিসেবে চিহ্নিত করবেন না (Ia73e4)
সমস্যার সমাধান
- WithConstraints-এর নাম পরিবর্তন করে BoxWithConstraints করা হয়েছে এবং এটিকে foundation.layout-এ সরানো হয়েছে। (I9420b, b/173387208)
- টেস্টিংয়ে TestCoroutineDispatcher ব্যবহার করা (I532b6)
ভার্সন 1.0.0-alpha10
১৩ জানুয়ারি, ২০২১
androidx.compose.runtime:runtime-*:1.0.0-alpha10 রিলিজ করা হয়েছে। 1.0.0-alpha10 ভার্সনে এইসব কমিট রয়েছে।
ব্রেকিং পরিবর্তন
ইন্টার্নাল কম্পাইলারের রিস্ট্রাকচারিং API, কম্পোজিশনের ফলে তৈরি হওয়া নোডে করা পরিবর্তনগুলিকে কম্পোজিশনের "পরিবর্তন প্রয়োগ করুন" ফেজে ব্যাচ করতে দেয়, এটি সব
@Composableফাংশন সম্পূর্ণ হওয়ার পরে করা হয়।এটি একটি আচরণগত ব্রেকিং পরিবর্তন যা অ্যাপ্লিকেশন কোডকে প্রভাবিত করতে পারে কারণ পরিবর্তন প্রয়োগ না করা পর্যন্ত ইন্টার্নাল এবং পরীক্ষামূলক API থেকে নোড আর উপলভ্য নেই। এটি সাধারণত এই ধরনের ডিপেন্ডেন্সি সহ কোডকে
SideEffectকম্পোজ করার মাধ্যমে সমাধান করা যেতে পারে, যাতে নোড তৈরি ও ইনিশিয়ালাইজ না হওয়া পর্যন্ত কোড এক্সিকিউট না হয়। (I018da)
API-তে পরিবর্তন
- রিকম্পোজার পরিবর্তন প্রয়োগ করেছে কিনা তা ট্র্যাক করার একটি উপায় যোগ করা হয়েছে। (I1b3e2)
[Abstract]ComposeView API-কে আরও উন্নত করে, কম্পোজ-ভিত্তিক ভিউ রিসাইকেল করার সুবিধা দেওয়া হয়েছে। এর ফলে, কম্পোজিশন ডিসপোজ করে পরে আবার সেটি রিক্রিয়েট করা যাবে। চাইল্ড কম্পোজিশন তৈরি করার জন্য উইন্ডো-স্কোপড রিকম্পোজার এবং কম্পোজিশন রেফারেন্স ইনস্টল ও ডিসকভার করার জন্য API যোগ করুন।
[Abstract]ComposeViews-এর কম্পোজিশন ডিসপোজাল স্ট্র্যাটেজি কনফিগার করার জন্য ViewCompositionStrategy যোগ করুন; ডিফল্ট আচরণ হল উইন্ডো ডিটাচ করার সময় ডিসপোজ করা। (I860ab)
সমস্যার সমাধান
- Recomposer এখন তার বর্তমান অবস্থার একটি ফ্লো প্রকাশ করে, যা এর অ্যাক্টিভিটি এবং সংশ্লিষ্ট এফেক্টের অ্যাক্টিভিটি মনিটর করার অনুমতি দেয়। (Ifb2b9)
- nativeKeyEvent এখন keyEvent.nativeKeyEvent (I87c57, b/173086397) থেকে অ্যাক্সেস করা যাবে
ভার্সন 1.0.0-alpha09
১৬ ডিসেম্বর, ২০২০
androidx.compose.runtime:runtime-*:1.0.0-alpha09 রিলিজ করা হয়েছে। 1.0.0-alpha09 ভার্সনে এই কমিটগুলি রয়েছে।
API-তে পরিবর্তন
পাবলিক API থেকে SlotTable, SlotReader এবং SlotWriter সরানো হয়েছে। এগুলি আগে InternalComposeAPI হিসেবে চিহ্নিত করা হয়েছিল। এখন সেগুলি কম্পোজ মডিউলের অভ্যন্তরীণ।
কম্পোজিশন সংক্রান্ত তথ্য এক্সট্র্যাক্ট করার জন্য ui-tooling API-এর পরিবর্তে CompositionData ও CompositionGroup যোগ করা হয়েছে। এগুলি সর্বজনীন হলেও ui-tooling API-এর বাইরে ব্যবহারের জন্য উদ্দেশ্যপূর্ণ নয় কারণ এগুলি ui-tooling API-এর ব্যাখ্যা করা কাঁচা তথ্য প্রদান করে (I31a9c)
Applier ক্লাসকে আর (Id85b0) হিসেবে বিবেচনা করা হয় না
Applierইন্টারফেস পরিবর্তন করে ট্রি তৈরির প্রক্রিয়াকে আরও সহজ করা হয়েছে। এখন ট্রি উপর থেকে নিচে না তৈরি করে নিচ থেকে উপরে তৈরি করা হয়।insert()পদ্ধতির নাম পরিবর্তন করেinsertTopDown()করা হয়েছে।insertBottomUp()নামে একটি নতুন পদ্ধতি যোগ করা হয়েছে।যে অ্যাপ্লায়ার এডিট করছে, সেটি
insertTopDown()বাinsertBottomUp()ব্যবহার করে ট্রি-তে নোড যোগ করে। কোনটি ভালো পারফর্ম করছে তার উপর নির্ভর করে এটি করা হয়।LayoutNodeওView-এর মতো কিছু ট্রি, টপ-ডাউন পদ্ধতির তুলনায় বটম-আপ পদ্ধতিতে অনেক বেশি দক্ষতার সাথে তৈরি করা যায়। এই পরিবর্তনের আগে, বটম-আপ প্রয়োগ করার জন্য ইনসার্ট স্ট্যাকের প্রয়োজন ছিল, যা প্রতিটি অ্যাপ্লায়ারে কপি করতে হত এবং পারফর্ম্যান্সের জন্য বটম-আপ কনস্ট্রাকশনের প্রয়োজন ছিল। এই পরিবর্তনের ফলে,Applierনিচ থেকে উপরে ট্রি তৈরি করতেinsertBottomUp()এবং উপর থেকে নিচে ট্রি তৈরি করতেinsertTopDown()ওভাররাইড করে। (Icbdc2)কম্পোজ এমন প্রপার্টি গেটার ব্যবহার করে যা কম্পোজ করা যায় এমন ইনভোকেশন করতে পারে। এর জন্য সহায়তা বন্ধ করা হচ্ছে না, তবে প্রপার্টি গেটারকে @Composable হিসেবে ঘোষণা করার সিনট্যাক্স পরিবর্তন করা হচ্ছে।
এটি করার জন্য এখন বাতিল হয়ে যাওয়া সিনট্যাক্স হল প্রপার্টিতে নিজেই অ্যানোটেশন করা:
@Composable val someProperty: Int get() = ...এটি করার জন্য এখনকার সঠিক সিনট্যাক্স হল প্রপার্টির গেটারকে অ্যানোটেট করা:
val someProperty: Int @Composable get() = ...দুটি সিনট্যাক্সই কিছু সময় কাজ করবে, কিন্তু আগের সিনট্যাক্সটি বাতিল করা হয়েছে এবং সেটি কম্পাইল করার সময় সমস্যা দেখাবে। (Id9197)
সমস্যার সমাধান
- AndroidOwner ইন্টার্নাল (Ibcad0, b/170296980)
- subcomposeInto(LayoutNode) ইন্টার্নাল করা হয়েছে (Id724a)
ভার্সন 1.0.0-alpha08
২ ডিসেম্বর, ২০২০
androidx.compose.runtime:runtime-*:1.0.0-alpha08 রিলিজ করা হয়েছে। 1.0.0-alpha08 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- Compose নির্দেশিকা অনুযায়ী সামঞ্জস্য আছে কিনা তা চেক করতে, কম্পোজ করা যায় এমন ল্যাম্বডা প্যারামিটারের নাম ও পজিশনের জন্য লিন্ট চেক যোগ করা হয়েছে।
এছাড়াও, লিন্ট চেক ও নির্দেশিকা অনুযায়ী, কিছু API-এর ট্রেলিং ল্যাম্বডার নাম
childrenথেকেcontent-এ মাইগ্রেট করা হয়েছে। (Iec48e) - Recomposer আর EmbeddingContext গ্রহণ করে না; প্রয়োজনীয় শিডিউলিং সংক্রান্ত নির্ভরতা effectCoroutineContext থেকে পাওয়া যায়। FrameManager আর ব্যবহার করা হয় না; প্ল্যাটফর্ম ইন্টিগ্রেশনকে নিজস্ব গ্লোবাল স্ন্যাপশট হ্যান্ডলিং ইনিশিয়ালাইজ করতে হবে। (I02369)
- RestorableStateHolder.withRestorableState ফাংশনের নাম পরিবর্তন করে RestorableStateProvider করা হয়েছে (I66640)
সমস্যার সমাধান
Ambientনামের সাফিক্স সহ পুরনো হয়ে যাওয়া অ্যাম্বিয়েন্ট সরিয়ে দেওয়া হয়েছে এবং সেগুলির জায়গায় Ambient প্রিফিক্স সহ নতুন প্রপার্টি যোগ করা হয়েছে। এটি অন্যান্য অ্যাম্বিয়েন্ট ও Compose API নির্দেশিকা মেনে করা হয়েছে। (I33440)- পুরনো ui-test মডিউল ও এর স্টাব (I3a7cb) সরিয়ে দিন
ভার্সন 1.0.0-alpha07
১১ নভেম্বর ২০২০
androidx.compose.runtime:runtime-*:1.0.0-alpha07 রিলিজ করা হয়েছে। 1.0.0-alpha07 ভার্সনে এইসব কমিট আছে।
নতুন ফিচার
API-তে পরিবর্তন
@UnionTypeঅ্যানোটেশন বন্ধ করে দেওয়া হয়েছে (I57cde)- অ্যাম্বিয়েন্ট ভ্যালু প্রদান করার বিকল্প হিসেবে provideDefault যোগ করা হয়েছে এবং আগে থেকে কোনও অ্যাম্বিয়েন্ট ভ্যালু প্রদান করা না থাকলে, শুধুমাত্র তখনই সেট করা হবে এমন অ্যাম্বিয়েন্ট ভ্যালু নির্দিষ্ট করতে এটি ব্যবহার করা যেতে পারে। (Id6635, b/171024925)
- SideEffect এবং DisposableEffect API-এর সাথে সামঞ্জস্য বজায় রাখতে LaunchedTask-এর নাম পরিবর্তন করে LaunchedEffect করা হয়েছে। পেশাদার পদ্ধতিকে উৎসাহিত করতে, কোনও সাবজেক্ট প্যারামিটার ছাড়া LaunchedEffect ব্যবহার করার অনুমতি দেওয়া হয় না। (Ifd3d4)
- অ্যাপ্লায়ারে এখন onBeginChanges/onEndChanges কলব্যাক আছে যা Composer ট্রি-তে পরিবর্তন প্রয়োগ করা শুরু/শেষ করলে ইনভোক করা হয়। প্রয়োজন হলে, রিসোর্স ম্যানেজমেন্টের ব্যাচিংয়ের জন্য এগুলি ব্যবহার করা হতে পারে। (Icf476)
- Recomposer-কে এখন কনস্ট্রাকশনের সময় CoroutineContext প্রয়োজন (Ic4610)
- ইন্টার্নাল SlotTable ইমপ্লিমেন্টেশনে পরিবর্তন করা হয়েছে যা পাবলিক API-কে প্রভাবিত করবে না। (If9828)
- পুরনো হয়ে যাওয়া rxjava2 অ্যাডাপ্টার যা প্রাথমিক মান নেয় না তা সরিয়ে দেওয়া হয়েছে (Idb72f)
সমস্যার সমাধান
- foundation.Text আর ব্যবহার করা হয় না এবং এর পরিবর্তে material.Text ব্যবহার করা হয়। কোনও থিম থেকে ভ্যালু গ্রহণ করে না এমন সাধারণ, নিরপেক্ষ টেক্সট API-এর জন্য androidx.compose.foundation.BasicText দেখুন। (If64cb)
- BaseTextField বন্ধ করা হয়েছে। এর পরিবর্তে BasicTextField ব্যবহার করুন। (I896eb)
- লেআউট সম্পর্কিত একাধিক চিহ্ন androidx.compose.ui থেকে androidx.compose.layout.ui-তে সরানো হয়েছে। (I0fa98, b/170475424)
এক্সটার্নাল কন্ট্রিবিউশন
- কম্পোজ করার জন্য
runtime-rxjava3মডিউল যোগ করা হয়েছে।runtime-rxjava2-এর মতো (I02cbf)
ভার্সন 1.0.0-alpha06
২৮ অক্টোবর, ২০২০
androidx.compose.runtime:runtime-*:1.0.0-alpha06 রিলিজ করা হয়েছে। 1.0.0-alpha06 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- Recomposer এখন একটি CompositionReference এবং একটি বৈধ কম্পোজিশন পেরেন্ট। এখন অনেক কম জায়গায় এক্সপ্লিসিট রিকম্পোজার প্রয়োজন হয়। (I4036f)
- SideEffect-এ DisposableEffect কাউন্টারপার্ট API যোগ করা হয়েছে, যা
onCommit-with-params-এর ভূমিকা পালন করে, তবে এতে onDispose-এর প্রয়োজন হয়।
- রীকম্পোজিশন থেকে ডিসপোজেবল এফেক্ট বা লঞ্চডটাস্কের মতো চলমান বা দীর্ঘমেয়াদী প্রসেসে ডেটা প্রকাশ করতে rememberUpdatedState API যোগ করা হয়েছে।
- (Id50b9)
- MutableVector এখন RandomAccess (I85d73, b/170461551) প্রয়োগ করে
- কম্পোজিশনের মাধ্যমে ম্যানেজ করা অবজেক্টে কম্পোজিশনের পার্শ্বপ্রতিক্রিয়া প্রয়োগ করার জন্য SideEffect কম্পোজ করার উপযুক্ত আইটেম যোগ করা হয়েছে। SideEffect কম্পোজ করার উপযুক্ত onCommit-এর পরিবর্তে ব্যবহার করার জন্য তৈরি করা হয়েছে। (Ia77c2)
- নতুন পরীক্ষামূলক API RestorableStateHolder. এটি [savedInstanceState] ও [rememberSavedInstanceState]-এর সাথে সংজ্ঞায়িত অবস্থা সেভ করতে দেয় যাতে পরে আবার কম্পোজ করার সময় সেভ করা অবস্থা রিস্টোর করা যায়। (I66884, b/166586419)
সমস্যার সমাধান
- ComposeTestRule-এ ট্রানজিশন চালু করুন; ComposeTestRule থেকে ব্লিঙ্ক করা কার্সর চালু করার বিকল্প সরান। (If0de3)
ভার্সন 1.0.0-alpha05
১৪ অক্টোবর, ২০২০
androidx.compose.runtime:runtime-*:1.0.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha05-এ এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- এক্সপেরিমেন্টাল Modifier.pointerInput সাসপেন্ড করা ইনপুট মডিফায়ার (Ia77d2)
- প্রতিটি স্ক্রল করার সময় সাবকম্পোজিশনে কম কাজ করার মাধ্যমে LazyColumn/Row-এর স্ক্রল করার পারফর্ম্যান্স উন্নত করা হয়। Composition ক্লাসে নতুন hasInvalidations() মেথড যোগ করা হয়েছে। Recomposer থেকে hasPendingChanges() মেথডের নাম পরিবর্তন করে hasInvalidations() করা হয়েছে (Ib2f32, b/168293643, b/167972292, b/165028371)
- কম্পোজিশন থেকে কোরাউটিন লঞ্চ করার জন্য produceState API যোগ করুন
যা সময়ের সাথে সাথে একটি
State<T>ভ্যালু আপডেট করে (Id4a57) - Compose API নির্দেশিকা (I99a8e) অনুযায়ী launchInComposition-এর নাম পরিবর্তন করে LaunchedTask করা হয়েছে
- কাস্টম লেআউটে place() কলের ক্রম এখন চিলড্রেনদের (Ibc9f6) ড্র করার ক্রম নির্ধারণ করে
ভার্সন 1.0.0-alpha04
১ অক্টোবর, ২০২০
androidx.compose.runtime:runtime-*:1.0.0-alpha04 রিলিজ করা হয়েছে। 1.0.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।
API-তে পরিবর্তন
- লেআউট ও ড্রয়িং অবজারভেশন স্কোপের মেয়াদ শেষ হয়ে গেলে সেগুলি সংগ্রহ করার অনুমতি দিতে OwnerScope যোগ করা হয়েছে। (Ic4cf8)
- গণনার উপর ভিত্তি করে State অবজেক্ট তৈরি করতে derivedStateOf API যোগ করা হয়েছে যা অন্য State অবজেক্ট (If758b) পড়তে (এবং তা থেকে ডেটা পেতে) পারে
- SnapshotStateObserver-এর জন্য TestOnly API যোগ করা হয়েছে (I6e2a9)
সমস্যার সমাধান
- foundation.Box আর ব্যবহার করা যাবে না। পরিবর্তে foundation.layout.Box ব্যবহার করুন। (Ie5950, b/167680279)
ভার্সন 1.0.0-alpha03
১৬ সেপ্টেম্বর ২০২০
androidx.compose.runtime:runtime-*:1.0.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha03-এ এইসব কমিট আছে।
API-তে পরিবর্তন
CompositionCoroutineScopeআরMonotonicFrameClockপ্রয়োগ করে না।withFrameNanos-এর কলারদের স্পষ্টভাবে টপ-লেভেল ফাংশন ইমপোর্ট করতে হবে। (Icb642, b/166778123)
সমস্যার সমাধান
onNodeবাwaitForIdle-এর মতো গ্লোবাল টেস্টিং ফাংশন এখন সচল নেই, ComposeTestRule-এ (I7f45a) সংজ্ঞায়িত তাদের নতুন সমকক্ষদের কাছে মাইগ্রেট করুনlaunchInCompositionআর ডিসপ্যাচ না করা কোরাউটিন লঞ্চ করে না (Ief6af, b/166486000)
ভার্সন 1.0.0-alpha02
২ সেপ্টেম্বর, ২০২০
androidx.compose.runtime:runtime-*:1.0.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha02-এ এইসব কমিট আছে।
API-তে পরিবর্তন
- স্ন্যাপশট ডেটা পরিবর্তন কনজিউম ও প্রডিউস করার জন্য
snapshotFlowওwithMutableSnapshotAPI যোগ করা হয়েছে। (I3e722) কম্পোজেবল ফাংশনের কলিং কনভেনশন পরিবর্তিত হয়েছে। এটি বাইনারি ব্রেকিং পরিবর্তন। Compose কম্পাইলার প্লাগ-ইনের এই ভার্সনের সাথে কাজ করার জন্য সব লাইব্রেরি আবার কম্পাইল করতে হবে।
এই পরিবর্তন সোর্স লেভেলে কোনও ব্রেকিং পরিবর্তন তৈরি করে না, কারণ পরিবর্তিত API হল কম্পাইলার API যেগুলিতে একটি স্পষ্ট অপ্ট-ইন আছে। (I7afd2, b/158123185)
EmbeddingContext থেকে শিডিউল করার পদ্ধতি সরানো হয়েছে (I7b9be)
onPreCommit বাতিল করা হয়েছে; onCommit-এ এখন onPreCommit-এর ব্যবহার আছে।
onCommit এবং onActive এখন একই কোরিওগ্রাফার ফ্রেমে রান করে যা পরবর্তী কোরিওগ্রাফার ফ্রেমের শুরুতে নয় বরং কম্পোজিশন পরিবর্তনের সময় কমিট করা হয়। (I70403)
ভার্সন 1.0.0-alpha01
২৬ আগস্ট, ২০২০
androidx.compose.runtime:runtime-*:1.0.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha01-এ এইসব কমিট আছে।
ভার্সন 0.1.0-dev
ভার্সন 0.1.0-dev17
১৯ আগস্ট, ২০২০
androidx.compose.runtime:runtime-*:0.1.0-dev17 রিলিজ করা হয়েছে। ভার্সন 0.1.0-dev17-এ এইসব কমিট আছে।
API-তে পরিবর্তন
- কাস্টম এমিট এখন ঘোষণা করতে পারে যে এর এক বা একাধিক সেটার এমিট থেকে আলাদাভাবে এড়িয়ে যাওয়া ও আবার কম্পোজ করা যেতে পারে। (Ibbd13)
পুরনো হয়ে যাওয়া FrameManager কল সরানো হয়েছে।
ইন্টার্নাল কম্পোজ API-তে পরিবর্তন করা হয়েছে যাতে
mutableStateof()(I80ba6)-এর মতো স্টেট অবজেক্ট ট্র্যাক করার জন্য ওভারহেড কমানো যায়state { ... }কম্পোজ করার উপযুক্ত এখন আর ব্যবহার করা হয় না, এর পরিবর্তে স্পষ্টতার জন্যremember { mutableStateOf(...) }-এ এক্সপ্লিসিট কল করা হয়। এটি স্টেট ম্যানেজমেন্টের জন্য সামগ্রিক API সারফেস ও কনসেপ্টের সংখ্যা কমিয়ে দেয় এবং ক্লাস প্রপার্টি ডেলিগেশনের জন্যby mutableStateOf()প্যাটার্নের সাথে ম্যাচ করে। (Ia5727)Flow.collectAsState এখন Dispatchers.Main-এর পরিবর্তে কম্পোজিশন থেকে ডিফল্ট ডিসপ্যাচার নির্ধারণ করে। (I9c1d9)
লুপের মধ্যে স্টেট সেভ করে এমন কিছু ব্যবহার করা হলে ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে। এখন savedInstanceState()-এ একই কী থাকার অনুমতি দেওয়া হয়েছে, UiSavedStateRegistry-এর API এখন এই নতুন প্রয়োজনীয়তা অনুযায়ী অ্যাডজাস্ট করা হয়েছে (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)
সমস্যার সমাধান
emitViewবন্ধ করে দেওয়া হয়েছে। Compose-এর মধ্যে ভিউ এমিট করার জন্য সম্ভব হলেAndroidViewব্যবহার করুন। মনে রাখবেন, কম্পোজিশন ট্রি-তে এগুলি লিফ না হলে, সরাসরি Views ও ViewGroups কম্পোজ করা ভবিষ্যতে কাজ করবে না। এই ক্ষেত্রে, AndroidView ব্যবহার করে এটি করা যেতে পারে। (I29b1e, b/163871221)
ভার্সন 0.1.0-dev16
৫ আগস্ট, ২০২০
androidx.compose.runtime:runtime-*:0.1.0-dev16 রিলিজ করা হয়েছে। ভার্সন 0.1.0-dev16-এ এইসব কমিট আছে।
API-তে পরিবর্তন
mutableStateOf(),ambientOf()ওsavedInstanceStateOf()-এর ডিফল্ট মিউটেশন নীতি পরিবর্তন করেstructuralEqualityPolicy()করা হয়েছে, আগে এটিreferentialEqualityPolicy()ছিল।a
mutableStateOf()ইনস্ট্যান্সে অ্যাসাইন করা নতুন ভ্যালুকে পরিবর্তন হিসেবে বিবেচনা করা হবে কিনা তা নির্ধারণ করার ডিফল্ট মান এখন===ব্যবহার করার পরিবর্তে==ব্যবহার করে।https://kotlinlang.org/docs/reference/equality.html দেখুন
ambientOf()ওsavedInstanceStateOf()-এর প্রয়োগেmutableStateOf()ব্যবহার করা হয়, তাই সেগুলিকে পরিবর্তন করেmutableStateOf()-এর সাথে সামঞ্জস্যপূর্ণ করা হয়েছে।স্ট্রাকচারাল ইকুয়ালিটি ব্যবহার করা ডেভেলপারদের প্রত্যাশার সাথে আরও ভালোভাবে ম্যাচ করে।
যেমন,
val state = mutableStateOf(1f)এর পরে,
state.value = 1fstate-এ পরিবর্তন হিসেবে বিবেচনা করা হবে না এবং কম্পোজ করার সময়stateব্যবহার করলে আর রিকম্পোজ করতে হবে না।এটি একটি ব্রেকিং পরিবর্তন হলেও, বেশিরভাগ ক্ষেত্রে (যেমন,
equals()ওভাররাইড করে না এমন ক্লাস ব্যবহার করার সময়), এটি কোনও অ্যাপ্লিকেশনে বোঝার মতো প্রভাব ফেলবে না।dataক্লাসের মতোequals()ওভাররাইড করা ক্লাস, পারফর্ম্যান্সের অবনতি দেখতে পেতে পারে কারণ তাদেরequals()পদ্ধতি এখন, ডিফল্ট হিসেবে,mutableStateOf()-এ অ্যাসাইন করা হলে কল করা হয়।policy = referentialEqualityPolicy()-এ কল করার জন্যmutableStateOf(),ambientOf()এবংsavedInstanceStateOf()-এ নীতি প্যারামিটারpolicy = referentialEqualityPolicy()যোগ করে আগের আচরণ ফিরিয়ে আনা যেতে পারে। (Ic21a7)RowওColumnএখন ইনলাইন ফাংশন হিসেবে কাজ করে এবং এর ফলে এগুলি ব্যবহার করার ওভারহেড অনেক কমে যায়। (I75c10)
সমস্যার সমাধান
- setViewContent বন্ধ করা হয়েছে। এর পরিবর্তে setContent ব্যবহার করা উচিত। (I7e497, b/160335130)
MonotonicFrameAnimationClock যোগ করা হয়েছে যা আপনাকে নতুন কোরাউটিন ভিত্তিক ক্লক এবং API-এর মধ্যে গ্যাপ পূরণ করতে AnimationClockObservable হিসেবে MonotonicFrameClock ব্যবহার করতে দেয়। এগুলি এখনও পুরনো কলব্যাক ভিত্তিক ক্লক ব্যবহার করে।
ManualAnimationClock-এর সমতুল্য MonotonicFrameClock এখন ManualFrameClock. (I111c7, b/161247083)
Modifier.stateDraggable সম্পূর্ণভাবে নতুন করে তৈরি করা হয়েছে এবং এর নাম পরিবর্তন করে Modifier.swipeable রাখা হয়েছে। নতুন SwipeableState ক্লাস চালু করা হয়েছে এবং DrawerState ও BottomDrawerState-কে রিফ্যাক্টর করে এটি থেকে ইনহেরিট করা হয়েছে। [Modal/Bottom]DrawerLayout আর onStateChange প্যারামিটার নেয় না। (I72332, b/148023068)
Modifier.plus বন্ধ করা হয়েছে, এর পরিবর্তে Modifier.then ব্যবহার করুন। 'তারপর' শব্দটির মধ্যে ক্রম নির্দেশ করার একটি শক্তিশালী সিগন্যাল আছে, একই সাথে এটি
Modifier.padding().background() + anotherModifierটাইপ করাও নিষিদ্ধ করে, যা চেইন ভেঙে দেয় এবং পড়তে অসুবিধা হয় (Iedd58, b/161529964)SubcomposeLayout যোগ করা হয়েছে। এটি একটি লো লেভেল প্রিমিটিভ যা পরিমাপ করার সময় চাইল্ডদের কম্পোজ করতে দেয় যদি আমরা সাবট্রি কম্পোজিশনের জন্য পরিমাপ করার সময় পরে উপলভ্য হওয়া কিছু ভ্যালু ব্যবহার করতে চাই। যেমন, WithConstraints, SubcomposeLayout ব্যবহার করে প্রয়োগ করা হয় না। (I25cc8)
সবচেয়ে সহজ ও কাঙ্ক্ষিত API যাতে সহজে খুঁজে পাওয়া ও ব্যবহার করা যায় সেই জন্য Material FilledTextField-এর নাম পরিবর্তন করে TextField এবং foundational TextField-এর নাম পরিবর্তন করে BaseTextField রাখা হয়েছে (Ia6242, b/155482676)
Modifier.drawBackground-এর নাম পরিবর্তন করে Modifier.background করা হয়েছে (I13677)
ভার্সন 0.1.0-dev15
২২ জুলাই, ২০২০
androidx.compose.runtime:runtime-*:0.1.0-dev15 রিলিজ করা হয়েছে। 0.1.0-dev15 ভার্সনে এইসব কমিট আছে।
ডিপেন্ডেন্সি আপডেট
- Compose-এর
0.1.0-dev15ভার্সন ব্যবহার করতে, আপনাকে ডিপেন্ডেন্সি ঘোষণা করা বিভাগে উপরে দেখানো নতুন কোড স্নিপেট অনুযায়ী ডিপেন্ডেন্সি আপডেট করতে হবে।
API-তে পরিবর্তন
@Modelঅ্যানোটেশন এখন বন্ধ করে দেওয়া হয়েছে। বিকল্প হিসেবে state ও mutableStateOf ব্যবহার করুন। অনেক আলোচনা ও পর্যালোচনার পরে এই সিদ্ধান্ত নেওয়া হয়েছে।যুক্তি
যুক্তিগুলির মধ্যে এগুলি অন্তর্ভুক্ত থাকলেও তা শুধুমাত্র এগুলির মধ্যেই সীমাবদ্ধ থাকে না:
- API সারফেস এরিয়া ও আমাদের শেখাতে হবে এমন ধারণা কমায়
- অন্যান্য তুলনীয় টুলকিটের (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 } ) }বিকল্প ১:
State<OriginalClass>ব্যবহার করে কপি তৈরি করুন।Kotlin-এর ডেটা ক্লাসের মাধ্যমে এই পদ্ধতি আরও সহজ করে তোলা হয়েছে। মোটকথা, আগেকার সব
varপ্রপার্টিকে ডেটা ক্লাসেরvalপ্রপার্টিতে পরিবর্তন করুন, তারপরremember-এর পরিবর্তেstateব্যবহার করুন এবং ডেটা ক্লাসের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) } ) }বিকল্প ২: mutableStateOf ও প্রপার্টি ডেলিগেট ব্যবহার করা
Kotlin-এর প্রপার্টি ডেলিগেট এবং
mutableStateOfAPI-এর সাহায্যে এই পদ্ধতি আরও সহজ করা হয়েছে, যা আপনাকে কম্পোজিশনের বাইরে MutableState ইনস্ট্যান্স তৈরি করতে দেয়। মূলত,mutableStateOf-কে প্রপার্টি ডেলিগেট হিসেবে ব্যবহার করে, মূল ক্লাসের সবvarপ্রপার্টিকেvarপ্রপার্টি দিয়ে পরিবর্তন করুন। এর সুবিধা হল, ক্লাসের ব্যবহার মোটেই পরিবর্তন হবে না, শুধুমাত্র এর ইন্টার্নাল প্রয়োগ পরিবর্তন হবে। যদিও আচরণটি মূল উদাহরণের সাথে সম্পূর্ণভাবে অভিন্ন নয়, কারণ প্রতিটি প্রপার্টি এখন আলাদাভাবে পর্যবেক্ষণ/সাবস্ক্রাইব করা হয়, তাই এই রিফ্যাক্টরের পরে আপনি যে রিকম্পোজিশন দেখতে পাবেন তা আরও সীমিত হতে পারে (এটি ভাল)।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-এর কম্পাইলারের কোড জেনারেশন স্ট্র্যাটেজি পরিবর্তন করে। পরিবর্তনের আগে, কম্পোজ কম্পাইলার কলগুলিকে কম্পোজ করার উপযুক্ত ফাংশনে ট্রান্সফর্ম করত। এই পরিবর্তনের ফলে, আমরা এখন কম্পোজ করা যায় এমন ফাংশনের বডিকে ট্রান্সফর্ম করি এবং কলসাইটকে অপরিবর্তিত রাখি (বেশিরভাগ ক্ষেত্রে)।
এর অর্থ হল, কম্পোজ রানটাইমের সাথে যোগাযোগকারী বেশিরভাগ লজিক কলসাইটের পরিবর্তে ফাংশন বডির শুরুতে ঘটে।
কম্পোজের সব ব্যবহারের জন্য এটি সোর্স-মানানসই পরিবর্তন হতে হবে। এই পরিবর্তনের ফলে কম্পোজের বেশিরভাগ ব্যবহারকারীকে কোনও কোড আপডেট করতে হবে না।
এই কাজকে সমর্থন করার জন্য, সমস্ত কম্পোজ করা যায় এমন ফাংশনের JVM সিগনেচার পরিবর্তন করা হয়েছে। একটি প্যারামিটার গ্রহণকারী কম্পোজ করার উপযুক্ত ফাংশনকে ৩টি প্যারামিটার গ্রহণকারী ফাংশনে রূপান্তরিত করা হয়, অতিরিক্ত প্যারামিটারগুলি হল কম্পোজার, একটি ‘কী’ ইন্টিজার, কল করার মাধ্যমে মেটাডেটা প্রচার করতে ব্যবহৃত বিটমাস্ক ইন্টিজার।
এছাড়াও, 'কম্পোজ করো' এখন ডিফল্ট আর্গুমেন্টকে কম্পোজ করার উপযুক্ত ফাংশনে ট্রান্সফর্ম করে। এটি ফাংশনের অতিরিক্ত সিন্থেটিক ডিফল্ট ওভারলোড যোগ না করেই এটি করে, তাই এই পরিবর্তনের ফলে কম ফাংশন সংজ্ঞায়িত করা হবে।
এর ফলে পরিচিত ইচ্ছাকৃত আচরণগত পরিবর্তন:
- আগে যেখানে এড়িয়ে যাওয়া হত না, সেখানে কিছু কল এড়িয়ে যাওয়া হবে
- ডিফল্ট আর্গুমেন্ট এক্সপ্রেশনে কম্পোজ করা যায় এমন এক্সপ্রেশন এখন সঠিকভাবে সাবস্ক্রাইব করা ও ম্যানেজ করা হয়
এই কাজের মধ্যে কিছু অপ্টিমাইজেশন অন্তর্ভুক্ত ছিল: ১. প্যারামিটার তুলনা করার ফলাফল কল গ্রাফের মাধ্যমে অন্যান্য কম্পোজ করা যায় এমন ফাংশনে প্রোপাগেট করা হয়। এর ফলে রানটাইমে কম তুলনা করতে হবে, স্লট টেবিলের সাইজ কমে যাবে এবং কম্পোজ করার উপযুক্ত ফাংশন আরও বেশি করে এড়িয়ে যাওয়া যাবে, যেগুলি আগে এড়িয়ে যাওয়া হত না ২. কম্পাইল করার সময় যে প্যারামিটারগুলিকে "স্ট্যাটিক" হিসেবে নির্ধারণ করা হয়, সেগুলিকে আর রানটাইমে তুলনা বা স্টোর করা হয় না। এর ফলে তুলনা করার সংখ্যা কমে যায় এবং স্লট টেবিলের সাইজও কমে যায়। ৩. তৈরি হওয়া গ্রুপের সংখ্যা কমানোর জন্য ফাংশনের বডির কন্ট্রোল ফ্লো স্ট্রাকচার ব্যবহার করা হয়। এর ফলে স্লট টেবিলের সাইজ কমে যায় এবং রানটাইম ৪-এর কাজও কমে যায়। ফাংশনের মধ্যে ব্যবহার না করা হলে, ফাংশনের স্কিপ করার উপযুক্ততা নির্ধারণ করার সময় ফাংশনে পাঠানো ও ফাংশন থেকে পাওয়া প্যারামিটার অন্তর্ভুক্ত করা হয় না।
বেশিরভাগ ব্রেকিং পরিবর্তন সেইসব API-এর জন্য করা হয়েছে যেগুলিকে কম্পাইলার সরাসরি টার্গেট করে এবং Compose-এর সাধারণ ব্যবহার প্রভাবিত হবে না: ১. Composer::startExpr সরানো হয়েছে ২. Composer::endExpr সরানো হয়েছে ৩. Composer::call বাতিল করা হয়েছে ৪.
key-এর নন-ভারআর্গ ওভারলোড সরিয়ে দেওয়া হয়েছে। এরপর থেকেvarargভার্সন ব্যবহার করুন। ৫. Pivotal অ্যানোটেশন বন্ধ করে দেওয়া হয়েছে। পরিবর্ত হিসেবেkeyব্যবহার করুন। ৬. ScopeUpdateScope::updateScope-কে পরিবর্তন করে Function1-এর পরিবর্তে Function3 করা হয়েছে ৭. restartableFunction ও restartableFunctionN-কে আপডেট করে অতিরিক্ত কম্পাইল টাইম প্যারামিটার যোগ করা হয়েছে (I60756, b/143464846)MutableVector-এ sortWith ও removeRange যোগ করা হয়েছে (Icccf7)
CompositionLifecycleObserver-এর জন্য ডিফল্ট মেথড ইমপ্লিমেন্টেশন যোগ করা হয়েছে (I24289)
কম্পোজিশন ডিসপোজ করার জন্য এখন অ্যাপ্লায়ারের clear() মেথড প্রয়োজন হয় (Ibe697)
MutableVector-এ asMutableList() যোগ করা হয়েছে যাতে এটি সম্পূর্ণ তালিকা কপি না করেই পাবলিক API-তে পাস করা যায়। (I298df)
ইভেন্টের উত্তরে জব লঞ্চ করার জন্য কম্পোজিশনে ম্যানেজ করা CoroutineScope পেতে rememberCoroutineScope() যোগ করা হয়েছে। (I0e264)
MutableVector হল একটি নতুন সংগ্রহ যা কোনও স্ট্যান্ডার্ড Collection ইন্টারফেস ইমপ্লিমেন্ট করে না। এই সংগ্রহ অন্যান্য প্রয়োজনীয়তার তুলনায় বেশি স্পিড প্রদান করে এবং এটি শুধুমাত্র ইন্টার্নাল প্রয়োগের ক্ষেত্রে ব্যবহার করার জন্য তৈরি করা হয়েছে। (I8ebd6)
Kotlin compose-এর প্রয়োজনীয় ভার্সনে সমস্যা এড়াতে
StableMutableListওStableMutableMapসাময়িকভাবে সরানো হয়েছে। Compose-কে Kotlin-এর এমন কোনও ভার্সনে আপডেট করা হলে, যেটিতে এই সমস্যা নেই, তখন এইসব ইন্টারফেস আবার চালু করা হবে।SnapshotStateListওSnapshotStateMapএখন সর্বজনীন করা হয়েছে, তবেStableMutableListওStableMutableMapফিরিয়ে আনা হলে এগুলি আর ব্যবহার করা যাবে না। (Ia7769)অ্যানিমেশন টাইমিংয়ের জন্য top-level withFrameNanos ফাংশন যোগ করা হয়েছে (Ie34c5)
@Untracked অ্যানোটেশন পুরনো হয়ে গেছে। @ComposableContract(tracked=false) (Id211e) দিয়ে পাল্টান
RestartableFunction ও সংশ্লিষ্ট API-এর নাম পরিবর্তন করে ComposableLambda ইত্যাদি করা হয়েছে। এই API শুধুমাত্র কম্পাইলারের দ্বারা টার্গেট করা হয়েছিল, তাই এটি সোর্স লেভেল কম্প্যাটিবিলিটিকে সাধারণত প্রভাবিত করবে না। এই ক্লাসের নাম পরিবর্তন করার মূল উদ্দেশ্য হল, স্ট্যাক ট্রেসে (I7eb25) এটি দেখা গেলে, এটি কী তা আরও ভালোভাবে বোঝানো
ক্লাসে @Composable অ্যানোটেশন আর বৈধ নয় (Ia5f02)
Ambient<T>এখন @Immutable-এর পরিবর্তে @Stable (I0b4bb)এই পরিবর্তনের আগে, @Composable ফাংশনের মধ্যে কনস্ট্রাক্টরদের কাছে কল ইন্টারসেপ্ট করার জন্য কম্পোজ কম্পাইলার প্লাগ-ইন ব্যবহার করা হত, যদি সেখানে (I5205a, b/158123804) থাকে
Recompose কম্পোজ করার উপযুক্ত আর কোনও কার্যকর অ্যাবস্ট্রাকশন নয়। MutableState অ্যাসাইনমেন্টের ফলে বেশিরভাগ রিকম্পোজিশন হওয়া উচিত। এর বাইরে কিছু করার প্রয়োজন হলে, বর্তমান স্কোপের রিকম্পোজিশন ট্রিগার করার জন্য
invalidateফাংশন ব্যবহার করার সাজেশন দেওয়া হয়। (Ifc992)'পর্যবেক্ষণ করা' আর কোনও কার্যকর অ্যাবস্ট্রাকশন নয়। আপনাকে এটি রেপ্লিকেট করতে হলে, একটি কম্পোজ করার উপযুক্ত ফাংশন তৈরি করে এর প্রয়োগ রেপ্লিকেট করা যেতে পারে যা একটি কম্পোজ করার উপযুক্ত ল্যাম্বডা প্যারামিটার এক্সিকিউট করে। যেমন,
@Composable fun Observe(body: @Composable () -> Unit) = body()(I40d37)@Direct-এর পরিবর্তে @ComposableContract(restartable=false) ব্যবহার করার পরামর্শ দেওয়া হয়েছে (If4708)
সম্প্রতি চালু হওয়া StateFlow-এর জন্য একটি অ্যাডাপ্টার যোগ করা হয়েছে যা আমাদের প্রাথমিক ভ্যালু আগে থেকেই পূরণ করতে দেয়, ফলে রিটার্ন করা স্টেটটি নন-নাল (I61dd8, b/156233789)
Flow-এর জন্য অ্যাডাপ্টার যোগ করা হয়েছে। ব্যবহারের উদাহরণ: val value by flow.collectAsState() (If2198, b/153375923)
[পরিবর্তনযোগ্য]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 বন্ধ করা হয়েছে। এর পরিবর্তেsetContent-এর মাধ্যমে রিটার্ন করাComposition-এdisposeপদ্ধতি ব্যবহার করুন। androidx.compose.Compose.subcomposeInto androidx.ui.core.subcomposeInto-এ সরানো হয়েছে ComponentNode#emitInsertAt-এর নাম পরিবর্তন করে ComponentNode#insertAt করা হয়েছে ComponentNode#emitRemoveAt-এর নাম পরিবর্তন করে ComponentNode#removeAt করা হয়েছে ComponentNode#emitMode-এর নাম পরিবর্তন করে ComponentNode#move করা হয়েছে (Idef00)ComposeFlags.COMPOSER_PARAMফ্ল্যাগ আপডেট করেtrueকরা হয়েছে, এর ফলে কম্পোজ প্লাগ-ইনের কোড জেনারেশন স্ট্র্যাটেজি পরিবর্তিত হবে। মোটামুটিভাবে, এর ফলে @Composable ফাংশন অতিরিক্ত সিন্থেটিক প্যারামিটার সহ জেনারেট হয়, যা রানটাইমকে সঠিকভাবে এক্সিকিউশন ম্যানেজ করার জন্য পরবর্তী @Composable কলে পাস করা হয়। এটি একটি গুরুত্বপূর্ণ বাইনারি ব্রেকিং পরিবর্তন, তবে কম্পোজের অনুমোদিত সমস্ত ব্যবহারে সোর্স-লেভেল কম্প্যাটিবিলিটি বজায় রাখা উচিত। (I7971c)অ্যাম্বিয়েন্ট 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() (I8cf68, b/152331508)
নতুন ফাংশন: savedInstanceState() এবং rememberSavedInstanceState()। এগুলি state() এবং remember()-এর মতো হলেও, এগুলিতে বিল্ট-ইন সেভ করা ইনস্ট্যান্স স্টেট সাপোর্ট আছে (If1987, b/152025209)
সমস্যার সমাধান
runOnIdleCompose-এর নাম পরিবর্তন করেrunOnIdleকরা হয়েছে (I83607)- Made LayoutNode experimental API (I4f2e9)
- androidx.ui.foundation.TextFieldValue এবং androidx.ui.input.EditorValue বন্ধ করা হয়েছে। TextField, FilledTextField এবং CoreTextField কম্পোজ করার উপযুক্ত আইটেম যা এই ধরনের আইটেম ব্যবহার করে সেগুলিও বাতিল করা হয়েছে। এর পরিবর্তে androidx.ui.input.TextFieldValue ব্যবহার করুন (I4066d, b/155211005)
- Modifier-এ drawBackground extension API-এর পরিবর্তে বন্ধ হয়ে যাওয়া DrawBackground API সরিয়ে দেওয়া হয়েছে। কোড পাথ কমানোর পাশাপাশি কম্পোজিশনের অংশ হিসেবে Modifier তৈরি করার প্রয়োজনীয়তা দূর করতে কালার, ব্রাশ ও পেইন্ট drawBackground ইমপ্লিমেন্টেশন রিফ্যাক্টর করা হয়েছে। (I0343a)
- আপডেট করা উন্নত লেভেলের কম্পোজ API যা Canvas-কে এক্সপোজ করে পরিবর্তে CanvasScope-কে এক্সপোজ করে। এর ফলে গ্রাহকদের নিজস্ব Paint অবজেক্ট ম্যানেজ করার প্রয়োজন হয় না। যেসব গ্রাহকের এখনও Canvas অ্যাক্সেস করার প্রয়োজন তারা drawCanvas এক্সটেনশন মেথড ব্যবহার করতে পারেন, যা অন্তর্নিহিত Canvas-এর সাথে ড্রয়িং কমান্ড ইস্যু করার জন্য কলব্যাক প্রদান করে। (I80afd)
- WithConstraints ট্রেলিং ল্যাম্বডা API পরিবর্তন করা হয়েছে। এখন দুটি প্যারামিটারের পরিবর্তে এতে একটি রিসিভার স্কোপ আছে যা সীমাবদ্ধতা এবং layoutDirection ছাড়াও Dp-তে (I91b9a, b/149979702) minWidth, maxWidth, minHeight এবং maxHeight প্রপার্টি প্রদান করে
- সিমেট্রিক প্যাডিং মডিফায়ার যোগ করা হয়েছে। (I39840)
- যেকোনও অ্যালাইনমেন্টের পরিবর্তে উল্লম্ব বা অনুভূমিক অ্যালাইনমেন্টের প্রত্যাশা করতে wrapContentWidth ও wrapContentHeight আপডেট করা হয়েছে। উল্লম্ব বা অনুভূমিক অ্যালাইনমেন্ট গ্রহণ করার জন্য গ্র্যাভিটি মডিফায়ার আপডেট করা হয়েছে। কাস্টম কন্টিনিউয়াস অ্যালাইনমেন্ট কাজ করার জন্য সারি, কলাম ও স্ট্যাক আপডেট করা হয়েছে। (Ib0728)
- ui-text মডিউলের নাম পরিবর্তন করে ui-text-core রাখা হয়েছে (I57dec)
- DrawModifier API উন্নত করা:
- draw() ContentDrawScope-এর জন্য রিসিভার স্কোপ তৈরি করা হয়েছে
- draw()-এ সব প্যারামিটার সরিয়ে দেওয়া হয়েছে
- DrawScope-এর ইন্টারফেস আগের CanvasScope-এর মতোই
- ContentDrawScope-এ drawContent() মেথড আছে (Ibaced, b/152919067)
- ColoredRect আর ব্যবহার করা যাবে না। পরিবর্তে
Box(Modifier.preferredSize(width, height).drawBackground(color))ব্যবহার করুন। (I499fa, b/152753731) - ফ্যাক্টরি এক্সটেনশন ফাংশন (I225e4) দিয়ে মডিফায়ার প্লাস অপারেটর পরিবর্তন করা হয়েছে
- RowScope ও ColumnScope মেম্বার এখন সারি ও কলামের বাইরে অ্যাক্সেস করা যাবে। (I3a641)
- LayoutFlexible-এর নাম পরিবর্তন করে LayoutWeight করা হয়েছে। টাইট প্যারামিটারের নাম পরিবর্তন করে ফিল করা হয়েছে। (If4738)
- WithConstraints-এ LayoutDirection প্যারামিটার আছে (I6d6f7)
- ব্যাকগ্রাউন্ডের নাম পরিবর্তন করে DrawBackground করা হয়েছে এবং এটি ডিফল্ট হিসেবে মেমোরাইজ করা হবে (Ia0bd3)
- আলাদা আলাদা ফাংশন সহ ButtonStyle পরিবর্তন করা হয়েছে এবং টেক্সট (স্ট্রিং) ওভারলোড সরিয়ে দেওয়া হয়েছে। ব্যবহার সংক্রান্ত তথ্যের জন্য আপডেট করা নমুনা দেখুন। (If63ab, b/146478620, b/146482131)
runOnIdleComposeওrunOnUiThreadএখন ComposeTestRule-এর মেথড না হয়ে গ্লোবাল ফাংশন হয়ে গেছে। (Icbe8f)
এক্সটার্নাল কন্ট্রিবিউশন
- Compose Runtime পোর্টিং লেয়ার থেকে Looper ও Handler-এর মতো অপ্রয়োজনীয় API সরিয়ে দিন (I6847d)
- কোনও প্রাথমিক ভ্যালু ছাড়া
Flow<T>.collectAsState()সরিয়ে দিন। এর পরিবর্তেStateFlow<T>ব্যবহার করুন অথবা স্পষ্ট প্রাথমিক ভ্যালু পাস করুন। (I63f98, b/157674865)