Commit graph

64552 commits

Author SHA1 Message Date
Nobuyoshi Nakada
539b89075a
Compare boolean values for parser pragma locale-insensitively 2020-11-02 18:24:45 +09:00
Nobuyoshi Nakada
bdcfa70bbd
strip trailing spaces [ci skip] 2020-11-02 17:31:50 +09:00
Koichi Sasada
5fefb53249 Copy for Ractor.send() without marshal.
Now copying objects do not need marshal protocol.
2020-11-02 03:31:58 +09:00
git
1581da9993 * 2020-11-02 [ci skip] 2020-11-02 01:37:56 +09:00
Koichi Sasada
db7a3b63ba suppport Ractor.send(move: true) for more deta
This patch allows to move more data types.
2020-11-02 01:37:28 +09:00
Kazuki Tsujimoto
963359a762
Use the suppress_warning helper instead of doing it manually 2020-11-01 19:00:22 +09:00
Kazuki Tsujimoto
7282f3113d
Suppress "One-line pattern matching is experimental" warning 2020-11-01 18:19:58 +09:00
Kazuki Tsujimoto
e0e2492cd3
Fix Rubyspec (ruby-2.7) failures
1337845174
2020-11-01 17:37:03 +09:00
Kazuki Tsujimoto
e03e1982bd
Change NODE layout for pattern matching
I prefer pconst to be the first element of NODE.

  Before:

       | ARYPTN | FNDPTN | HSHPTN
    ---+--------+--------+-----------
    u1 | imemo  | imemo  | pkwargs
    u2 | pconst | pconst | pconst
    u3 | apinfo | fpinfo | pkwrestarg

  After:

       | ARYPTN | FNDPTN | HSHPTN
    ---+--------+--------+-----------
    u1 | pconst | pconst | pconst
    u2 | imemo  | imemo  | pkwargs
    u3 | apinfo | fpinfo | pkwrestarg
2020-11-01 16:19:07 +09:00
Rei Odaira
305c79af2f ext/socket/rubysocket.h: avoid the conflict of T_DATA definition in AIX 2020-11-01 00:12:55 -05:00
Koichi Sasada
0e33028d69 use one-line pattern matching for warning tests 2020-11-01 13:55:54 +09:00
git
b1e7c3a31f * 2020-11-01 [ci skip] 2020-11-01 13:36:02 +09:00
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 3685ed7303 and 5dc107b03f.
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 5be42c1ef4
2020-10-28 10:16:57 -07:00
Aaron Patterson
5be42c1ef4
Remove unnecessary conditional
As of 0b81a484f3, `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 379a5ca539.
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