1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/spec/ruby/core/io
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
..
fixtures Update to ruby/spec@a6b8805 2017-10-28 15:15:48 +00:00
shared Update to ruby/spec@9be7c7e 2018-08-03 16:19:40 +00:00
advise_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
binmode_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
binread_spec.rb Update to ruby/spec@6f38a82 2018-04-28 19:50:06 +00:00
binwrite_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
bytes_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
chars_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
close_on_exec_spec.rb Update to ruby/spec@6f38a82 2018-04-28 19:50:06 +00:00
close_read_spec.rb Update to ruby/spec@6f38a82 2018-04-28 19:50:06 +00:00
close_spec.rb Update to ruby/spec@6f38a82 2018-04-28 19:50:06 +00:00
close_write_spec.rb Update to ruby/spec@6f38a82 2018-04-28 19:50:06 +00:00
closed_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
codepoints_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
constants_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
copy_stream_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
dup_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
each_byte_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
each_char_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
each_codepoint_spec.rb Update to ruby/spec@6f38a82 2018-04-28 19:50:06 +00:00
each_line_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
each_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
eof_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
external_encoding_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
fcntl_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
fdatasync_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
fileno_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
flush_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
for_fd_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
foreach_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
fsync_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
getbyte_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
getc_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
gets_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
initialize_spec.rb Skip known MJIT random test failures 2018-11-20 15:46:09 +00:00
inspect_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
internal_encoding_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
io_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
ioctl_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
isatty_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
lineno_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
lines_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
new_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
open_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
output_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
pid_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
pipe_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
popen_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
pos_spec.rb Update to ruby/spec@a454137 2018-06-27 12:30:05 +00:00
pread_spec.rb Update to ruby/spec@8b743a3 2018-10-27 10:48:40 +00:00
print_spec.rb Update to ruby/spec@a454137 2018-06-27 12:30:05 +00:00
printf_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
putc_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
puts_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
pwrite_spec.rb Update to ruby/spec@8b743a3 2018-10-27 10:48:40 +00:00
read_nonblock_spec.rb io + socket: make pipes and sockets nonblocking by default 2018-11-22 08:46:51 +00:00
read_spec.rb Update to ruby/spec@9be7c7e 2018-08-03 16:19:40 +00:00
readbyte_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
readchar_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
readline_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
readlines_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
readpartial_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
reopen_spec.rb Skip known MJIT random test failures 2018-11-20 15:46:09 +00:00
rewind_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
seek_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
select_spec.rb spec/ruby/core/io/select_spec.rb: workaround stuck IO.select 2018-08-20 01:43:10 +00:00
set_encoding_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
stat_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
sync_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
sysopen_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
sysread_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
sysseek_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
syswrite_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
tell_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
to_i_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
to_io_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
try_convert_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
tty_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
ungetbyte_spec.rb io.c: ungetbyte silently ignores upper bits 2018-11-19 08:10:48 +00:00
ungetc_spec.rb Update to ruby/spec@c1b568b 2018-03-04 15:09:32 +00:00
write_nonblock_spec.rb io + socket: make pipes and sockets nonblocking by default 2018-11-22 08:46:51 +00:00
write_spec.rb Update to ruby/spec@8b743a3 2018-10-27 10:48:40 +00:00