aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Debugging snapshot [ci skip]Nobuyoshi Nakada2022-09-052-3/+4
|
* [rubygems/rubygems] Feature: `bundle add` supports `--path` optionMike Dalessio2022-09-056-4/+23
| | | | https://github.com/rubygems/rubygems/commit/32bee01fbe
* [rubygems/rubygems] Fix resolution hanging on musl platformsDavid Rodríguez2022-09-054-9/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | After recent musl support was added, Bundler started hanging in musl platforms. I identified the issue where valid candidates were being filtered out because their platform was specified as a string, and thus `Gem::Platform.match_spec?` which under the hood ends up calling `Gem::Platform#===` would return `nil`, because it does not support comparing platforms to strings. In particular, `Bundler::EndpointSpecification`'s platform coming from the API was not instantiated as a `Gem::Platform`, hence the issue. Also, this spec surfaced another issue where a bug corrected in `Gem::Platform#match_platforms` had not been yet backported to Bundler. So this commit also backports that to get the spec green across RubyGems versions. Finally, the fix in `Bundler::EndpointSpecification` made a realworld spec start failing. This spec was faking out `rails-4.2.7.1` requirement on Bundler in the `Gemfile.lock` file to be `>= 1.17, < 3` when the real requirement is `>= 1.17, < 2`. Due to the bug in `Bundler::EndpointSpecification`, the real requirement provided by the compact index API (recorded with VCR) was being ignored, and the `Gemfile.lock` fake requirement was being used, which made the spec pass. This is all expected, and to fix the issue I changed the spec to be really realworld and don't fake any Bundler requirements. https://github.com/rubygems/rubygems/commit/faf4ef46bc
* Fix fake.rb expansion from preprocessed version.hNobuyoshi Nakada2022-09-051-5/+4
|
* Use cross compiling settings as fake.rb for snapshotsNobuyoshi Nakada2022-09-051-1/+1
|
* Set fake.rb variables by command line argumentsNobuyoshi Nakada2022-09-051-11/+15
| | | | Then fallbacks to preprocessed version.h.
* Call appropriate hooks on MJIT's forkTakashi Kokubun2022-09-042-18/+27
| | | | This takes care of signal_self_pipe and other things.
* Remove extra semicolons at the top level [ci skip]Nobuyoshi Nakada2022-09-051-3/+3
|
* * 2022-09-05 [ci skip]git2022-09-051-1/+1
|
* Ignore fake.rb for snapshotNobuyoshi Nakada2022-09-041-3/+3
|
* rb_int_range_last: properly handle non-exclusive rangeJean Boussier2022-09-042-4/+10
| | | | [Bug #18994]
* Prefer stdbool for MJIT optionsTakashi Kokubun2022-09-033-10/+10
| | | | same motivation as d6f21b308bcff03e82f8b3dbf11a852ce111b3b3
* * 2022-09-04 [ci skip]git2022-09-041-1/+1
|
* fake.rb needs id.hNobuyoshi Nakada2022-09-041-1/+2
|
* [DOC] Escape backqoute method not to be converted to smart quotesNobuyoshi Nakada2022-09-031-1/+1
|
* [DOC] Remove extra page-dir prefix to fix broken linkNobuyoshi Nakada2022-09-031-1/+1
|
* [DOC] Enhanced RDoc for Time (#6320)Burdette Lamar2022-09-031-231/+36
| | | | | | | | | Treats: #yday #dst? #zone #to_a #strftime
* Now fake.rb is needed to prepare sourcesNobuyoshi Nakada2022-09-031-0/+1
|
* BOOTSTRAPRUBY needs fake.rb when cross-compilingNobuyoshi Nakada2022-09-031-0/+1
|
* Fix potential target type confliction [ci skip]Nobuyoshi Nakada2022-09-031-1/+1
|
* Make sources by BASERUBY if available instead of minirubyNobuyoshi Nakada2022-09-035-16/+31
|
* Generate the prelude sources by common-srcsNobuyoshi Nakada2022-09-031-1/+1
|
* Exclude LIBPATHENV wrapper from PREPNobuyoshi Nakada2022-09-033-3/+5
|
* Check if MSys shell can run a command with a drive letterNobuyoshi Nakada2022-09-031-2/+8
|
* builtin.c includes mini_builtin.c when cross-compilingNobuyoshi Nakada2022-09-031-0/+3
|
* miniruby may not be built when cross-compilingNobuyoshi Nakada2022-09-031-1/+2
|
* Reuse macros defined in Makefile.inNobuyoshi Nakada2022-09-031-11/+10
|
* Move duplicate dependenciesNobuyoshi Nakada2022-09-033-7/+2
|
* Enhanced RDoc for Tim[DOC] (#6319)Burdette Lamar2022-09-021-158/+200
|
* * 2022-09-03 [ci skip]git2022-09-031-1/+1
|
* [ruby/reline] Fix a typo [ci skip]Nobuyoshi Nakada2022-09-031-1/+1
| | | | https://github.com/ruby/reline/commit/33bf80e757
* `w_bigfixnum` is used only for large FIXNUMNobuyoshi Nakada2022-09-021-0/+2
|
* [ruby/reline] Workaround for padding width with Aracritty on macOSHiroshi SHIBATA2022-09-021-1/+4
| | | | https://github.com/ruby/reline/commit/fb4136c8a7
* [ruby/reline] Added some of abstruct methods for cursorHiroshi SHIBATA2022-09-021-0/+6
| | | | https://github.com/ruby/reline/commit/f5fa30d595
* * append newline at EOF. [ci skip]git2022-09-021-1/+1
|
* Added doc about `test-syntax-suggest`Hiroshi SHIBATA2022-09-021-0/+12
|
* Added entries about test-bundler-parallel and BUNDLER_SPECSHiroshi SHIBATA2022-09-021-0/+8
|
* Adjust styles [ci skip]Nobuyoshi Nakada2022-09-023-6/+9
|
* Consider Complex from Complex casesNobuyoshi Nakada2022-09-022-12/+14
| | | | | The assertions that "an argument of a Complex constructor must not be a Complex" may not hold for some Numeric objects.
* [Bug #18937] Coerce non-real non-Numeric into Complex at comparisonsNobuyoshi Nakada2022-09-022-7/+19
|
* Turn `f_zero_p` to `bool`Nobuyoshi Nakada2022-09-021-8/+8
|
* Test --enable-yjit on aarch64 as well (#6313)Takashi Kokubun2022-09-011-3/+5
|
* Remove workarounds for slow compilation on Cirrus (#6310)Takashi Kokubun2022-09-011-3/+1
| | | Remove workarounds for slow compilation
* Allow comparing against 64-bit immediates on x86 (#6314)Kevin Newton2022-09-011-51/+215
|
* Use getblockparamproxy with branchJohn Hawthorn2022-09-011-0/+6
| | | | | | | | | | | | | | | | | | | | | | | A common pattern when the block is an explicit parameter is to branch based on the block parameter instead of using `block_given?`, for example `block.call if block`. This commit checks in the peephole optimizer for that case and uses the getblockparamproxy optimization, which avoids allocating a proc for simple cases, whenever a getblockparam instruction is followed immediately by branchif or branchunless. ./miniruby --dump=insns -e 'def foo(&block); 123 if block; end' == disasm: #<ISeq:foo@-e:1 (1,0)-(1,34)> (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 ( 1)[LiCa] 0003 branchunless 8 0005 putobject 123 0007 leave [Re] 0008 putnil 0009 leave [Re]
* * expand tabs. [ci skip]git2022-09-021-5/+5
| | | | | Tabs were expanded because the file did not have any tab indentation in unedited lines. Please update your editor config, and use misc/expand_tabs.rb in the pre-commit hook.
* Remove rb_iseq_eachJohn Hawthorn2022-09-014-54/+0
|
* New constant caching insn: opt_getconstant_pathJohn Hawthorn2022-09-0116-450/+482
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously YARV bytecode implemented constant caching by having a pair of instructions, opt_getinlinecache and opt_setinlinecache, wrapping a series of getconstant calls (with putobject providing supporting arguments). This commit replaces that pattern with a new instruction, opt_getconstant_path, handling both getting/setting the inline cache and fetching the constant on a cache miss. This is implemented by storing the full constant path as a null-terminated array of IDs inside of the IC structure. idNULL is used to signal an absolute constant reference. $ ./miniruby --dump=insns -e '::Foo::Bar::Baz' == disasm: #<ISeq:<main>@-e:1 (1,0)-(1,13)> (catch: FALSE) 0000 opt_getconstant_path <ic:0 ::Foo::Bar::Baz> ( 1)[Li] 0002 leave The motivation for this is that we had increasingly found the need to disassemble the instructions between the opt_getinlinecache and opt_setinlinecache in order to determine the constant we are fetching, or otherwise store metadata. This disassembly was done: * In opt_setinlinecache, to register the IC against the constant names it is using for granular invalidation. * In rb_iseq_free, to unregister the IC from the invalidation table. * In YJIT to find the position of a opt_getinlinecache instruction to invalidate it when the cache is populated * In YJIT to register the constant names being used for invalidation. With this change we no longe need disassemly for these (in fact rb_iseq_each is now unused), as the list of constant names being referenced is held in the IC. This should also make it possible to make more optimizations in the future. This may also reduce the size of iseqs, as previously each segment required 32 bytes (on 64-bit platforms) for each constant segment. This implementation only stores one ID per-segment. There should be no significant performance change between this and the previous implementation. Previously opt_getinlinecache was a "leaf" instruction, but it included a jump (almost always to a separate cache line). Now opt_getconstant_path is a non-leaf (it may raise/autoload/call const_missing) but it does not jump. These seem to even out.
* Update NEWS.md for YJITTakashi Kokubun2022-09-011-2/+6
|
* Stop using a callee-saved register for scratch0 on aarch64 (#6312)Takashi Kokubun2022-09-011-1/+2
| | | | | | | | | | | | [Bug #18985] * Callee-save x22 for aarch64 * Just use a caller-saved register * Update yjit/src/backend/arm64/mod.rs Co-authored-by: Alan Wu <alansi.xingwu@shopify.com> Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com>