summaryrefslogtreecommitdiff
path: root/ractor.rb
AgeCommit message (Collapse)Author
2021-09-15[DOC] Fix broken links [ci skip]Nobuyoshi Nakada
* As the "doc/" prefix is specified by the `--page-dir` option, remove from the rdoc references. * Refer to the original .rdoc instead of the converted .html.
2021-09-05Replace RBOOL macroS-H-GAMELINKS
Notes: Merged: https://github.com/ruby/ruby/pull/4791
2021-04-26Fix some typos by spell checkerRyuta Kamizono
Notes: Merged: https://github.com/ruby/ruby/pull/4414
2021-01-10Fix ractor docs (#4048) [doc]Tom Chen
Notes: Merged-By: marcandre <github@marc-andre.ca>
2020-12-24Add call-seq to Ractor doc; improve wording [doc]Marc-Andre Lafortune
Notes: Merged: https://github.com/ruby/ruby/pull/3992
2020-12-22[DOC] Fix typo in Ractor.make_shareable documentation.nagachika
2020-12-22fix ractor's doc. [ci skip]Koichi Sasada
Notes: Merged: https://github.com/ruby/ruby/pull/3960
2020-12-22add Ractor.mainKoichi Sasada
It returns main Ractor, like Thread.main. [Feature #17418] Notes: Merged: https://github.com/ruby/ruby/pull/3963
2020-12-22add Ractor#[]/#[]= for ractor local storageKoichi Sasada
This API is similar to plain old Thread#[]/Fiber#[] interface with symbol key. Notes: Merged: https://github.com/ruby/ruby/pull/3962
2020-12-21Ractor#to_s as #inspectMarc-Andre Lafortune
2020-12-22separate rb_ractor_pub from rb_ractor_tKoichi Sasada
separate some fields from rb_ractor_t to rb_ractor_pub and put it at the beggining of rb_ractor_t and declare it in vm_core.h so vm_core.h can access rb_ractor_pub fields. Now rb_ec_ractor_hooks() is a complete inline function and no MJIT related issue. Notes: Merged: https://github.com/ruby/ruby/pull/3943
2020-12-21rename to rb_ractor_make_shareable_copy()Koichi Sasada
from rb_ractor_make_copy_shareable().
2020-12-20Adjusted indents of closing braces [ci skip]Nobuyoshi Nakada
2020-12-20fix indentKoichi Sasada
2020-12-19Add documentation for Ractor (#3895)Victor Shepelev
Notes: Merged-By: marcandre <github@marc-andre.ca>
2020-12-19Strip trailing spaces [ci skip]Nobuyoshi Nakada
2020-12-19add "copy: true" option for Ractor.make_shareableKoichi Sasada
Ractor.make_shareable(obj) tries to make obj a shareable object by changing the attribute of obj and traversable objects from obj (mainly freeze them). "copy: true" option is more conservative approach by make deep copied object and make it sharable. It doesn't affect any existing objects.
2020-12-16Make Ractor#receive_if privateMarc-Andre Lafortune
2020-12-16Ractor#receive_if to receive only matched messagesKoichi Sasada
Instead of Ractor.receive, Ractor.receive_if can provide a pattern by a block and you can choose the receiving message. [Feature #17378] Notes: Merged: https://github.com/ruby/ruby/pull/3862
2020-12-16fix Ractor#receive by other ractorsKoichi Sasada
Ractor#receive can be called by the another Ractors using send, so making this method completely same as `Ractor.receive` even if the ractor is specified by the receiver (OO term :p).
2020-12-14Call FrozenCore.make_shareableNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/3681
2020-12-14Implemented shareable_constant_valueNobuyoshi Nakada
It does shallow freeze only for now. Notes: Merged: https://github.com/ruby/ruby/pull/3681
2020-12-07Ractor.select requires an argument or yield_valueMarc-Andre Lafortune
Notes: Merged: https://github.com/ruby/ruby/pull/3848
2020-11-11remove Ractor#closeKoichi Sasada
close_incoming by antoher ractor means there is no other messages will be sent to the ractor, so Ractor.receive will block forever, and it should raise and stop. close_outgoing by antoher ractor means, ... I don't have good idea to use it. It can be a private method. Ractor#close calls both, but it does not make sense to call different purpose methods, so I remove it. Notes: Merged: https://github.com/ruby/ruby/pull/3759
2020-10-30Tweak return of `Ractor#close`, add docMarc-Andre Lafortune
Notes: Merged: https://github.com/ruby/ruby/pull/3696
2020-10-21Ractor.make_shareable(obj)Koichi Sasada
Introduce new method Ractor.make_shareable(obj) which tries to make obj shareable object. Protocol is here. (1) If obj is shareable, it is shareable. (2) If obj is not a shareable object and if obj can be shareable object if it is frozen, then freeze obj. If obj has reachable objects (rs), do rs.each{|o| Ractor.make_shareable(o)} recursively (recursion is not Ruby-level, but C-level). (3) Otherwise, raise Ractor::Error. Now T_DATA is not a shareable object even if the object is frozen. If the method finished without error, given obj is marked as a sharable object. To allow makng a shareable frozen T_DATA object, then set `RUBY_TYPED_FROZEN_SHAREABLE` as type->flags. On default, this flag is not set. It means user defined T_DATA objects are not allowed to become shareable objects when it is frozen. You can make any object shareable by setting FL_SHAREABLE flag, so if you know that the T_DATA object is shareable (== thread-safe), set this flag, at creation time for example. `Ractor` object is one example, which is not a frozen, but a shareable object. Notes: Merged: https://github.com/ruby/ruby/pull/3678
2020-10-20add Ractor.shareable?(obj)Koichi Sasada
This method returns obj is shareable or not. Notes: Merged: https://github.com/ruby/ruby/pull/3672
2020-10-12ractor.rb - indent comment code [ci skip]MSP-Greg
Notes: Merged: https://github.com/ruby/ruby/pull/3648
2020-10-10Add Ractor#receive and Ractor.receive and use it in all placesBenoit Daloze
* Keep Ractor#recv/Ractor.recv as an alias for now. Notes: Merged: https://github.com/ruby/ruby/pull/3626
2020-09-20Add status to Ractor#inspectQuang-Minh Nguyen
Notes: Merged: https://github.com/ruby/ruby/pull/3555
2020-09-03Introduce Ractor mechanism for parallel executionKoichi Sasada
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