summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
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
2022-09-01[ruby/reline] Support dumb terminalNobuyoshi Nakada
The "dumb" terminal is considered only on MSys tty now. However, the `TERM` feature has been used on many Unix-like systems for decades, not MSys specific. https://github.com/ruby/reline/commit/53fd51ab62
2022-09-01Fix test fail with assert_ractor outside of ruby/ruby repoHiroshi SHIBATA
Revert 806583c093ecc2d67830f0a8f0d94decf0ed71e5
2022-09-01[rubygems/rubygems] Support non gnu libc arm-linux-eabi platformsなつき
https://github.com/rubygems/rubygems/commit/fcf62799f2
2022-09-01[rubygems/rubygems] Support non gnu libc arm-linux-eabi platformsなつき
https://github.com/rubygems/rubygems/commit/394d7a6fc9
2022-09-01[ruby/reline] Remove loose operation in Dialog#render_each_dialogMau Magnaguagno
https://github.com/ruby/reline/commit/a6d1c917ce
2022-08-31It was a relative path [ci skip]Takashi Kokubun
2022-08-31Add a document about YJIT's Rust versionTakashi Kokubun
2022-08-31Remove -j optionNobuyoshi Nakada
Close https://github.com/ruby/ruby/pull/6307 Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
2022-08-31[DOC] Enhanced RDoc for Time (#6308)Burdette Lamar
More on timezones. Notes: Merged-By: BurdetteLamar <BurdetteLamar@Yahoo.com>
2022-09-01* 2022-09-01 [ci skip]git
2022-08-31Better b.cond usage on AArch64 (#6305)Kevin Newton
* Better b.cond usage on AArch64 When we're lowering a conditional jump, we previously had a bit of a complicated setup where we could emit a conditional jump to skip over a jump that was the next instruction, and then write out the destination and use a branch register. Now instead we use the b.cond instruction if our offset fits (not common, but not unused either) and if it doesn't we write out an inverse condition to jump past loading the destination and branching directly. * Added an inverse fn for Condition (#443) Prevents the need to pass two params and potentially reduces errors. Co-authored-by: Jimmy Miller <jimmyhmiller@jimmys-mbp.lan> Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com> Co-authored-by: Jimmy Miller <jimmyhmiller@jimmys-mbp.lan> Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-08-31Move macros from version.h to version.cNobuyoshi Nakada
Moved the contents of `ruby_description` and `ruby_copyright` which are never used in the other places.
2022-08-31Let fake.rb allow newlines in expanded stringsNobuyoshi Nakada
2022-08-31[Bug #18973] Promote US-ASCII to ASCII-8BIT when adding 8-bit charNobuyoshi Nakada
Notes: Merged: https://github.com/ruby/ruby/pull/6306
2022-08-31Extract `update_coderange` macroNobuyoshi Nakada
Which restarts scanning the code range in unscanned part. Notes: Merged: https://github.com/ruby/ruby/pull/6306