aboutsummaryrefslogtreecommitdiffstats
path: root/io.c
Commit message (Collapse)AuthorAgeFilesLines
* [DOC] Fix grammar: "is same as" -> "is the same as"Marcus Stollsteimer2021-01-051-1/+1
|
* Made an internal callback function staticNobuyoshi Nakada2020-12-201-1/+1
|
* Use category: :deprecated in warnings that are related to deprecationJeremy Evans2020-12-181-3/+4
| | | | | | | | | | | | | | | | | Also document that both :deprecated and :experimental are supported :category option values. The locations where warnings were marked as deprecation warnings was previously reviewed by shyouhei. Comment a couple locations where deprecation warnings should probably be used but are not currently used because deprecation warning enablement has not occurred at the time they are called (RUBY_FREE_MIN, RUBY_HEAP_MIN_SLOTS, -K). Add assert_deprecated_warn to test assertions. Use this to simplify some tests, and fix failing tests after marking some warnings with deprecated category.
* Tweaked `Process::Status.wait`Nobuyoshi Nakada2020-12-091-1/+1
| | | | | | | | * revert `rb_last_status_set` * renamed the new function as `rb_process_status_new` * `rb_process_status_new` always freezes the return value * marked `Process::Status.wait` as EXPERIMENTAL, as it has not been discussed totally yet.
* Add support for non-blocking `Process.wait`.Samuel Williams2020-12-091-5/+5
|
* delete deprecated IO-like methods卜部昌平2020-12-031-117/+0
| | | | | | | | | This commit deletes {IO,ARGF,StringIO,Zib::GZipReader}#{bytes,chars,lines,codepoints}, which have been deprecated since c47c095b9740e7c19d6fdca29ab661c1089221d4. Note that String also has those methods. They are neither depreacted nor deleted because they are not aliases of counterpart each_something.
* fix public interfaceKoichi Sasada2020-11-181-1/+1
| | | | | | | | | | | | | | | | | | To make some kind of Ractor related extensions, some functions should be exposed. * include/ruby/thread_native.h * rb_native_mutex_* * rb_native_cond_* * include/ruby/ractor.h * RB_OBJ_SHAREABLE_P(obj) * rb_ractor_shareable_p(obj) * rb_ractor_std*() * rb_cRactor and rm ractor_pub.h and rename srcdir/ractor.h to srcdir/ractor_core.h (to avoid conflict with include/ruby/ractor.h)
* Rename to `Fiber#set_scheduler`.Samuel Williams2020-11-071-8/+8
|
* Fix error in update-deps due to tab/space differenceJeremy Evans2020-10-281-1/+1
|
* Don't redefine #rb_intern over and over againStefan Stüben2020-10-211-31/+28
|
* Some global variables can be accessed from ractorsKoichi Sasada2020-10-201-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some global variables should be used from non-main Ractors. [Bug #17268] ```ruby # ractor-local (derived from created ractor): debug '$DEBUG' => $DEBUG, '$-d' => $-d, # ractor-local (derived from created ractor): verbose '$VERBOSE' => $VERBOSE, '$-w' => $-w, '$-W' => $-W, '$-v' => $-v, # process-local (readonly): other commandline parameters '$-p' => $-p, '$-l' => $-l, '$-a' => $-a, # process-local (readonly): getpid '$$' => $$, # thread local: process result '$?' => $?, # scope local: match '$~' => $~.inspect, '$&' => $&, '$`' => $`, '$\'' => $', '$+' => $+, '$1' => $1, # scope local: last line '$_' => $_, # scope local: last backtrace '$@' => $@, '$!' => $!, # ractor local: stdin, out, err '$stdin' => $stdin.inspect, '$stdout' => $stdout.inspect, '$stderr' => $stderr.inspect, ```
* Respect the original styles [ci skip]Nobuyoshi Nakada2020-10-111-1/+2
|
* Prefer to use `prep_io` for temporary IO instances.Samuel Williams2020-09-171-13/+4
|
* Fix handling of FMODE_PREP.Samuel Williams2020-09-151-1/+1
|
* Fix incorrect initialization of `rb_io_t::self`.Samuel Williams2020-09-151-3/+6
|
* Prefer `rb_thread_current_scheduler`.Samuel Williams2020-09-141-4/+22
|
* Add support for hooking `IO#read`.Samuel Williams2020-09-141-0/+6
|
* Standardised scheduler interface.Samuel Williams2020-09-141-5/+76
|
* Simplify bitmasks for IO events.Samuel Williams2020-09-141-3/+3
|
* Check copy_file_range(2) is actually supported.Masaki Matsushita2020-09-121-4/+0
| | | | see also: https://gitlab.com/gitlab-org/gitlab/-/issues/218999#note_363225872
* break around function definition [ci skip]Nobuyoshi Nakada2020-09-051-1/+3
|
* Introduce Ractor mechanism for parallel executionKoichi Sasada2020-09-031-39/+107
| | | | | | | | | | | | | | | | This commit introduces Ractor mechanism to run Ruby program in parallel. See doc/ractor.md for more details about Ractor. See ticket [Feature #17100] to see the implementation details and discussions. [Feature #17100] This commit does not complete the implementation. You can find many bugs on using Ractor. Also the specification will be changed so that this feature is experimental. You will see a warning when you make the first Ractor with `Ractor.new`. I hope this feature can help programmers from thread-safety issues.
* IO.copy_stream: handle EOPNOTSUP instead of ENOTSUPMasaki Matsushita2020-08-291-3/+3
|
* IO.copy_stream: handle ENOTSUP on copy_file_range(2)Masaki Matsushita2020-08-291-0/+5
| | | | | | fallback to other methods on ENOTSUP. some RedHat kernels may return ENOTSUP on an NFS mount. [Feature #16965]
* Fix corruption in ARGF.inplacePeter Zhu2020-08-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Extension string stored in `ARGF.inplace` is created using an api designed for C string constants to create a Ruby string that points at another Ruby string. When the original string is swept, the extension string gets corrupted. Reproduction script (on MacOS): ```ruby #!/usr/bin/ruby -pi.bak BEGIN { GC.start(full_mark: true) arr = [] 1000000.times do |x| arr << "fooo#{x}" end } puts "hello" ``` Co-Authored-By: Matt Valentine-House <31869+eightbitraptor@users.noreply.github.com>
* Remove trailing spaces [ci skip]Nobuyoshi Nakada2020-07-201-1/+1
|
* Rename `rb_current_thread_scheduler` to `rb_thread_scheduler_if_nonblocking`.Samuel Williams2020-07-201-30/+35
| | | | | Correctly capture thread before releasing GVL and pass as argument to `rb_thread_scheduler_if_nonblocking`.
* add UNREACHABLE_RETURN卜部昌平2020-06-291-0/+2
| | | | | | Not every compilers understand that rb_raise does not return. When a function does not end with a return statement, such compilers can issue warnings. We would better tell them about reachabilities.
* rb_io_modestr_fmode: do not goto into a branch卜部昌平2020-06-291-2/+4
| | | | | I'm not necessarily against every goto in general, but jumping into a branch is definitely a bad idea. Better refactor.
* rb_io_each_codepoint: do not goto into a branch卜部昌平2020-06-291-2/+4
| | | | | I'm not necessarily against every goto in general, but jumping into a branch is definitely a bad idea. Better refactor.
* Fixed a variable name [Bug #16903]Nobuyoshi Nakada2020-05-211-1/+1
| | | | | | Fix up of 0e3b0fcdba7 From: fd0 (Daisuke Fujimura)
* Thread scheduler for light weight concurrency.Samuel Williams2020-05-141-41/+72
|
* sed -i 's|ruby/impl|ruby/internal|'卜部昌平2020-05-111-2/+2
| | | | To fix build failures.
* sed -i s|ruby/3|ruby/impl|g卜部昌平2020-05-111-2/+2
| | | | This shall fix compile errors.
* Refactored rb_readwrite_syserr_failNobuyoshi Nakada2020-04-171-18/+20
| | | | | | * renamed argument `writable` as `waiting` * hosited out creating and raising exception * turned into a `switch`
* Raise EPIPE at broken pipe for the backward compatibilityNobuyoshi Nakada2020-04-151-6/+11
| | | | | | Instead of SignalException for SIGPIPE, raise `Errno::EPIPE` with instance variable `signo` and re-send that signal at exit. [Feature #14413]
* PAGER without fork&exec too [Feature #16754]Nobuyoshi Nakada2020-04-121-5/+19
|
* Silence broken pipe error messages on STDOUT [Feature #14413]Nobuyoshi Nakada2020-04-111-16/+46
| | | | Raise `SignalException` for SIGPIPE to abort when EPIPE occurs.
* Make `#inspect` interruptible in `Kernel#p`Nobuyoshi Nakada2020-04-101-20/+16
| | | | | Only writing the inspected result and a newline is uninterruptible.
* Constified writev function familyNobuyoshi Nakada2020-04-101-3/+3
|
* Merge pull request #2991 from shyouhei/ruby.h卜部昌平2020-04-081-4/+4
| | | Split ruby.h
* Set external encoding correctly for File.open('f', FILE::BINARY) on WindowsJeremy Evans2020-03-271-0/+12
| | | | | | | | | | Previously, the external encoding was only set correctly for File::BINARY if keyword arguments were provided. This copies the logic for the keyword arguments case to the no keyword arguments case. Possibly it should be refactored into a separate function. Fixes [Bug #16737]
* Remove support for passing nil to IO#ungetcJeremy Evans2020-02-271-1/+0
| | | | Fixes [Bug #13675]
* Warn non-nil `$/` [Feature #14240]Nobuyoshi Nakada2020-02-231-2/+2
|
* Warn non-nil `$\` [Feature #14240]Nobuyoshi Nakada2020-02-231-4/+4
|
* Warn non-nil `$,` in `IO#print` tooNobuyoshi Nakada2020-02-231-0/+3
|
* Pass keyword arguments to IOs properly [Bug #16639]Nobuyoshi Nakada2020-02-181-2/+6
|
* Drop executable bit set by 25f2005a638570cce832d218a451072057610f06Nobuyoshi Nakada2020-01-221-0/+0
|
* Also check EWOULDBLOCK as well as EAGAINNobuyoshi Nakada2020-01-211-9/+4
|
* fix load error with EAGAINXia Xionjun2020-01-211-1/+19
| | | | | | | | | | | | | | | This is a fix related to the following issue. rails/rails#33464 Not only in rails apps, some little ruby app with only 2 or 3 ruby files reproduce the problem during many years. When I edit linux ruby files by vs code via samba on windows, and then I execute the ruby files on linux, "require_relative" will sometimes not work properly. My solution is to wait a monument if the required relative file is busy.