Issue #17268 has been reported by ko1 (Koichi Sasada).

----------------------------------------
Bug #17268: special global variables which can be accessed from ractors
https://bugs.ruby-lang.org/issues/17268

* Author: ko1 (Koichi Sasada)
* Status: Open
* Priority: Normal
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN
----------------------------------------
Ractors can't access global variables, but some special global variables should be accessed.
There are several types.

## Proposal

(1) Read-only global variables

```ruby
     # process-local (readonly): other commandline parameters
     '$-p' => $-p,
     '$-l' => $-l,
     '$-a' => $-a,

     # process-local (readonly): getpid
     '$$'  => $$,
```

(2) scope local variables

```ruby
     # thread local: process result
     '$?'  => $?,

     # scope local: match
     '$~'  => $~.inspect,
     '$&'  => $&,
     '$`'  => $`,
     '$\''  => $',
     '$+'  => $+,
     '$1'  => $1,

     # scope local: last line
     '$_' => $_,

     # scope local: last backtrace
     '$@' => $@,
     '$!' => $!,
```

(3) Ractor local variables

```ruby
     # ractor-local (derived from created ractor): debug
     '$DEBUG' => $DEBUG,
     '$-d' => $-d,

     # ractor-local (derived from created ractor): verbose
     '$VERBOSE' => $VERBOSE,
     '$-w' => $-w,
     '$-W' => $-W,
     '$-v' => $-v,

     # ractor local: stdin, out, err
     '$stdin'  => $stdin.inspect,
     '$stdout' => $stdout.inspect,
     '$stderr' => $stderr.inspect,
```

Implementation: 
I'll merge it soon.

## Discussion

* only accessible from main ractor?
  * `$0`: 
  * ARGV, ARGF, `$.`
* only accessible from main ractor because they will be obsolete
  * `$, $/ $; $\`
* So difficult: `$" / $LOADED_FEATURES` and `$: / $LOAD_PATH`






-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>