All Versions
3
Latest Version
Avg Release Cycle
207 days
Latest Release
580 days ago

Changelog History

  • v0.0.1-RC4 Changes

    October 23, 2020

    What's new:

    • for-comprehension

    now, some DSL ops can return values:

    before:

    evalWith("value" , v => eval(println(v)))
    

    now:

    for { v \<- eval("value") \_ \<- eval(println(v)) } yield
    

    ๐Ÿ‘ Better support for blocking operations (performance)

    ๐Ÿ’ฅ Breaking changes:

    โœ‚ removed:

    Dsl ops:

    - def delay(duration: FiniteDuration, flow: Free[C, Unit]) - def suspendWith[A](thunk: =\> F[A])(bind: A =\> Free[C, Unit])- def evalWith[A](thunk: =\> A)(bind: A =\> Free[C, Unit])
    

    Direct process call:

    def apply(caller: ProcessRef, e: Event)
    

    Channel.send should be wrapped into blocking operator explicitly.

  • v0.0.1-RC3

    August 06, 2020
  • v0.0.1-RC2 Changes

    September 05, 2019

    Performance

    • ๐Ÿ†• New Scheduler is 2 times faster and consumes less memory. Tested within 24h using various scenarios. Total number of tests: 35 000

    ๐Ÿ†• New features:

    • ๐Ÿ†• New blocking operator for blocking calls. Example:

      class Service { def blockingCall: IO[String] =// network callIO.sleep(1.second) >> IO("data") } class Client extends Process[IO] { import dsl._private lazy val service = new Service() override def handle: Receive = { case Start => blocking { suspendWith(service.blockingCall)(data => eval(println(data))) } } }

    • Buffer size limit can be set per process. Example:

      val process: Process[IO] = Process.builder[IO](_ => { case _ => dsl.unit }).bufferSize(1000) // set a process queue size limit .build

    or

    class MyProcess[F[\_]] extends Process[F] { import dsl.\_override val bufferSize: Int = 1000override def handle: Receive = { case \_ =\> unit } }
    

    ๐Ÿ’ฅ Breaking changes:

    • ๐Ÿ‘€ ParConfig has been changed, see Configuration for details.

    ๐Ÿ› Bug fixes:

    • ๐Ÿ›  No bugs were found since 0.0.1-RC1. New bugs introduced in 0.0.1-RC2 were fixed in the same branch.