summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-08-17Also escape DEL codeNobuyoshi Nakada
2020-08-17Fixed the radix for control charsNobuyoshi Nakada
2020-08-18Expose ec -> backtrace (internal) and use it to implement fiber backtrace.Samuel Williams
See <https://bugs.ruby-lang.org/issues/16815> for more details. Notes: Merged: https://github.com/ruby/ruby/pull/3422
2020-08-17Clarify coroutine implementation license.Samuel Williams
<https://bugs.ruby-lang.org/issues/16805> Notes: Merged: https://github.com/ruby/ruby/pull/3137
2020-08-17procnames-start-lines [ci skip]Nobuyoshi Nakada
2020-08-17Revisit "Refactor to reduce "swap" instruction of pattern matching"Nobuyoshi Nakada
Just moved "case base" after allocating cache space.
2020-08-17* 2020-08-17 [ci skip]git
2020-08-17Revert "Refactor to reduce "swap" instruction of pattern matching"Kazuhiro NISHIYAMA
This reverts commit 3a4be429b50062122d1616256de38649464d3146. To fix following warning: ``` compiling ../compile.c ../compile.c:6336:20: warning: variable 'line' is uninitialized when used here [-Wuninitialized] ADD_INSN(head, line, putnil); /* allocate stack for cached #deconstruct value */ ^~~~ ../compile.c:220:57: note: expanded from macro 'ADD_INSN' ADD_ELEM((seq), (LINK_ELEMENT *) new_insn_body(iseq, (line), BIN(insn), 0)) ^~~~ ../compile.c:6327:13: note: initialize the variable 'line' to silence this warning int line; ^ = 0 1 warning generated. ```
2020-08-16Remove the deprecated override of Kernel#open in open-uriJeremy Evans
This was deprecated in 2.7 to resolve [Misc #15893]. Notes: Merged: https://github.com/ruby/ruby/pull/3377
2020-08-16Refactor to reduce "swap" instruction of pattern matchingwanabe
2020-08-16Adjust sp for `case ... in a: 0 ... end`wanabe
Notes: Merged: https://github.com/ruby/ruby/pull/3403
2020-08-16Adjust sp for `case ... in *, a, * end`wanabe
Notes: Merged: https://github.com/ruby/ruby/pull/3403
2020-08-16Adjust sp for `case ... in *v end`/`case ... in v1, v2 end`wanabe
Notes: Merged: https://github.com/ruby/ruby/pull/3403
2020-08-16Adjust sp for `case ... in v1 ... in v2 end`wanabe
Notes: Merged: https://github.com/ruby/ruby/pull/3403
2020-08-16Adjust sp for `case ... in v1, v2 ... end`wanabe
Notes: Merged: https://github.com/ruby/ruby/pull/3403
2020-08-16Adjust sp for `case ... in pat => var ... end`wanabe
Notes: Merged: https://github.com/ruby/ruby/pull/3403
2020-08-16Adjust sp for `case ... in pat1 | pat2 ... end`wanabe
Notes: Merged: https://github.com/ruby/ruby/pull/3403
2020-08-16Adjust sp for pattern matching implicit/explicit "else"wanabe
Notes: Merged: https://github.com/ruby/ruby/pull/3403
2020-08-16* 2020-08-16 [ci skip]git
2020-08-16Warn sp overwriting on compile timewanabe
Notes: Merged: https://github.com/ruby/ruby/pull/3401
2020-08-16Show hidden object and TS_BUILTIN for halfbaked insn datawanabe
Notes: Merged: https://github.com/ruby/ruby/pull/3401
2020-08-15[DOC] fixed a missing markupNobuyoshi Nakada
2020-08-15tool/update-deps --fix卜部昌平
Notes: Merged: https://github.com/ruby/ruby/pull/3419
2020-08-15RARRAY_AREF: convert into an inline function卜部昌平
RARRAY_AREF has been a macro for reasons. We might not be able to change that for public APIs, but why not relax the situation internally to make it an inline function. Notes: Merged: https://github.com/ruby/ruby/pull/3419
2020-08-15* 2020-08-15 [ci skip]git
2020-08-14Fix links to Dig Methods document (#3421)Burdette Lamar
* Fix links to Dig Methods document * Fix links to Dig Methods document Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-08-14[DOC] fixed the method nameNobuyoshi Nakada
2020-08-14RSTRING_LEN was not usedNobuyoshi Nakada
2020-08-14re.c: prevent "warning: variable 'n' set but not used"Yusuke Endoh
by adding MAYBE_UNUSED.
2020-08-13Adding doc/dig_methods.rdoc and links to it (#3416)Burdette Lamar
Adds a full discussion of #dig, along with links from Array, Hash, Struct, and OpenStruct. CSV::Table and CSV::Row are over in ruby/csv. I'll get to them soon. The art to the thing is to figure out how much (or how little) to say at each #dig. Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-08-14* 2020-08-14 [ci skip]git
2020-08-14Enable arm64 optimizations that exist for power/x86 (#3393)AGSaidi
* Enable unaligned accesses on arm64 64-bit Arm platforms support unaligned accesses. Running the string benchmarks this change improves performance by an average of 1.04x, min .96x, max 1.21x, median 1.01x * arm64 enable gc optimizations Similar to x86 and powerpc optimizations. | |compare-ruby|built-ruby| |:------|-----------:|---------:| |hash1 | 0.225| 0.237| | | -| 1.05x| |hash2 | 0.110| 0.110| | | 1.00x| -| * vm_exec.c: improve performance for arm64 | |compare-ruby|built-ruby| |:------------------------------|-----------:|---------:| |vm_array | 26.501M| 27.959M| | | -| 1.06x| |vm_attr_ivar | 21.606M| 31.429M| | | -| 1.45x| |vm_attr_ivar_set | 21.178M| 26.113M| | | -| 1.23x| |vm_backtrace | 6.621| 6.668| | | -| 1.01x| |vm_bigarray | 26.205M| 29.958M| | | -| 1.14x| |vm_bighash | 504.155k| 479.306k| | | 1.05x| -| |vm_block | 16.692M| 21.315M| | | -| 1.28x| |block_handler_type_iseq | 5.083| 7.004| | | -| 1.38x| Notes: Merged-By: nurse <naruse@airemix.jp>
2020-08-13Replace repeated RSTRING_PTR and RSTRING_LEN with RSTRING_GETMEMNobuyoshi Nakada
As now RSTRING_PTR and RSTRING_LEN are functions, they very bother stepping in/out during debugging.
2020-08-13rb_str_{index,rindex}_m: Handle /\K/ in patternKasumi Hanazuki
When the pattern Regexp given to String#index and String#rindex contain a /\K/ (lookbehind) operator, these methods return the position where the beginning of the lookbehind pattern matches, while they are expected to return the position where the \K matches. ``` # without patch "abcdbce".index(/b\Kc/) # => 1 "abcdbce".rindex(/b\Kc/) # => 4 ``` This patch fixes this problem by using BEG(0) instead of the return value of rb_reg_search. ``` # with patch "abcdbce".index(/b\Kc/) # => 2 "abcdbce".rindex(/b\Kc/) # => 5 ``` Fixes [Bug #17118] Notes: Merged: https://github.com/ruby/ruby/pull/3414
2020-08-13rb_str_{partition,rpartition}_m: Handle /\K/ in patternKasumi Hanazuki
When the pattern given to String#partition and String#rpartition contain a /\K/ (lookbehind) operator, the methods return strings sliced at incorrect positions. ``` # without patch "abcdbce".partition(/b\Kc/) # => ["a", "c", "cdbce"] "abcdbce".rpartition(/b\Kc/) # => ["abcd", "c", "ce"] ``` This patch fixes the problem by using BEG(0) instead of the return value of rb_reg_search. ``` # with patch "abcdbce".partition(/b\Kc/) # => ["ab", "c", "dbce"] "abcdbce".rpartition(/b\Kc/) # => ["abcdb", "c", "e"] ``` As a side-effect this patch makes String#partition 2x faster when the pattern is a costly Regexp by performing Regexp search only once, which was unexpectedly done twice in the original implementation. Fixes [Bug #17119] Notes: Merged: https://github.com/ruby/ruby/pull/3413
2020-08-13ruby_debug_log: suppress warning卜部昌平
Old gcc (< 5 maybe?) warns that this variable is not initialized: debug.c: In function 'ruby_debug_log': debug.c:441:13: warning: 'r' may be used uninitialized in this function [-Wmaybe-uninitialized] if (r && len < MAX_DEBUG_LOG_MESSAGE_LEN) { ^ I don't know if that is true, but adding "= 0" here must harm no one. Notes: Merged: https://github.com/ruby/ruby/pull/3411
2020-08-13MAYBE_UNUSED should just suffice卜部昌平
This reverts commit c355fa72d4e356378a8b03a67432b52bafcc308b. Notes: Merged: https://github.com/ruby/ruby/pull/3411
2020-08-12Revert "Improve performance of partial backtraces"Jeremy Evans
This reverts commit f2d7461e85053cb084e10999b0b8019b0c29e66e. Some CI machines are reporting issues with backtrace_mark, so I'm going to revert this for now.
2020-08-13* 2020-08-13 [ci skip]git
2020-08-12Improve performance of partial backtracesJeremy Evans
Previously, backtrace_each fully populated the rb_backtrace_t with all backtrace frames, even if caller only requested a partial backtrace (e.g. Kernel#caller_locations(1, 1)). This changes backtrace_each to only add the requested frames to the rb_backtrace_t. To do this, backtrace_each needs to be passed the starting frame and number of frames values passed to Kernel#caller or #caller_locations. backtrace_each works from the top of the stack to the bottom, where the bottom is the current frame. Due to how the location for cfuncs is tracked using the location of the previous iseq, we need to store an extra frame for the previous iseq if we are limiting the backtrace and final backtrace frame (the first one stored) would be a cfunc and not an iseq. To limit the amount of work in this case, while scanning until the start of the requested backtrace, for each iseq, store the cfp. If the first backtrace frame we care about is a cfunc, use the stored cfp to find the related iseq. Use a function pointer to handle the storage of the cfp in the iteration arg, and also store the location of the extra frame in the iteration arg. backtrace_each needs to return int instead of void in order to signal when a starting frame larger than backtrace size is given, as caller and caller_locations needs to return nil and not the empty array in these cases. To handle cases where a range is provided with a negative end, and the backtrace size is needed to calculate the result to pass to rb_range_beg_len, add a backtrace_size static function to calculate the size, which copies the logic from backtrace_each. As backtrace_each only adds the backtrace lines requested, backtrace_to_*_ary can be simplified to always operate on the entire backtrace. Previously, caller_locations(1,1) was about 6.2 times slower for an 800 deep callstack compared to an empty callstack. With this new approach, it is only 1.3 times slower. It will always be somewhat slower as it still needs to scan the cfps from the top of the stack until it finds the first requested backtrace frame. Fixes [Bug #17031] Notes: Merged: https://github.com/ruby/ruby/pull/3357
2020-08-12Fix corruption in ARGF.inplacePeter Zhu
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> Notes: Merged: https://github.com/ruby/ruby/pull/3409 Merged-By: nobu <nobu@ruby-lang.org>
2020-08-12string.c(rb_str_split_m): Handle /\K/ correctlyKasumi Hanazuki
Use BEG(0) instead of the result of rb_reg_search to handle the cases when the separator Regexp contains /\K/ (lookbehind) operator. Fixes [Bug #17113] Notes: Merged: https://github.com/ruby/ruby/pull/3407
2020-08-12* 2020-08-12 [ci skip]git
2020-08-11Test out fix for OpenSSL test flakinessAlan Wu
`OpenSSL::TestX509Store#test_verify` has been failing intermittently on CI about once a day: - http://ci.rvm.jp/results/trunk-random2@phosphorus-docker/3121244 - http://ci.rvm.jp/results/trunk-random1@phosphorus-docker/3117661 - http://ci.rvm.jp/results/trunk-random1@phosphorus-docker/3111684 According to the test: > OpenSSL uses time(2) while Time.now uses clock_gettime(CLOCK_REALTIME), > and there may be difference. This difference is could be the cause for the flaky failures. Let's see if giving the certificate more room solves the problem. In any case, I will revert this in a week. I think changes to these should go to https://github.com/ruby/openssl/? Notes: Merged: https://github.com/ruby/ruby/pull/3406
2020-08-11Enable s390x invokebuiltin JIT test againTakashi Kokubun
2020-08-11Use colorize.rb for non-capable terminalsNobuyoshi Nakada
2020-08-11Add default color for each instanceNobuyoshi Nakada
2020-08-11template/prelude.c.tmpl: suppress clang-12 warning卜部昌平
Clang 12 warns "suspicious concatenation of string literals in an array initialization", which is rather annoying than useful in this context. Notes: Merged: https://github.com/ruby/ruby/pull/3405
2020-08-11.github/workflows/compilers.yml: clang-12卜部昌平
LLVM made release/11.x branch. Its master is now version 12. Notes: Merged: https://github.com/ruby/ruby/pull/3405
2020-08-11tool/prelude.c.tmpl: use RubyVM::CEscape卜部昌平
Do not repeat yourself. Notes: Merged: https://github.com/ruby/ruby/pull/3405