Ractor-incompatible global variables can be accessed through alias
Some global variables are not allowed in non-main Ractors. For example, the following code does not run:
Ractor.new do $/ end.take #=> can not access global variables $/ from non-main Ractors (Ractor::IsolationError)
This error message is expected because $/ is not allowed outside the main Ractor.
However, if the variable is aliased, it sometimes bypasses this. For example, the following code sometimes runs unexpectedly without error:
alias $alias_global_variable $/ Ractor.new do $alias_global_variable end.take
Sometimes, it correctly fails with the message “can not access global variables $alias_global_variable from non-main Ractors (Ractor::IsolationError)”. However, because the global variable is sometimes accessed without error, this could lead to data races.
No data to display