Repository navigation
3.0.1
Startup 3.0.1 fixes Swift task-error handling, planning reentry, and swallowed duplicate task invocations, and includes a reorganized developer guide.
Changed
StartupTask.invoke()wraps ordinary initializer failures inStartupException, retaining the
original throwable ascause. ExistingStartupExceptioninstances pass through unchanged.
Kotlin callers that handle task errors directly should inspectcause; Swift can now catch
ordinary task failures without process termination.- Runner documentation distinguishes dependency order from thread access: declaring an edge does
not make engine lookups from worker threads safe. - Reorganize the README around a complete quick start, with focused Android, Swift, runtime,
migration, sample, and contributor guides.
Fixed
- Record duplicate task invocations even when a runner catches the rejection, including concurrent
duplicates while the original invocation is still running. - Detect cycles entered through factories or
dependencies()callbacks before recursive planning
exhausts the stack. Preserve valid nested lookups, cycle paths across planning and creation, and
cleanup for retry after failure. - Refuse reentry into an enclosing initialization from a nested wave without attributing a false
cycle to unrelated sibling tasks. - Preserve original failure causes and component attribution when wrapping task failures for
transport through a runner. - Validate the Android requirements documented in README.md and CLAUDE.md against the library and
AndroidX AARs, and declare those documents as inputs tocheckAndroidFloors.
Upgrade
implementation("io.github.kunal26das:startup:3.0.1")Direct Kotlin callers of StartupTask.invoke() should inspect StartupException.cause for an ordinary initializer failure. Existing StartupException instances retain their identity. See the migration guide.
Verification
All 11 configured targets compile and link. Local validation passed 1,017 test invocations, including 20 new regression test definitions. Swift failure probes passed on macOS ARM64, macOS x64, and iOS ARM64 simulator; the Android API 26 sample launched successfully. Physical iOS and Intel iOS simulator execution were unavailable locally. Local Windows execution used Wine. The release commit CI passed another 924 test invocations across macOS, Linux, and Windows, including 93 on native Linux and 93 on native Windows, with no failed or skipped test cases in the executed suites.
Full changelog: v3.0.0...v3.0.1