| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
`remove_unreachable_chunk()` after `iseq_set_sequence()`"
This reverts commit 3685ed7303fc08bf68cd3cc8d11e22a8ce63a067 and 5dc107b03f5cf32656a5308574b90458486c633c.
Because of some CI failures https://github.com/ruby/ruby/pull/3404#issuecomment-719868313.
|
|
|
|
| |
[ci skip]
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Many functions in string.c assume that capa + termlen to be readable
memory. Add comment in header to communicate this to extension authors.
See also: comment in str_fill_term()
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
`r = Ractor.new{ expr }` generates the block return value from `expr`
and we can get this value by `r.take`. Ractor.yield and Ractor#take
passing values by copying on default. However, the block return value
(we named it "will" in the code) is not referred from the Ractor
because the Ractor is already dead. So we can pass the reference
of "will" to another ractor without copying. We can apply same story
for the propagated exception.
|
|
|
|
| |
It have no upstream repo yet. This change is experimental for 3.0.0-preview2.
|
|
|
|
|
|
|
| |
a method defined by define_method with normal Proc can not cross
ractors because the normal Proc is not shareable. However,
shareable Proc can be crossed between ractors, so the method with
shareable Proc should be called correctly.
|
|
|
|
|
| |
vm->waiting_fds is global resource so we need to lock it correctly.
(forgot to sync one place)
|
|
|
|
|
| |
But win32ole gem is still experimental for 3.0.0-preview2.
I'm working to extract this library on https://github.com/ruby/win32ole.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Ractor.make_shareable() supports Proc object if
(1) a Proc only read outer local variables (no assignments)
(2) read outer local variables are shareable.
Read local variables are stored in a snapshot, so after making
shareable Proc, any assignments are not affeect like that:
```ruby
a = 1
pr = Ractor.make_shareable(Proc.new{p a})
pr.call #=> 1
a = 2
pr.call #=> 1 # `a = 2` doesn't affect
```
[Feature #17284]
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While it is expected that all environment keys are unique, that is
not enforced. It is possible by manipulating environ directly you
can call a process with an environment with duplicate keys. If
ENV.replace was passed a hash with a key where environ had a
duplicate for that key, ENV.replace would end up deleting the key
from environ.
The fix in this case is to not assume that the environment key
list has unique keys, and continue processing the entire key
list in keylist_delete.
Fixes [Bug #17254]
|
|
|
|
|
| |
Isolated Proc prohibit to access outer local variables, but it was
violated by binding and so on, so they should be error.
|
| |
|
|
|
|
| |
This way the header flags and object internals are set correctly
|
|
|
|
|
| |
It's not necessary to check ivpt because objects are allocated as
"embedded" by default
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Setting this to true disables the deadlock detector. It should
only be used in cases where the deadlock could be broken via some
external means, such as via a signal.
Now that $SAFE is no longer used, replace the safe_level_ VM flag
with ignore_deadlock for storing the setting.
Fixes [Bug #13768]
|
|
|
|
| |
Same as 5be42c1ef4f7ed0a8004cad750a9ce61869bd768
|
|
|
|
|
|
|
|
| |
As of 0b81a484f3453082d28a48968a063fd907daa5b5, `ROBJECT_IVPTR` will
always return a value, so we don't need to test whether or not we got
one. T_OBJECTs always come to life as embedded objects, so they will
return an ivptr, and when they become "unembedded" they will have an
ivptr at that point too
|
|
|
|
|
| |
We don't need to check the existence if an ivptr because non-embedded
objects will always have one
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
This reverts commit 379a5ca539af0e954b1cdf63b9365ad208b9c7f3.
This "typo" is intentional to test the transposition detection by
did_you_mean.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This reverts commit ac69849e49982ea83036c04c5d5f7245e3956a49.
The bug seems to have been fixed.
|
|
|
|
|
| |
Regexp literals are frozen, and also dynamically comppiled Regexp
literals (/#{expr}/) are frozen.
|
| |
|
|
|
|
| |
It seems immutable information.
|
| |
|
|
|
|
|
|
| |
Kernel.Rational() (#3702)
This makes `Rational(BigDecimal(1), 60) == Rational(1, 60)`.
[Bug #16518]
|
|
|
|
|
| |
[Feature #17260] One-line pattern matching using tASSOC
R-assignment is rejected instead.
|
|
|
|
|
|
| |
uplevel: n)
* Fixes [Bug #17259]
|