| Age | Commit message (Collapse) | Author |
|
generic_ivtbl is a process global table to maintain instance variables
for non T_OBJECT/T_CLASS/... objects. So we need to protect them
for multi-Ractor exection.
Hint: we can make them Ractor local for unshareable objects, but
now it is premature optimization.
Notes:
Merged: https://github.com/ruby/ruby/pull/3655
|
|
enc_table which manages Encoding information. rb_encoding_list
also manages Encoding objects. Both are accessed/modified by ractors
simultaneously so that they should be synchronized.
For enc_table, this patch introduced GLOBAL_ENC_TABLE_ENTER/LEAVE/EVAL
to access this table with VM lock. To make shortcut, three new global
variables global_enc_ascii, global_enc_utf_8, global_enc_us_ascii are
also introduced.
For rb_encoding_list, we split it to rb_default_encoding_list (256 entries)
and rb_additional_encoding_list. rb_default_encoding_list is fixed sized Array
so we don't need to synchronized (and most of apps only needs it). To manage
257 or more encoding objects, they are stored into rb_additional_encoding_list.
To access rb_additional_encoding_list., VM lock is needed.
Notes:
Merged: https://github.com/ruby/ruby/pull/3654
|
|
* Keep Ractor#recv/Ractor.recv as an alias for now.
Notes:
Merged: https://github.com/ruby/ruby/pull/3626
|
|
|
|
Matz want to try to freeze all Range objects.
[Feature #15504]
Notes:
Merged: https://github.com/ruby/ruby/pull/3583
|
|
We can not call a non-isolated Proc in multiple ractors.
Notes:
Merged: https://github.com/ruby/ruby/pull/3584
|
|
Range can be shareable because it is implemented by Struct.
Notes:
Merged: https://github.com/ruby/ruby/pull/3580
|
|
A frozen Struct object which refers to shareable objects should be
shareable.
Notes:
Merged: https://github.com/ruby/ruby/pull/3580
|
|
make a test more clear.
|
|
Ractor.yield should raise Ractor::ClosedError if current Ractor's
outgoing-port is closed.
Notes:
Merged: https://github.com/ruby/ruby/pull/3578
|
|
If an T_OBJECT object is frozen and all ivars are shareable,
the object should be shareable.
Notes:
Merged: https://github.com/ruby/ruby/pull/3575
|
|
Ractor#close_outgoing should cancel waiting Ractor.yield. However,
yield a value by the Ractor's block should not cancel (to recognize
terminating Ractor, introduce rb_ractor_t::yield_atexit flag).
Notes:
Merged: https://github.com/ruby/ruby/pull/3572
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3555
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3555
|
|
Notes:
Merged: https://github.com/ruby/ruby/pull/3555
|
|
fstring pool should be sync with other Ractors.
Notes:
Merged: https://github.com/ruby/ruby/pull/3534
|
|
|
|
Toplevel return is supported after Ruby 2.4, so don't use it
for older BASERUBY.
|
|
This implementation has memory corruption errors so and
it causes BUG on rare occasions. This commit skips
suspect tests on Github actions Compiler tests.
Notes:
Merged: https://github.com/ruby/ruby/pull/3365
|
|
This commit introduces Ractor mechanism to run Ruby program in
parallel. See doc/ractor.md for more details about Ractor.
See ticket [Feature #17100] to see the implementation details
and discussions.
[Feature #17100]
This commit does not complete the implementation. You can find
many bugs on using Ractor. Also the specification will be changed
so that this feature is experimental. You will see a warning when
you make the first Ractor with `Ractor.new`.
I hope this feature can help programmers from thread-safety issues.
Notes:
Merged: https://github.com/ruby/ruby/pull/3365
|