63540 Commits

Author SHA1 Message Date
Kazuki Tsujimoto
b601532411
Pattern matching is no longer experimental 2020-11-01 13:33:58 +09:00
wanabe
4f8d9b0db8 Revert "Use adjusted sp on iseq_set_sequence()" and "Delay 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.
2020-10-31 11:56:41 +09:00
Nobuyoshi Nakada
ea8fc7fdd3
[DOC] standard_library.rdoc: tweaked to make style consistent
[ci skip]
2020-10-31 11:06:01 +09:00
Nobuyoshi Nakada
dd2f99d94a
Removed unused variable 2020-10-31 10:51:57 +09:00
wanabe
3685ed7303 Use adjusted sp on iseq_set_sequence() 2020-10-31 09:18:37 +09:00
wanabe
5dc107b03f Delay remove_unreachable_chunk() after iseq_set_sequence() 2020-10-31 09:18:37 +09:00
Alan Wu
670e288d65 Add warning for str_new_static functions
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()
2020-10-30 19:47:14 -04:00
Alan Wu
520b86caf1 Move variable closer to usage 2020-10-30 19:34:41 -04:00
Marc-Andre Lafortune
bd6cd85155 Tweak return of Ractor#close, add doc 2020-10-30 15:22:18 -04:00
git
7c548278f0 * 2020-10-31 [ci skip] 2020-10-31 01:48:24 +09:00
Koichi Sasada
fd08927699 Ractor's "will" doesn't need copying.
`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.
2020-10-31 01:48:00 +09:00
Hiroshi SHIBATA
66bf743b93
Promote debug.rb to default gems.
It have no upstream repo yet. This change is experimental for 3.0.0-preview2.
2020-10-30 21:45:23 +09:00
Koichi Sasada
89c8ca32d0 add a test of define_method with shareable Proc.
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.
2020-10-30 16:52:09 +09:00
Koichi Sasada
08ddc335ea sync vm->waiting_fds correctly.
vm->waiting_fds is global resource so we need to lock it correctly.
(forgot to sync one place)
2020-10-30 16:52:09 +09:00
Hiroshi SHIBATA
a1828a1ff4
Promote win32ole to default gems.
But win32ole gem is still experimental for 3.0.0-preview2.
  I'm working to extract this library on https://github.com/ruby/win32ole.
2020-10-30 15:18:50 +09:00
Kazuhiro NISHIYAMA
17c6b6b16e
Fix a typo [ci skip] 2020-10-30 12:30:45 +09:00
Nobuyoshi Nakada
799253dc46
strip trailing spaces [ci skip] 2020-10-30 12:26:59 +09:00
Koichi Sasada
5d97bdc2dc Ractor.make_shareable(a_proc)
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]
2020-10-30 03:12:09 +09:00
git
502d6d8459 * 2020-10-30 [ci skip] 2020-10-30 00:09:12 +09:00
Jeremy Evans
c0aeb98aa9 Make ENV.replace handle multiple environ entries with the same key
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]
2020-10-29 08:08:42 -07:00
Koichi Sasada
07c03bc309 check isolated Proc more strictly
Isolated Proc prohibit to access outer local variables, but it was
violated by binding and so on, so they should be error.
2020-10-29 23:42:55 +09:00
Nobuyoshi Nakada
bf951c763d
An ellipsis (...) can only be placed at the beginning 2020-10-29 18:14:27 +09:00
Aaron Patterson
9f3adaf529 Use public allocators for creating new T_OBJECT objects
This way the header flags and object internals are set correctly
2020-10-28 18:35:22 -07:00
Aaron Patterson
d8b0f1f7a8
Objects are born embedded, so we don't need to check ivpr
It's not necessary to check ivpt because objects are allocated as
"embedded" by default
2020-10-28 16:11:30 -07:00
Jeremy Evans
58fd54f914 Fix error in update-deps due to tab/space difference 2020-10-28 15:29:05 -07:00
Jeremy Evans
dfb3605bbe
Add Thread.ignore_deadlock accessor
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]
2020-10-28 15:27:00 -07:00
Aaron Patterson
a99f52d511
Remove another unnecessary test
Same as 5be42c1ef4f7ed0a8004cad750a9ce61869bd768
2020-10-28 10:16:57 -07:00
Aaron Patterson
5be42c1ef4
Remove unnecessary conditional
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
2020-10-28 09:57:44 -07:00
Aaron Patterson
2c19c1484a
If an object isn't embedded it will have an ivptr
We don't need to check the existence if an ivptr because non-embedded
objects will always have one
2020-10-28 09:45:22 -07:00
git
9190451fcf * 2020-10-29 [ci skip] 2020-10-29 00:42:09 +09:00
Aaron Patterson
0bbbb5a657 dest is always embedded so we can remove this check 2020-10-28 08:41:39 -07:00
Kenta Murata
fb3c711df3
compile.c: separate compile_builtin_function_call (#3711) 2020-10-28 10:22:28 +09:00
Nobuyoshi Nakada
8f9c113f35
Added benchmark of vm_send by variable [ci skip] 2020-10-28 09:47:46 +09:00
git
915024e3b7 * 2020-10-28 [ci skip] 2020-10-28 00:29:10 +09:00
Yusuke Endoh
c1bebbb2ee test/ruby/test_rational.rb: Prevent "assigned but unused variable" 2020-10-28 00:27:56 +09:00
Nobuyoshi Nakada
8e06075442
Revert "Fixed typo"
This reverts commit 379a5ca539af0e954b1cdf63b9365ad208b9c7f3.
This "typo" is intentional to test the transposition detection by
did_you_mean.
2020-10-27 23:26:38 +09:00
Hiroshi SHIBATA
379a5ca539
Fixed typo 2020-10-27 22:59:43 +09:00
Nobuyoshi Nakada
3198e7abd7
Separate send into public_send and __send__ 2020-10-27 16:12:45 +09:00
Nobuyoshi Nakada
acdb893338
Removed unused environment variable 2020-10-27 14:42:24 +09:00
Nobuyoshi Nakada
135d369096
[DOC] more precise description of "**" in Dir.glob pattern [ci skip] 2020-10-27 08:55:10 +09:00
Alan Wu
c56fdaecc4 Revert assert for debugging on CI
This reverts commit ac69849e49982ea83036c04c5d5f7245e3956a49.
The bug seems to have been fixed.
2020-10-26 16:44:15 -04:00
Koichi Sasada
7ad56fd87b freeze dynamic regexp literals
Regexp literals are frozen, and also dynamically comppiled Regexp
literals (/#{expr}/) are frozen.
2020-10-27 01:45:57 +09:00
git
f8d264fdfd * 2020-10-27 [ci skip] 2020-10-27 01:37:49 +09:00
Koichi Sasada
1c6ebe14fb freeze Process::Status
It seems immutable information.
2020-10-27 01:37:24 +09:00
Nobuyoshi Nakada
bdd1d17ac2
Allow non-argument endless-def with a space instead of parentheses 2020-10-26 21:15:16 +09:00
Kenta Murata
69837229d7
rational.c: convert a numerator to rational before calling fdiv in Kernel.Rational() (#3702)
This makes `Rational(BigDecimal(1), 60) == Rational(1, 60)`.
[Bug #16518]
2020-10-26 18:43:30 +09:00
Nobuyoshi Nakada
52c630da00
Assoc pattern matching (#3703)
[Feature #17260] One-line pattern matching using tASSOC

R-assignment is rejected instead.
2020-10-26 18:00:24 +09:00
Benoit Daloze
cffdacb15a Ignore <internal: entries from core library methods for Kernel#warn(message, uplevel: n)
* Fixes [Bug #17259]
2020-10-26 08:47:33 +01:00
Benoit Daloze
fbb2d30ee6 Add specs that #caller and #caller_locations include core library methods defined in Ruby 2020-10-26 08:47:33 +01:00
Benoit Daloze
3673c3eafc Update to ruby/spec@b164536 2020-10-26 08:20:48 +01:00