summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-09-18* 2019-09-18 [ci skip]git
2019-09-17Fix keyword argument separation issues with sym procs when using refinementsJeremy Evans
Make sure that vm_yield_with_cfunc can correctly set the empty keyword flag by passing 2 as the kw_splat value when calling it in vm_invoke_ifunc_block. Make sure calling.kw_splat is set to 1 and not 128 in vm_sendish, so we can safely check for different kw_splat values. vm_args.c needs to call add_empty_keyword, and to make JIT happy, the function needs to be exported. Rename the function to rb_adjust_argv_kw_splat to more accurately reflect what it does, and mark it as MJIT exported. Notes: Merged: https://github.com/ruby/ruby/pull/2462
2019-09-17Pass keyword argument flag when rb_call_super_kw calls method_missingJeremy Evans
This makes method_missing take a flag for whether keyword arguments were passed. Adds tests both for rb_call_super_kw usage as well as general usage of super calling method_missing in Ruby methods. Notes: Merged: https://github.com/ruby/ruby/pull/2462
2019-09-17`brew install` may fail, so try to use `tool/travis_retry.sh`Kazuhiro NISHIYAMA
https://github.com/ruby/ruby/runs/224877570#step:3:1008 ``` Error: No such file or directory @ dir_s_rmdir - /Users/runner/Library/Caches/Homebrew/downloads/ca756e367eb98d2b525e72b311633c27ffc74eca825a5392153b3488d1adb732--libssh2-1.9.0.mojave.bottle.tar.gz ``` Notes: Merged: https://github.com/ruby/ruby/pull/2464
2019-09-17Undefine DSUSP keyNobuyoshi Nakada
Enable `Ctrl+Y`, which is bound with it by default on BSD-like systems, for editing.
2019-09-17* 2019-09-17 [ci skip]git
2019-09-17Fix previous history in vi_insert modeAdam Cammack
2019-09-17Fix history navigation in vi_insert modeAdam Cammack
2019-09-16Folded files in gemspecNobuyoshi Nakada
2019-09-16* 2019-09-16 [ci skip]git
2019-09-16Fix a typo [ci skip]Kazuhiro NISHIYAMA
2019-09-15oops [ci skip]卜部昌平
Fixing typo. It seems I failed to press the shift key.
2019-09-15Comment lines can be placed between fluent dot nowNobuyoshi Nakada
2019-09-15Refine Timezone fixtureNobuyoshi Nakada
2019-09-15Try to fetch commits notes to the source tree automaticallyNobuyoshi Nakada
[Bug #16167]
2019-09-15rb_scan_args_count_lead: use arguments instead of magic numbersNobuyoshi Nakada
2019-09-15make-snapshot: no merge commits in ChangeLogNobuyoshi Nakada
Parents commit hashs in logs of merge commits are abbreviated to necessary length depending on the repositories. Exclude merge commits from ChangeLog to make it stable.
2019-09-15make-snapshot: export ChangeLog from srcdirNobuyoshi Nakada
2019-09-14Issue a warning if invalid kw_splat is passed to *_kw functionJeremy Evans
This should only happen if the API is misused. It's much better to warn here and fix the problem, versus to try to debug TypeErrors or segfaults later.
2019-09-15* 2019-09-15 [ci skip]git
2019-09-15make-snapshot: deprecated -exported option [Bug #16167]Nobuyoshi Nakada
2019-09-14Continue to export even if no notes/commitsNobuyoshi Nakada
Just exporting may not imply exporting ChangeLog which needs notes/commits. [Bug #16167]
2019-09-14[ruby/io-console] Added `intr:` option to IO#rawNobuyoshi Nakada
Enters raw-mode but enable interrupts. https://github.com/ruby/io-console/commit/7cba76561a Notes: Merged: https://github.com/ruby/ruby/pull/2459
2019-09-14Keep the reference of imemo while argv may be usedTakashi Kokubun
To prevent the `v` reference from being eliminated before argv is used, calling `rb_free_tmp_buffer` against `v` explicitly.
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.