All normal Ruby IO methods (IO#read, IO#gets, IO#write, ...) are
all capable of appearing to be "blocking" when presented with a
file description with the O_NONBLOCK flag set; so there is
little risk of incompatibility within Ruby-using programs.
The biggest compatibility risk is when spawning external
programs. As a result, stdin, stdout, and stderr are now always
made blocking before exec-family calls.
This change will make an event-oriented MJIT usable if it is
waiting on pipes on POSIX_like platforms.
It is ALSO necessary to take advantage of (proposed lightweight
concurrency (aka "auto-Fiber") or any similar proposal for
network concurrency: https://bugs.ruby-lang.org/issues/13618
Named-pipe (FIFO) are NOT yet non-blocking by default since
they are rarely-used and may introduce compatibility problems
and extra syscall overhead for a common path.
Please revert this commit if there are problems and if I am afk
since I am afk a lot, lately.
[ruby-core:89950] [Bug #14968]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65922 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* proc.c (proc_compose): support any object with a call method rather
than supporting only procs. [Feature #6284]
* proc.c (compose): use the function call on the given object rather
than rb_proc_call_with_block in order to support any object.
* test/ruby/test_proc.rb: Add test cases for composing Procs with
callable objects.
* test/ruby/test_method.rb: Add test cases for composing Methods with
callable objects.
From: Paul Mucur <paul@altmetric.com>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65913 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* proc.c (rb_method_compose): Implement Method#* for Method composition,
which delegates to Proc#*.
* test/ruby/test_method.rb: Add test cases for Method composition.
From: Paul Mucur <mudge@mudge.name>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65912 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This reverts commit d12bcfc186.
pause on --jit-wait looks not working... I'll fix that first.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65910 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
because we can't configure timeout for remote fetcher.
We've sometimes hit timeout.
5bf5213c185be3d71956
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65905 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Let me silence this until I have time to work on them, and make the CI
usable for testing other features.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65893 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
because it had already been SEGV-ed in pull request'S CI
20427065/job/32oahrcd58b8ubb1
and has never worked on trunk either.
Please make sure it does not SEGVs on your MinGW environment or pull
request before enabling native fiber on MinGW.
appveyor.yml: reverted commits to make CI green with native fiber
test/excludes/_appveyor/msys2/TestArray.rb: ditto
test/excludes/_appveyor/msys2/TestEnumerable.rb: ditto
test/excludes/_appveyor/vs/TestArray.rb: ditto
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
20432223/job/yhwbku8dg2s40e9e
C:/projects/ruby/test/lib/test/unit.rb:1004: warning: undefining `object_id' may cause serious problems
C:/projects/ruby/test/lib/test/unit.rb:1004: warning: undefining `__send__' may cause serious problems
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65891 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
because it SEGVs on setup like:
20431217/job/97no5h1gqv50k1vf
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65889 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Because mon_initialized may be used to re-initialize copied objects intentionally.
mon_initialize_spec.rb fails:
1)
MonitorMixin#mon_initialize can be called in initialize_copy to get a new Mutex and used with synchronize ERROR
ThreadError: already initialized
/home/shugo/src/ruby/lib/monitor.rb:255:in `mon_initialize'
/home/shugo/src/ruby/spec/ruby/library/monitor/mon_initialize_spec.rb:19:in `initialize_copy'
/home/shugo/src/ruby/spec/ruby/library/monitor/mon_initialize_spec.rb:28:in `initialize_dup'
/home/shugo/src/ruby/spec/ruby/library/monitor/mon_initialize_spec.rb:28:in `dup'
/home/shugo/src/ruby/spec/ruby/library/monitor/mon_initialize_spec.rb:28:in `block (2 levels) in <top (required)>'
/home/shugo/src/ruby/spec/ruby/library/monitor/mon_initialize_spec.rb:4:in `<top (required)>'
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65827 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
while child handler is disabled.
trying to fix [Bug #15320]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65817 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
it didn't work.
http://ci.rvm.jp/results/trunk-mjit@silicon-docker/1468677
and skips broken tests for now. But this issue should be fixed soon.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65814 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
The behaviour of String#setbyte has been depending on the width
of int, which is not portable. Must check explicitly.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65804 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
by launching MJIT worker thread in child Ruby process.
See the comment before `mjit_child_after_fork` for details.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65785 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
from excludes directory names. test-mjit-wait / test-mjit are combined
and distributed as mjit-test1 and mjit-test2 now.
So the subdirectory names are changed to option names, --jit and --jit-wait.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65766 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
because separately running it without -j didn't work.
Revert "appveyor.yml: run memory-exchausting test separately"
This reverts commit r65703.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65760 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This probably should have been `#bar` on the instance of class `Undef2` all along
[Fix GH-2015]
From: Alex Snaps <alex.snaps@gmail.com>
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65757 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
for now. This seems to get unstable after r65691.
test/excludes/_travis/osx: renamed from test/excludes/_travis because
it's only for osx builds.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65713 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
On osx build 454309945,
```
1) Failure:
Fiddle::TestFunction#test_nogvl_poll [/Users/travis/build/ruby/ruby/test/fiddle/test_function.rb:95]:
slept amount of time.
Expected |200 - 322| (122) to be <= 100.
```
but it succeeds on my macOS machine as is. So it seems that the boundary is
just too strict and prone to random failure by overload.
To make osx Travis build usable, let me loosen the delta requirement.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65705 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
r65690 had no impact
20253561/job/p5u235m8xx85t9o5.
Gave up to solve the issue inside the test.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65703 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ext/date/date_core.c (d_lite_marshal_load): respect COMPLEX_DAT
bit in the pre-allocated structure.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65698 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ext/date/date_core.c (d_lite_initialize_copy): do not change
COMPLEX_DAT bit, as the structure does not change. initialize
member-wise instead.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65697 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Follow the same naming convention of `InstructionSequence` class.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65641 b2dd03c8-39d4-4d8f-98ff-823fe69b080e