具有更好的Kotlin API的新版本,适用于Clojure的数据流和更快的Web Actor

今天,我们发布了QuasarPulsarComsat的较小更新。 这些版本包含错误修复,以及一些新功能,包括改进的Kotlin API,用于Clojure的数据流变量以及在UndertowNetty之上的Web Actors的快速实现。

Kotlin提供优雅的纤维和通道选择

Quasar 0.7.0为Quasar演员引入了自然的Kotlin API(感觉像Erlang)。 此版本包括一个用于处理光纤和通道的不错的API(感觉像Go):

现在,使用co.paralleluniverse.kotlinfiber语法,可以co.paralleluniverse.kotlin在Kotlin中创建和启动光纤:

fiber {
  // The fiber will be created and will start executing this body
}

fiber与新的优雅select语法并驾齐驱,可在多个通道上进行选择:

val ch1 = Channels.newChannel<Int>(1)
val ch2 = Channels.newChannel<Int>(1)

assertTrue (
    fiber {
        select(Receive(ch1), Send(ch2, 2)) {
            it
        }
    }.get() is Send
)

ch1.send(1)

assertTrue (
    fiber {
        select(Receive(ch1), Send(ch2, 2)) {
            when (it) {
                is Receive -> it.msg
                is Send -> 0
                else -> -1
            }
        }
    }.get() == 1
)}

有关更多详细信息和已修复的错误列表,请参见Quasar 发行说明

数据流变量

现在, Pulsar有一个用于数据流变量新API (到目前为止,只有Java API才能访问此变量 )。

数据流或反应式编程是通过组合变量来描述的计算,这些变量的值可以在任何给定时间设置(并且可能会更改),而无需考虑何时设置这些值。 Pulsar提供了两个数据流原语:用df-val创建的vals和用df-var创建的vars。 val是数据流常量。 可以将其值设置一次,然后读取多次。 var是数据流变量。 它可以多次设置其值,每个新值都可以触发其他变量的重新计算。 您还可以设置一个变量以保留历史值。

这是使用val和vars的简单示例:

(let [a (df-val)
      x (df-var)
      y (df-var #(* @a @x)) ; this var has a formula
      z (df-var #(+ @a @x))
      r (df-var #(let [v (+ @a @y @z)] ; a formula with side-effects
                      (println "res: " v)
                      v))
      f (fiber
          (loop [i 0]
            (when (< i 5)
              (sleep 50)
              (x i) ; sets the value of x
              (recur (inc i)))))]
    (sleep 10)
    (a 3) ; triggers everything by setting a
    (join f))

在此示例中,var yz取决于val a和var x ,并且在x发生变化时(设置a之后)将重新计算其值。

有关更多详细信息和已修复的错误列表,请参见Pulsar 发行说明

Comsat 0.5.0:Web参与者进入Undertow和Netty

Comsat是一组Quasar集成模块,用于各种与Web相关的库。 除了库集成之外,Comsat还包括Web Actors ,这是一个作为Quasar actor编写交互式Web服务(支持纯HTTP和/或Web套接字和/或SSE)的API。 到目前为止,Web actor已在servlet之上实现,因此可以在任何标准servlet容器上运行。 Comsat 0.5.0添加了两个新的Web Actors部署选项:本机UndertowNetty 。 这两个新的实现比基于servlet的实现具有更好的性能。 基准将随之而来!

有关更多详细信息和已修复的错误列表,请参见发行说明

请享用!

翻译自: https://www.javacodegeeks.com/2015/09/new-releases-with-a-better-kotlin-api-dataflow-for-clojure-and-faster-web-actors.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值