
画像ソース
開発者にとって朗報- 動的オブジェクト指向プログラミング言語の新しいリリースであるRuby3.0.0が到着しました。彼のファンによると、新しいバージョンには、Perl、Java、Python、Smalltalk、Eiffel、Ada、Lispの最高のものが含まれています。
Rubyの新しいバージョンは8番目のメジャーリリースであり、多くの更新と改善が行われています。ちなみに、開発者は約5年間3番目のバージョンに取り組んできました。その機能は、高性能、同時実行性、および型指定です。
ちなみに、同じ5年前、松本幸弘という言語の作者がRuby3x3のコンセプトを提案しました。これは、Ruby 3.0のリリースが、バージョン2.0の3倍のパフォーマンス向上を達成した後に可能になることを意味します。最新のリリースでは、これは改善されたJITコンパイルサポートによって実現されています。
新着情報?
- MJIT. , , ( Optcarrot), AI ( Rubykon). , . , , . JIT-, , , , Rails. , i-cache.

- RBS, Ruby. RBS . : , , , . , TypeProf, , 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. , . , , . .
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
- fiber- Fiber#scheduler, , . , :
--Mutex#ロック、Mutex#ロック解除、Mutex#スリープ -ConditionVariable
#待機
-キュー#ポップ、SizedQueue#プッシュ
-スレッド#参加
-カーネル#スリープ
-Process.wait
-IO#待機、IO#読み取り、IO#書き込みおよび関連それらの方法で
require 'async'
require 'net/http'
require 'uri'
Async do
["ruby", "python", "c"].each do |topic|
Async do
Net::HTTP.get(URI "https://www.google.com/search?q=#{topic}")
end
end
end
- 値の右側の割り当てに使用されるパターンマッチング「Addoperator--variable-value」のワンライナーが作り直されました。
0 => a
p a #=> 0
{b: 0, c: 1} => {b:}
p b #=> 0
さらに、「in」の動作が変更され、trueまたはfalseを返すようになりました。
# version 3.0
0 in 1 #=> false
# version 2.7
0 in 1 #=> raise NoMatchingPatternError
値を見つけるための実験テンプレートを追加しました。
case ["a", 1, "b", "c", 2, "d", "e", "f", 3]
in [*pre, String => x, String => y, *post]
p pre #=> ["a", 1]
p x #=> "b"
p y #=> "c"
p post #=> [2, "d", "e", "f", 3]
end
- メソッド以外のハッシュ#を追加しました。
h = { a: 1, b: 2, c: 3 }
p h.except(:a) #=> {:b=>2, :c=>3}
- 「end」キーワードを使用せずに、1行のメソッド定義がサポートされるようになりました。
def square(x) = x * x
- C-API - .
- IRB. , 53 (!) , Ruby 2.7.
- gem-, stdlib.
