Skip to content

リリースとAPI互換性ガイド

INFO

このページでは、Koinの主要なリリースごとに包括的な概要を提供し、フレームワークの進化を詳しく説明することで、アップグレードの計画と互換性の維持に役立てることができます。

各バージョンについて、このドキュメントは以下のセクションで構成されています。

  • Kotlin: リリースで使用されるKotlinのバージョンを指定し、言語の互換性を明確にし、最新のKotlin機能を利用できるようにします。
  • New: 機能性と開発者エクスペリエンスを向上させるために新しく導入された機能と改善点を強調します。
  • Experimental: 実験的としてマークされたAPIと機能を一覧表示します。これらは現在活発に開発中であり、コミュニティからのフィードバックに基づいて変更される可能性があります。
  • Deprecated: 非推奨とマークされたAPIと機能を特定し、推奨される代替案に関するガイダンスとともに、将来の削除に備えるのに役立ちます。
  • Breaking: 後方互換性を損なう可能性のある変更点を詳しく説明し、移行中に必要な調整を把握できるようにします。

この構造化されたアプローチは、各リリースにおける段階的な変更を明確にするだけでなく、Koinプロジェクトにおける透明性、安定性、継続的な改善への私たちのコミットメントを強化します。

4.0.3

NOTE

Kotlin 2.0.21 を使用

使用されているすべてのライブラリバージョンは libs.versions.toml にあります。

New 🎉

koin-core

  • KoinPlatformTools.generateId() - Kotlinの新しいバージョンにより、新しい kotlin.uuid.uuid APIの恩恵を受けることができます。KoinPlatformTools.generateId() Koin関数は、この新しいAPIを使用してプラットフォーム間で実際のUUIDを生成するようになりました。

koin-viewmodel

  • Koin 4.0では、Google/Jetbrains KMP APIを共通化する新しいViewModel DSL & APIが導入されました。コードベース全体での重複を避けるため、ViewModel APIは現在koin-core-viewmodelおよびkoin-core-viewmodel-navigationプロジェクトに配置されています。
  • ViewModel DSLのインポートはorg.koin.core.module.dsl.*です。

指定されたプロジェクトにおける以下のAPIは、現在安定版です。

koin-core-coroutines - すべてのAPIが現在安定版です

  • all lazyModules
  • awaitAllStartJobs, onKoinStarted, isAllStartedJobsDone
  • waitAllStartJobs, runOnKoinStarted
  • KoinApplication.coroutinesEngine
  • Module.includes(lazy)
  • lazyModule()
  • KoinPlatformCoroutinesTools

Experimental 🚧

koin-test

  • ParameterTypeInjection - Verify APIのための動的なパラメータインジェクションを設計するのに役立つ新しいAPI

koin-androidx-startup

  • koin-androidx-startup - AndroidX Startupを使用してKoinを開始する新しい機能で、androidx.startup.Initializer APIを使用します。koin-androidx-startup内のすべてのAPIは実験的です。

koin-compose

  • rememberKoinModules - @Composableコンポーネントに基づいてKoinモジュールをロード/アンロード
  • rememberKoinScope - @Composableコンポーネントに基づいてKoinスコープをロード/アンロード
  • KoinScope - すべての下層のComposable子孫のためにKoinスコープをロード

Deprecation ⚠️

以下のAPIは非推奨となり、もはや使用すべきではありません。

  • koin-test

    • checkModulesのすべてのAPI。Verify APIに移行してください。
  • koin-android

    • koin-coreの新しい一元化されたDSLを優先するViewModel DSL
  • koin-compose-viewmodel

    • koin-coreの新しい一元化されたDSLを優先するViewModel DSL
    • 関数koinNavViewModelは非推奨となり、koinViewModelが推奨されます。

Breaking 💥

以下のAPIは、前回のマイルストーンでの非推奨化により削除されました。

NOTE

@KoinReflectAPIでアノテーションされたすべてのAPIは削除されました。

koin-core

  • ApplicationAlreadyStartedExceptionKoinApplicationAlreadyStartedException に名称変更されました。
  • KoinScopeComponent.closeScope() は内部的に使用されなくなったため削除されました。
  • 内部の ResolutionContextInstanceContext を置き換えるために移動されました。
  • KoinPlatformTimeToolsTimermeasureDuration は削除され、代わりにKotlin Time APIを使用するようになりました。
  • KoinContextHandlerGlobalContext を優先して削除されました。

koin-android

  • すべての状態ViewModel APIはエラーレベルで非推奨です。
    • stateViewModel()getStateViewModel() は、代わりに viewModel() を使用してください。
    • getSharedStateViewModel()sharedStateViewModel() は、代わりに viewModel() または共有インスタンスには activityViewModel() を使用してください。
  • 関数 fun Fragment.createScope() は削除されました。
  • ViewModelファクトリに関するすべてのAPI(主に内部的なもの)は、新しい内部構造のために再構築されました。

koin-compose

  • 古いCompose API関数はエラーレベルで非推奨です。
    • 関数 inject()koinInject() を優先して削除されました。
    • 関数 getViewModel()koinViewModel() を優先して削除されました。
    • 関数 rememberKoinInject()koinInject() に移動されました。
  • 内部的に使用されなくなったため、StableParametersDefinition は削除されました。
  • すべてのLazy ViewModel API(古い viewModel())は削除されました。
  • 内部的に使用されなくなったため、rememberStableParametersDefinition() は削除されました。

3.5.6

NOTE

Kotlin 1.9.22 を使用

使用されているすべてのライブラリバージョンは libs.versions.toml にあります。

New 🎉

koin-core

  • KoinContext に以下の機能が追加されました。
    • fun loadKoinModules(module: Module, createEagerInstances: Boolean = false)
    • fun loadKoinModules(modules: List<Module>, createEagerInstances: Boolean = false)
  • koinApplication() 関数は現在、複数の形式で使用可能です。
    • koinApplication(createEagerInstances: Boolean = true, appDeclaration: KoinAppDeclaration? = null)
    • koinApplication(appDeclaration: KoinAppDeclaration?)
    • koinApplication(createEagerInstances: Boolean)
  • 宣言スタイルを開くのに役立つ KoinAppDeclaration
  • JS向けAPI Timeを使用するための KoinPlatformTimeTools
  • iOS - Touchlab Lockable APIを使用するための synchronized API

koin-androidx-compose

  • Android環境から現在のKoinコンテキストにバインドするための新しい KoinAndroidContext

koin-compose

  • 現在のデフォルトコンテキストで新しい KoinContext コンテキストを起動

koin-ktor

  • 現在、Ktorインスタンスに隔離されたコンテキストを使用します(デフォルトコンテキストの代わりに Application.getKoin() を使用)。
  • Koinプラグインに新しいモニタリング機能が導入されました。
  • Ktorリクエストにスコープインスタンスを許可する RequestScope

Experimental 🚧

koin-android

  • ViewModelScope はViewModelスコープ向けの実験的なAPIを導入します。

koin-core-coroutines - バックグラウンドでモジュールをロードするための新しいAPIを導入

Deprecation ⚠️

koin-android

  • getLazyViewModelForClass() APIは非常に複雑であり、デフォルトのグローバルコンテキストを呼び出します。Android/Fragment APIにこだわることをお勧めします。
  • resolveViewModelCompat()resolveViewModel() を優先して非推奨となりました。

koin-compose

  • 関数 get()inject()koinInject() を優先して非推奨となりました。
  • 関数 getViewModel()koinViewModel() を優先して非推奨となりました。
  • 関数 rememberKoinInject()koinInject() を優先して非推奨となりました。

Breaking 💥

koin-core

  • Koin.loadModules(modules: List<Module>, allowOverride: Boolean = true, createEagerInstances : Boolean = false)Koin.loadModules(modules: List<Module>, allowOverride: Boolean = true) を置き換えます。
  • プロパティ KoinExtension.koin は関数 KoinExtension.onRegister() に移動されました。
  • iOS - internal fun globalContextByMemoryModel(): KoinContextMutableGlobalContext を使用するようになりました。

koin-compose

  • 関数 KoinApplication(moduleList: () -> List<Module>, content: @Composable () -> Unit)KoinContext および KoinAndroidContext を優先して削除されました。

3.4.3

NOTE

Kotlin 1.8.21 を使用

New 🎉

koin-core

  • Koinのエクステンションエンジンを記述するのに役立つ新しいExtensionManager API - ExtensionManager + KoinExtension
  • parameterArrayOfparameterSetOf を用いたParameters APIの更新

koin-test

  • Verification API - モジュールに対して verify を実行するのに役立ちます。

koin-android

  • ViewModelインジェクションのための内部実装
  • AndroidScopeComponent.onCloseScope() 関数コールバックを追加

koin-android-test

  • Verification API - モジュールに対して androidVerify() を実行するのに役立ちます。

koin-androidx-compose

  • 新しい get()
  • 新しい getViewModel()
  • 新しいスコープ KoinActivityScopeKoinFragmentScope

koin-androidx-compose-navigation - ナビゲーション用の新しいモジュール

  • 新しい koinNavViewModel()

koin-compose - Compose向けの新しいマルチプラットフォームAPI

  • koinInject, rememberKoinInject
  • KoinApplication

Experimental 🚧

koin-compose - Compose向けの新しい実験的なマルチプラットフォームAPI

  • rememberKoinModules
  • KoinScope, rememberKoinScope

Deprecation ⚠️

koin-compose

  • get() 関数は、Lazy関数を避けつつ inject() の使用を置き換えるもの
  • getViewModel() 関数は、Lazy関数を避けつつ viewModel() 関数を置き換えるもの

Breaking 💥

koin-android

  • LifecycleScopeDelegate は削除されました。

koin-androidx-compose

  • getStateViewModelkoinViewModel を優先して削除されました。