1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
Commit graph

22 commits

Author SHA1 Message Date
normal
6a65f2b1e4 io + socket: make pipes and sockets nonblocking by default
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
2018-11-22 08:46:51 +00:00
mame
8c59236674 Hide NotImplementedError for windows
440dc6b7e0 (commitcomment-24074203)

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59749 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-05 08:15:54 +00:00
mame
440dc6b7e0 Improve line covearge of ext/io/nonblock/nonblock.c from 54.5% to 95.5%
Not so good test, but it would be better than nothing, I guess...

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59741 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-04 13:25:01 +00:00
naruse
3e92b635fb Add frozen_string_literal: false for all files
When you change this to true, you may need to add more tests.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53141 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-16 05:07:31 +00:00
nobu
beb1c085d5 use Timeout.timeout
* time: Object#timeout has been deprecated a long time ago, use
  Timeout.timeout.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-07-13 10:07:01 +00:00
akr
88fda023aa Join a thread.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46357 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-06-05 09:16:57 +00:00
akr
a2f9b00ad4 test/io/nonblock/test_flush.rb: Close fds.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@46228 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2014-05-29 12:42:14 +00:00
nobu
afafb8c055 * test/io/nonblock/test_flush.rb (TestIONonblock#flush_test):
return true to finish the test.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30860 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2011-02-13 00:56:48 +00:00
nobu
188881b2a8 * test/io/nonblock/test_flush.rb (test_flush): try pipe and
socketpair.  [ruby-dev:41517]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28143 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2010-06-03 04:05:20 +00:00
kazu
81577c26ee * test/io/nonblock/test_flush.rb (TestIONonblock#test_flush):
rescue some exceptions. [ruby-dev:35638]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@18372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-08-05 09:04:13 +00:00
akr
786e7aba7f * test/io/nonblock/test_flush.rb: don't set Thread.abort_on_exception.
* test/net/imap/test_imap.rb: ensure disconnecting imap to terminate
  receiver thread..


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@16302 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2008-05-05 17:18:09 +00:00
akr
e282fc4c06 timeout larger area.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14797 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-30 12:42:20 +00:00
akr
77dece6e63 use timeout for thread join to avoid hang.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14786 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-29 18:39:43 +00:00
ko1
9c09689301 * test/io/nonblock/test_flush.rb: fix test for 1.9.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14605 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-12-24 11:30:29 +00:00
akr
68543f3092 use ML ref. for assertion message.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13958 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-11-18 07:18:56 +00:00
ko1
db95cb49af * test/io/nonblock/test_flush.rb: YARV doesn't raise any errors if
another thread close IO object which current thread is blocking with.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11796 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-02-20 06:11:37 +00:00
ko1
a8d47615da * test/fileutils/test_fileutils.rb (check_singleton): fix to use
symbole instead of string.
* test/io/nonblock/test_flush.rb: enable tests.
* test/xmlrpc/test_webrick_server.rb: ditto.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11743 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2007-02-14 16:53:00 +00:00
ko1
a3e1b1ce7e * Merge YARV
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11439 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2006-12-31 15:02:22 +00:00
nobu
807a93be08 * test/io/nonblock/test_flush.rb (TestIONonblock#test_flush): write
operation ignores EAGAIN.

* test/ruby/test_super.rb (TestSuper#test_define_method): test for
  super from proc.  [ruby-core:03856]

* test/socket/test_tcp.rb (TestTCPSocket#test_recvfrom): make
  execution order more precise.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7496 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-12-07 18:26:12 +00:00
nobu
37eb7502db * test/io/nonblock/test_flush.rb: abandon tests when io/nonblock is
not supported.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7416 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-11-29 06:22:42 +00:00
nobu
6e22160537 * test/io/nonblock/test_flush.rb: test transferred data.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7412 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-11-29 05:21:47 +00:00
nobu
e73b5c9bfc * io.c (fptr_finalize): must not use FILE after fclose().
[ruby-dev:24985]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7411 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2004-11-29 05:00:46 +00:00