summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-09-04Attempt to fix test-bundlerTakashi Kokubun
f7cf641469161c3770b58f79e08e312512212aa8 broke spec/bundler/install/gems/resolving_spec.rb:356. This line seems to impact that test, so I slightly modified the implementation for that spec's case.
2022-09-05Debugging snapshot [ci skip]Nobuyoshi Nakada
2022-09-05[rubygems/rubygems] Feature: `bundle add` supports `--path` optionMike Dalessio
https://github.com/rubygems/rubygems/commit/32bee01fbe
2022-09-05[rubygems/rubygems] Fix resolution hanging on musl platformsDavid Rodríguez
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
2022-09-05Fix fake.rb expansion from preprocessed version.hNobuyoshi Nakada
2022-09-05Use cross compiling settings as fake.rb for snapshotsNobuyoshi Nakada
2022-09-05Set fake.rb variables by command line argumentsNobuyoshi Nakada
Then fallbacks to preprocessed version.h.
2022-09-04Call appropriate hooks on MJIT's forkTakashi Kokubun
This takes care of signal_self_pipe and other things.
2022-09-05Remove extra semicolons at the top level [ci skip]Nobuyoshi Nakada
2022-09-05* 2022-09-05 [ci skip]git
2022-09-04Ignore fake.rb for snapshotNobuyoshi Nakada
2022-09-04rb_int_range_last: properly handle non-exclusive rangeJean Boussier
[Bug #18994] Notes: Merged: https://github.com/ruby/ruby/pull/6324
2022-09-03Prefer stdbool for MJIT optionsTakashi Kokubun
same motivation as d6f21b308bcff03e82f8b3dbf11a852ce111b3b3
2022-09-04* 2022-09-04 [ci skip]git
2022-09-04fake.rb needs id.hNobuyoshi Nakada
2022-09-03[DOC] Escape backqoute method not to be converted to smart quotesNobuyoshi Nakada
2022-09-03[DOC] Remove extra page-dir prefix to fix broken linkNobuyoshi Nakada
2022-09-03[DOC] Enhanced RDoc for Time (#6320)Burdette Lamar
Treats: #yday #dst? #zone #to_a #strftime Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-09-03Now fake.rb is needed to prepare sourcesNobuyoshi Nakada
2022-09-03BOOTSTRAPRUBY needs fake.rb when cross-compilingNobuyoshi Nakada
2022-09-03Fix potential target type confliction [ci skip]Nobuyoshi Nakada
2022-09-03Make sources by BASERUBY if available instead of minirubyNobuyoshi Nakada
2022-09-03Generate the prelude sources by common-srcsNobuyoshi Nakada
2022-09-03Exclude LIBPATHENV wrapper from PREPNobuyoshi Nakada
2022-09-03Check if MSys shell can run a command with a drive letterNobuyoshi Nakada
2022-09-03builtin.c includes mini_builtin.c when cross-compilingNobuyoshi Nakada
2022-09-03miniruby may not be built when cross-compilingNobuyoshi Nakada
2022-09-03Reuse macros defined in Makefile.inNobuyoshi Nakada
2022-09-03Move duplicate dependenciesNobuyoshi Nakada
2022-09-02Enhanced RDoc for Tim[DOC] (#6319)Burdette Lamar
Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-09-03* 2022-09-03 [ci skip]git
2022-09-03[ruby/reline] Fix a typo [ci skip]Nobuyoshi Nakada
https://github.com/ruby/reline/commit/33bf80e757
2022-09-02`w_bigfixnum` is used only for large FIXNUMNobuyoshi Nakada
2022-09-02[ruby/reline] Workaround for padding width with Aracritty on macOSHiroshi SHIBATA
https://github.com/ruby/reline/commit/fb4136c8a7
2022-09-02[ruby/reline] Added some of abstruct methods for cursorHiroshi SHIBATA
https://github.com/ruby/reline/commit/f5fa30d595
2022-09-02* append newline at EOF. [ci skip]git
2022-09-02Added doc about `test-syntax-suggest`Hiroshi SHIBATA
2022-09-02Added entries about test-bundler-parallel and BUNDLER_SPECSHiroshi SHIBATA
2022-09-02Adjust styles [ci skip]Nobuyoshi Nakada
2022-09-02Consider Complex from Complex casesNobuyoshi Nakada
The assertions that "an argument of a Complex constructor must not be a Complex" may not hold for some Numeric objects. Notes: Merged: https://github.com/ruby/ruby/pull/6317
2022-09-02[Bug #18937] Coerce non-real non-Numeric into Complex at comparisonsNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/6317
2022-09-02Turn `f_zero_p` to `bool`Nobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/6317
2022-09-01Test --enable-yjit on aarch64 as well (#6313)Takashi Kokubun
Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-09-01Remove workarounds for slow compilation on Cirrus (#6310)Takashi Kokubun
Remove workarounds for slow compilation Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-09-01Allow comparing against 64-bit immediates on x86 (#6314)Kevin Newton
Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-09-01Use getblockparamproxy with branchJohn Hawthorn
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] Notes: Merged: https://github.com/ruby/ruby/pull/6286
2022-09-02* expand tabs. [ci skip]git
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.
2022-09-01Remove rb_iseq_eachJohn Hawthorn
Notes: Merged: https://github.com/ruby/ruby/pull/6187
2022-09-01New constant caching insn: opt_getconstant_pathJohn Hawthorn
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. Notes: Merged: https://github.com/ruby/ruby/pull/6187
2022-09-01Update NEWS.md for YJITTakashi Kokubun