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
,有点无语。现在做同一件事的方法更多了……
用 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>
RVM 的 master 已经可以更新来安装 Ruby 3.0.0-preview1 了
$ rvm get head
$ rvm install ruby-3.0.0-preview1
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 的监控页,但进入的是我的个人主页
其实一行 def 挺流行的,我发现 DotNet 的模板引擎 Scriban 也加入了 smart mode 支持 def foo(x, y) = ...
endless method def 挺喜欢的(能写一行的为什么要写三行?一行了然的为什么要让人看三行?) Rightward assignment 就。。。现在大家都习惯了在左边找变量名,换成右边会不会不习惯?
理解问题,Ruby 3 的 3x3 目标是:性能 3 倍于 Ruby 2.0,而不是 3.0 vs 2.7 或 2.6。
实际上有数据表明,这个目标已经快达到了(估计目前是 2.5x)
从目前我了解到的其他统计数据来看,3.0 vs 2.6 性能差异不明显