summaryrefslogtreecommitdiff
path: root/ractor.c
Commit message (Collapse)AuthorAgeFilesLines
* change rb_ractor_queue to ring buffertompng2020-10-121-9/+11
|
* Add Ractor#receive and Ractor.receive and use it in all placesBenoit Daloze2020-10-101-22/+22
| | | | * Keep Ractor#recv/Ractor.recv as an alias for now.
* remove debug codeKoichi Sasada2020-10-101-2/+0
|
* Frozen Struct can be shareable.Koichi Sasada2020-09-251-0/+30
| | | | | A frozen Struct object which refers to shareable objects should be shareable.
* Ractor.yield should raise if out-port is closedKoichi Sasada2020-09-251-0/+8
| | | | | Ractor.yield should raise Ractor::ClosedError if current Ractor's outgoing-port is closed.
* frozen T_OBJECT can be shareable.Koichi Sasada2020-09-251-0/+23
| | | | | If an T_OBJECT object is frozen and all ivars are shareable, the object should be shareable.
* Ractor#close_outgoping cancel Ractor.yieldKoichi Sasada2020-09-251-9/+20
| | | | | | 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).
* add GC_GUARDKoichi Sasada2020-09-241-0/+1
| | | | | We observed mark miss on this point so we add RB_GC_GUARD() to avoid wrong free.
* Validate name during initializationQuang-Minh Nguyen2020-09-201-0/+10
|
* strip trailing spaces [ci skip]Nobuyoshi Nakada2020-09-191-2/+2
|
* add debug log on enabling multi-ractor modeKoichi Sasada2020-09-181-0/+1
|
* restart Ractor.select on intteruptKoichi Sasada2020-09-151-1/+9
| | | | | signal can interrupt Ractor.select, but if there is no exception, Ractor.select should restart automatically.
* Fix typos [ci skip]Kazuhiro NISHIYAMA2020-09-061-3/+3
|
* Fixed heap-use-after-free on racterNobuyoshi Nakada2020-09-041-0/+8
|
* check multi_ractor mode at main_pKoichi Sasada2020-09-041-3/+7
| | | | | | | | | rb_ractor_main_p() need to access to the ractor pointer in TLS. However it is slow operation so that we need to skip this check if it is not multi-ractor mode (!ruby_multi_ractor). This performance regression is pointed at https://bugs.ruby-lang.org/issues/17100#note-27
* Initialize loop variables of list_for_each for MS VCNobuyoshi Nakada2020-09-041-3/+3
|
* Introduce Ractor mechanism for parallel executionKoichi Sasada2020-09-031-0/+1877
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.