Skip to content

Releases: parapet-io/parapet

0.0.1-RC6

24 Feb 07:02
Compare
Choose a tag to compare
  • Cluster state replication
  • Cluster node starts a TCP server implicitly
  • Toy spark
  • Bug fixes

0.0.1-RC5

14 May 04:13
22d34b3
Compare
Choose a tag to compare

New features:

  • Leader Election component
  • Cluster and networking: AsyncClient , AsyncServer
  • Performance improvements: removed usages of race operator from scheduled. Processing of 1M messages takes 1sec, before 15sec
  • Channel accepts a callback that can return a flow
  • handleError operator
  • Smal bug fixes

0.0.1-RC4

23 Oct 01:43
f874b66
Compare
Choose a tag to compare

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.

0.0.1-RC3

06 Aug 00:24
58d9ba5
Compare
Choose a tag to compare
Merge pull request #18 from parapet-io/iss17

Implement BullyLeaderElection

0.0.1-RC2

05 Sep 00:26
Compare
Choose a tag to compare
0.0.1-RC2 Pre-release
Pre-release

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 call
      IO.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 = 1000
    override 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.