summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-06-10This document is steal status.Hiroshi SHIBATA
Now, You can see the all of contributors at https://github.com/ruby/ruby/graphs/contributors
2020-06-09Work around infinite loop when overriding method visibility in prepended ↵Jeremy Evans
module (#3201) For ZSUPER methods with no defined class for the method entry, start the next lookup at the superclass of the origin class of the method owner, instead of the superclass of the method owner. Fixes [Bug #16942] Notes: Merged-By: jeremyevans <code@jeremyevans.net>
2020-06-10Reduced job number to run tests on MinGWNobuyoshi Nakada
It seems too heavy as fails more often than before.
2020-06-09Revert "Combine sweeping and moving"Aaron Patterson
This reverts commit 02b216e5a70235f42f537e895d6f1afd05d8916a. This reverts commit 9b8825b6f94696c9659f93f5da9bf02644625f67. I found that combining sweep and move is not safe. I don't think that we can do compaction concurrently with _anything_ unless there is a read barrier installed. Here is a simple example. A class object is freed, and during it's free step, it tries to remove itself from its parent's subclass list. However, during the sweep step, the parent class was moved and the "currently being freed" class didn't have references updated yet. So we get a segv like this: ``` (lldb) bt * thread #1, name = 'ruby', stop reason = signal SIGSEGV * frame #0: 0x0000560763e344cb ruby`rb_st_lookup at st.c:320:43 frame #1: 0x0000560763e344cb ruby`rb_st_lookup(tab=0x2f7469672f6e6f72, key=3809, value=0x0000560765bf2270) at st.c:1010 frame #2: 0x0000560763e8f16a ruby`rb_search_class_path at variable.c:99:9 frame #3: 0x0000560763e8f141 ruby`rb_search_class_path at variable.c:145 frame #4: 0x0000560763e8f141 ruby`rb_search_class_path(klass=94589785585880) at variable.c:191 frame #5: 0x0000560763ec744e ruby`rb_vm_bugreport at vm_dump.c:996:17 frame #6: 0x0000560763f5b958 ruby`rb_bug_for_fatal_signal at error.c:675:5 frame #7: 0x0000560763e27dad ruby`sigsegv(sig=<unavailable>, info=<unavailable>, ctx=<unavailable>) at signal.c:955:5 frame #8: 0x00007f8b891d33c0 libpthread.so.0`___lldb_unnamed_symbol1$$libpthread.so.0 + 1 frame #9: 0x0000560763efa8bb ruby`rb_class_remove_from_super_subclasses(klass=94589790314280) at class.c:93:56 frame #10: 0x0000560763d10cb7 ruby`gc_sweep_step at gc.c:2674:2 frame #11: 0x0000560763d1187b ruby`gc_sweep at gc.c:4540:2 frame #12: 0x0000560763d101f0 ruby`gc_start at gc.c:6797:6 frame #13: 0x0000560763d15153 ruby`rb_gc_compact at gc.c:7479:12 frame #14: 0x0000560763eb4eb8 ruby`vm_exec_core at vm_insnhelper.c:5183:13 frame #15: 0x0000560763ea9bae ruby`rb_vm_exec at vm.c:1953:22 frame #16: 0x0000560763eac08d ruby`rb_yield at vm.c:1132:9 frame #17: 0x0000560763edb4f2 ruby`rb_ary_collect at array.c:3186:9 frame #18: 0x0000560763e9ee15 ruby`vm_call_cfunc_with_frame at vm_insnhelper.c:2575:12 frame #19: 0x0000560763eb2e66 ruby`vm_exec_core at vm_insnhelper.c:4177:11 frame #20: 0x0000560763ea9bae ruby`rb_vm_exec at vm.c:1953:22 frame #21: 0x0000560763eac08d ruby`rb_yield at vm.c:1132:9 frame #22: 0x0000560763edb4f2 ruby`rb_ary_collect at array.c:3186:9 frame #23: 0x0000560763e9ee15 ruby`vm_call_cfunc_with_frame at vm_insnhelper.c:2575:12 frame #24: 0x0000560763eb2e66 ruby`vm_exec_core at vm_insnhelper.c:4177:11 frame #25: 0x0000560763ea9bae ruby`rb_vm_exec at vm.c:1953:22 frame #26: 0x0000560763ceee01 ruby`rb_ec_exec_node(ec=0x0000560765afa530, n=0x0000560765b088e0) at eval.c:296:2 frame #27: 0x0000560763cf3b7b ruby`ruby_run_node(n=0x0000560765b088e0) at eval.c:354:12 frame #28: 0x0000560763cee4a3 ruby`main(argc=<unavailable>, argv=<unavailable>) at main.c:50:9 frame #29: 0x00007f8b88e560b3 libc.so.6`__libc_start_main + 243 frame #30: 0x0000560763cee4ee ruby`_start + 46 (lldb) f 9 frame #9: 0x0000560763efa8bb ruby`rb_class_remove_from_super_subclasses(klass=94589790314280) at class.c:93:56 90 91 *RCLASS_EXT(klass)->parent_subclasses = entry->next; 92 if (entry->next) { -> 93 RCLASS_EXT(entry->next->klass)->parent_subclasses = RCLASS_EXT(klass)->parent_subclasses; 94 } 95 xfree(entry); 96 } (lldb) command script import -r misc/lldb_cruby.py lldb scripts for ruby has been installed. (lldb) rp entry->next->klass (struct RMoved) $1 = (flags = 30, destination = 94589792806680, next = 94589784369160) (lldb) ```
2020-06-09Enhanced Rdoc for Array (#3193)Burdette Lamar
Methods: #freeze #<< #push #pop #shift #unshift #slice #at #first #last Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2020-06-10* 2020-06-10 [ci skip]git
2020-06-09Freeing cc tables doesn't need access to IDAaron Patterson
We don't need to resolve symbols when freeing cc tables, so this commit just changes the id table iterator to look at values rather than keys and values.
2020-06-09the default gems couldn't use ruby2_keywords gem.Hiroshi SHIBATA
We avoid to use the current delegate library under the Ruby 2.7.
2020-06-09Use the dedicated conversion macroNobuyoshi Nakada
2020-06-09Improved assertionsNobuyoshi Nakada
2020-06-09Added ruby2_keywords for Ruby 2.6 and 2.5Hiroshi SHIBATA
2020-06-09[ruby/fcntl] add F_GETPIPE_SZ and F_SETPIPE_SZpavel
https://github.com/ruby/fcntl/commit/39e0faedc5
2020-06-09[ruby/fcntl] Use Gemfile instead of ↵Hiroshi SHIBATA
Gem::Specification#add_development_dependency.
2020-06-09[ruby/dbm] Update dbm.gemspecdsisnero
https://github.com/ruby/dbm/commit/25a6f365bb
2020-06-09[ruby/gdbm] Workaround for GitHub ActionsHiroshi SHIBATA
https://github.com/ruby/gdbm/commit/f42103fe93
2020-06-09Return seconds slept after Thread.scheduler wait_sleepnicholas a. evans
Kernel#sleep should still return seconds slept, even when using a Thread.scheduler. The return value of Scheduler#wait_sleep can be ignored. Notes: Merged: https://github.com/ruby/ruby/pull/3198
2020-06-09Removed + token from single test runner recipes [ci skip]Nobuyoshi Nakada
These test runners do not deal with `-n` make flag.
2020-06-09disable GC on a testKoichi Sasada
CI fails with GC while `foo{}`, so that disable GC for this script.
2020-06-09Added CodeQL scanning by GitHub (#3196)Hiroshi SHIBATA
Added configuration for CodeQL scanning by GitHub Notes: Merged-By: hsbt <hsbt@ruby-lang.org>
2020-06-09mjit_mark_cc_entries: should consider VM_CALLCACHE_UNMARKABLE卜部昌平
Now that vm_empty_cc is VM_CALLCACHE_UNMARKABLE, it has to be properly ruled out from being GCed.
2020-06-09.github: add test for -DMJIT_FORCE_ENABLE卜部昌平
Notes: Merged: https://github.com/ruby/ruby/pull/3197
2020-06-09[ruby/singleton] Remove unnecessaray spacetaki
https://github.com/ruby/singleton/commit/b7c583f5cd
2020-06-09rb_eql_opt,rb_equal_opt: purge stale cc卜部昌平
When on USE_EMBED_CI, cd is stored statically. Previous use could cache stale cd->cc, which could have already been GCed. Need flush them. Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09vm_ccs_push: do not cache non-heap entries卜部昌平
Entires not GC-able must be considered to be volatile. Not eligible for later use. Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09VM_CI_NEW_ID: USE_EMBED_CI could be false卜部昌平
It was a wrong idea to assume CIs are always embedded. Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09eliminate C99 compound literals卜部昌平
Ko1 prefers variables be assgined, instead of bare literals in function arguments. Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09vm_empty_cc: fix MSVC compile error卜部昌平
Seems they do not allow compound literals for static variables. See https://github.com/ruby/ruby/runs/733735274 Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09vm_call_method: use struct assignment卜部昌平
This further reduces the generated binary of vm_call_method from 566 bytes to 545 bytes on my machine, according to nm(1). Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09vm_empty_cc: refactor use macro卜部昌平
Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09rb_vm_call0: on-stack call info卜部昌平
This changeset reduces the generated binary of rb_vm_call0 from 281 bytes to 211 bytes on my machine. Should reduce GC pressure as well. Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09vm_yield_setup_args: refactor use macro卜部昌平
Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09vm_call_method: no call vm_cc_fill卜部昌平
This changeset reduces the generated binary of vm_call_method from 600 bytes to 566 bytes on my machine, accroding to nm(1). Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09vm_call_refined: no call vm_cc_fill卜部昌平
This changeset reduces the generated binary of vm_call_method_each_type from 2,442 bytes to 2,378 bytes on my machine, accroding to nm(1). Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09vm_call_zsuper: no call vm_cc_fill卜部昌平
This changeset reduces the generated binary of vm_call_method_each_type from 2,522 bytes to 2,442 bytes on my machine, accroding to nm(1). Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09vm_call_method_missing_body: on-stack call info卜部昌平
This changeset reduces the generated binary of vm_call_method_missing_body from 604 bytes to 532 bytes on my machine. Should reduce GC pressure as well. Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09vm_call_symbol: on-stack call info卜部昌平
This changeset reduces the generated binary of vm_call_symbol from 808 bytes to 798 bytes on my machine. Should reduce GC pressure as well. Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09vm_call_alias: no call vm_cc_fill卜部昌平
This changeset reduces the generated binary of vm_call_alias from 188 bytes to 149 bytes on my machine, accroding to nm(1). Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09rb_eql_opt: fully static call data卜部昌平
This changeset reduces the generated binary of rb_eql_opt from 86 bytes to 20 bytes on my machine, according to nm(1). Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09rb_vm_search_method_slowpath: skip vm_empty_cc卜部昌平
Now that vm_empty_cc is statically allocated outside of the object space. It shall not be GCed. Here, because vm_search_cc can return that. Must not be blindly passed to RB_OBJ_WRITE, unless assertions fail on RGENGC_CHECK_MODE, like this: -- C level backtrace information ------------------------------------------- ruby(rb_print_backtrace+0x19) [0x5555557fd579] vm_dump.c:757 ruby(rb_vm_bugreport+0x151) [0x5555557fd6f1] vm_dump.c:955 ruby(rb_bug+0x1d6) [0x5555558d6396] error.c:660 ruby(check_rvalue_consistency_force+0x707) [0x5555555adb97] gc.c:1289 ruby(check_rvalue_consistency+0x1a) [0x555555598a0a] gc.c:1305 ruby(RVALUE_OLD_P+0x15) [0x5555555975d5] gc.c:1382 ruby(rb_gc_writebarrier+0x9f) [0x55555559753f] gc.c:6882 ruby(rb_obj_written+0x3a) [0x5555557a025a] include/ruby/internal/rgengc.h:180 ruby(rb_obj_write+0x41) [0x5555557a1a81] include/ruby/internal/rgengc.h:195 ruby(rb_vm_search_method_slowpath+0x5a) [0x5555557a125a] vm_insnhelper.c:1603 ruby(vm_search_method_fastpath+0x197) [0x5555557d8027] vm_insnhelper.c:1638 ruby(vm_search_method+0xea) [0x5555557d7d2a] vm_insnhelper.c:1650 ruby(vm_search_method_wrap+0x29) [0x5555557dbaf9] vm_insnhelper.c:4091 ruby(vm_sendish+0xa9) [0x5555557dba39] vm_insnhelper.c:4143 ruby(vm_exec_core+0xe357) [0x5555557b0757] insns.def:801 ruby(rb_vm_exec+0x12c) [0x5555557d17cc] vm.c:1942 ruby(invoke_block+0xea) [0x5555557f42fa] vm.c:1058 ruby(invoke_iseq_block_from_c+0x16e) [0x5555557f3eae] vm.c:1130 ruby(invoke_block_from_c_bh) vm.c:1148 ruby(vm_yield+0x71) [0x5555557f3c41] vm.c:1193 ruby(rb_yield_0+0x25) [0x5555557ca615] vm_eval.c:1141 ruby(rb_yield_1+0x27) [0x5555557ca5c7] vm_eval.c:1147 ruby(rb_yield+0x34) [0x5555557ca654] vm_eval.c:1157 ruby(rb_ary_collect+0xb0) [0x555555828320] array.c:3186 ruby(call_cfunc_0+0x29) [0x5555557f0f39] vm_insnhelper.c:2385 ruby(vm_call_cfunc_with_frame+0x278) [0x5555557eca98] vm_insnhelper.c:2553 ruby(vm_sendish+0xd0) [0x5555557dba60] vm_insnhelper.c:4146 ruby(vm_exec_core+0xe0f8) [0x5555557b04f8] insns.def:782 ruby(rb_vm_exec+0x12c) [0x5555557d17cc] vm.c:1942 ruby(invoke_block+0xea) [0x5555557f42fa] vm.c:1058 ruby(invoke_iseq_block_from_c+0x16e) [0x5555557f3eae] vm.c:1130 ruby(invoke_block_from_c_bh) vm.c:1148 ruby(vm_yield+0x71) [0x5555557f3c41] vm.c:1193 ruby(rb_yield_0+0x25) [0x5555557ca615] vm_eval.c:1141 ruby(rb_yield_1+0x27) [0x5555557ca5c7] vm_eval.c:1147 ruby(rb_yield+0x34) [0x5555557ca654] vm_eval.c:1157 ruby(rb_ary_each+0xa5) [0x55555581c795] array.c:2242 ruby(call_cfunc_0+0x29) [0x5555557f0f39] vm_insnhelper.c:2385 ruby(vm_call_cfunc_with_frame+0x278) [0x5555557eca98] vm_insnhelper.c:2553 ruby(vm_sendish+0xd0) [0x5555557dba60] vm_insnhelper.c:4146 ruby(vm_exec_core+0xe0f8) [0x5555557b04f8] insns.def:782 ruby(rb_vm_exec+0x12c) [0x5555557d17cc] vm.c:1942 ruby(invoke_block+0xea) [0x5555557f42fa] vm.c:1058 ruby(invoke_iseq_block_from_c+0x16e) [0x5555557f3eae] vm.c:1130 ruby(invoke_block_from_c_bh) vm.c:1148 ruby(vm_yield+0x71) [0x5555557f3c41] vm.c:1193 ruby(rb_yield_0+0x25) [0x5555557ca615] vm_eval.c:1141 ruby(rb_yield_1+0x27) [0x5555557ca5c7] vm_eval.c:1147 ruby(rb_yield+0x34) [0x5555557ca654] vm_eval.c:1157 ruby(rb_ary_each+0xa5) [0x55555581c795] array.c:2242 ruby(call_cfunc_0+0x29) [0x5555557f0f39] vm_insnhelper.c:2385 ruby(vm_call_cfunc_with_frame+0x278) [0x5555557eca98] vm_insnhelper.c:2553 ruby(vm_sendish+0xd0) [0x5555557dba60] vm_insnhelper.c:4146 ruby(vm_exec_core+0xe0f8) [0x5555557b04f8] insns.def:782 ruby(rb_vm_exec+0x19f) [0x5555557d183f] vm.c:1951 ruby(rb_iseq_eval+0x30) [0x5555557d2530] vm.c:2190 ruby(load_iseq_eval+0xd6) [0x5555555fa7e6] load.c:592 ruby(require_internal+0x25e) [0x5555555f7f5e] load.c:1022 ruby(rb_require_string+0x27) [0x5555555f74e7] load.c:1094 ruby(rb_f_require_relative+0x5f) [0x5555555f758f] load.c:837 ruby(call_cfunc_1+0x30) [0x5555557f0f70] vm_insnhelper.c:2391 ruby(vm_call_cfunc_with_frame+0x278) [0x5555557eca98] vm_insnhelper.c:2553 ruby(vm_call_cfunc+0xad) [0x5555557e521d] vm_insnhelper.c:2574 ruby(vm_call_method_each_type+0xc7) [0x5555557e4af7] vm_insnhelper.c:3040 ruby(vm_call_method+0x19c) [0x5555557e45dc] vm_insnhelper.c:3144 ruby(vm_call_general+0x2d) [0x5555557c8c3d] vm_insnhelper.c:3176 ruby(vm_sendish+0xd0) [0x5555557dba60] vm_insnhelper.c:4146 ruby(vm_exec_core+0xe357) [0x5555557b0757] insns.def:801 ruby(rb_vm_exec+0x12c) [0x5555557d17cc] vm.c:1942 ruby(rb_iseq_eval_main+0x30) [0x5555557d2670] vm.c:2201 ruby(rb_ec_exec_node+0x16b) [0x55555557e39b] eval.c:296 ruby(ruby_run_node+0x72) [0x55555557e1f2] eval.c:354 ruby(main+0x78) [0x55555557a5d8] main.c:50 Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09rb_equal_opt: fully static call data卜部昌平
This changeset reduces the generated binary of rb_equal_opt from 129 bytes to 17 bytes on my machine, according to nm(1). Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09vm_ci_markable: added卜部昌平
CIs are created on-the-fly, which increases GC pressure. However they include no references to other objects, and those on-the-fly CIs tend to be short lived. Why not skip allocation of them. In doing so we need to add a flag denotes the CI object does not reside inside of objspace. Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09vm_search_method_fastpath: avoid rb_vm_empty_cc()卜部昌平
This is such a hot path that it's worth eliminating a function call. Use the static variable directly instead. Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-09check_cfunc: add assertions卜部昌平
For debug. Must not change generated binary unless VM_ASSERT is on. Notes: Merged: https://github.com/ruby/ruby/pull/3179
2020-06-08fix debugging outputAaron Patterson
2020-06-08Fix crashes in the peephole optimizer on OpenBSD/sparc64Jeremy Evans
These crashes are due to alignment issues, casting ADJUST to INSN and then accessing after the end of the ADJUST. These patches come from Stefan Sperling <stsp@apache.org>, who reported the issue. Notes: Merged: https://github.com/ruby/ruby/pull/2961
2020-06-09* 2020-06-09 [ci skip]git
2020-06-09Avoid requiring "psych/versions"Yusuke Endoh
This leads to double requiring "ext/psych/lib/psych/versions.rb" and ".ext/common/psych/versions.rb", which produces doxens of warnings during `make test-all`. http://rubyci.s3.amazonaws.com/ubuntu2004/ruby-master/log/20200608T123004Z.log.html.gz ``` [15092/20234] TestRDocOptions#test_init_with_encoding/home/chkbuild/chkbuild/tmp/build/20200608T123004Z/ruby/ext/psych/lib/psych.rb:233: warning: already initialized constant Psych::LIBYAML_VERSION /home/chkbuild/chkbuild/tmp/build/20200608T123004Z/ruby/.ext/common/psych.rb:233: warning: previous definition of LIBYAML_VERSION was here /home/chkbuild/chkbuild/tmp/build/20200608T123004Z/ruby/ext/psych/lib/psych.rb:235: warning: already initialized constant Psych::NOT_GIVEN /home/chkbuild/chkbuild/tmp/build/20200608T123004Z/ruby/.ext/common/psych.rb:235: warning: previous definition of NOT_GIVEN was here /home/chkbuild/chkbuild/tmp/build/20200608T123004Z/ruby/ext/psych/lib/psych.rb:271: warning: method redefined; discarding old load /home/chkbuild/chkbuild/tmp/build/20200608T123004Z/ruby/.ext/common/psych.rb:271: warning: previous definition of load was here ... ``` The same issue happened in fiddle.gemspec, and this change applies the same fix as [fiddle](https://github.com/ruby/fiddle/issues/34).
2020-06-08Fixed main dependencyNobuyoshi Nakada
`programs` has depended on the "fake" script, which is used by `test-spec` and etc.
2020-06-08Fixed test dependenciesNobuyoshi Nakada
All tests of `test-all` or more require not only the `main` but also extension libraries.
2020-06-08Updated the benchmark-driver versionNobuyoshi Nakada