Ruby Ruby 3.0.0-preview 版发布了

v2up · 2020年09月26日 · 最后由 huobazi 回复于 2020年12月21日 · 7966 次阅读

hn 上看到 ruby 3.0.0 的 preview 版发布了,不少新特性,开始期待用到线上了,不知道有尝鲜的没?

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

新加那几个小语法,像 Rightward assignment statement fib(10) => x和 Endless method definition def square(x) = x * x,有点无语。现在做同一件事的方法更多了……

2.7 直接到 3 是吧

huacnlee [该话题已被删除] 提及了此话题。 09月27日 16:11

我来试试跑 Ruby China

用 docker 试用官方镜像:

$ docker run -it -v $(pwd):/app -w /app rubylang/ruby:3.0.0-preview1-bionic bash

先试了个 ractor 的 hello world

irb(main):001:1* ractor = Ractor.new do 
irb(main):002:1*   puts Ractor.recv
irb(main):003:0> end
<internal:ractor>:38: warning: Ractor is experimental, and the behavior may change in future versions of Ruby! Also there are many implementation issues.
=> #<Ractor:#2 (irb):1 blocking>
irb(main):004:0> ractor.send 'hello ractor'
hello ractor
=> #<Ractor:#2 (irb):1 terminated>

ractor 这名字有点好玩

为什么要加个 R,因为 R(uby)actor 吗

RVM 的 master 已经可以更新来安装 Ruby 3.0.0-preview1 了

$ rvm get head
$ rvm install ruby-3.0.0-preview1
huacnlee 回复

简直神速啊 👍

已经部署 3.0.0-preview1 上线

def square(x) = x * x 这个是和 kotlin 学的吧。。。

15 楼 已删除

https://www.fastruby.io/blog/rails/performance/ruby/hows-the-performance-of-ruby-3.0.0-preview1.html "Ruby 2.6 and 2.7 are functionally the same speed to within 1%-2%. It looks like 2.7 and the 3.0 preview aren't showing a significant speed boost for Rails."

据说从 2.6 版本后,速度并没有显著提升

👍 尝试了一下,语法糖越来越好用了。还发现一个 ruby china 的小 trick,https://ruby-china.org/sidekiq 应该是 sidekiq 的监控页,但进入的是我的个人主页👀

sidekiq 回复

哈哈,应该在注册的时候,把 sidekiq 加到关键字名单里。

sidekiq 回复

你想多了,我登录的时候,我可以打开那个页面的。 然后就算还有问题,我可以把它 map 到 /admin/sidekiq

sidekiq 回复

sidekiq 一般都需要有登陆保护的吧,,,JOB 参数中可能包含敏感信息。

v2up v2ex?

pynix 回复

v2up = way to up 成长之路 or 增长之路

v2ex = way to explore 探索之路 or 发现之路

levi0214 回复

其实一行 def 挺流行的,我发现 DotNet 的模板引擎 Scriban 也加入了 smart mode 支持 def foo(x, y) = ...

endless method def 挺喜欢的(能写一行的为什么要写三行?一行了然的为什么要让人看三行?) Rightward assignment 就。。。现在大家都习惯了在左边找变量名,换成右边会不会不习惯?

def square(x) = x * x

一行代码就能解决的事,为什么要去定义成方法,为什么要去改变语法造成版本不兼容?看看 C++ 的语法,真让人炸毛。

honglix 回复

不仅是没有提升,事实上从 2.6 开始新版本性能和内存都下降了一点。ruby3 的 3x3 预期基本是达不到了。

hooopo 回复

麻烦到了吧?。。。

lilijreey 回复

理解问题,Ruby 3 的 3x3 目标是:性能 3 倍于 Ruby 2.0,而不是 3.0 vs 2.7 或 2.6。

实际上有数据表明,这个目标已经快达到了(估计目前是 2.5x)

从目前我了解到的其他统计数据来看,3.0 vs 2.6 性能差异不明显

https://rubybench.org/

需要 登录 后方可回复, 如果你还没有账号请 注册新账号