summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-09-14Fixed one-off errorNobuyoshi Nakada
Needs another room to append an empty hash.
2019-09-14Update news regarding `Fiber#raise`.Samuel Williams
2019-09-14Fix memory leak when adding empty keyword hashesJeremy Evans
nagachika pointed out that ALLOC_N is actually just malloc, so this memory wasn't being freed. This shouldn't be a performance sensitive code path, and will be going away after 2.7, so just allocate a temp buffer that will be freed later by Ruby GC.
2019-09-14Only set RB_PASS_CALLED_KEYWORDS in C functions called directly from RubyJeremy Evans
It is not safe to set this in C functions that can be called from other C functions, as in the non argument-delegation case, you can end up calling a Ruby method with a flag indicating keywords are set without passing keywords. Introduce some new *_kw functions that take a kw_splat flag and use these functions to set RB_PASS_CALLED_KEYWORDS in places where we know we are delegating methods (e.g. Class#new, Method#call)
2019-09-14* remove trailing spaces. [ci skip]git
2019-09-13Consolidate empty keyword handlingJeremy Evans
Remove rb_add_empty_keyword, and instead of calling that every place you need to add empty keyword hashes, run that code in a single static function in vm_eval.c. Add 4 defines to include/ruby/ruby.h, these are to be used as int kw_splat values when calling the various rb_*_kw functions: RB_NO_KEYWORDS :: Do not pass keywords RB_PASS_KEYWORDS :: Pass final argument (which should be hash) as keywords RB_PASS_EMPTY_KEYWORDS :: Add an empty hash to arguments and pass as keywords RB_PASS_CALLED_KEYWORDS :: Passes same keyword type as current method was called with (for method delegation) rb_empty_keyword_given_p needs to stay. It is required if argument delegation is done but delayed to a later point, which Enumerator does. Use RB_PASS_CALLED_KEYWORDS in rb_call_super to correctly delegate keyword arguments to super method.
2019-09-13Correctly handle keywords for Method#call for cfuncs, send, and attr_*Jeremy Evans
This sets the correct VM frame flags when using Method#call to call funcs, and handles empty keyword hashes for cfuncs, attr_reader, and attr_writer. It also fixes calls to send through Method#call. It adds tests for all of those, as well as tests for using Method#call to call define_method, lambda, and sym_procs (which didn't require code changes).
2019-09-14The stdlib readline should raise Interrupt when pressing C-caycabta
2019-09-14* 2019-09-14 [ci skip]git
2019-09-14Revert "Use IO#getch to read one char in raw mode"aycabta
This reverts commit 805b0a481132938638dbd32830cf5dca3910efb1.
2019-09-14Revert "Use IO#getbyte"aycabta
This reverts commit 685f12bbca50ff9b7a16b3016b3b8b3f2ac8b796.
2019-09-14Revert "Support multibyte input"aycabta
This reverts commit 6d9e54816f828983bcf383ce6fce287bd3ca05b9.
2019-09-13Name dynamically defined methods with line numbersNobuyoshi Nakada
2019-09-13Moved ruby_node_name declaration to node.hNobuyoshi Nakada
2019-09-13introduce IBF_(MAJOR|MINOR)_VERSION.Koichi Sasada
RubyVM::InstructionSequence.to_binary generates a bytecode binary representation. To check compatibility with binary and loading MRI we prepared major/minor version and compare them at loading time. However, development version of MRI can change this format but we can not increment minor version to make them consistent with Ruby's major/minor versions. To solve this issue, we introduce new minor version scheme (binary's minor_version = ruby's minor * 10000 + dev ver) and we can check incompatibility with older dev version.
2019-09-13Dump some informationKazuhiro NISHIYAMA
Notes: Merged: https://github.com/ruby/ruby/pull/2457
2019-09-13* 2019-09-13 [ci skip]git
2019-09-13Upgrade benchmark_driver to v0.15.5Takashi Kokubun
Fixed new Struct-related keyword argument warnings
2019-09-12Document and test Enumerator.produceAkinori MUSHA
Co-authored-by: Victor Shepelev <zverok.offline@gmail.com>
2019-09-12Implement Enumerator.produce [Feature #14781]Akinori MUSHA
2019-09-12Moved coverage.yml to https://github.com/ruby/actions [ci skip]Kazuhiro NISHIYAMA
2019-09-11Make NODE_ARYPTN layout consistent between Ripper and ASTAaron Patterson
We are seeing SEGVs in CI: http://ci.rvm.jp/results/trunk-gc-asserts@ruby-sky1/2253563 This is happening because Ripper constructs AST nodes differently than parse.y normally does. Specifically in this case Ripper is assigning 3 `VALUE` objects: https://github.com/ruby/ruby/blob/1febb6f4a14f7222c6d30250bfdc252d34238187/parse.y#L757-L761 Where parse.y will normally assign other things: https://github.com/ruby/ruby/blob/1febb6f4a14f7222c6d30250bfdc252d34238187/parse.y#L11258-L11260 The important one is the last one, the `struct rb_ary_pattern_info`. The mark function assumed that `NODE_ARYPTN` have a pointer to `struct rb_ary_pattern_info`, and used it: https://github.com/ruby/ruby/blob/1febb6f4a14f7222c6d30250bfdc252d34238187/node.c#L1269-L1274 In the case of Ripper, `NODE_ARYPTN` doesn't point to an `rb_ary_pattern_info`, so the mark function would SEGV. This commit changes Ripper so that its `NODE_ARYPTN` nodes also point at an `rb_ary_pattern_info`, and the mark function can continue with the same assumption.
2019-09-11Avoid rehashing keys in transform_valuesJohn Hawthorn
Previously, calling transform_values would call rb_hash_aset for each key, needing to rehash it and look up its location. Instead, we can use rb_hash_stlike_foreach_with_replace to replace the values as we iterate without rehashing the keys. Notes: Merged: https://github.com/ruby/ruby/pull/2452
2019-09-11Make sure WB executes after object is reachableAaron Patterson
2019-09-12* 2019-09-12 [ci skip]git
2019-09-11Emit missing keyword argument separation warnings for define_methodJeremy Evans
Previously, the warning functions skipped warning in these cases. This removes the skipping, and uses a less descriptive warning instead. This affected both last argument to keyword warnings and keyword split warnings.
2019-09-11Moved doxygen.yml to https://github.com/ruby/actions [ci skip]Kazuhiro NISHIYAMA
2019-09-11Fixed the function signature to rb_rescue2Nobuyoshi Nakada
2019-09-11Made a short-circuit expression w/o result into an `if`-statementNobuyoshi Nakada
2019-09-11&$$->nd_lit is uninitialized at this point卜部昌平
See also https://travis-ci.org/ruby/ruby/jobs/583031687#L1874 Notes: Merged: https://github.com/ruby/ruby/pull/2444
2019-09-11Add `--no-progress` to `aws s3` [ci skip]Kazuhiro NISHIYAMA
https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html > --no-progress (boolean) File transfer progress is not displayed. This flag is only applied when the quiet and only-show-errors flags are not provided.
2019-09-10Macros can't be expressions, so make a functionAaron Patterson
Macros can't be expressions, that is a GNU extension (I didn't know that). This commit converts the macro to a function so that everything will compile correctly on non-GNU compatible compilers.
2019-09-10WB needs to be executed after object is reachableAaron Patterson
2019-09-11* 2019-09-11 [ci skip]git
2019-09-10`NODE_MATCH` needs to be marked / allocated from marking bucketAaron Patterson
Fixes a test in RubySpec
2019-09-10[ruby/io-console] Suppress yet another warning on WindowsNobuyoshi Nakada
https://github.com/ruby/io-console/commit/4e17c90788
2019-09-10[ruby/io-console] Suppress warnings on WindowsNobuyoshi Nakada
About unused variables and a function. https://github.com/ruby/io-console/commit/32baf54e7a
2019-09-10Unused LONG_MAX_as_doubleNobuyoshi Nakada
LONG_MAX_as_double is not needed when long is small enough to be exactly representable as a double, e.g., IL32LLP64 platforms.
2019-09-10oops卜部昌平
Silly typo.
2019-09-10Fixed GCC version for diagnostic-pragmasNobuyoshi Nakada
"GCC diagnostic push/pop" seems appeared at gcc 4.6.
2019-09-10Remove check of ai.protocolMasaki Matsushita
Solaris 10 returns addrinfo.ai_protocol as 0, not 6.
2019-09-10fix CentOS 6 compile error卜部昌平
See also https://rubyci.org/logs/rubyci.s3.amazonaws.com/centos6/ruby-master/log/20190910T003005Z.fail.html.gz
2019-09-09Default to cc/c++ instead of gcc/g++ on OpenBSDJeremy Evans
Notes: Merged: https://github.com/ruby/ruby/pull/2443
2019-09-10Support timeout for AddrinfoMasaki Matsushita
Addrinfo.getaddrinfo and .foreach now accepts :timeout in seconds as a keyword argument. If getaddrinfo_a(3) is available, the timeout will be applied for name resolution. Otherwise, it will be ignored. Socket.tcp accepts :resolv_timeout to use this feature. This commit is retry of 6382f5cc91ac9e36776bc854632d9a1237250da7. Test was failed on Solaris machines which don't have "http" in /etc/services. In this commit, use "ssh" instead.
2019-09-10[ruby/io-console] Added IO#check_winsize_changed on WindowsNobuyoshi Nakada
https://github.com/ruby/io-console/commit/ee648fa8bb Notes: Merged: https://github.com/ruby/ruby/pull/2440
2019-09-10[ruby/io-console] Added scroll methodsNobuyoshi Nakada
https://github.com/ruby/io-console/commit/83e70de8ab Notes: Merged: https://github.com/ruby/ruby/pull/2440
2019-09-10[ruby/io-console] Added line/screen erase methodsNobuyoshi Nakada
https://github.com/ruby/io-console/commit/e6344108a1 Notes: Merged: https://github.com/ruby/ruby/pull/2440
2019-09-10[ruby/io-console] Added IO#goto_columnNobuyoshi Nakada
https://github.com/ruby/io-console/commit/143a9d5764 Notes: Merged: https://github.com/ruby/ruby/pull/2440
2019-09-10[ruby/io-console] Added relative cursor move methodsNobuyoshi Nakada
https://github.com/ruby/io-console/commit/21d340e4a2 Notes: Merged: https://github.com/ruby/ruby/pull/2440
2019-09-10[ruby/io-console] Added IO#goto and IO#cursor= for VTNobuyoshi Nakada
https://github.com/ruby/io-console/commit/7f2b1b473d Notes: Merged: https://github.com/ruby/ruby/pull/2440