Ruby 3.0.0 Preview 1 发布

2020年09月30日

Ruby 3.0.0 Preview 1 已经发布了,此版本引入了几个新特性。

RBS

RBS 是一种描述 Ruby 程序类型的语言。类型检查器(包括类型分析器和其他支持 RBS 的工具)将通过 RBS 定义更好地理解 Ruby 程序。开发者可以写下类和模块的定义:类中定义的方法、实例变量及其类型以及继承/混合关系。RBS 的目标是支持 Ruby 程序中常见的模式,它允许编写高级类型,包括联合类型、方法重载和泛型。它还支持带有接口类型的 duck typing。

Ruby 3.0 附带有rbsgem,它可以解析和处理用 RBS 编写的类型定义:

module ChatApp
  VERSION: String

  class Channel
    attr_reader name: String
    attr_reader messages: Array[Message]
    attr_reader users: Array[User | Bot]              # `|` means union types, `User` or `Bot`.

    def initialize: (String) -> void

    def post: (String, from: User | Bot) -> Message   # Method overloading is supported.
            | (File, from: User | Bot) -> Message
  end
end

Ractor(实验阶段)

Ractor 是类似于并发抽象的 Actor 模型,旨在提供并行执行功能而无需担心线程安全。为了限制共享对象,Ractor 对 Ruby 的语法引入了一些限制,以下程序用两个 ractor 并行计算 prime?,速度大约快 2 倍。

require 'prime'

# n.prime? with sent integers in r1, r2 run in parallel
r1, r2 = *(1..2).map do
  Ractor.new do
    n = Ractor.recv
    n.prime?
  end
end

# send parameters
r1.send 2**61 - 1
r2.send 2**61 + 15

# wait for the results of expr1, expr2
p r1.take #=> true
p r2.take #=> true

Scheduler(实验阶段)

引入Thread#scheduler用于拦截阻塞操作,允许轻量级的并发,而无需更改现有代码。

当前支持的类/方法:

  • Mutex#lockMutex#unlockMutex#sleep
  • ConditionVariable#wait
  • Queue#popSizedQueue#push
  • Thread#join
  • Kernel#sleep
  • IO#waitIO#readIO#write 与相关方法如 #wait_readable#gets#puts 
  • 不支持 IO#select 

此外还有一此新特性,详情查看更新说明:

https://www.ruby-lang.org/en/news/2020/09/25/ruby-3-0-0-preview1-released

展开阅读全文
2 收藏
分享
加载中
精彩评论
此处@Python ,看看什么叫做进步!不是躺在人工智能的风口上装死!
2020-09-30 10:57
3
举报
ruby应用场景是web开发,竞争激烈, java, c#, python, php, node.js, kotlin 都有各自的份额,ror的利于快速开发的那些特性被抄的差不多了,积累又不如php, java, python深厚,性能和语言进化比不过node.js, kotlin
实际上,在web后端开发领域,所有的动态语言都在没落,ruby, python, php 都在没落,node.js因为有ts,还有竞争力, php和python转golang的很多
2020-09-30 14:55
1
举报
Ruby好语言,不应该这么没落。
2020-09-30 10:10
1
举报
最新评论 (6)
此处@Python ,看看什么叫做进步!不是躺在人工智能的风口上装死!
2020-09-30 10:57
3
回复
举报
然而ruby在node.js的冲击下,也要凉凉了
2020-09-30 14:51
0
回复
举报
Ruby好语言,不应该这么没落。
2020-09-30 10:10
1
回复
举报
ruby应用场景是web开发,竞争激烈, java, c#, python, php, node.js, kotlin 都有各自的份额,ror的利于快速开发的那些特性被抄的差不多了,积累又不如php, java, python深厚,性能和语言进化比不过node.js, kotlin
实际上,在web后端开发领域,所有的动态语言都在没落,ruby, python, php 都在没落,node.js因为有ts,还有竞争力, php和python转golang的很多
2020-09-30 14:55
1
回复
举报
有想学Ruby的冲动
2020-09-30 08:56
0
回复
举报
学完去OSC
2020-09-30 09:28
0
回复
举报
更多评论
6 评论
2 收藏
分享
返回顶部
顶部