Λrrow is a library for Typed Functional Programming in Kotlin.

Overview

Maven Central Latest snapshot Kotlin version

License StackOverflow Twitter

Λrrow is a library for Typed Functional Programming in Kotlin.

Arrow aims to provide a lingua franca of interfaces and abstractions across Kotlin libraries. For this, it includes the most popular data types such as Option, Either, Validated etc and functional operators such as traverse and computation blocks to empower users to write pure FP apps and libraries built atop higher order abstractions.

Use the list below to learn more about Λrrow's main features.

Curated external links

If you have a blog post, talk, or upcoming event on Arrow, please considering opening an issue or PR to add to the collection over at the Arrow Media repo.

Join Us

Arrow is an inclusive community powered by awesome individuals like you. As an actively growing ecosystem, Arrow and its associated libraries and toolsets are in need of new contributors! We have issues suited for all levels, from entry to advanced, and our maintainers are happy to provide 1:1 mentoring. All are welcome in Arrow.

If you’re looking to contribute, have questions, or want to keep up-to-date about what’s happening, please follow us here and say hello!

Find more details in CONTRIBUTING.

Setup

JDK

Make sure to have the latest version of JDK 1.8 (or higher) installed.

JDK 16 doesn't currently work but will do once we upgrade to Gradle 7.0

Android

Arrow supports Android starting on API 21 and up.

Gradle

Basic Setup

In your project's root build.gradle, append this repository to your list:

allprojects {
    repositories {
        mavenCentral()
    }
}

Add the dependencies into the project's build.gradle:

Λrrow Core
def arrow_version = "1.0.1"
dependencies {
    implementation "io.arrow-kt:arrow-core:$arrow_version"
}
Λrrow Core + Λrrow Optics
apply plugin: 'kotlin-kapt'

def arrow_version = "1.0.1"
dependencies {
    implementation "io.arrow-kt:arrow-optics:$arrow_version"
    kapt "io.arrow-kt:arrow-meta:$arrow_version"
}
Λrrow Core + Λrrow Fx
def arrow_version = "1.0.1"
dependencies {
    implementation "io.arrow-kt:arrow-fx-coroutines:$arrow_version"
}

BOM file

To avoid specifying the Arrow version for every dependency, a BOM file is available:

    implementation platform("io.arrow-kt:arrow-stack:$arrow_version")

    implementation "io.arrow-kt:arrow-core"
    implementation "io.arrow-kt:arrow-fx-coroutines"
    ...

Maven

Basic Setup

Make sure to have at least the latest version of JDK 1.8 installed. Add to your pom.xml file the following properties:

<properties>
    <kotlin.version>1.5.31kotlin.version>
    <arrow.version>1.0.1arrow.version>
properties>

Add the dependencies that you want to use:

<dependency>
    <groupId>io.arrow-ktgroupId>
    <artifactId>arrow-coreartifactId>
    <version>${arrow.version}version>
dependency>

Enabling kapt for the Optics DSL

For the Optics DSL, enable annotation processing using Kotlin plugin:

<plugin>
    <groupId>org.jetbrains.kotlingroupId>
    <artifactId>kotlin-maven-pluginartifactId>
    <version>${kotlin.version}version>
    <executions>
        <execution>
            <id>kaptid>
            <goals>
                <goal>kaptgoal>
            goals>
            <configuration>
                <sourceDirs>
                    <sourceDir>src/main/kotlinsourceDir>
                sourceDirs>
                <annotationProcessorPaths>
                    <annotationProcessorPath>
                        <groupId>io.arrow-ktgroupId>
                        <artifactId>arrow-metaartifactId>
                        <version>${arrow.version}version>
                    annotationProcessorPath>
                annotationProcessorPaths>
            configuration>
        execution>
        <execution>
            <id>compileid>
            <phase>compilephase>
            <goals>
                <goal>compilegoal>
            goals>
            <configuration>
                <sourceDirs>
                    <sourceDir>src/main/kotlinsourceDir>
                sourceDirs>
            configuration>
        execution>
        <execution>
            <id>test-compileid>
            <phase>test-compilephase>
            <goals>
                <goal>test-compilegoal>
            goals>
        execution>
    executions>
plugin>

BOM file

To avoid specifying the Arrow version for every dependency, a BOM file is available:

  
   
    
    
      
     
        
      
       io.arrow-kt
      
        
      
       arrow-stack
      
        
      
       ${arrow.version}
      
        
      
       pom
      
        
      
       import
      
      
     
    
    
  
   
  
   
    
    ...
  
   

Next development version

If you want to try the latest features, replace 1.0.1 with 1.0.2-SNAPSHOT and add this repository:

allprojects {
    repositories {
        ...
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    }
}

License

Copyright (C) 2017 The Λrrow Authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Update kotlintest

    Update kotlintest

    Fixes #854 Fixes #855

    Upgrade KotlinTest version to 3.1.5 adding the test parallelism.

    This new version replaces the generate() method for:

    • random() returning a list of random values.
    • constant() returning the constant values of the Generator.

    The parallelism is added on the gradle.properties with the kotlintest.parallelism key

    enhancement 
    opened by AdrianRaFo 48
  • Arrow 0.7.x causes builds to fail on Android projects

    Arrow 0.7.x causes builds to fail on Android projects

    Just adding the Arrow dependencies on an Android project with Java 8 features enabled causes the builds to fail due to a missing traverse related class / lambda during the desugar task.

    Sample repo here: https://github.com/jrgonzalezg/arrow-android-failing

    bug upstream 
    opened by jrgonzalezg 33
  • Monad defer laws

    Monad defer laws

    Monad defer laws portet from cats-sync-laws.

    Solves #590

    Excluded laws are: (by function name from cats)

    • suspendConstantIsPureJoin (what is the suspend/flatten equivalent in arrow)
    • suspendThrowIsRaiseError (^)
    • unsequencedDelayIsNoop (what is this for? is that not covered by delaySuspendsEvaluation, is it the same? it is a confusing name either way...)
    • repeatedSyncEvaluationNotMemoized (is this a thing in arrow)
    • stack safety laws (all of them) (not sure what the case is here, I had them initially, and they passed for IO and deferred, but failed for all otheres, so I left them out)

    Also there seems to be something wrong with DeferredK as it fails the test for delay suspends evaluation. I believe it is because it is using an async instance of DeferredK which overrides delay to invoke DeferredK.invoke which does not start a coroutine with CoroutineStart.LAZY but with CoroutineStart.DEFAULT.

    opened by 1Jajen1 31
  • Update CONTRIBUTING.md with the new build guide

    Update CONTRIBUTING.md with the new build guide

    The project structure has changed and the old build guide didn't work anymore so I updated the CONTRIBUTING.md guide. I also provided a link there for the Gradle subproject task names syntax, as it may be not obvious to all.

    opened by lukaszkalnik 27
  • Kotlin JS / multi-platform support

    Kotlin JS / multi-platform support

    I went to use Arrow for a frontend application transpiled from Kotlin to JavaScript and realised that it Arrow doesn't support the JS platform due to explicit Java dependencies. It would be awesome to see Arrow migrate to being a multiplatform library.

    opened by wadejensen 27
  • Attempt to make DeferredK rerunnable

    Attempt to make DeferredK rerunnable

    Solves #1156 and maybe #1131 Re-enable no-memoization law and fix deferredK to follow it (if used correctly) Changes practically nothing from the public api.

    I'll add some info to the docs later because if used wrong it might produce unexpected results. Should the methods in DeferredK (well the public ones) have api docs (runnable ones) as well?

    @pakoito I have skipped the invoke constructor for Wrapped because its syntax conflicts with the other one too much (the compiler was only able to infer which one to choose after passing more and more arguments which defeats the point of default argumens there), one should just use the other one or .k() instead. (And going from () -> Deferred<A> to suspend () -> A is trivial)

    opened by 1Jajen1 26
  • Crashes on effect shift when using Arrow with ktor client

    Crashes on effect shift when using Arrow with ktor client

    Hi!. I'm trying to migrate an Android app's network layer to the new Effect / effect APIs in Arrow but there seems to be some issue or incompatibility with ktor's HttpClient. The code works fine on the happy path, but as soon as it gets to a shift the app crashes and it does not even stop on catch blocks or fold error handling so it seems to be bypassing the error handling mechanism.

    The function I'm trying to implement looks like this:

    suspend inline fun <reified R, reified A> get(
        url: Url,
        acceptedErrorCodes: List<Int> = emptyList()
      ): Effect<BackendFailure<R>, A> =
        effect {
          try {
            val httpResponse: HttpResponse = getHttpResponse(url)
    
            val httpStatusCode: HttpStatusCode = httpResponse.status
    
            if (httpStatusCode.isSuccess() || httpStatusCode.value in acceptedErrorCodes) {
              when (val backendResponse: BackendResponse<R, A> = httpResponse.body()) {
                is BackendResponse.Failure -> shift(BackendFailure.Known(backendResponse.data))
    
                is BackendResponse.Success -> backendResponse.data
              }
            } else {
              shift(BackendFailure.Unknown(null))
            }
          } catch (throwable: Throwable) {
            shift(BackendFailure.Unknown(throwable.nonFatalOrThrow().message))
          }
        }
    

    but same issue also happened with more minimal code without the try-catch and simplified error type. This happens both with arrow-stack 1.1.2 and 1.1.3-alpha.29. The stacktraces of the crashes look like this:

    kotlinx.coroutines.CoroutinesInternalError: Fatal exception in coroutines machinery for AwaitContinuation(DispatchedContinuation[Dispatchers.Main.immediate, Continuation at io.ktor.client.engine.HttpClientEngine$DefaultImpls.executeWithinCallContext(HttpClientEngine.kt:100)@96aed1b]){Completed}@4a75eb8. Please read KDoc to 'handleFatalException' method and report this incident to maintainers
            at kotlinx.coroutines.DispatchedTask.handleFatalException(DispatchedTask.kt:144)
            at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:115)
            at android.os.Handler.handleCallback(Handler.java:938)
            at android.os.Handler.dispatchMessage(Handler.java:99)
            at android.os.Looper.loopOnce(Looper.java:201)
            at android.os.Looper.loop(Looper.java:288)
            at android.app.ActivityThread.main(ActivityThread.java:7839)
            at java.lang.reflect.Method.invoke(Native Method)
            at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
            Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Active}@5e7e8cd, Dispatchers.Main.immediate]
        Caused by: ShiftCancellationException(Shifted Continuation)
            at com.example.screens.main.MainViewModel$load$1$invokeSuspend$$inlined$effect$1$2.shift(Effect.kt:776)
            at arrow.core.continuations.EffectScope$bind$2.invoke(EffectScope.kt:57)
            at arrow.core.continuations.EffectScope$bind$2.invoke(EffectScope.kt:57)
            at arrow.core.continuations.FoldContinuation$resumeWith$2$f$1.invokeSuspend(Effect.kt:715)
            at arrow.core.continuations.FoldContinuation$resumeWith$2$f$1.invoke(Unknown Source:8)
            at arrow.core.continuations.FoldContinuation$resumeWith$2$f$1.invoke(Unknown Source:2)
            at arrow.core.continuations.FoldContinuation.resumeWith(Effect.kt:716)
            at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
            at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
            at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
            at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
            at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
            at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
            at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
            at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
            at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
            at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
            at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
            at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
            at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
            at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
            at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
            at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
            at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
            at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
            at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
            at io.ktor.util.pipeline.SuspendFunctionGun$continuation$1.resumeWith(SuspendFunctionGun.kt:62)
            at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
            at io.ktor.util.pipeline.SuspendFunctionGun.resumeRootWith(SuspendFunctionGun.kt:138)
            at io.ktor.util.pipeline.SuspendFunctionGun.loop(SuspendFunctionGun.kt:112)
            at io.ktor.util.pipeline.SuspendFunctionGun.access$loop(SuspendFunctionGun.kt:14)
    

    So it seems like some kind of incompatibility maybe because both Arrow and ktor try to tap on the coroutine mechanisms. Apparently the ShiftCancellationException is somehow handled by ktor internal code and that in turn produces a crash before the exception is handled by Arrow code.

    opened by jrgonzalezg 23
  • Android Proguard - Can't find references method 'kategory.EitherT fromEither

    Android Proguard - Can't find references method 'kategory.EitherT fromEither

    Hi,

    First of all thanks for the library, I'm trying to get the hand of it :)

    For now, When I'm trying to compile with proguard I get this error.

    Warning:kategory.EitherT: can't find referenced method 'kategory.EitherT fromEither(kategory.Either,kategory.Applicative)' in program class kategory.EitherT$Companion
    Warning:kategory.Kleisli: can't find referenced method 'kategory.Kleisli pure(java.lang.Object,kategory.Applicative)' in program class kategory.Kleisli$Companion
    Warning:kategory.Kleisli: can't find referenced method 'kategory.Kleisli ask(kategory.Applicative)' in program class kategory.Kleisli$Companion
    Warning:kategory.OptionT: can't find referenced method 'kategory.OptionT pure(java.lang.Object,kategory.Applicative)' in program class kategory.OptionT$Companion
    Warning:kategory.OptionT: can't find referenced method 'kategory.OptionT none(kategory.Applicative)' in program class kategory.OptionT$Companion
    Warning:kategory.OptionT: can't find referenced method 'kategory.OptionT fromOption(kategory.Option,kategory.Applicative)' in program class kategory.OptionT$Companion
    Warning:there were 6 unresolved references to program class members.
    Warning:Exception while processing task java.io.IOException: Please correct the above warnings first.
    Error:Execution failed for task ':app:transformClassesAndResourcesWithProguardForProdRelease'.
    > Job failed, see logs for details
    

    I have only used implementation 'io.kategory:kategory:0.3.11' in my app.gradle with Android Studio 3.0

    Any idea how I can solve this?

    opened by vdubedout 23
  • Misunderstanding Functional Error Handling doc with monad

    Misunderstanding Functional Error Handling doc with monad

    Hello 👋

    I'm a fresh beginner to the "real" FP world in Kotlin and just start using Arrow. I was looking to the documentation and tried to apply the "monad" part of Functional Error Handling Pattern doc.

    I'm trying to achieve something similar to:

    import arrow.core.Either
    import arrow.core.Right
    import arrow.core.Left
    import arrow.core.extensions.either.monad.binding
    
    object Nuke
    object Target
    object Impacted
    
    sealed class NukeException {
        object SystemOffline : NukeException()
        object RotationNeedsOil : NukeException()
        data class MissedByMeters(val meters: Int) : NukeException()
    }
    
    typealias SystemOffline = NukeException.SystemOffline
    typealias RotationNeedsOil = NukeException.RotationNeedsOil
    typealias MissedByMeters = NukeException.MissedByMeters
    
    fun arm(): Either<SystemOffline, Nuke> = Right(Nuke)
    fun aim(): Either<RotationNeedsOil, Target> = Right(Target)
    fun launch(target: Target, nuke: Nuke): Either<MissedByMeters, Impacted> = Left(MissedByMeters(5))
    
    fun attackEither(): Either<NukeException, Impacted> =
        fx.monad {
            val (nuke) = arm()
            val (target) = aim()
            val (impact) = launch(target, nuke)
            impact
        }
    
      
    attackEither()
    //Left(MissedByMeters(5))
    

    But got those errors :

    e: /somewhere/src/test.kt: (4, 43): Unresolved reference: binding
    e: /somewhere/src/test.kt: (25, 5): Unresolved reference: fx
    e: /somewhere/src/test.kt: (26, 22): Destructuring declaration initializer of type Either<SystemOffline /* = NukeException.SystemOffline */, Nuke> must have a 'component1()' function
    e: /somewhere/src/test.kt: (27, 24): Destructuring declaration initializer of type Either<RotationNeedsOil /* = NukeException.RotationNeedsOil */, Target> must have a 'component1()' function
    e: /somewhere/src/test.kt: (28, 24): Destructuring declaration initializer of type Either<MissedByMeters /* = NukeException.MissedByMeters */, Impacted> must have a 'component1()' function
    

    My gradle Arrow deps :

    def arrow_version = "0.10.3"
    dependencies {
        // ....
        implementation "io.arrow-kt:arrow-core:$arrow_version"
        implementation "io.arrow-kt:arrow-fx:$arrow_version"
        implementation "io.arrow-kt:arrow-optics:$arrow_version"
        implementation "io.arrow-kt:arrow-syntax:$arrow_version"
        kapt "io.arrow-kt:arrow-meta:$arrow_version"
        kapt "io.arrow-kt:arrow-generic:$arrow_version"
    }
    

    Did I miss something ?

    Thanks !

    opened by scorsi 22
  • Fix all docs type class and data types links

    Fix all docs type class and data types links

    All type classes and data type in the documentation site should follow the same path as the package they declared in terms of permalinks in the docs. For example:

    arrow.core.Option -> docs/arrow/core/option

    All permalinks need to be modified and if possible preserve existing redirects. This is necessary because we plan on using reflection and other introspection techniques to have some parts of the docs autogenerated at build time. Links for a given data type or type class need to be predictable so the generator can assume those paths to be there.

    work in progress 
    opened by raulraja 22
  • Comonadic UIs datatypes

    Comonadic UIs datatypes

    The purpose of this PR is adding the datatypes shown on this paper and this simplified version.

    Once we have them implemented I would like to make an example of use and maybe write some kind of tutorial if I get something useful.

    For now I have implemented:

    • [x] Store: Which can be seen as a React Component if you are familiar with the library. It is a datatype which holds a state and a render function which given a state it returns some representation of it.

    • [x] Moore: A Moore machine acts similarly to Redux or the Elm architecture. It holds a state and in order to change it you need to dispatch some event of a determined type.

    • [x] Cofree: Cofree is a special case of Moore which defines transitions in terms of functors. It was already implemented.

    • [x] Sum: The sum of two comonads is also a comonad. We can use this datatype to represent two tabs of an user interface and display one at a time.

    opened by Cotel 22
  • Improve debugging experience of leaked shift calls

    Improve debugging experience of leaked shift calls

    Currently it's possible to leak shift, and it results in CancellationException. This PR proposes to turn that into IllegalStateException such that it's not dealt with like a special case by Structured Concurrency and we can also provide a more descriptive error message.

    1.1.5 
    opened by nomisRev 1
  • The API docs (Dokka) seem to overwrite each other

    The API docs (Dokka) seem to overwrite each other

    What version are you currently using?

    This is about the hosted API docs in the Arrow website.

    Current (buggy) situation

    • from the Arrow Core page, the link is https://arrow-kt.io/docs/apidocs/arrow-core/arrow.core/
    • going up one navigation level from the linked page (top left button "arrow-core") sends to https://arrow-kt.io/docs/apidocs/index.html, which, despite the URL, is the arrow-optics-reflect documentation, and provides no link to the other modules
    • I can't find the path to the package-list file (by default Dokka would have put it in https://arrow-kt.io/docs/apidocs/package-list)

    What would you like to see?

    The website to be configured correctly such that:

    • there is a single frontpage with all Arrow modules
    • I can configure Dokka in my own projects to link to all Arrow API docs

    For reference, here is the Gradle configuration for Dokka 1.7.20 to add links to the KotlinX.Coroutines dokka pages:

    tasks.withType<org.jetbrains.dokka.gradle.DokkaTaskPartial>().configureEach {
    	dokkaSourceSets.configureEach {
    		externalDocumentationLink {
    			url.set(URL("https://kotlinlang.org/api/kotlinx.coroutines/"))
    		}
    	}
    }
    

    From this configuration, Dokka is able to find the https://kotlinlang.org/api/kotlinx.coroutines/package-list file which it uses to generate the links (that's the extent of my Dokka knowledge, sorry if I can't help more).

    I know that the default Dokka configuration generates the file correctly (I did set up multiple of my projects to reference each other), so it should work more or less out of the box for Arrow as well (though I don't know what post processing is done in your case).

    opened by CLOVIS-AI 0
  • `Accumulate` DSL for `Raise` (open for discussion)

    `Accumulate` DSL for `Raise` (open for discussion)

    This creates a "sub-DSL" within Raise to express scopes in which errors should be accumulated, instead of the regular fail-first approach. The idea is that inside accumulateErrors you "protect" each potentially-failing computation with accumulate.

    data class Name(val first: String, val last: String)
    
    fun Raise<String>.validFirstName(s: String): String = TODO()
    fun Raise<String>.validLastName(s: String): String = TODO()
    
    fun Raise<NonEmptyList<String>>.validName(
      first: String, last: String
    ): Name = accumulateErrors {
      val f = accumulate { validFirstname(first) }
      val l = accumulate { validLastName(last) }
      Name(f.value, l.value)
    }
    

    The problem here is potential data dependencies. To fight these, the result of accumulate is not directly A, but Accumulate.Value<A>, a "box" which remembers whether the computation it comes from failed or not. If at some point we try to unwrap a failed computation, that means we cannot proceed further with accumulation, and we just return whatever errors we had found.

    As a comparison with other FP abstractions, Accumulate implements selective functors, because it's allowed to choose how to continue based on whether a computation failed or not, but not based on the data you obtained (that requires monads).

    opened by serras 5
  • Arrow 2.0 Resilience

    Arrow 2.0 Resilience

    According to our plan (laid our in #2778), we want to split a few classes to a new library, targeting resilience.

    • [X] Split CircuitBreaker and Schedule into its own package
    • [ ] Provide Kotlin-native implementation of Resilience4j's core modules
      • [ ] Bulkhead
      • [ ] RateLimiter
      • [ ] TimeLimiter
    opened by serras 4
  • [BUG] Arrow result continuation broken

    [BUG] Arrow result continuation broken

    Affected version: 1.1.2 Affected scope: arrow.core.continuations Kotlin version: 1.7.21

    Using result { … } comprehension and binding invokations of suspended functions/methods inside causes unexpected behaviour. Nested Result<Result<X>> values are returned in runtime - despite having Result<X> type in compile time.

    Bug affects result { … } and result.eager { … }. It does NOT affect nullable { … } / nullable.eager { … } or either { … } / either.eager { … }.

    Code to reproduce an issue:

    import arrow.core.continuations.result
    import kotlinx.coroutines.delay
    
    suspend fun main() {
        val ok = result { "whatever" }
        println("The OK Result is: $ok")
    
        val a = getV()
        println("The A Result is: $a")
    
        val b = result {
            delay(1)
            "whatever"
        }
        println("The B Result is: $b")
    
        val c = result {
            getV().bind()
        }
        println("The C Result is: $c")
    
        val d = result {
            val v = getV().bind()
    
            v + "__cont"
        }
        println("The D Result is: $d")
    
    }
    
    private suspend fun getV() = result {
        delay(1)
        "whatever"
    }
    

    Result of running above code:

    The OK Result is: Success(whatever)
    The A Result is: Success(Success(whatever))
    The B Result is: Success(Success(whatever))
    The C Result is: Success(Success(Success(whatever)))
    Exception in thread "main" java.lang.ClassCastException: class kotlin.Result cannot be cast to class java.lang.String (kotlin.Result is in unnamed module of loader 'app'; java.lang.String is in module java.base of loader 'bootstrap')
    	at com.fiatrepublic.pomerania.oauth2server.pkceimpl.EffectsIssueKt$main$$inlined$invoke-gIAlu-s$4$3.invokeSuspend(Effect.kt:0)
    	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    	at arrow.core.continuations.FoldContinuation.resumeWith(Effect.kt:713)
    	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:46)
    	at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:178)
    	at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:166)
    	at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:397)
    	at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:431)
    	at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:420)
    	at kotlinx.coroutines.CancellableContinuationImpl.resumeUndispatched(CancellableContinuationImpl.kt:518)
    	at kotlinx.coroutines.EventLoopImplBase$DelayedResumeTask.run(EventLoop.common.kt:500)
    	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:284)
    	at kotlinx.coroutines.DefaultExecutor.run(DefaultExecutor.kt:108)
    	at java.base/java.lang.Thread.run(Thread.java:830)
    
    Process finished with exit code 1
    
    opened by ulfryk 2
Releases(1.1.3)
  • 1.1.3(Sep 20, 2022)

    What's Changed

    • Fix license url by @i-walker in https://github.com/arrow-kt/arrow/pull/2712
    • Add new workflow for publishing the landing page by @franciscodr in https://github.com/arrow-kt/arrow/pull/2716
    • Fix publish sync by @JavierSegoviaCordoba in https://github.com/arrow-kt/arrow/pull/2717
    • invert resource release order by @tKe in https://github.com/arrow-kt/arrow/pull/2714
    • Fix traversal code samples of docs by @b-schwab in https://github.com/arrow-kt/arrow/pull/2719
    • Adding kotlin-js-store folder by @franciscodr in https://github.com/arrow-kt/arrow/pull/2724
    • rename traverseX and sequenceX functions in core by @i-walker in https://github.com/arrow-kt/arrow/pull/2715
    • feat: contravariance for R, A in Effect, EagerEffect and in for *EffectScope by @i-walker in https://github.com/arrow-kt/arrow/pull/2722
    • deprecate flatMap and map in EagerEffect by @i-walker in https://github.com/arrow-kt/arrow/pull/2726
    • add Continuations and programs to overview section in arrow core by @i-walker in https://github.com/arrow-kt/arrow/pull/2723
    • Update all dependencies by @renovate in https://github.com/arrow-kt/arrow/pull/2709
    • revert java setup by @i-walker in https://github.com/arrow-kt/arrow/pull/2730
    • Add command to install bundler by @franciscodr in https://github.com/arrow-kt/arrow/pull/2729
    • Improve Nel constructor by @nomisRev in https://github.com/arrow-kt/arrow/pull/2728
    • improve generate-tag workflow by @i-walker in https://github.com/arrow-kt/arrow/pull/2731
    • revert arrow-gradle-config to 0.10.1 by @i-walker in https://github.com/arrow-kt/arrow/pull/2738
    • Rename duplicated test by @wojda in https://github.com/arrow-kt/arrow/pull/2740
    • Fix some compilation and test warnings by @wojda in https://github.com/arrow-kt/arrow/pull/2741
    • Convert Arrow core effect into a non-inline function by @franciscodr in https://github.com/arrow-kt/arrow/pull/2734
    • add merge to validated by @agusotto96 in https://github.com/arrow-kt/arrow/pull/2739
    • Fix compilation warnings by replacing usages of deprecated methods by @wojda in https://github.com/arrow-kt/arrow/pull/2742
    • Bump versions by @nomisRev in https://github.com/arrow-kt/arrow/pull/2745
    • Add kotlin.mpp.enableCompatibilityMetadataVariant=true by @JavierSegoviaCordoba in https://github.com/arrow-kt/arrow/pull/2747
    • fix alpha tag build task by @i-walker in https://github.com/arrow-kt/arrow/pull/2749
    • Fix build, inject kotlin.mpp.enableCompatibilityMetadataVariant in CI by @nomisRev in https://github.com/arrow-kt/arrow/pull/2751
    • add merge function for *Effect by @i-walker in https://github.com/arrow-kt/arrow/pull/2752
    • Small docs fix for widen function by @lenguyenthanh in https://github.com/arrow-kt/arrow/pull/2754
    • max and min methods for NonEmptyList by @dorians in https://github.com/arrow-kt/arrow/pull/2622
    • Deprecate arrow test modules by @i-walker in https://github.com/arrow-kt/arrow/pull/2753
    • Update kotlin-js-store/yarn.lock by @serras in https://github.com/arrow-kt/arrow/pull/2756
    • Update all dependencies except the compiler version by @serras in https://github.com/arrow-kt/arrow/pull/2757
    • Resource deprecate traverseResource, fixes arity-4 by @nomisRev in https://github.com/arrow-kt/arrow/pull/2750
    • Fix #2764 & #2760 by @nomisRev in https://github.com/arrow-kt/arrow/pull/2765
    • [2761] Add explicit visibility modifier for all the generated optics by @aangairbender in https://github.com/arrow-kt/arrow/pull/2763
    • catch for EffectScope by @serras in https://github.com/arrow-kt/arrow/pull/2746
    • Refine the Arrow version selector by @franciscodr in https://github.com/arrow-kt/arrow/pull/2770
    • update gradle wrapper by @i-walker in https://github.com/arrow-kt/arrow/pull/2771
    • Consent management osano by @israelperezglez in https://github.com/arrow-kt/arrow/pull/2755
    • Add ruby setup for publication task by @i-walker in https://github.com/arrow-kt/arrow/pull/2774
    • fix ruby set up by @i-walker in https://github.com/arrow-kt/arrow/pull/2775
    • Fix #2779 by @nomisRev in https://github.com/arrow-kt/arrow/pull/2783
    • deprecate orNull Either extension function by @i-walker in https://github.com/arrow-kt/arrow/pull/2773
    • Support generics and inner classes in @optics by @serras in https://github.com/arrow-kt/arrow/pull/2776
    • Generalized copy for optics by @serras in https://github.com/arrow-kt/arrow/pull/2777
    • Fix usage of startCoroutineUninterceptedOrReturn by @nomisRev in https://github.com/arrow-kt/arrow/pull/2789
    • Fix example in documentation by @obecker in https://github.com/arrow-kt/arrow/pull/2790
    • Backport flattening token/shift into Cont by @nomisRev in https://github.com/arrow-kt/arrow/pull/2791
    • Enable builder inference for optics copy by @serras in https://github.com/arrow-kt/arrow/pull/2792
    • Update API compatibility validator version by @serras in https://github.com/arrow-kt/arrow/pull/2794
    • [BUGFIX] Result.zip by @nomisRev in https://github.com/arrow-kt/arrow/pull/2804
    • Update docs from version 1.0.1 to 1.1.2 by @Dobiasd in https://github.com/arrow-kt/arrow/pull/2808
    • add separateEither and separateValidated test by @hoc081098 in https://github.com/arrow-kt/arrow/pull/2814
    • Refactor - #2812 iterable separate performance by @Khepu in https://github.com/arrow-kt/arrow/pull/2815
    • Add Resource.allocated() to decompose Resource into it's allocate and… by @custommonkey in https://github.com/arrow-kt/arrow/pull/2820

    New Contributors

    • @tKe made their first contribution in https://github.com/arrow-kt/arrow/pull/2714
    • @b-schwab made their first contribution in https://github.com/arrow-kt/arrow/pull/2719
    • @wojda made their first contribution in https://github.com/arrow-kt/arrow/pull/2740
    • @agusotto96 made their first contribution in https://github.com/arrow-kt/arrow/pull/2739
    • @dorians made their first contribution in https://github.com/arrow-kt/arrow/pull/2622
    • @aangairbender made their first contribution in https://github.com/arrow-kt/arrow/pull/2763
    • @obecker made their first contribution in https://github.com/arrow-kt/arrow/pull/2790
    • @Dobiasd made their first contribution in https://github.com/arrow-kt/arrow/pull/2808
    • @hoc081098 made their first contribution in https://github.com/arrow-kt/arrow/pull/2814
    • @Khepu made their first contribution in https://github.com/arrow-kt/arrow/pull/2815
    • @custommonkey made their first contribution in https://github.com/arrow-kt/arrow/pull/2820

    Full Changelog: https://github.com/arrow-kt/arrow/compare/1.1.2...1.1.3

    Source code(tar.gz)
    Source code(zip)
  • 1.1.2(May 3, 2022)

    What's Changed

    • Update all dependencies to v1.6.21-1.0.5 (#2708) by @renovate-bot

    Full Changelog: https://github.com/arrow-kt/arrow/compare/1.1.0...1.1.2

    Source code(tar.gz)
    Source code(zip)
  • 1.1.0(May 3, 2022)

    What's Changed

    • Define Dsl as public (#2706) by @i-walker
    • Update all dependencies (#2705) by @renovate-bot
    • Update link to Arrow Analysis documentation (#2701) by @franciscodr
    • Update all dependencies (#2703) by @renovate-bot
    • Update plugin dokka to v1.6.20 (#2702) by @renovate-bot
    • Update stefanzweifel/git-auto-commit-action action to v4.14.1 (#2700) by @renovate-bot
    • Update all dependencies (#2699) by @renovate-bot
    • Update all dependencies (#2696) by @renovate-bot
    • Update (#2698) by @i-walker
    • Update libs.versions.toml (#2697) by @i-walker
    • Fix Either#isNotEmpty()'s KDoc sample (#2694) by @ChristianGarcia
    • Update gradle/gradle-build-action action to v2.1.5 (#2695) by @renovate-bot
    • Update all dependencies (#2665) by @renovate-bot
    • Rename traverseX and sequenceX for Iterable (#2692) by @i-walker
    • Rename Sequence sequenceX, traverseX and deprecate Sequence.some (#2686) by @i-walker
    • Deprecate combineAll in favour of fold (#2687) by @i-walker
    • rm snapshot and update Kotlin label (#2690) by @i-walker
    • Resource tap deprecation (#2684) by @i-walker
    • Update Set up Documentation (#2685) by @i-walker
    • Fix TOC (#2688) by @i-walker
    • Generate optics based on targets or all (#2683) by @i-walker
    • Schedule.repeatAsFlow (#2676) by @i-walker
    • File name generation fix (#2681) by @i-walker
    • Update all dependencies (major) (#2673) by @renovate-bot
    • fix imports for ksp plugin (#2678) by @i-walker
    • add Nullable proposal (#2675) by @i-walker
    • Resource.asFlow (#2677) by @i-walker
    • remove design doc of Effect (#2674) by @i-walker
    • Fix typos reorg resource computation block (#2671) by @i-walker
    • deprecate signatures in computations and add Result for continuations (#2669) by @i-walker
    • Fix bug in the transaction example (#2667) by @SaberCon
    • deprecate arrow.continuation (#2672) by @i-walker
    • fix sitemap titles (#2670) by @i-walker
    • Transfer Cont from @nomisrev to arrow (#2661) by @i-walker
    • Non throwing Retrofit Either adapter (#2621) by @lukaszkalnik
    • Retrofit adapter: allow null response body for methods returning Unit (#2625) by @lukaszkalnik
    • Fix broken build main Optics Reflect (#2666) by @nomisRev
    • Update documentation links in README (#2664) by @fo2rist
    • Optics based on kotlin.reflect (#2612) by @serras
    • [Optics] Optional getter (#2611) by @serras
    • Update all dependencies (#2663) by @renovate-bot
    • Fix link to /patterns/error_handling/ (#2627) by @IlyaPomaskin
    • Update all dependencies (#2659) by @renovate-bot
    • Update gradle/gradle-build-action action to v2.1.1 (#2653) by @renovate-bot
    • [Optics KSP] Update docs to talk about IDEs (#2655) by @serras
    • Use first, .. instead of a,.. (#2654) by @nomisRev
    • Update README.md (#2631) by @i-walker
    • CU-23dm3ye support maven publication (#2652) by @i-walker
    • Update arrow gradle version (#2651) by @i-walker
    • Move Arrow Optics KSP to main/test hierarchy (#2649) by @serras
    • Update libs.versions.toml (#2648) by @i-walker
    • Link Analysis from home page (#2595) by @serras
    • Clean up README after gradle upgrade (#2642) by @felixdivo
    • Update plugin kotest-multiplatform to v5.1.0 (#2645) by @renovate-bot
    • Update libs.versions.toml (#2644) by @i-walker
    • Update all dependencies to v5.1.0 (#2643) by @renovate-bot
    • revert ksp plugin to jvm only (#2640) by @i-walker
    • update arrow gradle (#2639) by @i-walker
    • Update all dependencies (#2638) by @renovate-bot
    • fix typo comment of circuitbreaker (#2637) by larryjung
    • Fixes a few typos on the Fx docs (#2620) by @legzo
    • Update contributing guide with Knit (#2634) by @lukaszkalnik
    • [Optics] Show error for generic classes in KSP plug-in (#2636) by @serras
    • Pass Arrow version to publish_doc job (#2633) by @franciscodr
    • Fix 404 error in the Core library documentation (#2623) by @devmarkpro
    • Fix Retrofit adapter test configuration (#2624) by @lukaszkalnik
    • Update all dependencies (#2628) by @renovate-bot
    • run on windows only windows test (#2630) by @i-walker
    • Update CONTRIBUTING.md with the new build guide (#2600) by @lukaszkalnik
    • Bump Arrow Gradle Config to 0.6.1-rc.4 by @nomisRev
    • [Github Action] Run build on all platforms (#2626) by @nomisRev
    • Disable Gradle scan, and Gradle daemon by @nomisRev
    • Update all dependencies (#2617) by @renovate-bot
    • Disable ksp, and ksp test in Arrow Optics by @nomisRev
    • Use gradle action everywhere, revery permSize, and add --full-stacktrace everywhere by @nomisRev
    • Make KSP plugin a JVM module by @nomisRev
    • Use gradle action, and add --full-stacktrace by @nomisRev
    • Bump to arrow gradle config rc3 by @nomisRev
    • Revert back to ./gradlew by @nomisRev
    • Fix publish file by @nomisRev
    • Use gradle action for publish, and increase timeout time by @nomisRev
    • Setup Java publish.yml by @nomisRev
    • Update publish workflow by @nomisRev
    • Run ./gradlew before get-arrow-version by @nomisRev
    • Update publish.yml by @nomisRev
    • Add lib_version (#2616) by @nomisRev
    • Bump Gradle Config to 0.6.1-RC.1 (#2615) by @nomisRev
    • Update all dependencies (#2566) by @renovate-bot
    • Disable parallel gradle (#2614) by @nomisRev
    • Fix Gradle an existing connection was forcibly closed by the remote host (#2610) by @nomisRev
    • Update publish gradle opts, and remove gradle cache from tag workflows by @nomisRev
    • Remove gradle cache from publish workflow by @nomisRev
    • Fix Windows env settings in publish workflow (#2609) by @raulraja
    • Fix publish and pull_request workflows (#2608) by @JavierSegoviaCordoba
    • Change Java memory settings by @JavierSegoviaCordoba
    • Add Java and Gradle settings for both generate tag workflows by @JavierSegoviaCordoba
    • Add generate-alpha-tag by @JavierSegoviaCordoba
    • Change tags regex by @JavierSegoviaCordoba
    • Merge remote-tracking branch 'origin/main' into rr-js-add-versioning-plugin by @JavierSegoviaCordoba
    • Re-organize Optics docs (#2583) by @serras
    • Fixing documentation workflow (#2594) by @franciscodr
    • Upgrade to kotlinx-coroutines 1.6.0 (#2606) by @serras
    • Job to update the API files (#2605) by @serras
    • Rename arrow-optics-ksp to arrow-optics-ksp-plugin (#2604) by @serras
    • Remove legacy Meta, bring Optics KSP (#2599) by @nomisRev
    • docs(Either): describe the all method (#2551) by @codymikol
    • Make sure listHead set works properly (#2589) by @lenguyenthanh
    • Code block style (#2596) by @israelperezglez
    • Add JAVA_OPTS and GRADLE_OPTS to publish and pull_request by @JavierSegoviaCordoba
    • Refactor publish and pull-request workflows by @JavierSegoviaCordoba
    • Fix tag regex in publish workflow by @JavierSegoviaCordoba
    • Refactor publish.yml workflow and add generate-tag workflow by @JavierSegoviaCordoba
    • Refactor publish.yml workflow by @JavierSegoviaCordoba
    • Add vcs.xml by @JavierSegoviaCordoba
    • versioning plugin by @raulraja
    • Remove base directory for gradle.properties file (#2585) by @franciscodr
    • Simplify Gradle layout, + KNIT, - ANK and fix site code fences (#2584) by @raulraja
    • Fix bug cancellation parMap (#2579) by @nomisRev
    • Resource computation block (#2571) by @nomisRev
    • make Semigroup a fun interface (#2569) by @brezinajn
    • Update all dependencies (major) (#2567) by @renovate-bot
    • Configure Renovate (#2533) by @renovate-bot

    New Contributors

    • @brezinajn made their first contribution in https://github.com/arrow-kt/arrow/pull/2569
    • @devmarkpro made their first contribution in https://github.com/arrow-kt/arrow/pull/2623
    • @IlyaPomaskin made their first contribution in https://github.com/arrow-kt/arrow/pull/2627
    • @felixdivo made their first contribution in https://github.com/arrow-kt/arrow/pull/2642
    • @fo2rist made their first contribution in https://github.com/arrow-kt/arrow/pull/2664
    • @SaberCon made their first contribution in https://github.com/arrow-kt/arrow/pull/2667
    • @ChristianGarcia made their first contribution in https://github.com/arrow-kt/arrow/pull/2694

    Full Changelog: https://github.com/arrow-kt/arrow/compare/1.0.1...1.1.0

    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(Dec 7, 2021)

    What's Changed

    • Restoring the branches that trigger the publish job by @franciscodr in https://github.com/arrow-kt/arrow/pull/2520
    • Bump to Kotlin 1.5.31 by @nomisRev in https://github.com/arrow-kt/arrow/pull/2528
    • Fix typo on docs by @BraisGabin in https://github.com/arrow-kt/arrow/pull/2527
    • Deduplicate binary creation by @nomisRev in https://github.com/arrow-kt/arrow/pull/2524
    • Bump to Kotest 5 M2 by @nomisRev in https://github.com/arrow-kt/arrow/pull/2536
    • Adds a andThen extension method to Validated to chain Validated by @magott in https://github.com/arrow-kt/arrow/pull/2539
    • Add Arrow Gradle config by @JavierSegoviaCordoba in https://github.com/arrow-kt/arrow/pull/2543
    • Change more Gradle config and GitHub Actions workflows by @JavierSegoviaCordoba in https://github.com/arrow-kt/arrow/pull/2544
    • Playground deleted by @israelperezglez in https://github.com/arrow-kt/arrow/pull/2545
    • Improve Gradle config by @JavierSegoviaCordoba in https://github.com/arrow-kt/arrow/pull/2546
    • docs(Either): correct error in getOrElse by @codymikol in https://github.com/arrow-kt/arrow/pull/2548
    • docs(Either): use consistent Left / Right links by @codymikol in https://github.com/arrow-kt/arrow/pull/2549
    • docs(Either): isEmpty / isNotEmpty docs by @codymikol in https://github.com/arrow-kt/arrow/pull/2550
    • Release 1.0.1 by @JavierSegoviaCordoba in https://github.com/arrow-kt/arrow/pull/2563

    New Contributors

    • @BraisGabin made their first contribution in https://github.com/arrow-kt/arrow/pull/2527
    • @magott made their first contribution in https://github.com/arrow-kt/arrow/pull/2539
    • @JavierSegoviaCordoba made their first contribution in https://github.com/arrow-kt/arrow/pull/2543
    • @codymikol made their first contribution in https://github.com/arrow-kt/arrow/pull/2548

    Full Changelog: https://github.com/arrow-kt/arrow/compare/1.0.0...1.0.1

    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Sep 20, 2021)

    1.0.0 (2021-09-20)

    Source code(tar.gz)
    Source code(zip)
  • 0.13.3(Sep 20, 2021)

    0.13.3 (2021-09-20)

    Source code(tar.gz)
    Source code(zip)
  • 0.13.2(Apr 27, 2021)

    0.13.2 (2021-04-27)

    Fixes:

    • #2377 Fix potential classloader deadlock in Either, Validated, Option, Ior, and Eval (#2375) - @dberg
    • #2370 Deprecate foldRight and all lazy folds - @1Jajen1
    • #2365 Traverse fixes - @1Jajen1
    • #2360 Restore curried and uncurried with arities over 5 - @dnowak

    Configuration and documentation:

    Source code(tar.gz)
    Source code(zip)
  • 0.12.1(Apr 27, 2021)

    0.12.1 (2021-04-27)

    Fixes:

    • #2377 Fix potential classloader deadlock in Either, Validated, Option, Ior, and Eval (#2375) - @dberg
    • #2370 Deprecate foldRight and all lazy folds - @1Jajen1
    • #2365 Traverse fixes - @1Jajen1
    • #2360 Restore curried and uncurried with arities over 5 - @dnowak

    Configuration and documentation:

    Source code(tar.gz)
    Source code(zip)
  • 0.13.1(Apr 1, 2021)

  • 0.13.0(Mar 31, 2021)

    0.13.0 (2021-03-31)

    Source code(tar.gz)
    Source code(zip)
  • 0.12.0(Mar 31, 2021)

    0.12.0 (2021-03-31)

    Source code(tar.gz)
    Source code(zip)
  • 0.11.0(Sep 9, 2020)

    0.11.0 (2020-09-09)

    arrow-core

    arrow-ui

    arrow-fx

    arrow-incubator

    arrow-optics

    arrow-ank

    arrow-integrations

    arrow-check

    arrow

    Source code(tar.gz)
    Source code(zip)
  • 0.10.5(Apr 1, 2020)

    0.10.5 (2020-04-01)

    arrow-core

    @1Jajen1

    • Fix apply order of product to be consistent with other methods #71
    • Fix small bug in MonadLogic #56
    • Add deprecation notice to ap #40
    • Stacksafe version of lazyAp #23

    @aballano

    • Deprecate breaking changes for 0.10.5 #67
    • Fix Eval's Fx not being lazy + deprecate Functor's unit #30

    @abendt

    • add typeclasses MonadPlus & MonadLogic #49

    @danimontoya

    • Package renaming of arrow-core-test #58
    • Rename Gen.genEval to Gen.eval and add Gen.char to core test #57
    • Removed (almost) all Try examples in documentation/comment blocks #50
    • Extend test suite for FoldableLaws #41
    • Unify Foldable to be more aligned with Kotlin stdlib #36
    • Change firstOption implementation #32

    @lucmazon

    • Rename artifacts to fix inconsistency #77

    @overfullstack

    • Implemented ValidatedBifunctor #72

    @rachelcarmena

    • Doc: fix typo on libraries table of content #78
    • Doc: remove extra badge #73
    • Conf: change doc generation and validation #68
    • Undo unnecessary change #64
    • Conf: download orchestrator #61
    • Fix missing 'Type Class Hierarchy' section in website #55
    • Fix dependencies #54
    • Conf: control transitive dependencies #53
    • Doc: remove old badge #51
    • Fix code snippet according last reorders #48
    • Move static doc from Arrow Docs to arrow-docs module #47
    • Conf: publish arrow-core-test #45
    • Fix directories management #29
    • Fix: test reports #28
    • Configuration: add global checks #2
    • New conf #1

    arrow-ui

    @rachelcarmena

    • Conf: change doc generation and validation #21
    • Undo unnecessary change #20
    • Refactor: remove Arrow UI Test #19
    • Conf: download orchestrator #18
    • Conf: control transitive dependencies #17
    • Use GenK from arrow-core-test #15
    • Clean-up #12
    • Fix directories management #5
    • Fix: test reports #4
    • Configuration: add global checks #2
    • Configuration for the new multi-repo organization #1

    arrow-fx

    @1Jajen1

    • Fix EitherT generator to compile with latest changes #54
    • Change applicative instances to implement apEval and remove lazyAp #47

    @PetukhovVictor

    • Fix the code which is stumbled on an old type inference problem of the Kotlin compiler #53

    @aballano

    • Fix Queue flaky tests #122
    • Replace ConcurrentLaws' latch with unsafe promise #118
    • Update Arrow "cancel" wording for consistency #82
    • Refactor parMapN functions, add parTupledN #80
    • Temporarily diable mvar test #62
    • Use GenK from arrow-core-test #59
    • Fix several tests relying on no-op assertion #46
    • Increase test suite for BracketLaws #44

    @abendt

    • add a SemigroupK IO instance #67

    @danimontoya

    • Remove binary-compatibility-validator #109
    • Check binary compatibility before releasing 0.10.5 #104
    • Remove unneeded KotlinX Coroutines within arrow fx test #97
    • Cleanup fx tests #90
    • Enable ktlint #79
    • Removed (almost) all Try examples in documentation/comment blocks #69
    • Schedule.recurs flaky test #29

    @nomisRev

    • Add fiber integration + docs #86
    • Queue new API + docs #30

    @rachelcarmena

    • Conf: change doc generation and validation #112
    • Undo unnecessary change #98
    • Conf: download orchestrator #94
    • Fix missing 'Type Class Hierarchy' section in website #81
    • Fix dependencies #75
    • Conf: control transitive dependencies #73
    • Move static doc from Arrow Docs to arrow-docs module #55
    • Fix directories management #34
    • Fix: test reports #32
    • Configuration: add global checks #2
    • Configuration for the new multi-repo organization #1

    arrow-incubator

    @1Jajen1

    • Add mtl instances for all datatypes #76
    • Change EitherT MonadError instance #64
    • Fix apEval changes from arrow-core #35
    • EitherT MonadTrans instance and generics reorder #25
    • Kleisli MonadTrans instance and generics reorder #24
    • StateT MonadTrans instance and generics reorder #23
    • Monadtrans instance for WriterT #18

    @aballano

    • Reactivate ConcurrentLaws tests and fix Concurrent instances #85

    @abendt

    • MonadPlus/MonadLogic instances for mtl #69

    @danimontoya

    • Fix build error #61
    • Removed (almost) all Try examples in documentation/comment blocks #48

    @nomisRev

    • Clean incubator tests #63

    @rachelcarmena

    • Conf: change doc generation and validation #80
    • Disable flaky tests #74
    • Remove unnecessary dependency #72
    • Undo unnecessary change #68
    • Conf: download orchestrator #66
    • Fix missing 'Type Class Hierarchy' section in website #57
    • Conf: control transitive dependencies #52
    • Move static doc from Arrow Docs to arrow-docs module #44
    • Fix directories management #21
    • Fix: test reports #20
    • Configuration: add global checks #2
    • New conf #1

    arrow-optics

    @aballano

    • Update gradle.properties #37

    @danimontoya

    • Remove binary-compatibility-validator #44
    • Check binary compatibility before releasing 0.10.5 #41
    • Remove all tests that do not belong to optics #27
    • Removed (almost) all Try examples in documentation/comment blocks #22

    @nomisRev

    • Follow up arrow-optics-test #31

    @rachelcarmena

    • Conf: change doc generation and validation #45
    • Undo unnecessary change #39
    • Conf: download orchestrator #32
    • Fix missing 'Type Class Hierarchy' section in website #26
    • Fix dependencies #25
    • Conf: control transitive dependencies #23
    • Move static doc from Arrow Docs to arrow-docs module #19
    • Fix directories management #12
    • Fix: test reports #11
    • Configuration: add global checks #2
    • Configuration for the new multi-repo organization #1

    arrow-ank

    @danimontoya

    • Enable ktlint #16

    @rachelcarmena

    • Change configuration name to be included in pom file #24
    • Fix dependencies #23
    • Dependencies: remove kotlin-compiler #22
    • Conf: change doc generation and validation #21
    • Undo unnecessary change #20
    • Conf: download orchestrator #18
    • Conf: control transitive dependencies #15
    • Fix directories management #11
    • Fix: test reports #10
    • Configuration: add global checks #4
    • New conf #1

    arrow-integrations

    @rachelcarmena

    • Rename artifacts to fix inconsistency #21
    • Conf: change doc generation and validation #16
    • Undo unnecessary change #15
    • Refactor: remove Arrow Integrations Test #14
    • Conf: download orchestrator #12
    • Conf: control transitive dependencies #11
    • Fix directories management #5
    • Fix: test reports #4
    • Configuration: add global checks #2
    • New conf #1

    arrow

    @1Jajen1

    • Add note to parTraverse and parSequence explaining problems with large/infinte collections #2015
    • Use AndThen to make Kleisli and StateT more stacksafe #2014
    • Add a stacksafe variant of Join to AndThen #2005
    • Fix recently added doc links #1970
    • Add MonadIO to fx and instances to fx-mtl #1943
    • Prettier show instances #1937
    • Small improvements to ank #1926
    • WriterT inconsistencies #1914
    • Fix OptionT applicative to short-circuit properly #1900
    • Add some convenience methods to alternative #1897
    • Make Kleisli.map stacksafe #1896
    • Monad hierarchy tests genk + lots of small test fixes #1884
    • Add lazyAp and use it in traverse implementations #1868
    • Add port of zio's schedule #1393

    @AntonioMateoGomez

    • Change docs urls #2079
    • Fix layout reference #2054
    • Adds z-index to slack channel button #1946
    • Hide/show slack channel text box #1944
    • Missing MTL link #1940
    • GitHub stars #1934
    • Reducing loading times in docs #1911
    • Fix sidebar doc version links #1872

    @JLLeitschuh

    • Official Gradle Wrapper Validation GitHub Action #1930

    @Javaru

    • Fixed some typos in documentation. #1890

    @MaureenElsberry

    @PhBastiani

    • Free should support fx syntax #1985
    • [doc] Crosswalk - typo #1883

    @Romastyi

    • Add deriving option for @product annotation #1907

    @aballano

    • Change layout for docs recently moved to Fx #2082
    • Increase test suite for MonoidLaws and SemiringLaws #2076
    • Increase test suite for SemigroupLaws #2067
    • Increase test suite for TimerLaws #2064
    • Increase test suite for MonadDeferLaws #2059
    • Nits oncancel onerror #2040
    • Add clarification about Bracket's guarantee #2036
    • Kotlinx coroutines module docs #2035
    • Fix guarantee/guaranteeCase not calling finalizer for error #1999
    • Cancellable version of unsafeRun doesn't throw within run block #1993
    • Fix Async and Concurrent fx block's lazyness #1978
    • Fix recursive flatten for stdlib List #1969
    • Remove ObservableK Traverse/MonadFilter instances as they're not lawful. #1964
    • Fix suspend conversion for project reactor #1947
    • KotlinX Coroutines integration module #1939

    @abendt

    • add onError to Bracket #2022
    • Accum/AccumT #1988
    • MonadTrans #1924
    • use GenK for testdata generation #1891
    • use GenK for testdata generation in MonadFilter and related laws #1877
    • ComonadLaws uses GenK for testdata generation #1875
    • provide testdata with Gen/GenK instead of construction functions #1844

    @alphaho

    • Arrow jackson support #1889

    @arturdryomov

    • Add XML syntax highlighting to the readme file #1874

    @ashishkujoy

    • Fixes link to Sum data type #1931

    @bobkilla

    • DOCS: update slack link #arrow channel #1989

    @calvellido

    • Revert "Reducing loading times in docs" #1919
    • Add invalidation command on site publishing #1861

    @danimontoya

    • Add list of Kotlin modules to be excluded to avoid dependency collisions #2114
    • Downgrade kotlin version back to 1.3.61 #2113
    • Bump version of KOTLIN_VERSION #2108
    • Add kotlin binary compatibility version #2107
    • Bump KTLINT_GRADLE_VERSION #2101
    • Re-enabled MVar test #2086
    • Increase test suite for AsyncLaws #2077
    • Add MonadThrow laws #2060
    • Increase test suite for MonadLaws #2058
    • Update tests for ApplicativeLaws #2038
    • Update test suite for FunctorLaws #2037
    • Race in fiber raises cancellation exception #1986
    • RaceN arity9 #1968
    • Deprecate bind operator component1 #1965
    • Rename Applicative#map to #mapN and tupled to tupledN #1950

    @franciscodr

    • Next iteration 0.10.5-SNAPSHOT #1867
    • Release 0.10.4 #1866

    @i-walker

    • Update Ank to 1.3.50 #1921
    • Move AndMonoid to core and redefine Ior.Left and Ior.Right #1920
    • small fix to Traverse Docs #1903
    • Adds UnsafeRun instance for MaybeK #1902
    • Add Traverse Docs #1534

    @jkmcclellan

    @kioba

    • Add queue functor #1904

    @kylegoetz

    • DOCS: replaced non-existent Either.just(a: A) with Either.right(a: A)… #1945
    • Replaced nuclear war examples with cooking examples #1915

    @nomisRev

    • Refactor ConcurrentQueue internals #2081
    • Add stack-safety, parallel & timer tests to Concurrent #2034
    • Polymorphic Ref Test #2031
    • Fix MVar Async #2023
    • Add onCancel to Bracket #2017
    • Add race 3 to guarantee order of scheduling #2012
    • Enable ParMapN for IO up to arity 9 #1951
    • Fix stack safety parallel ops #1928

    @overfullstack

    • Docs: Corrected code-snippet compilation problems in Error-Handling page #2042

    @pakoito

    • Add handleErrorWith for Validated #2052
    • Fixes in Monad comprehensions doc #1894

    @rachelcarmena

    • Fix Bintray timed out: split publication #2119
    • Fix libraries location #2118
    • Format release notes #2117
    • Release 0.10.5 #2116
    • Release flow #2115
    • Conf: compatibility with MacOS #2112
    • Dm bump kotlin version #2111
    • Revert "Bump version of KOTLIN_VERSION" #2110
    • Conf: add new actions #2109
    • Conf: provide new Gradle tasks to work with local dependencies #2106
    • Doc: details about the website #2105
    • Doc: details about 'Type Class Hierarchy' sections #2104
    • Add sync with release/0.11.0 branch #2103
    • Improve site publish from libraries #2102
    • Update documentation #2100
    • Conf: workaround for crossed dependencies with arrow-test #2096
    • Doc: details about the move #2095
    • Conf: extract test configuration #2094
    • Clean: empty file #2090
    • Doc: fix old links #2088
    • Clean: old documentation #2084
    • Configuration: remove unnecessary trigger #2075
    • Fx: disable flaky test #2072
    • Clean: remove unnecessary files #2070
    • Re-org: starting point #2066
    • Conf: extract versions #2065
    • Conf: remove duplicated version #2051
    • Docs: add ank to snippets and update documentation #1997
    • Fix: change token to sync branches #1992
    • Fix sync release branch with master #1987
    • Clean dead configuration #1972
    • Add an automatic sync for release/0.11.0 #1967
    • Doc: update badges to show both WIP versions #1959
    • Config: publish artifacts from release/0.11.0 branch #1955
    • Refactor: extract versions #1948
    • Fix #1936: update doc publication #1938
    • Fix: Arrow Ank Gradle adds required dependencies #1936
    • DOC: add card image #1886

    @scott-christopher

    • Ensure effect order is preserved with Traversable #1879
    • Adds Sliding, Dropping and Unbounded strategies to arrow.fx.Queue #1832
    Source code(tar.gz)
    Source code(zip)
  • 0.10.4(Dec 19, 2019)

    0.10.4 (2019-12-19)

    • Release 0.10.4 (#1866) [Francisco Diaz]
    • Arrow-Core language edits (#1865) [Francisco Diaz]
    • Removes level tags from code (#1864) [AntonioMateoGomez]
    • Update home page code snippets (#1862) [Juan Valencia]
    • Adding > and < operations to Apply (#1843) [Miguel Coleto]
    • Redesign implementation (#1836) [AntonioMateoGomez]
    • Update suspended KDocs (#1860) [Simon Vergauwen]
    • Overwrite cancelable for EitherT (#1855) [Simon Vergauwen]
    • Arrow Fx MTL (#1846) [Simon Vergauwen]
    • Make CC IOConnection aware (#1848) [Simon Vergauwen]
    • Update Gradle and some libs to latest version (6.0.1) (#1840) [Stojan Anastasov]
    • Update README with arrow-examples link (#1841) [Attila Domokos]
    • Fix typo in monad tutorial [Paco]
    • Specialized aligns (#1831) [Alphonse Bendt]
    • this adds Crosswalk/Bicrosswalk typeclasses with some instances (#1820) [Alphonse Bendt]
    • refactor EqLaws, HashLaws, OrderLaws and ShowLaws to use Gen for testdata (#1838) [Alphonse Bendt]
    • add Zip/Repeat typeclass with instances (#1814) [Alphonse Bendt]
    • Fix Kleisli fx (#1835) [Simon Vergauwen]
    • Deprecate KindConnection from public API (#1834) [Simon Vergauwen]
    • fix small typos in README.md (#1833) [Yair Kukielka]
    • Add FP JVM Meetup & Lambda World talk to Arrow blog (#1823) [Simon Vergauwen]
    • Updates apt-get before installing (#1828) [Francisco Diaz]
    • Effects Queue (#1728) [richard-gibson]
    • Override some typeclass methods for better laziness (#1816) [Jannis]
    • Mapk eqk (#1813) [Alphonse Bendt]
    • Moved ConstTest (#1789) (#1793) [Philippe Bastiani]
    • fix docs typos (#1812) [lukaszkalnik]
    • Unalign typeclass with instances (#1811) [Alphonse Bendt]
    • Sortedmapk semialign (#1810) [Alphonse Bendt]
    • Align with instances (#1809) [Alphonse Bendt]
    • add missing data types section (#1808) [Alphonse Bendt]
    • implement Semialign typeclass (#1800) [Alphonse Bendt]
    • add Eq1 with instances for some arrow types (#1804) [Alphonse Bendt]
    • add a SortedMapK Hash instance (#1806) [Alphonse Bendt]
    • adds a SortedMapK Eq instance (#1805) [Alphonse Bendt]
    • Update README.md to add supported Android versions (#1799) [Alberto Ballano]
    • Next iteration 0.10.4-SNAPSHOT (#1795) [Francisco Diaz]
    Source code(tar.gz)
    Source code(zip)
  • 0.10.3(Nov 13, 2019)

    0.10.3 (2019-11-13)

    • Release 0.10.3 (#1792) [Francisco Diaz]
    • Move Const.kt to core package (#1789) (#1791) [Stanislav Zemlyakov]
    • CI: move from Bitrise to GitHub Actions (#1779) [Rachel M. Carmena]
    • Fix broken link to Bracket.kt (#1790) [Sven Tennie]
    • Implement Endo Monoid (#1781) [Flavio Corpa]
    • Remove unused Fx (#1788) [Simon Vergauwen]
    • Add io pool to dispatchers (#1787) [Simon Vergauwen]
    • Add Fiber instances (#1783) [Simon Vergauwen]
    • Add unsafeCancellableRun (#1784) [Paco]
    • Add deprecation notice for unsafe catch (#1785) [Paco]
    • RxJava ConcurrentSyntax & Dispatchers (#1782) [Simon Vergauwen]
    • Fix the return type of flatMap (#1780) [tatsuyafujisaki]
    • #1777: add extension function that converts an Either to an IO (#1778) [Alphonse Bendt]
    • CI: move to GitHub Actions for release (#1771) [Rachel M. Carmena]
    • Update README.md. (#1774) [Sebastian Raaphorst]
    • Add replicate to applicative (#1768) [Jannis]
    • Add alternative instances to datatypes (#1769) [Jannis]
    • Correct link to Option class in Datatype intro (#1766) [Ro-Rams]
    • Removed unused Readme files (#1763) [Miguel Angel Ruiz Lopez]
    • More targets for extension annotation: (#1764) [Rachel M. Carmena]
    • Add sequence birecursive instance and fix corecursive tests (#1750) [Jannis]
    • arrow-annotations: migrate content from Arrow Meta (#1760) [Rachel M. Carmena]
    • Make retrofit compatible with lower API versions (#1762) [junron]
    • Check submodules for Android API compatibility (#1751) [junron]
    • Add docs for cancelable IO (#1759) [Paco]
    • Documentation: update badges (#1752) [Rachel M. Carmena]
    • Update README.md (#1756) [Stephen Samuel]
    • Slight tweaks to atomics (#1753) [Alberto Ballano]
    • Move listk doc to kdoc (#1592) [Miguel Angel Ruiz Lopez]
    • Remove arrow-meta-prototype (#1745) [Rachel M. Carmena]
    • Fix typo and replace compile with implementation in various md files (#1748) [Alberto Ballano]
    • Implement suspend catch for ApplicativeError (#1744) [Thanh Le]
    Source code(tar.gz)
    Source code(zip)
  • 0.10.2(Oct 25, 2019)

    0.10.2 (2019-10-24)

    • Release 0.10.2 (#1737) [Francisco Diaz]
    • Rework recursion schemes to be more modular (#1384) [Jannis]
    • excluded arrow dependencies from kotlintest in arrow-test. (#1733) [Alpha]
    • Fix typos in Higher Kind docs (#1730) [Márton Braun]
    • Remove unnecessary foldable in max and min values (#1724) [Miguel Angel Ruiz Lopez]
    • Fix checks (#1725) [Rachel M. Carmena]
    • Test with semigroup and monoid laws (#1705) [Devesh Shetty]
    • Fix typos (#1723) [Tatsuya Fujisaki]
    • Change the implementation of min and max in order to not change the return value. The idea is get the max value but we don't have to return that max all the time (#1722) [Miguel Angel Ruiz Lopez]
    • Fix crash on Android API < 21 by replacing usages of java.util.concurrent.atomic with Kotlin's atomic-fu (#1710) [Alberto Ballano]
    • Implemented AQL's Max and Min (#1702) [Miguel Angel Ruiz Lopez]
    • Update README.md (#1721) [Niccolò Passolunghi]
    • Documentation: tiny format detail (#1714) [Rachel M. Carmena]
    • Next iteration 0.10.2-SNAPSHOT (#1671) [Jorge Castillo]
    • Add GitHub Actions to build the project and to get notifications (#1694) [Rachel M. Carmena]
    • fixed the artifact name of arrow-aql in README.md (#1709) [Alpha]
    • Recover setup guidelines in main page. (#1707) [Rachel M. Carmena]
    • Move ReadMe Docs to KDocs (#1493) [maruiz81]
    • Update Dokka to 0.10.0 (#1700) [junron]
    • KIO moved to jitpack.io repository (#1691) [Emanuele Colombo]
    • Add a link to the frdomain.kt project (#1689) [Stojan Anastasov]
    • Update some dependencies (#1681) [Stojan Anastasov]
    • Adding some docs for MonadCombine (#1685) [Miguel Coleto]
    • Switch to the kotlintest-runner-junit5 (#1687) [Stojan Anastasov]
    • Removes Russian translations (#1684) [Imran Settuba]
    • Doc - Removing references to DeferredK (#1597) [Philippe Bastiani]
    • KIO benchmark (#1688) [Emanuele Colombo]
    • Fix old snippet [Paco]
    • Fixing Alternative's some and many and adding docs for them (#1664) [Miguel Coleto]
    Source code(tar.gz)
    Source code(zip)
  • 0.10.1(Oct 15, 2019)

    0.10.1 (2019-10-08)

    • Modify Russian links text on docs (#1677) [Juan Valencia]
    • Release 0.10.1 (#1670) [Jorge Castillo]
    • Make Reactor family covariant (#1669) [Thanh Le]
    • Implement MonadFilter for FluxK (#1668) [Thanh Le]
    • Implement FunctorFilter for FluxK (#1650) [Thanh Le]
    • Adding some docs for Alternative (#1662) [Miguel Coleto]
    • Fix fx eager evaluation in Reactor and RxJava (#1663) [Pin-Sho Feng]
    • Fix IO.fx eager evaluation (#1624) [Pin-Sho Feng]
    • Implement MonadFilter for Rx family (#1657) [Thanh Le]
    • Adding some, many and alt functions to Alternative (#1655) [Miguel Coleto]
    • Replace example (#1660) [Paco]
    • Using Eq typeclass NonZero class within validation module (#1656) [Francisco Diaz]
    • Setup: facilitate the landing for newcomers (#1626) [Rachel M. Carmena]
    • quickfix (#1629) [Imran Settuba]
    • Make coproducts covariant (#1627) [Andrzej Ressel]
    • Make Rx family covariant (#1622) [Thanh Le]
    • Supress Rx onError logging (#1625) [Simon Vergauwen]
    • Remove Java 8 usage (#1623) [Simon Vergauwen]
    • Add RxArrow to 3rd party projects list (#1611) [Thanh Le]
    • Fix MonadFilter docs [Paco]
    • Upgrade ktlint and disable no-unit-return rule (#1610) [Jorge Rodriguez]
    • Merges arrow-meta-prototype (#1606) [Juan Pedro Moreno]
    • Implement FunctorFilter instances for Rx (#1603) [Thanh Le]
    • Either right if null extension (#1600) [Neuman968]
    • Add some documentation to HList (#1596) [Sven Tennie]
    • Next iteration 0.10.1-SNAPSHOT (#1591) [Raúl Raja Martínez]
    Source code(tar.gz)
    Source code(zip)
  • 0.10.0(Sep 10, 2019)

    0.10.0 (2019-09-10)

    • Release 0.10.0 (#1590) [Raúl Raja Martínez]
    • Fix typo (#1577) [Sven Tennie]
    • Remove codevoc (#1575) [Fernando Franco Gíraldez]
    • Create release-trigger.yml (#1570) [Juan Manuel Méndez Rey]
    • Fix #1498 (#1526) [Zemlyakov Stas]
    • Fix behaviour of Optional.asSetter so that it sets absent values (#1542) (#1544) [Ross Anderson]
    • Fixes bitrise mapping exception (#1559) [Imran Settuba]
    • @Deprecation cleanUp (#1531) [Imran Settuba]
    • Fix IOParMap3 null bug (#1558) [Simon Vergauwen]
    • Remove FxSyntax (#1556) [Simon Vergauwen]
    • Fix link in README. [Paco]
    • Fix one conflict that reached master (#1557) [Paco]
    • Fx release prep/sweep (#1530) [Simon Vergauwen]
    • Fix extension processor suspend fun args (#1555) [Raúl Raja Martínez]
    • Docs: note about fold (#1552) [Rachel M. Carmena]
    • #638/mapk docs (#1547, #1540) [Imran Settuba, Zemlyakov Stas]
    • Java9support (#1546) [Nico D'Cotta]
    • Move Composed to mtl (#1549) [Imran Settuba]
    • Added MapK's FunctorFilter & TestLaws (#1548) [Imran Settuba]
    • Free Foldable and Traverse (#1522) [Imran Settuba]
    • Fix AndThen#contramap doc (#1536) [TSUYUSATO Kitsune]
    • Delete inline fun in DataTypes (#1527) [Imran Settuba]
    • Remove Partial Functions. (#1419) [Diego E. Alonso Blas, Simon Vergauwen]
    • Fix Monad inheritance in the tutorial about Monads (#1523) [Zemlyakov Stas]
    • Blog post polymorphic fx (arrow-kt/arrow#1517) (#1524) [colomboe]
    • Add documentation to disable explicit unit return error in ktlint (#1521) [Jorge Rodriguez]
    • Webpage and ReadMe update for 0.10.0 Snapshot (#1514) [Imran Settuba, Simon Vergauwen]
    • Adds Bimonad Laws (#1516) [Imran Settuba]
    • Concurrent parApplicative/parTraverse&co (#1483) [Simon Vergauwen]
    • Add Kotliners ArrowFx talk and fix android sample project link (#1520) [Jorge Castillo]
    • Delete FF extension for Try (#1518) [Imran Settuba]
    • FunctorFilter cleanup (#1513) [Imran Settuba]
    • Move TraverseFilter, MonadCombine and MonadFilter (#1511) [Imran Settuba]
    • Tries to deploy new artifacts (#1512) [Imran Settuba]
    • Create 2019-07-05-testing-with-modules.md (#1507) [colomboe]
    • Moved FunctorFilter to core (#1509) [Imran Settuba]
    • Cache singleThreadContext (#1506) [Simon Vergauwen]
    • Add linting documentation documentation (#1500) [Jorge Rodriguez]
    • New blog post for the "Modular functional programming with Kotlin" post (#1503) [colomboe]
    • Optics modules (#1492) [Simon Vergauwen]
    • Replace IO suspend with defer (#1497) [Octogonapus]
    • Adapted free module to current package structure for 0.10.0 (#1496)
    • Refactor task for effects (#1495) [Imran Settuba]
    • Untangeling datatypes (#1488) [Imran Settuba]
    • Adding Bitraverse Typeclass (#1487) [maruiz81]
    • Deprecate concurrent async (#1486) [Simon Vergauwen]
    • Moved arrow-typeclasses to arrow-core-data with their respective tests (#1481) [Imran Settuba]
    • Add support for suspend functions via the effect constructor in Async. Rename delay to later. (#1439) [Paco, Simon Vergauwen]
    • Concurrent instances for Rx (#1427) [Paco]
    • Ank not fail fast (#1480) [Simon Vergauwen]
    • Deprecate Monad.effect methods without suspensions (#1472) [glamm]
    • Fixes ["Request"] convenient Option.mapNotNull #1475 (#1479) [Stefan Schraß]
    • Fx type class hierarchy and a la carte binding strategies (#1465) [Raúl Raja Martínez]
    • Add the blog post How KEEP-87 & Typeclasses will change the way we write Kotlin (#1476) [Sebastian Sellmair]
    • Move the Documentation for Id from README.md to the Id.kt (#1474) [maruiz81]
    • Enable project parallelism for Gradle (#1456) [Mike Kobit]
    • Generalizes firstOption and promotes it to Foldable. (#1466) [Raúl Raja Martínez]
    • Introduce Timer (#1464) [Simon Vergauwen]
    • Fix benchmarks and add CI step (#1463) [Simon Vergauwen]
    • Remove Shadow module. (#1461) [Raúl Raja Martínez]
    • Deprecate Legacy Validation utils (#1462) [Raúl Raja Martínez]
    • Remove Dagger Integration (#1460) [Raúl Raja Martínez]
    • Improve racing APIs (#1459) [Simon Vergauwen]
    • Add triple tuple3 interoperability (#1457) [Adrian Ramirez Fornell]
    • Add .tupled()/.untupled() to function syntax (#1453) [glamm]
    • IO effect in runloop (#1451) [Simon Vergauwen]
    • Concurrent - sleep & waitFor (#1449) [Simon Vergauwen]
    • Redeem/RedeemWith (#1450) [Simon Vergauwen]
    • IO forking (#1447) [Simon Vergauwen]
    • IO trampoline async (#1448) [Simon Vergauwen]
    • Update Eval.kt docs (#1378) [Adrian Ramirez Fornell]
    • IO incomplete IORunLoop#step (#1442) [Simon Vergauwen]
    • Fix typo and add code markings to ApplicativeError documentations (#1446) [Mike Kobit]
    • IO rewrite ContinueOn impl (#1443) [Simon Vergauwen]
    • Add benchmarks for IO (#1441) [Simon Vergauwen]
    • Add badge with stackoverflow link for support (#1440) [Pablo Gonzalez Alonso]
    • Add new recommended constructor for Ref (#1436) [Paco]
    • Making iterateRight an extension of Iterator (https://github.com/arrow-kt/arrow/issues/1428) (#1434) [Benjamin Rogge]
    • Remove several deprecated APIs (#1424) [Paco]
    • KotlinTest forFew bug (#1426) [Simon Vergauwen]
    • Bracket/GuaranteeCase stack safety (#1425) [Simon Vergauwen]
    • Add deprecation notice to PartialFunction (#1423) [Paco]
    • Update libraries sub-page for 0.9.1 (#1421) [Paco]
    • Fix generated package for unnamed packages (#1397) [Imran Settuba]
    • Ensure NonEmptyList properties are immutable (#1418) [Bill Wanjohi]
    • Apply typeclass (#1404) [Pedro Vicente Gómez Sánchez]
    • Update README.md (#1407) [Nikita Eshkeev]
    • Add Ktlint as code formatter (#1405) [Alberto Ballano]
    • Make NonFatal a function (#1403) [Paco]
    • Fix missing return type on equality example. (#1396) [Nicola Baldi]
    • Fix remaining references to startF. [Paco]
    • Remove redundant top snack bar (#1392) [Juan Valencia]
    • Fix Resource api docs link (#1389) [Jannis]
    • Resource data type (#1376) [Jannis]
    • Added translation for «How to write polymorphic programs» tutorial (#1388) [Artem Dobrovinskiy]
    • DelayOrRaise (#1387) [Imran Settuba]
    • Fix docs (#1383) [Paco]
    • Update Dokka to version 0.9.18 (#1381) [Julian Kotrba]
    • The inclusion of Fiber on Sidebar #1374 (#1380) [Arioston]
    • Unnecessary AQL dependency (#1377) [Imran Settuba]
    • Fix shouldBeEq function (#1362) [Julian Kotrba]
    • Tabindex is added to the a element of the navigation-dropdown (#1375) [AntonioMateoGomez]
    • Fix Maven badge. [Paco]
    • Fix Maven badge. [Paco]
    • Rename files we've found using MD as extension instead of md (#1373) [Pedro Vicente Gómez Sánchez]
    • Rename delayUnsafe to delayOrRaise (#1369) [Julian Kotrba]
    • Update Bitrise stack dependency to fix deploys (#1367) [Juan Valencia]
    • Rename deferUnsafe to delayUnsafe (#1356) (#1364) [Julian Kotrba]
    • Fixes for FX docs (#1313) [Alberto Ballano]
    • Docs Arrow version selector (#1360) [AntonioMateoGomez]
    • Fix typo on fibers documentation (#1366) [Alexandru Simonescu]
    • Noise is intentional. [Paco]
    • Updated Maven section for 0.9.0 (#1355) [Babis]
    • Updated Gradle and some dependencies including Kotlin (#1343) [Juan Ramón González]
    • Add info about a possible error (#1354) [Julian Kotrba]
    • Add Monoidal type class (#1327) [Julian Kotrba]
    • Migrated to latest KotlinPoet stable 1.1.0 (#1345) [Juan Ramón González]
    • Update kotlintest to version 3.3.1 (#1338) [Stojan Anastasov]
    • Missing imports added to keep ank happy (#1353) [richard-gibson]
    • Selective functor extras (#1352) [richard-gibson]
    • Close comments (#1349) [Stojan Anastasov]
    • Fix Jekyll deployment url (#1348) [Julian Kotrba]
    • Removed coroutine artifacts from documentation since they no longer exist (#1346) [Juan Ramón González]
    • Fix Eq for ListK instances with different lengths (#1344) [Julian Kotrba]
    • Fix spacing. [Paco]
    • Update READMEs (#1341) [Paco]
    • Next development iteration 0.9.1-SNAPSHOT (#1340) [Raúl Raja Martínez]
    Source code(tar.gz)
    Source code(zip)
  • 0.9.0(Mar 8, 2019)

    Change Log

    0.9.0 (2019-03-08)

    Full Changelog

    Implemented enhancements:

    • Coproducts type inference issue #1284
    • Add Semiring #1225
    • Update to latest KotlinTest and use their provided arrow matchers #854
    • Update kotlintest #912 (AdrianRaFo)

    Fixed bugs:

    • fx crash #1295
    • Formatting issue on data type generated docs #1228
    • Allow NonFatal control over exceptions for MonadError and Monadic comprehensions #153

    Closed issues:

    • Artifact audit #1333
    • Const Monad, MonadError, etc. #1331
    • Add Selective Applicative Functors #1329
    • handleErrorWith for Either #1324
    • [SECURITY] Releases are built/executed/released in the context of insecure/untrusted code #1310
    • Dispatchers ambigüity #1283
    • Add delay and similar utils to the Fx continuations #1277
    • Fix aws s3 sync docs #1270
    • Unable to locate arrow.(core/data).option.monad.binding #1261
    • Module with the Main dispatcher had failed to initialize in 0.8.2 #1241
    • Update docs for deploying docs #1239
    • Update Ank docs #1236
    • Configure Google Analytics in the docs site #1218
    • Optics invalid code generation #1211
    • Using binding as in docs generates deprecation warning #1167
    • Update to Kotlin 1.3.10 #1122
    • Docs for MonadThrow #1111
    • Concurrent #1090
    • Should Try.raise have a Nothing generic? #1078
    • Docs styles tweaks #1052
    • Add Semigroupal typeclass #882
    • Parallelise tests #855
    • Blogs & Presentations #797
    • Add KDoc documentation to the site #735
    • [Docs] Main media section reorganization #626

    Merged pull requests:

    Source code(tar.gz)
    Source code(zip)
  • 0.8.2(Dec 31, 2018)

    Change Log

    0.8.2 (2018-12-31)

    Full Changelog

    Noteworthy in this release:

    All Merged pull requests:

    Source code(tar.gz)
    Source code(zip)
  • 0.8.1(Nov 11, 2018)

    Change Log

    0.8.1 (2018-11-11)

    Full Changelog

    Noteworthy in this release:

    Merged pull requests:

    Source code(tar.gz)
    Source code(zip)
  • 0.8.0(Nov 2, 2018)

    0.8.0 (2018-10-30)

    Full Changelog

    Noteworthy in 0.8.0:

    Merged pull requests:

    Source code(tar.gz)
    Source code(zip)
  • 0.7.3(Aug 19, 2018)

    Change Log

    0.7.3 (2018-08-19)

    Full Changelog

    Merged pull requests:

    Source code(tar.gz)
    Source code(zip)
  • 0.7.2(May 29, 2018)

    Change Log

    0.7.2 (2018-05-29)

    Full Changelog

    Noteworthy changes:

    Implemented enhancements:

    • [Docs] Enable HTTPS #731
    • [arrow-core] Make param names more dev friendly #853 (aballano)
    • Renzu missing instances and simplifying the tree #822 (JorgeCastilloPrz)
    • Add a sequence function to all datatypes that supported traverse, instead of needing to use a typeclass to access it (pakoito)

    Fixed bugs:

    • Directory with source code must have name "arrow" or Renzu will fail #824
    • Fix combination of Option. Combining Some with None used to incorrectly yield None. Now it returns Some as it should #832

    Closed issues:

    • Add RxJava Maybe wrapper #860
    • Add RxJava Single wrapper #856
    • Constructor functions for Show to use receiver function #830
    • Add State video #828
    • Directory with source code must be name "arrow #823
    • [v0.7.0] arrow.syntax.tuples.plus operator fun no more available in version 0.7.0 #815
    • Add Kleisli video #809
    • Infix then function #799
    • Links to typeclasses in kotlinx.coroutines docs doesn't work #798
    • Codecov is broken #632
    • Error message autofold #462

    Merged pull requests:

    Source code(tar.gz)
    Source code(zip)
  • 0.7.1(Apr 10, 2018)

  • 0.7.0(Apr 8, 2018)

    Noteworthy since 0.6.1

    Paco Estevez : @pakoito * [29384ab6] Rename all Kinds, Witnesses, and typealiases * [24f03d5d] Remove remaining instances of reified * [14565968] Refactor all typeclasses to use Typeclassless encoding * [bdee8cb0] sigh * [7b942bd7] Refactor all the codebase to have any typeclass dependency as first parameter * [09300839] Rename pure to just * [687b2964] Split arrow-instances between core and data. Free now only depends on core. * [a94dc2d3] Add alias for platfom-dependent collections * [7f623992] Add instances for Boolean. * [d8977fd1] Rename MonadSuspend to MonadDefer * [27d372f1] Add docs for dependency_injection * [843179b5] Fix all broken links in list of typeclasses/intro * [66d96955] Improve typeclass/intro and glossary * [7f623992] Add doc for platform types with instances.

    Simon Vergauwen : @nomisRev * [9181bae7] Add At typeclass and instances * [fd5a4df6] Add Optional law tests for optic conversion * [e1ae53b2] Add Missing map optic * [911a1285] Add Getter test for optic conversion * [1f01585c] Add Iso law test for optic conversion * [58e2dcdf] Add Lens law test for optic conversion * [97459523] Add Prism law test for optic conversion * [74bc110e] Add Setter law test for optic conversion * [c3e1d262] Add Traversal law test for optic conversion * [26158491] Complete map instance test and removed unlawfull map to list iso * [fe6bd9bc] Add At instances for java_util * [1b7aa819] Add Each instances for java_util * [28a777c7] Add FilterIndex instances for java_util * [66936c13] Add Index instances for java_util * [85fd8772] Kind for PIso * [1ed790e3] Kind for PLens * [a44b96d9] Kind for PPrism * [2a10efb8] Kind for POptional * [aefaf94b] Kind for Setter * [e6659067] Kind for PTraversal * [fe2b4a3e] Kind for Getter * [46cc1f4b] Kind for Fold * [c59876d9] Move all optic generation to a single annotation * [168c7e45] Move optics annotation to optics package and rename @optic to @optics * [a632a67f] Move bound to optics module * [0b6948bf] Add KDoc to BoundSetter * [88d69056] Rename bound to BoundSetter * [abdff515] Improve generation of Lens and Optional of nullable and Option types. * [99920fe5] Correction Setter KDoc * [ec89e595] Docs for syntax DSL * [e787f26d] Compile generated optics in docs. * [7963979a] Move all optic generation to a single annotation * [b71357e4] Move optics annotation to optics package and rename @optic to @optics * [9e57cc89] Move bound to optics module * [c6cde81d] Add KDoc to BoundSetter * [a969a639] Rename bound to BoundSetter * [85f3c9af] Improve generation of Lens and Optional of nullable and Option types. * [f0a2133d] Docs for syntax DSL

    Raul Raja : @raulraja * [f5e4950b] arrow-dagger enables compile time type class instances resolution * [11219c82] Group modules into folders for a more semantic organization * [db90b802] Dagger modules for effects, rx2 and coroutines exposing effects instances * [64ba3253] Deriving Semigroup, Monoid, Eq, Order and Show for products based on TupleN arities * [b299e458] First iteration of Arrow Generic featuring @product http://arrow-kt.io/docs/generic/product/ * [1d3be3ea] Extract utility methods in processor to ProcessorUtils * [a12c7651] Add companion object to all tupleN arities * [7fd063c6] semigroup + syntax * [b261d1d4] Const refactoring Removes free dependencies on optics and mtl. * [3ff60bfc] Moves Try to arrow-core since it's a popular used data type along with other core ones like Option reducing the need for users to depend on arrow-data * [87d0159f] Nel docs and ank fixes

    Cotel : @Cotel * [4ddb475c] Show typeclass and instances

    Israel : @israelperezglez * [b1de905b] Either video * [ea9fb378] Site improvements * [1d17e078] Try video * [efcdd166] NonEmptyList video * [03eb42fe] Validated video * [0048024e] Kinds video * [6c7cd570] Id video * [c4f3c9f1] ListK video * [1f378b08] Eval video * [f1a5448d] OptionT video * [9f2b35e1] Setk video

    Andrzej Ressel : @jereksel * [c80b076d] Tests for annotation processor * [af35d269] Clean .gitignore and fix tests * [35415906] Annotation processor for [at]bounded

    aedans : @aedans * [834e561b] Add Tuple2 instances

    Guardiola31337 : @Guardiola31337 * [9e4ced86] Remove ank modules from arrow repo * [481fd6a2] Fix ank dep issue using timestamped snapshot versions for ank-core and ank-gradle-plugin * [fbd12290] Enable docs after fixing ank with arrow 0.7.0 changes * [f1923660] Fix arrow instances artifact ids adding core and data suffixes * [d01abf3f] Bump ank dependency which now includes latest 0.7 syntax changes and unblocks docs generation

    AdrianRaFo : @AdrianRaFo * [3affffee] Map docs * [eac1ddb2] Kleisli docs * [6e6ac9ad] Ap docs

    Juan Valencia Calvellido : @calvellido * [ef29b92b] Linkify doc sections headers * This is done through JS * [56de3206] Add code highlighting also to list elements * [755477e6] Small edition to Nel docs to adapt to current general docs stylings * [820383c0] Standardize all “Available Instances” data types sections * [94718ce7] Add implemented data types lists for all type classes * [e0ea9993] Fix link destination typo in Datatypes intro * [5fdfeccb] Add Id video

    Mohit : @msya * [e5cc22ab] Update links to Lens and Iso data types * [ea736ddc] Add API version and meetup name

    Daniele Campogiani : @dcampogiani * [981ae213] Add Android Functional Validation to docs

    Radimir Sorokin : @qradimir * [b9d98713] BoundSetter class

    Ricardo Meneghin Filho : * [058af92f] changes Left and Right field-backed properties isRight and isLeft to function-only backed ones

    Alf Kristian Stoyle : @stoyle * [a49eae6a] Allow exception to propagate from fold Success f

    Jason Bennett : @jasonab * [f6181eb8] Update README.md

    Jorge Castillo : @JorgeCastilloPrz * [c99e3aac] upgrade kotlin and kotlinx.coroutines

    Kaden Thomas : @tkaden4 * [9ac69801] Fix typo in MonadError docs

    Mario Arias : @MarioArias * [f44fb884] fix toPartialFunction implementation

    Matthias Lüneberg : @matsluni * [800a327e] Update Readme.md

    Pablo Gonzalez Alonso : @pablisco * [84562462] Reverted problematic merge of the weak type

    Robert Stoll : @robstoll * [caa4e868] simplify settings.gradle by tutteli's settings plugin

    itua : * [664c9a6f] Doc for SetK

    prat t : @pt2121 * [0a0098f4] Update instance resolution

    Source code(tar.gz)
    Source code(zip)
  • 0.6.1(Feb 1, 2018)

    Noteworthy in this release:

    • New optics Index and FilteredIndex. Thank you @nomisRev
    • Update Option.forall to return true on None. Thanks @benfleis!
    • Add Either.getOrHandle. Cheers @sbuettner
    • Eval is stack safe and more performant now. Great job by @aedans
    • New datatype Weak by @pablisco. <3 you man :D
    • Better build errors in Java9 and JRE by @christophsturm. Awesome find!
    • Deprecate yields in binding comprehensions, you can now return any value

    A big thanks to all the contributors to the docs, especially those who did it for their first time!

    Contributions:

    • Andrzej Ressel (12): - @optional annotation and converters

    • Christoph Sturm (1): - improve error message on incompatible jdk version

    • Guardiola31337 (3): - Fixes to README docs

    • Israel (11): - Website improvements and video enabled tutorials

    • Juan Valencia Calvellido (6): - Website improvements and video enabled tutorials

    • Mike Kobit (5): - Build improvements and repl task that opens a REPL with Arrow in its classpath

    • Pablisco (2): - Weak data type and docs

    • Pratik Chaudhary (2): - Option doc improvements

    • Simon Buettner (2): - getOrHandle extension

    • Simon Vergauwen (26): - Optic law fixes and `FilterIndex

    • aedans (2): - Compute -> FlatMap and Call -> Defer - Improve Eval stack safety

    • ben fleis (1): - update Option.forall to return true on None (ie, empty)

    • pakoito (20): - Docs, Effects and binding improvements that deprecate yields

    Source code(tar.gz)
    Source code(zip)
  • 0.6.0(Jan 21, 2018)

    • Merged funKtionale and kategory as arrow (release 0.5.X)
    • Fix compatibility issue with Kotlin 1.2
    • Refactored the effects package:
      • Three typeclasses: MonadSuspend, Async, and Effect
      • First pass, improvements coming
    • Refactored comprehensions:
      • Renamed bindingE to bindingCatch
      • Renamed bindingECancellable to bindingCancellable
      • Moved bindingCancellable to MonadSuspend
      • bindAsync is now only available on bindingCancellable
      • Removed bindInM due to its gotchas with suspended types
      • Add bindDefer, bindDeferIn to bindingCancellable. They suspended a block to be executed lazily on the current CoroutineContext, or the one passed as a parameter
    • New documentation
    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Dec 12, 2017)

    • Update to Kotlin 1.2 and Gradle 4.3
    • Lots of documentation added to the official site!

    Additions

    • New integration module: kategory-kotlinx-coroutines
    • Add bindInM to monad comprehensions
    • Add integration with KindedJ
    • Add new wrapper for SortedMap #451
    • Add new annotation @autofold to generate Fold lenses for sealed classes #448
    • Typealias for multiple datatypes, i.e. Either.Left becomes Left #442
    • MonadFilter can now provide comprehension guards #441

    Fixes

    • Refactor IO, Kleisli, Reader, ReaderT
    • Redo the StateT API
    • Removed all @JvmStatic occurrences as they caused issues with proguard
    • Fix Yoneda and Coyoneda to have invoke operators instead of the old apply functions
    Source code(tar.gz)
    Source code(zip)
  • 0.3.11(Oct 31, 2017)

    • Instances for Eval
    • Iso instances
    • Improved kategory processor (Iso, higherkind & instance)
    • Eq instances
    • Validated fixes
    • Corrected Semigroup & Monoid API
    Source code(tar.gz)
    Source code(zip)
Owner
ΛRROW
Functional Data Types & Abstractions for Kotlin
ΛRROW
Concurrency-programming - Homework for the course of Concurrency Programming, ITMO CT, Autumn 2020

Homework for the course of Concurrency Programming, ITMO CT, Autumn 2020 Выполни

Grigoriy Khlytin 2 Jan 23, 2022
Functional Kotlin & Arrow based library for generating and verifying JWTs and JWSs

kJWT Functional Kotlin & Arrow based library for generating and verifying JWTs and JWSs. JWS JWT The following Algorithms are supported: HS256 HS384 H

Peter vR 31 Dec 25, 2022
Functional Constructs for Databinding + Kotlin + RxJava

ObservableFlow Pt 1/3 Pt 2/3: Stepper Indicator Pt 3/3: SugarPreferences Functional Kotlin constructs like map(), filter() and 12 more functions built

Rakshak R.Hegde 26 Oct 3, 2022
An example for who are all going to start learning Kotlin programming language to develop Android application.

Kotlin Example Here is an example for who are all going to start learning Kotlin programming language to develop Android application. First check this

Prabhakar Thota 56 Sep 16, 2022
Android utilities for easier and faster Kotlin programming.

Android utilities for easier and faster Kotlin programming. Download Gradle compile 'com.costular:kotlin-utils:0.1' How to use It depends on utilities

Diego Francisco Concepción 51 Oct 3, 2022
A template that utilizes both Scala and Kotlin because why not (And also because I endorse programming hell)

Fabric-Scala-Kotlin-template A template that utilizes both Scala and Kotlin because why not (And also because I endorse programming hell) I don't care

null 1 Dec 25, 2021
Lambda-snake.kt - Snake Game Implementation for Web using Kotlin programming language compiled for Javascript

Projeto da disciplina de Linguagem de Programação Funcional 2021.1 (jan/2022) ??

Alex Candido 3 Jan 10, 2022
Clean Code and Reactive Programming PlayGround for Bangkit 2021

Clean Code and Reactive Programming PlayGround for Bangkit 2021 Hello! This repo contains the IntelliJ project that I use to present my talk, "Clean A

raditya gumay 3 May 16, 2021
A pair of applications provide a direct means of integrating with one another via application programming interfaces (APIs)

What is a native integration? It's when a pair of applications provide a direct means of integrating with one another via application programming interfaces (APIs). Once integrated, data can flow between the apps and become more readily available to your employees.

Behruz Hurramov 2 Jan 17, 2022
A thought experiment on architecture, object-oriented programming, and composability.

Journal3 There's barely anything special about the features that Journal3 is offering, it's literally yet another journaling application. What is spec

Hadi Satrio 7 Dec 13, 2022
Run Kotlin/JS libraries in Kotlin/JVM and Kotlin/Native programs

Zipline This library streamlines using Kotlin/JS libraries from Kotlin/JVM and Kotlin/Native programs. It makes it possible to do continuous deploymen

Cash App 1.5k Dec 30, 2022
A somewhat copy past of Jetbrain's code from the kotlin plugin repo to make it humanly possible to test Intellij IDEA kotlin plugins that work on kotlin

A somewhat copy past of Jetbrain's code from the kotlin plugin repo to make it humanly possible to test Intellij IDEA kotlin plugins that work on kotlin

common sense OSS 0 Jan 20, 2022
Real life Kotlin Multiplatform project with an iOS application developed in Swift with SwiftUI, an Android application developed in Kotlin with Jetpack Compose and a backed in Kotlin hosted on AppEngine.

Conferences4Hall Real life Kotlin Multiplatform project with an iOS application developed in Swift with SwiftUI, an Android application developed in K

Gérard Paligot 98 Dec 15, 2022
[Android Library] A SharedPreferences helper library to save and fetch the values easily.

Preference Helper A SharedPreferences helper library to save and fetch the values easily. Featured in Use in your project Add this to your module's bu

Naveen T P 13 Apr 4, 2020
Kotlin library for Android

KAndroid Kotlin library for Android providing useful extensions to eliminate boilerplate code in Android SDK and focus on productivity. Download Downl

Paweł Gajda 890 Nov 13, 2022
A Kotlin DSL wrapper around the mikepenz/MaterialDrawer library.

MaterialDrawerKt Create navigation drawers in your Activities and Fragments without having to write any XML, in pure Kotlin code, with access to all t

Márton Braun 517 Nov 19, 2022
🔓 Kotlin version of the popular google/easypermissions wrapper library to simplify basic system permissions logic on Android M or higher.

EasyPermissions-ktx Kotlin version of the popular googlesample/easypermissions wrapper library to simplify basic system permissions logic on Android M

Madalin Valceleanu 326 Dec 23, 2022
Android Spinner Dialog Library supported on both Java and Kotlin, Use for single or multi selection of choice

SpinnerDialog Android Spinner Dialog Library, Use for single or multi selection of choice Android UI Download To include SpinnerDialog in your project

Hamza Khan 55 Sep 15, 2022
A Kotlin library for reactive and boilerplate-free SharedPreferences in Android

KPreferences A Kotlin library for reactive and boilerplate-free Shared Preferences in Android. With KPreferences you can use Kotlin's marvelous delega

Mohamad Amin Mohamadi 19 Dec 16, 2020