@@ -25,6 +25,48 @@ Note: We're only listing outstanding class updates.
2525 * ` IO.select ` accepts +Float::INFINITY+ as a timeout argument.
2626 [[ Feature #20610 ]]
2727
28+ * Ractor
29+
30+ * ` Ractor::Port ` class was added for a new synchronization mechanism
31+ to communicate between Ractors. [[ Feature #21262 ]]
32+
33+ ```ruby
34+ port1 = Ractor::Port.new
35+ port2 = Ractor::Port.new
36+ Ractor.new port1, port2 do |port1, port2|
37+ port1 << 1
38+ port2 << 11
39+ port1 << 2
40+ port2 << 12
41+ end
42+ 2.times{ p port1.receive } #=> 1, 2
43+ 2.times{ p port2.receive } #=> 11, 12
44+ ```
45+
46+ `Ractor::Port` provides the following methods:
47+
48+ * `Ractor::Port#receive`
49+ * `Ractor::Port#send` (or `Ractor::Port#<<`)
50+ * `Ractor::Port#close`
51+ * `Ractor::Port#closed?`
52+
53+ As result, `Ractor.yield` and `Ractor#take` were removed.
54+
55+ * ` Ractor#join ` and ` Ractor#value ` were added to wait for the
56+ termination of a Ractor. These are similar to ` Thread#join `
57+ and ` Thread#value ` .
58+
59+ * ` Ractor#monitor ` and ` Ractor#unmonitor ` were added as low-level
60+ interfaces used internally to implement ` Ractor#join ` .
61+
62+ * ` Ractor.select ` now only accepts Ractors and Ports. If Ractors are given,
63+ it returns when a Ractor terminates.
64+
65+ * ` Ractor#default_port ` was added. Each ` Ractor ` has a default port,
66+ which is used by ` Ractor.send ` , ` Ractor.receive ` .
67+
68+ * ` Ractor#close_incoming ` and ` Ractor#close_outgoing ` were removed.
69+
2870* Set
2971
3072 * Set is now a core class, instead of an autoloaded stdlib class.
@@ -48,7 +90,7 @@ The following bundled gems are promoted from default gems.
4890
4991* ostruct 0.6.1
5092* pstore 0.2.0
51- * benchmark 0.4.0
93+ * benchmark 0.4.1
5294* logger 1.7.0
5395* rdoc 6.14.0
5496* win32ole 1.9.2
@@ -86,21 +128,32 @@ The following bundled gems are added.
86128The following bundled gems are updated.
87129
88130* minitest 5.25.5
131+ * rake 13.3.0
89132* test-unit 3.6.8
90133* rexml 3.4.1
91134* net-imap 0.5.8
92135* net-smtp 0.5.1
93136* rbs 3.9.4
94- * bigdecimal 3.1.9
137+ * base64 0.3.0
138+ * bigdecimal 3.2.1
95139* drb 2.2.3
96140* syslog 0.3.0
97- * csv 3.3.4
141+ * csv 3.3.5
98142* repl_type_completor 0.1.11
99143
100144## Supported platforms
101145
102146## Compatibility issues
103147
148+ * The following methdos were removed from Ractor due because of ` Ractor::Port ` :
149+
150+ * ` Ractor.yield `
151+ * ` Ractor#take `
152+ * ` Ractor#close_incoming `
153+ * ` Ractor#close_outgoging `
154+
155+ [[ Feature #21262 ]]
156+
104157## Stdlib compatibility issues
105158
106159* CGI library is removed from the default gems. Now we only provide ` cgi/escape ` for
@@ -144,4 +197,5 @@ The following bundled gems are updated.
144197[ Feature #21166 ] : https://bugs.ruby-lang.org/issues/21166
145198[ Feature #21216 ] : https://bugs.ruby-lang.org/issues/21216
146199[ Feature #21258 ] : https://bugs.ruby-lang.org/issues/21258
200+ [ Feature #21262 ] : https://bugs.ruby-lang.org/issues/21262
147201[ Feature #21287 ] : https://bugs.ruby-lang.org/issues/21287
0 commit comments