首頁>技術>

幾個月前 Ruby 程式語言的建立者和首席設計師 Yukihiro Matsumoto(松本行弘)表示 Ruby 3.0 將在聖誕這天釋出,現在根據官方資訊,該版本如約而至。

松本表示,Ruby 3 比 Ruby 2 快 3 倍。

此版本主要目標包括:

效能

MJIT

併發

RactorFiber Scheduler

型別(靜態分析)

RBSTypeProf

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  endend

Ractor(實驗階段)

Ractor 是類似於併發抽象的 Actor 模型,旨在提供並行執行功能而無需擔心執行緒安全。為了限制共享物件,Ractor 對 Ruby 的語法引入了一些限制,以下程式用兩個 ractor 平行計算 prime?,速度大約快 2 倍。

require 'prime'# n.prime? with sent integers in r1, r2 run in parallelr1, r2 = *(1..2).map do  Ractor.new do    n = Ractor.recv    n.prime?  endend# send parametersr1.send 2**61 - 1r2.send 2**61 + 15# wait for the results of expr1, expr2p r1.take #=> truep r2.take #=> true

Scheduler

引入Thread#scheduler用於攔截阻塞操作,允許輕量級的併發,而無需更改現有程式碼。

當前支援的類/方法:

Mutex#lock, Mutex#unlock, Mutex#sleep

ConditionVariable#wait

Queue#pop, SizedQueue#push

Thread#join

Kernel#sleep

IO#wait, IO#read, IO#write 與相關方法如 #wait_readable, #gets, #puts

不支援 IO#select

Ruby 3 還重新設計了單行匹配模式:

添加了 =>:

0 => ap a #=> 0{b: 0, c: 1} => {b:}p b #=> 0

in 用於返回 true/false:

# version 3.00 in 1 #=> false# version 2.70 in 1 #=> raise NoMatchingPatternError

詳情檢視釋出說明:

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

下載:

https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.0.tar.gz

13
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 對 TensorFlow 程式缺陷的實證研究