Changelog History
-
v0.0.1-RC4 Changes
October 23, 2020What'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 intoblocking
operator explicitly. -
v0.0.1-RC3
August 06, 2020 -
v0.0.1-RC2 Changes
September 05, 2019Performance
- ๐ 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 in0.0.1-RC2
were fixed in the same branch.