summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Assert possible hash functions in RHASH_ST_TABLE (#7107)Takashi Kokubun2023-01-111-0/+4
| | | | | | | | | | Because of the function pointer, it's hard to figure out what hash functions could be used in Hash objects when st_lookup is used. Having this assertion makes it easier to understand what hash_stlike_lookup could possibly do. (AR uses only rb_any_hash) For example, this clarifies that hash_stlike_lookup never calls a #hash method when a key is T_STRING or T_SYMBOL.
* [ruby/mutex_m] Avoid anonymous evalJean Boussier2023-01-122-7/+26
| | | | | | It makes it hard to locate code when profiling etc. https://github.com/ruby/mutex_m/commit/8760ab19ec
* [ruby/mutex_m] Drop to support Ruby 2.4Hiroshi SHIBATA2023-01-121-0/+1
| | | | https://github.com/ruby/mutex_m/commit/9245b9a63a
* Suppressing installation messages with test-bundlerHiroshi SHIBATA2023-01-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | Ignoring the following messages: ``` (snip) -e 'load "spec/bundler/support/bundle.rb"' -- install --gemfile=tool/bundler/dev_gems.rb Using rake 13.0.6 Using bundler 2.5.0.dev Using diff-lcs 1.5.0 Using parallel 1.22.1 Using parallel_tests 2.32.0 Using power_assert 2.0.2 Using rb_sys 0.9.52 Using rspec-support 3.12.0 Using rspec-core 3.12.0 Using rspec-expectations 3.12.0 Using rspec-mocks 3.12.1 Using test-unit 3.5.5 Using uri 0.12.0 Using webrick 1.7.0 Bundle complete! 11 Gemfile dependencies, 14 gems now installed. Gems in the groups 'lint' and 'doc' were not installed. Use `bundle info [gemname]` to see where a bundled gem is installed. ```
* enhance build matrix卜部昌平2023-01-122-0/+2
|
* Strip trailing spaces [ci skip]Nobuyoshi Nakada2023-01-123-4/+4
|
* [ruby/reline] Pass unmodifined lines(that does not include escapetomoya ishida2023-01-123-4/+33
| | | | | | | | | sequence) to check_multiline_prompt (https://github.com/ruby/reline/pull/458) * pass unmodified lines to check_multiline_prompt * Add test to check that output modified by output_modifier_proc is not passed to prompt_proc
* Generate parser-text.rb with bcdc058e50674aedb180eea91e0fdb15bcf529dbHiroshi SHIBATA2023-01-121-4/+4
|
* [ruby/racc] Get rid of anonymous eval callsJean Boussier2023-01-123-8/+8
| | | | | | | Things declared in anonymous eval are always annoying to locate. (profilers, etc) https://github.com/ruby/racc/commit/f304205256
* [ruby/racc] Make racc Ractor compatibleMasataka Pocke Kuwabara2023-01-1221-13/+55
| | | | https://github.com/ruby/racc/commit/1948de9d1d
* [ruby/irb] Formatting to header stylesHiroshi SHIBATA2023-01-1133-133/+10
| | | | https://github.com/ruby/irb/commit/cef125850d
* [ruby/irb] After Ruby 2.0, coding is always utf-8Hiroshi SHIBATA2023-01-111-1/+0
| | | | https://github.com/ruby/irb/commit/7a94bc4135
* [ruby/irb] Removed Release Version and Revisions for old VCS softwareHiroshi SHIBATA2023-01-1135-71/+0
| | | | https://github.com/ruby/irb/commit/07fae94862
* [ruby/irb] Drop unused arguments in `RubyLex`Stan Lo2023-01-112-12/+7
| | | | | | | | | | | | | (https://github.com/ruby/irb/pull/504) * Simplify `RubyLex#set_prompt` It's optional argument is never used by any caller. * Remove the optional `p` argument from `RubyLex#set_input` The argument is only used in a test case, which can be easily replaced by a block argument.
* YJIT: Add a few asm comments (#7105)Takashi Kokubun2023-01-112-2/+8
| | | | | | | * YJIT: Add a few asm comments * YJIT: Clarify exiting insns * YJIT: Fix cargo test
* Remove unnecessary set of INVALID_SHAPE_ID in rb_callcacheJemma Issroff2023-01-111-1/+0
| | | | We don't use this value, so there's no need to set it.
* Move classpath to rb_classext_tPeter Zhu2023-01-114-38/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit moves the classpath (and tmp_classpath) from instance variables to the rb_classext_t. This improves performance as we no longer need to set an instance variable when assigning a classpath to a class. I benchmarked with the following script: ```ruby name = :MyClass puts(Benchmark.measure do 10_000_000.times do |i| Object.const_set(name, Class.new) Object.send(:remove_const, name) end end) ``` Before this patch: ``` 5.440119 0.025264 5.465383 ( 5.467105) ``` After this patch: ``` 4.889646 0.028325 4.917971 ( 4.942678) ```
* Make variation_count an unsigned charPeter Zhu2023-01-111-2/+7
| | | | | Since SHAPE_MAX_VARIATIONS is 8, it can easily fit inside an unsigned char.
* [DOC] Mention the conditional regexpNobuyoshi Nakada2023-01-111-0/+9
|
* Remove check for RCLASS_EXT in variable.cPeter Zhu2023-01-111-1/+0
| | | | | A class/module should always have a RCLASS_EXT, so we shouldn't need to check that it exists.
* Skip rbs Encoding#replicate testBenoit Daloze2023-01-111-0/+1
|
* Remove Encoding#replicateBenoit Daloze2023-01-118-113/+203
|
* [ruby/reline] Reset IOGate in test_resetPhillip Hellewell2023-01-113-2/+2
| | | | https://github.com/ruby/reline/commit/331c1094ef
* [ruby/reline] Change IOGate back to GeneralIOPhillip Hellewell2023-01-112-0/+2
| | | | | | Staying with ANSI can cause side effects with other tests. https://github.com/ruby/reline/commit/ba36067802
* Suppressing pending messages with RSpecHiroshi SHIBATA2023-01-112-6/+12
|
* [ruby/psych] Get rid of anonymous eval callsJean Boussier2023-01-114-7/+7
| | | | | | Things declared in anonymous eval are always annoying to locate. https://github.com/ruby/psych/commit/38871ad4e5
* [ruby/set] Avoid the `block or return` pattern to save Proc allocationsJean Boussier2023-01-111-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using the block param in a boolean context like this cause it to be allocated. Using it with an `if` or `unless` was optimized in 3.2 (https://github.com/ruby/ruby/pull/6286) but using it with `or` or `and` wasn't. ```ruby def foo(&block) block or return 1 end puts RubyVM::InstructionSequence.of(method(:foo)).disasm == disasm: #<ISeq:foo@(irb):11 (11,0)-(13,3)> (catch: false) local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: 0, kw: -1@-1, kwrest: -1]) [ 1] block@0<Block> 0000 getblockparam block@0, 0 ( 12)[LiCa] 0003 dup 0004 branchif 10 0006 pop 0007 putobject_INT2FIX_1_ 0008 leave [Re] 0009 putnil 0010 leave ``` versus ``` def foo(&block) return 1 if block end puts RubyVM::InstructionSequence.of(method(:foo)).disasm == disasm: #<ISeq:foo@(irb):15 (15,0)-(17,3)> (catch: false) local table (size: 1, argc: 0 [opts: 0, rest: -1, post: 0, block: 0, kw: -1@-1, kwrest: -1]) [ 1] block@0<Block> 0000 getblockparamproxy block@0, 0 ( 16)[LiCa] 0003 branchunless 7 0005 putobject_INT2FIX_1_ 0006 leave ( 17)[Re] 0007 putnil ( 16) 0008 leave ``` https://github.com/ruby/set/commit/e89da977d4
* Skip unfixed assertion about objspace/dump_allKoichi Sasada2023-01-111-2/+6
| | | | | | | | | | | | | | | | | ``` {"address":"0x7f8c03e9fcf0", "type":"STRING", "shape_id":10, "slot_size":40, "class":"0x7f8c00dbed98", "frozen":true, "embedded":true, "fstring":true, "bytesize":5, "value":"TEST2", "encoding":"US-ASCII", "coderange":"7bit", "memsize":40, "flags":{"wb_protected":true}} {"address":"0x7f8c03e9ffc0", "type":"STRING", "shape_id":0, "slot_size":40, "class":"0x7f8c00dbed98", "embedded":true, "bytesize":5, "value":"TEST2", "encoding":"US-ASCII", "coderange":"7bit", "memsize":40, "flags":{"wb_protected":true}} {"address":"0x7f8c03e487c0", "type":"STRING", "shape_id":0, "slot_size":40, "class":"0x7f8c00dbed98", "embedded":true, "bytesize":5, "value":"TEST2", "encoding":"UTF-8", "coderange":"unknown", "file":"-", "line":4, "method":"dump_my_heap_please", "generation":1, "memsize":40, "flags":{"wb_protected":true}} 1) Failure: TestObjSpace#test_dump_all [/tmp/ruby/src/trunk-gc-asserts/test/objspace/test_objspace.rb:622]: number of strings. <2> expected but was <3>. ``` This failure only occurred on a ruby built with `DEFS=\"-DRGENGC_CHECK_MODE=2\""` and only on a specific machine (Docker container) and difficult to reproduce, so skip this failure to check other failures.
* Remove about ext/psych/yaml which is no longer bundled [ci skip]Kazuhiro NISHIYAMA2023-01-111-27/+1
|
* Differentiate T_ARRAY and array subclasses (#7091)Aaron Patterson2023-01-102-8/+22
| | | | | | | | | | | | | * Differentiate T_ARRAY and array subclasses This commit teaches the YJIT context the difference between Arrays (objects with type T_ARRAY and class rb_cArray) vs Array subclasses (objects with type T_ARRAY but _not_ class rb_cArray). It uses this information to reduce the number of guards emitted when using `jit_guard_known_klass` with rb_cArray, notably opt_aref * Update yjit/src/core.rs Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com>
* YJIT: Save PC and SP before calling leaf builtins (#7090)Alan Wu2023-01-102-0/+20
| | | | | | | | | | | | | | Previously, we did not update `cfp->sp` before calling the C function of ISEQs marked with `Primitive.attr! "inline"` (leaf builtins). This caused the GC to miss temporary values on the stack in case the function allocates and triggers a GC run. Right now, there is only a few leaf builtins in numeric.rb on Integer methods such as `Integer#~`. Since these methods only allocate when operating on big numbers, we missed this issue. Fix by saving PC and SP before calling the functions -- our usual protocol for calling C functions that may allocate on the GC heap. [Bug #19316]
* YJIT: Fix a compilation warning with release build (#7092)Takashi Kokubun2023-01-101-1/+4
| | | | | | | | | | | | | | | warning: unused variable: `start_addr` --> ../yjit/src/asm/mod.rs:359:39 | 359 | pub fn remove_comments(&mut self, start_addr: CodePtr, end_addr: CodePtr) { | ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_start_addr` | = note: `#[warn(unused_variables)]` on by default warning: unused variable: `end_addr` --> ../yjit/src/asm/mod.rs:359:60 | 359 | pub fn remove_comments(&mut self, start_addr: CodePtr, end_addr: CodePtr) { |
* Just ignore empty lines in bundled_gems file [ci skip]Nobuyoshi Nakada2023-01-101-0/+1
|
* Remove ARY_SET_SHAREDPeter Zhu2023-01-101-15/+7
| | | | We don't need ARY_SET_SHARED since we already have rb_ary_set_shared.
* [ruby/reline] Add key binding for DeletePhillip Hellewell2023-01-104-5/+170
| | | | https://github.com/ruby/reline/commit/603eacee22
* Remove extra line which causes `make test-bundled-gems-fetch` to failBenoit Daloze2023-01-101-1/+0
|
* [DOC] Comments about fields in bundled_gems fileNobuyoshi Nakada2023-01-101-1/+8
|
* Merge RubyGems and Bundler masterHiroshi SHIBATA2023-01-1064-361/+529
| | | | from https://github.com/rubygems/rubygems/commit/0635c1423db5d7c461d53bf0c3329bca75de7609
* Update LEGAL sections for pub_grubHiroshi SHIBATA2023-01-101-1/+9
|
* Removed vendored LICENSE file.Hiroshi SHIBATA2023-01-101-21/+0
|
* Fixed a typoHiroshi SHIBATA2023-01-101-1/+1
|
* [rubygems/rubygems] Fix resolver edge caseDavid Rodríguez2023-01-102-1/+28
| | | | | | | Let it deal with legacy gems with equivalent version and different dependencies. https://github.com/rubygems/rubygems/commit/b430babe97
* [rubygems/rubygems] Bump rb-sysdependabot[bot]2023-01-102-5/+5
| | | | | | | | | | | | | | | Bumps [rb-sys](https://github.com/oxidize-rb/rb-sys) from 0.9.53 to 0.9.54. - [Release notes](https://github.com/oxidize-rb/rb-sys/releases) - [Commits](https://github.com/oxidize-rb/rb-sys/compare/v0.9.53...v0.9.54) --- updated-dependencies: - dependency-name: rb-sys dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
* Revert "Re-enable test_ractor for YJIT"Takashi Kokubun2023-01-091-3/+5
| | | | | | | This reverts commit 650a20a3e1205f47224a987676cdbad7d826d597. Now that 3.2.0 is released, let's disable flaky tests. Koichi said he'll rework Ractor implementation for this, and it has not been done yet.
* Allow overriding a gdb command on `make gdb`Takashi Kokubun2023-01-091-1/+2
| | | | | | | | | | With --enable-yjit, you see an annoying warning like this: warning: Missing auto-load script at offset 0 in section .debug_gdb_scripts of file /home/k0kubun/src/github.com/ruby/ruby/.ruby/miniruby. Use `info auto-load python-scripts [REGEXP]' to list them. Using `rust-gdb` instead fixes it. I use this like `make gdb GDB=rust-gdb`.
* Fix off-by-one error in rb_vm_each_stack_valuePeter Zhu2023-01-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Applying the following patch to test/erb/test_erb.rb and running that file will cause Ruby to crash on my machine (macOS 13.1 on M1 Pro): ``` --- a/test/erb/test_erb.rb +++ b/test/erb/test_erb.rb @@ -7,6 +7,12 @@ class TestERB < Test::Unit::TestCase class MyError < RuntimeError ; end + def setup + GC.auto_compact = true + GC.stress = true + GC.verify_compaction_references(expand_heap: true, toward: :empty) + end + ``` It crashes with the following log: ``` /Users/peter/src/ruby/lib/erb/compiler.rb:276: [BUG] Segmentation fault at 0x00000001083a8690 ... -- C level backtrace information ------------------------------------------- ... /Users/peter/src/ruby/build/ruby(rb_vm_each_stack_value+0xa8) [0x104cc3a44] ../vm.c:2737 /Users/peter/src/ruby/build/ruby(rb_vm_each_stack_value+0xa8) [0x104cc3a44] ../vm.c:2737 /Users/peter/src/ruby/build/ruby(check_stack_for_moved+0x2c) [0x104b272a4] ../gc.c:5512 /Users/peter/src/ruby/build/ruby(gc_compact_finish) ../gc.c:5534 /Users/peter/src/ruby/build/ruby(gc_sweep_compact) ../gc.c:8653 /Users/peter/src/ruby/build/ruby(gc_sweep) ../gc.c:6196 /Users/peter/src/ruby/build/ruby(has_sweeping_pages+0x0) [0x104b19c54] ../gc.c:9568 /Users/peter/src/ruby/build/ruby(gc_rest) ../gc.c:9570 ``` This crash happens because it's reading the VALUE at sp. But since sp points to the top of the stack, it's reading the VALUE above the top of the stack, which is causing this segfault. Fixes [Bug #19320]
* Fix a warning in .gdbinitTakashi Kokubun2023-01-091-1/+1
| | | | | Warning: 'set logging on', an alias for the command 'set logging enabled', is deprecated. Use 'set logging enabled on'.
* Update yjit.mdMaxime Chevalier-Boisvert2023-01-091-0/+2
| | | Add Alan Wu's keynote & Maxime's talk to the list of YJIT-related talks :)
* [rubygems/rubygems] Bump rb-sys in ↵dependabot[bot]2023-01-092-5/+5
| | | | | | | | | | | | | | | | | /test/rubygems/test_gem_ext_cargo_builder/custom_name Bumps [rb-sys](https://github.com/oxidize-rb/rb-sys) from 0.9.53 to 0.9.54. - [Release notes](https://github.com/oxidize-rb/rb-sys/releases) - [Commits](https://github.com/oxidize-rb/rb-sys/compare/v0.9.53...v0.9.54) --- updated-dependencies: - dependency-name: rb-sys dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
* YJIT: Remove old comments for regenerated branches (#7083)Takashi Kokubun2023-01-092-0/+12
|