summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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
2022-09-01Stop using a callee-saved register for scratch0 on aarch64 (#6312)Takashi Kokubun
[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> Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-09-02* 2022-09-02 [ci skip]git
2022-09-01Let --yjit-dump-disasm=all dump ocb code as well (#6309)Takashi Kokubun
* Let --yjit-dump-disasm=all dump ocb code as well * Use an enum instead * Add a None Option to DumpDisasm (#444) * Add a None Option to DumpDisasm * Update yjit/src/asm/mod.rs Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> * Fix a build failure * Use only a single name * Only None will be a disabled case * Fix cargo test * Fix --yjit-dump-disasm=all to print outlined cb Co-authored-by: Jimmy Miller <jimmyhmiller@gmail.com> Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-09-01VCS#revision_header: Make arguments optionalNobuyoshi Nakada
2022-09-01[ruby/did_you_mean] Fixed correction duplicates in VariableNameCheckerImir Kiyamov
https://github.com/ruby/did_you_mean/commit/c3fc412f6f
2022-09-01Update revision.h in packages using `VCS#revision_header`Nobuyoshi Nakada
2022-09-01Extract `VCS#revision_header`Nobuyoshi Nakada
2022-09-01Prefer `File` class methods to write a stringNobuyoshi Nakada
2022-09-01Ignore test libraries like assert_ractor from did_you_meanHiroshi SHIBATA